base-cli 0.3.0__tar.gz → 0.4.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- base_cli-0.4.1/.github/ISSUE_TEMPLATE/support.md +28 -0
- base_cli-0.4.1/.github/base-project.yml +9 -0
- base_cli-0.4.1/.github/pull_request_template.md +25 -0
- base_cli-0.4.1/.github/workflows/compatibility.yml +68 -0
- base_cli-0.4.1/.github/workflows/docs.yml +81 -0
- base_cli-0.4.1/.github/workflows/examples.yml +45 -0
- base_cli-0.4.1/.github/workflows/issue-branch-policy.yml +508 -0
- base_cli-0.4.1/.github/workflows/package.yml +186 -0
- base_cli-0.4.1/.github/workflows/project-intake.yml +255 -0
- base_cli-0.4.1/.github/workflows/tests.yml +140 -0
- base_cli-0.4.1/CHANGELOG.md +212 -0
- base_cli-0.4.1/CONTRIBUTING.md +74 -0
- base_cli-0.4.1/MANIFEST.in +21 -0
- base_cli-0.4.1/PKG-INFO +1136 -0
- base_cli-0.4.1/README.md +1085 -0
- base_cli-0.4.1/SECURITY.md +73 -0
- base_cli-0.4.1/VERSION +1 -0
- base_cli-0.4.1/base_manifest.yaml +12 -0
- base_cli-0.4.1/compatibility/README.md +38 -0
- base_cli-0.4.1/compatibility/consumers/atlas_click/README.md +9 -0
- base_cli-0.4.1/compatibility/consumers/atlas_click/pyproject.toml +19 -0
- base_cli-0.4.1/compatibility/consumers/atlas_click/src/atlas_click/__init__.py +1 -0
- base_cli-0.4.1/compatibility/consumers/atlas_click/src/atlas_click/cli.py +45 -0
- base_cli-0.4.1/compatibility/consumers/atlas_click/tests/test_consumer.py +26 -0
- base_cli-0.4.1/compatibility/consumers/beacon_typer/README.md +11 -0
- base_cli-0.4.1/compatibility/consumers/beacon_typer/pyproject.toml +19 -0
- base_cli-0.4.1/compatibility/consumers/beacon_typer/src/beacon_typer/__init__.py +1 -0
- base_cli-0.4.1/compatibility/consumers/beacon_typer/src/beacon_typer/cli.py +43 -0
- base_cli-0.4.1/compatibility/consumers/beacon_typer/tests/test_consumer.py +25 -0
- base_cli-0.4.1/compatibility/consumers/cinder_automation/README.md +12 -0
- base_cli-0.4.1/compatibility/consumers/cinder_automation/pyproject.toml +22 -0
- base_cli-0.4.1/compatibility/consumers/cinder_automation/src/cinder_automation/__init__.py +1 -0
- base_cli-0.4.1/compatibility/consumers/cinder_automation/src/cinder_automation/cli.py +47 -0
- base_cli-0.4.1/compatibility/consumers/cinder_automation/tests/test_consumer.py +32 -0
- base_cli-0.4.1/compatibility/consumers/manifest.json +26 -0
- base_cli-0.4.1/docs/adopter-readiness.md +107 -0
- base_cli-0.4.1/docs/api-stability.md +122 -0
- base_cli-0.4.1/docs/cache-ownership-and-layout.md +80 -0
- base_cli-0.4.1/docs/consumer-profiles.md +243 -0
- base_cli-0.4.1/docs/extensions.md +49 -0
- base_cli-0.4.1/docs/index.md +76 -0
- base_cli-0.4.1/docs/integrations.md +54 -0
- base_cli-0.4.1/docs/json-contracts.md +113 -0
- base_cli-0.4.1/docs/local-config.md +23 -0
- base_cli-0.4.1/docs/migrations.md +53 -0
- base_cli-0.4.1/docs/output-contracts.md +25 -0
- base_cli-0.4.1/docs/performance.md +33 -0
- base_cli-0.4.1/docs/platform-support.md +56 -0
- base_cli-0.4.1/docs/releasing.md +92 -0
- base_cli-0.4.1/docs/security-review.md +56 -0
- base_cli-0.4.1/docs/security-threat-model.md +123 -0
- base_cli-0.4.1/docs/typer-adapter.md +78 -0
- base_cli-0.4.1/docs/user-config-typing.md +105 -0
- base_cli-0.4.1/examples/README.md +34 -0
- base_cli-0.4.1/examples/automation_observability_app/README.md +72 -0
- base_cli-0.4.1/examples/automation_observability_app/pyproject.toml +28 -0
- base_cli-0.4.1/examples/automation_observability_app/src/automation_observability_app/__init__.py +1 -0
- base_cli-0.4.1/examples/automation_observability_app/src/automation_observability_app/cli.py +63 -0
- base_cli-0.4.1/examples/automation_observability_app/tests/test_cli.py +25 -0
- base_cli-0.4.1/examples/minimal_cli/README.md +62 -0
- base_cli-0.4.1/examples/minimal_cli/pyproject.toml +19 -0
- base_cli-0.4.1/examples/minimal_cli/src/minimal_cli/__init__.py +1 -0
- base_cli-0.4.1/examples/minimal_cli/src/minimal_cli/cli.py +30 -0
- base_cli-0.4.1/examples/minimal_cli/tests/test_cli.py +26 -0
- base_cli-0.4.1/examples/nested_click_app/README.md +62 -0
- base_cli-0.4.1/examples/nested_click_app/pyproject.toml +25 -0
- base_cli-0.4.1/examples/nested_click_app/src/nested_click_app/__init__.py +1 -0
- base_cli-0.4.1/examples/nested_click_app/src/nested_click_app/cli.py +71 -0
- base_cli-0.4.1/examples/nested_click_app/src/nested_click_app/plugin.py +9 -0
- base_cli-0.4.1/examples/nested_click_app/tests/test_cli.py +29 -0
- base_cli-0.4.1/examples/typed_consumer.py +77 -0
- base_cli-0.4.1/examples/typer_app/README.md +65 -0
- base_cli-0.4.1/examples/typer_app/pyproject.toml +22 -0
- base_cli-0.4.1/examples/typer_app/src/typer_app/__init__.py +1 -0
- base_cli-0.4.1/examples/typer_app/src/typer_app/cli.py +45 -0
- base_cli-0.4.1/examples/typer_app/tests/test_cli.py +25 -0
- base_cli-0.4.1/examples/typer_consumer.py +48 -0
- base_cli-0.4.1/lib/python/base_cli/__init__.py +263 -0
- base_cli-0.4.1/lib/python/base_cli/_cleanup.py +341 -0
- base_cli-0.4.1/lib/python/base_cli/_click_compat.py +174 -0
- base_cli-0.4.1/lib/python/base_cli/_lifecycle.py +170 -0
- base_cli-0.4.1/lib/python/base_cli/_private_files.py +193 -0
- base_cli-0.4.1/lib/python/base_cli/_runtime.py +672 -0
- base_cli-0.4.1/lib/python/base_cli/app.py +3179 -0
- base_cli-0.4.1/lib/python/base_cli/attachment.py +68 -0
- {base_cli-0.3.0 → base_cli-0.4.1}/lib/python/base_cli/command_filters.py +1 -4
- {base_cli-0.3.0 → base_cli-0.4.1}/lib/python/base_cli/command_protocol.py +126 -31
- base_cli-0.4.1/lib/python/base_cli/config.py +255 -0
- base_cli-0.4.1/lib/python/base_cli/context.py +189 -0
- base_cli-0.4.1/lib/python/base_cli/deprecations.py +52 -0
- base_cli-0.4.1/lib/python/base_cli/errors.py +5 -0
- {base_cli-0.3.0 → base_cli-0.4.1}/lib/python/base_cli/exit_codes.py +1 -0
- base_cli-0.4.1/lib/python/base_cli/experimental.py +8 -0
- base_cli-0.4.1/lib/python/base_cli/extensions.py +322 -0
- {base_cli-0.3.0 → base_cli-0.4.1}/lib/python/base_cli/history.py +25 -33
- {base_cli-0.3.0 → base_cli-0.4.1}/lib/python/base_cli/inspection.py +1 -2
- base_cli-0.4.1/lib/python/base_cli/integrations.py +197 -0
- base_cli-0.4.1/lib/python/base_cli/json_contracts.py +152 -0
- base_cli-0.4.1/lib/python/base_cli/lifecycle_options.py +195 -0
- {base_cli-0.3.0 → base_cli-0.4.1}/lib/python/base_cli/logging.py +103 -8
- base_cli-0.4.1/lib/python/base_cli/output.py +341 -0
- {base_cli-0.3.0 → base_cli-0.4.1}/lib/python/base_cli/paths.py +27 -0
- base_cli-0.4.1/lib/python/base_cli/profile.py +316 -0
- base_cli-0.4.1/lib/python/base_cli/redaction.py +612 -0
- base_cli-0.4.1/lib/python/base_cli/runtime.py +63 -0
- base_cli-0.4.1/lib/python/base_cli/testing.py +102 -0
- base_cli-0.4.1/lib/python/base_cli/typer.py +172 -0
- base_cli-0.4.1/lib/python/base_cli.egg-info/PKG-INFO +1136 -0
- base_cli-0.4.1/lib/python/base_cli.egg-info/SOURCES.txt +163 -0
- base_cli-0.4.1/lib/python/base_cli.egg-info/requires.txt +28 -0
- {base_cli-0.3.0 → base_cli-0.4.1}/pyproject.toml +59 -1
- base_cli-0.4.1/scripts/benchmark_runtime.py +114 -0
- base_cli-0.4.1/scripts/validate_consumers.py +72 -0
- base_cli-0.4.1/scripts/validate_docs.py +63 -0
- base_cli-0.4.1/scripts/validate_examples.py +75 -0
- base_cli-0.4.1/scripts/validate_installed_package.py +50 -0
- base_cli-0.4.1/scripts/validate_package_artifact.py +173 -0
- base_cli-0.4.1/tests/conftest.py +47 -0
- base_cli-0.4.1/tests/test_adversarial_regressions.py +389 -0
- base_cli-0.4.1/tests/test_api_stability.py +182 -0
- base_cli-0.4.1/tests/test_app_lifecycle.py +251 -0
- {base_cli-0.3.0 → base_cli-0.4.1}/tests/test_app_quiet.py +1 -1
- base_cli-0.4.1/tests/test_app_registration.py +651 -0
- base_cli-0.4.1/tests/test_app_run.py +270 -0
- base_cli-0.4.1/tests/test_app_run_metadata.py +990 -0
- {base_cli-0.3.0 → base_cli-0.4.1}/tests/test_app_runtime_errors.py +31 -0
- base_cli-0.4.1/tests/test_app_security_boundaries.py +462 -0
- base_cli-0.4.1/tests/test_app_startup_transaction.py +395 -0
- {base_cli-0.3.0 → base_cli-0.4.1}/tests/test_app_subcommands.py +5 -2
- base_cli-0.4.1/tests/test_batteries_included_config.py +173 -0
- base_cli-0.4.1/tests/test_benchmark_runtime.py +21 -0
- base_cli-0.4.1/tests/test_cleanup_security.py +485 -0
- base_cli-0.4.1/tests/test_click_tree_attachment.py +1721 -0
- {base_cli-0.3.0 → base_cli-0.4.1}/tests/test_command_filters.py +1 -3
- {base_cli-0.3.0 → base_cli-0.4.1}/tests/test_command_protocol.py +33 -10
- base_cli-0.4.1/tests/test_explicit_config_validation.py +324 -0
- base_cli-0.4.1/tests/test_extensions.py +119 -0
- {base_cli-0.3.0 → base_cli-0.4.1}/tests/test_generic_core.py +28 -0
- {base_cli-0.3.0 → base_cli-0.4.1}/tests/test_history.py +33 -3
- {base_cli-0.3.0 → base_cli-0.4.1}/tests/test_inspection.py +1 -2
- base_cli-0.4.1/tests/test_integrations.py +115 -0
- base_cli-0.4.1/tests/test_invocation_parity.py +254 -0
- base_cli-0.4.1/tests/test_json_contracts.py +256 -0
- base_cli-0.4.1/tests/test_lifecycle_options.py +1328 -0
- {base_cli-0.3.0 → base_cli-0.4.1}/tests/test_logging.py +14 -0
- base_cli-0.4.1/tests/test_output.py +282 -0
- {base_cli-0.3.0 → base_cli-0.4.1}/tests/test_paths.py +45 -1
- {base_cli-0.3.0 → base_cli-0.4.1}/tests/test_profile.py +34 -0
- base_cli-0.4.1/tests/test_public_api.py +178 -0
- base_cli-0.4.1/tests/test_redaction_security.py +264 -0
- base_cli-0.4.1/tests/test_run_bundle_retention.py +174 -0
- base_cli-0.4.1/tests/test_security_documentation.py +63 -0
- {base_cli-0.3.0 → base_cli-0.4.1}/tests/test_testing.py +28 -5
- base_cli-0.4.1/tests/test_typed_contracts.py +105 -0
- base_cli-0.4.1/tests/test_typer_adapter.py +151 -0
- base_cli-0.3.0/PKG-INFO +0 -569
- base_cli-0.3.0/README.md +0 -537
- base_cli-0.3.0/VERSION +0 -1
- base_cli-0.3.0/lib/python/base_cli/__init__.py +0 -108
- base_cli-0.3.0/lib/python/base_cli/_private_files.py +0 -51
- base_cli-0.3.0/lib/python/base_cli/_runtime.py +0 -131
- base_cli-0.3.0/lib/python/base_cli/app.py +0 -470
- base_cli-0.3.0/lib/python/base_cli/config.py +0 -28
- base_cli-0.3.0/lib/python/base_cli/context.py +0 -102
- base_cli-0.3.0/lib/python/base_cli/output.py +0 -198
- base_cli-0.3.0/lib/python/base_cli/profile.py +0 -147
- base_cli-0.3.0/lib/python/base_cli/redaction.py +0 -50
- base_cli-0.3.0/lib/python/base_cli/testing.py +0 -55
- base_cli-0.3.0/lib/python/base_cli.egg-info/PKG-INFO +0 -569
- base_cli-0.3.0/lib/python/base_cli.egg-info/SOURCES.txt +0 -47
- base_cli-0.3.0/lib/python/base_cli.egg-info/requires.txt +0 -6
- base_cli-0.3.0/tests/test_app_run.py +0 -155
- base_cli-0.3.0/tests/test_output.py +0 -134
- base_cli-0.3.0/tests/test_public_api.py +0 -81
- {base_cli-0.3.0 → base_cli-0.4.1}/LICENSE +0 -0
- {base_cli-0.3.0 → base_cli-0.4.1}/lib/python/base_cli/_dependencies.py +0 -0
- {base_cli-0.3.0 → base_cli-0.4.1}/lib/python/base_cli/py.typed +0 -0
- {base_cli-0.3.0 → base_cli-0.4.1}/lib/python/base_cli.egg-info/dependency_links.txt +0 -0
- {base_cli-0.3.0 → base_cli-0.4.1}/lib/python/base_cli.egg-info/top_level.txt +0 -0
- {base_cli-0.3.0 → base_cli-0.4.1}/setup.cfg +0 -0
- {base_cli-0.3.0 → base_cli-0.4.1}/tests/test_app_dry_run.py +0 -0
- {base_cli-0.3.0 → base_cli-0.4.1}/tests/test_app_log_retention.py +0 -0
- {base_cli-0.3.0 → base_cli-0.4.1}/tests/test_app_runtime_boundary.py +0 -0
- {base_cli-0.3.0 → base_cli-0.4.1}/tests/test_context_workspace.py +0 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Adoption support
|
|
3
|
+
about: Request migration or downstream compatibility help
|
|
4
|
+
title: "[Support] "
|
|
5
|
+
labels: ""
|
|
6
|
+
assignees: ""
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## What are you adopting?
|
|
10
|
+
|
|
11
|
+
Describe the CLI, its Click/Typer version, and the intended production use case.
|
|
12
|
+
|
|
13
|
+
## Reproduction
|
|
14
|
+
|
|
15
|
+
Provide a minimal command and the exact exit code. Remove credentials, tokens,
|
|
16
|
+
customer data, and private paths.
|
|
17
|
+
|
|
18
|
+
## Environment
|
|
19
|
+
|
|
20
|
+
- `base-cli` version:
|
|
21
|
+
- Python version:
|
|
22
|
+
- Operating system:
|
|
23
|
+
- Click/Typer and optional integration versions:
|
|
24
|
+
|
|
25
|
+
## Evidence
|
|
26
|
+
|
|
27
|
+
Attach or link a redacted log/run bundle and say whether the failure occurs
|
|
28
|
+
against an installed wheel. Security-sensitive reports belong in `SECURITY.md`.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
## Summary
|
|
2
|
+
|
|
3
|
+
<!-- What changed and why. Focus on decisions and user impact, not just the diff. -->
|
|
4
|
+
|
|
5
|
+
## Issue
|
|
6
|
+
|
|
7
|
+
Closes #
|
|
8
|
+
|
|
9
|
+
## Validation
|
|
10
|
+
|
|
11
|
+
<!-- Commands run and relevant output. Include narrow checks and any broader suite used. -->
|
|
12
|
+
|
|
13
|
+
## Notes
|
|
14
|
+
|
|
15
|
+
<!-- Optional: tradeoffs, follow-up work, or reviewer context. -->
|
|
16
|
+
|
|
17
|
+
## Checklist
|
|
18
|
+
|
|
19
|
+
- [ ] Branch name follows `<category>/<issue>-<YYYYMMDD>-<slug>`, and its category prefix matches the issue's single standard category label.
|
|
20
|
+
- [ ] Pull request is scoped to one issue, unless a documented multi-issue exception applies.
|
|
21
|
+
- [ ] Pull request body explains what changed and how it was validated.
|
|
22
|
+
- [ ] Relevant project checks pass.
|
|
23
|
+
- [ ] Documentation is updated when behavior or user-facing commands change.
|
|
24
|
+
- [ ] CHANGELOG is updated for notable user-visible or release-worthy changes.
|
|
25
|
+
- [ ] Pull request includes `Fixes #<issue>` or `Closes #<issue>` when merge should close the issue.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
name: Reference consumers
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
pull_request:
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
contents: read
|
|
9
|
+
|
|
10
|
+
concurrency:
|
|
11
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
12
|
+
cancel-in-progress: true
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
typer-matrix:
|
|
16
|
+
name: Typer ${{ matrix.typer-version }} / Python ${{ matrix.python-version }}
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
timeout-minutes: 20
|
|
19
|
+
strategy:
|
|
20
|
+
fail-fast: false
|
|
21
|
+
matrix:
|
|
22
|
+
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
|
|
23
|
+
typer-version: ["0.25.1", "0.26.0", "0.27.1"]
|
|
24
|
+
steps:
|
|
25
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
26
|
+
- name: Set up Python
|
|
27
|
+
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
|
28
|
+
with:
|
|
29
|
+
python-version: ${{ matrix.python-version }}
|
|
30
|
+
- name: Install framework and exact Typer line
|
|
31
|
+
run: |
|
|
32
|
+
python -m pip install "setuptools<77" "wheel"
|
|
33
|
+
python -m pip install ".[dev]"
|
|
34
|
+
python -m pip install --upgrade "typer==${{ matrix.typer-version }}"
|
|
35
|
+
- name: Install Beacon fixture without dependency resolution
|
|
36
|
+
run: python -m pip install --no-deps compatibility/consumers/beacon_typer
|
|
37
|
+
- name: Run adapter and Beacon compatibility tests
|
|
38
|
+
run: python -m pytest tests/test_typer_adapter.py compatibility/consumers/beacon_typer/tests
|
|
39
|
+
|
|
40
|
+
downstream:
|
|
41
|
+
name: Install and test independent consumers
|
|
42
|
+
runs-on: ubuntu-latest
|
|
43
|
+
timeout-minutes: 15
|
|
44
|
+
steps:
|
|
45
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
46
|
+
- name: Set up Python
|
|
47
|
+
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
|
48
|
+
with:
|
|
49
|
+
python-version: "3.13"
|
|
50
|
+
- name: Install framework build and test dependencies
|
|
51
|
+
run: python -m pip install ".[dev,typer,rich,telemetry]"
|
|
52
|
+
- name: Build and install the framework wheel
|
|
53
|
+
run: |
|
|
54
|
+
python -m build --wheel
|
|
55
|
+
python -m pip uninstall --yes base-cli
|
|
56
|
+
python -m pip install dist/*.whl
|
|
57
|
+
- name: Validate consumer manifest
|
|
58
|
+
run: python scripts/validate_consumers.py
|
|
59
|
+
- name: Install consumers independently
|
|
60
|
+
run: |
|
|
61
|
+
python -m pip install compatibility/consumers/atlas_click
|
|
62
|
+
python -m pip install compatibility/consumers/beacon_typer
|
|
63
|
+
python -m pip install "compatibility/consumers/cinder_automation[observability]"
|
|
64
|
+
- name: Run downstream compatibility suites
|
|
65
|
+
run: |
|
|
66
|
+
for tests in compatibility/consumers/*/tests; do
|
|
67
|
+
python -m pytest "$tests"
|
|
68
|
+
done
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
name: Documentation
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
paths:
|
|
8
|
+
- "README.md"
|
|
9
|
+
- "SECURITY.md"
|
|
10
|
+
- "docs/**"
|
|
11
|
+
- "mkdocs.yml"
|
|
12
|
+
- "pyproject.toml"
|
|
13
|
+
- "scripts/validate_docs.py"
|
|
14
|
+
- "tests/validate.sh"
|
|
15
|
+
- ".github/workflows/docs.yml"
|
|
16
|
+
pull_request:
|
|
17
|
+
paths:
|
|
18
|
+
- "README.md"
|
|
19
|
+
- "SECURITY.md"
|
|
20
|
+
- "docs/**"
|
|
21
|
+
- "mkdocs.yml"
|
|
22
|
+
- "pyproject.toml"
|
|
23
|
+
- "scripts/validate_docs.py"
|
|
24
|
+
- "tests/validate.sh"
|
|
25
|
+
- ".github/workflows/docs.yml"
|
|
26
|
+
workflow_dispatch:
|
|
27
|
+
|
|
28
|
+
permissions:
|
|
29
|
+
contents: read
|
|
30
|
+
|
|
31
|
+
concurrency:
|
|
32
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
33
|
+
cancel-in-progress: true
|
|
34
|
+
|
|
35
|
+
jobs:
|
|
36
|
+
build:
|
|
37
|
+
name: Build and validate documentation
|
|
38
|
+
runs-on: ubuntu-latest
|
|
39
|
+
timeout-minutes: 10
|
|
40
|
+
steps:
|
|
41
|
+
- name: Check out source
|
|
42
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
43
|
+
|
|
44
|
+
- name: Set up Python
|
|
45
|
+
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
|
46
|
+
with:
|
|
47
|
+
python-version: "3.13"
|
|
48
|
+
|
|
49
|
+
- name: Install documentation tools
|
|
50
|
+
run: python -m pip install ".[docs]"
|
|
51
|
+
|
|
52
|
+
- name: Validate repository links and examples
|
|
53
|
+
run: python scripts/validate_docs.py
|
|
54
|
+
|
|
55
|
+
- name: Build documentation with strict warnings
|
|
56
|
+
run: python -m mkdocs build --strict --site-dir site
|
|
57
|
+
|
|
58
|
+
- name: Upload Pages artifact
|
|
59
|
+
uses: actions/upload-pages-artifact@7b1f4a764d45c48632c6b24a0339c27f5614fb0b # v4.0.0
|
|
60
|
+
with:
|
|
61
|
+
path: site
|
|
62
|
+
|
|
63
|
+
deploy:
|
|
64
|
+
name: Deploy documentation site
|
|
65
|
+
if: ${{ (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && github.ref == 'refs/heads/main' }}
|
|
66
|
+
needs: build
|
|
67
|
+
runs-on: ubuntu-latest
|
|
68
|
+
timeout-minutes: 10
|
|
69
|
+
environment:
|
|
70
|
+
name: github-pages
|
|
71
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
72
|
+
permissions:
|
|
73
|
+
pages: write
|
|
74
|
+
id-token: write
|
|
75
|
+
steps:
|
|
76
|
+
- name: Configure GitHub Pages
|
|
77
|
+
uses: actions/configure-pages@983d7736d9b0ae728b81ab479565c72886d7745b # v5.0.0
|
|
78
|
+
|
|
79
|
+
- name: Deploy to GitHub Pages
|
|
80
|
+
id: deployment
|
|
81
|
+
uses: actions/deploy-pages@f33f41b675f0ab2dc5a6863c9a170fe83af3571e # v4.0.0
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
name: Reference examples
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
pull_request:
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
contents: read
|
|
9
|
+
|
|
10
|
+
concurrency:
|
|
11
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
12
|
+
cancel-in-progress: true
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
install-and-test:
|
|
16
|
+
name: Build wheel, install examples, and test
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
timeout-minutes: 15
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
21
|
+
- name: Set up Python
|
|
22
|
+
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
|
23
|
+
with:
|
|
24
|
+
python-version: "3.13"
|
|
25
|
+
- name: Install framework build and test dependencies
|
|
26
|
+
run: python -m pip install ".[dev,typer,rich,telemetry]"
|
|
27
|
+
- name: Build and install the framework wheel
|
|
28
|
+
run: |
|
|
29
|
+
python -m build --wheel
|
|
30
|
+
python -m pip uninstall --yes base-cli
|
|
31
|
+
python -m pip install dist/*.whl
|
|
32
|
+
- name: Validate reference-app structure
|
|
33
|
+
run: python scripts/validate_examples.py
|
|
34
|
+
- name: Install each example independently
|
|
35
|
+
run: |
|
|
36
|
+
for example in examples/*; do
|
|
37
|
+
if [[ -f "$example/pyproject.toml" ]]; then
|
|
38
|
+
python -m pip install "$example"
|
|
39
|
+
fi
|
|
40
|
+
done
|
|
41
|
+
- name: Run reference-app tests
|
|
42
|
+
run: |
|
|
43
|
+
for tests in examples/*/tests; do
|
|
44
|
+
python -m pytest "$tests"
|
|
45
|
+
done
|