base-cli 0.4.2__tar.gz → 0.5.0__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.
Files changed (269) hide show
  1. base_cli-0.5.0/.github/ISSUE_TEMPLATE/bug_report.yml +50 -0
  2. base_cli-0.5.0/.github/ISSUE_TEMPLATE/config.yml +8 -0
  3. base_cli-0.5.0/.github/ISSUE_TEMPLATE/documentation.yml +25 -0
  4. base_cli-0.5.0/.github/ISSUE_TEMPLATE/feature_request.yml +25 -0
  5. base_cli-0.5.0/.github/ISSUE_TEMPLATE/support.md +12 -0
  6. base_cli-0.5.0/.github/ISSUE_TEMPLATE/support.yml +30 -0
  7. base_cli-0.5.0/.github/workflows/compatibility.yml +110 -0
  8. base_cli-0.5.0/.github/workflows/dependency-matrix.yml +48 -0
  9. {base_cli-0.4.2 → base_cli-0.5.0}/.github/workflows/docs.yml +24 -1
  10. base_cli-0.5.0/.github/workflows/package.yml +464 -0
  11. base_cli-0.5.0/.github/workflows/project-intake.yml +309 -0
  12. base_cli-0.5.0/.github/workflows/tests.yml +201 -0
  13. {base_cli-0.4.2 → base_cli-0.5.0}/CHANGELOG.md +174 -3
  14. {base_cli-0.4.2 → base_cli-0.5.0}/CONTRIBUTING.md +7 -10
  15. {base_cli-0.4.2/lib/python/base_cli.egg-info → base_cli-0.5.0}/PKG-INFO +159 -46
  16. base_cli-0.4.2/PKG-INFO → base_cli-0.5.0/README.md +145 -91
  17. base_cli-0.5.0/VERSION +1 -0
  18. {base_cli-0.4.2 → base_cli-0.5.0}/base_manifest.yaml +6 -1
  19. base_cli-0.5.0/compatibility/README.md +58 -0
  20. {base_cli-0.4.2 → base_cli-0.5.0}/compatibility/consumers/atlas_click/README.md +2 -1
  21. {base_cli-0.4.2 → base_cli-0.5.0}/compatibility/consumers/atlas_click/pyproject.toml +1 -1
  22. {base_cli-0.4.2 → base_cli-0.5.0}/compatibility/consumers/atlas_click/tests/test_consumer.py +0 -1
  23. {base_cli-0.4.2 → base_cli-0.5.0}/compatibility/consumers/beacon_typer/README.md +5 -4
  24. {base_cli-0.4.2 → base_cli-0.5.0}/compatibility/consumers/beacon_typer/pyproject.toml +1 -1
  25. {base_cli-0.4.2 → base_cli-0.5.0}/compatibility/consumers/beacon_typer/src/beacon_typer/cli.py +0 -1
  26. {base_cli-0.4.2 → base_cli-0.5.0}/compatibility/consumers/beacon_typer/tests/test_consumer.py +0 -1
  27. {base_cli-0.4.2 → base_cli-0.5.0}/compatibility/consumers/cinder_automation/README.md +1 -0
  28. {base_cli-0.4.2 → base_cli-0.5.0}/compatibility/consumers/cinder_automation/pyproject.toml +1 -1
  29. {base_cli-0.4.2 → base_cli-0.5.0}/compatibility/consumers/cinder_automation/src/cinder_automation/cli.py +4 -3
  30. {base_cli-0.4.2 → base_cli-0.5.0}/compatibility/consumers/cinder_automation/tests/test_consumer.py +0 -1
  31. {base_cli-0.4.2 → base_cli-0.5.0}/docs/adopter-readiness.md +10 -8
  32. base_cli-0.5.0/docs/adoption-evidence.md +78 -0
  33. base_cli-0.5.0/docs/api-reference.md +1974 -0
  34. {base_cli-0.4.2 → base_cli-0.5.0}/docs/api-stability.md +21 -8
  35. {base_cli-0.4.2 → base_cli-0.5.0}/docs/cache-ownership-and-layout.md +26 -4
  36. base_cli-0.5.0/docs/compatibility-dashboard.md +53 -0
  37. {base_cli-0.4.2 → base_cli-0.5.0}/docs/consumer-profiles.md +33 -3
  38. base_cli-0.5.0/docs/consumer-quickstart.md +92 -0
  39. base_cli-0.5.0/docs/coverage-policy.md +27 -0
  40. base_cli-0.5.0/docs/dependency-support.md +41 -0
  41. {base_cli-0.4.2 → base_cli-0.5.0}/docs/extensions.md +35 -0
  42. base_cli-0.5.0/docs/framework-choice.md +45 -0
  43. {base_cli-0.4.2 → base_cli-0.5.0}/docs/index.md +28 -4
  44. base_cli-0.5.0/docs/integrations.md +85 -0
  45. base_cli-0.5.0/docs/json-contracts.md +188 -0
  46. base_cli-0.5.0/docs/local-config.md +62 -0
  47. base_cli-0.5.0/docs/migration-0.5.md +33 -0
  48. base_cli-0.5.0/docs/migration-argparse.md +70 -0
  49. base_cli-0.5.0/docs/migration-cement.md +80 -0
  50. base_cli-0.5.0/docs/migration-click.md +75 -0
  51. base_cli-0.5.0/docs/migration-typer.md +72 -0
  52. base_cli-0.5.0/docs/migrations.md +93 -0
  53. base_cli-0.5.0/docs/optional-output-dependencies.md +78 -0
  54. base_cli-0.5.0/docs/output-contracts.md +50 -0
  55. base_cli-0.5.0/docs/performance.md +210 -0
  56. {base_cli-0.4.2 → base_cli-0.5.0}/docs/platform-support.md +40 -3
  57. base_cli-0.5.0/docs/release-0.5.0-checklist.md +55 -0
  58. base_cli-0.5.0/docs/releasing.md +215 -0
  59. base_cli-0.5.0/docs/schemas.md +33 -0
  60. {base_cli-0.4.2 → base_cli-0.5.0}/docs/security-review.md +1 -1
  61. {base_cli-0.4.2 → base_cli-0.5.0}/docs/security-threat-model.md +19 -2
  62. base_cli-0.5.0/docs/strict-json-consumer.md +93 -0
  63. base_cli-0.5.0/docs/testing.md +86 -0
  64. {base_cli-0.4.2 → base_cli-0.5.0}/docs/typer-adapter.md +16 -6
  65. {base_cli-0.4.2 → base_cli-0.5.0}/examples/automation_observability_app/src/automation_observability_app/cli.py +3 -1
  66. {base_cli-0.4.2 → base_cli-0.5.0}/examples/minimal_cli/src/minimal_cli/cli.py +3 -1
  67. {base_cli-0.4.2 → base_cli-0.5.0}/examples/nested_click_app/README.md +2 -1
  68. {base_cli-0.4.2 → base_cli-0.5.0}/examples/typer_app/README.md +6 -3
  69. {base_cli-0.4.2 → base_cli-0.5.0}/examples/typer_app/pyproject.toml +1 -1
  70. {base_cli-0.4.2 → base_cli-0.5.0}/lib/python/base_cli/__init__.py +24 -0
  71. base_cli-0.5.0/lib/python/base_cli/_app_core.py +1624 -0
  72. base_cli-0.5.0/lib/python/base_cli/_attach.py +624 -0
  73. {base_cli-0.4.2 → base_cli-0.5.0}/lib/python/base_cli/_click_compat.py +55 -7
  74. {base_cli-0.4.2 → base_cli-0.5.0}/lib/python/base_cli/_dependencies.py +4 -2
  75. {base_cli-0.4.2 → base_cli-0.5.0}/lib/python/base_cli/_lifecycle.py +17 -13
  76. base_cli-0.5.0/lib/python/base_cli/_lifecycle_install.py +895 -0
  77. {base_cli-0.4.2 → base_cli-0.5.0}/lib/python/base_cli/_private_files.py +31 -5
  78. base_cli-0.5.0/lib/python/base_cli/_run.py +868 -0
  79. {base_cli-0.4.2 → base_cli-0.5.0}/lib/python/base_cli/_runtime.py +355 -30
  80. base_cli-0.5.0/lib/python/base_cli/_stdout_capture.py +117 -0
  81. base_cli-0.5.0/lib/python/base_cli/_windows_retention.py +100 -0
  82. base_cli-0.5.0/lib/python/base_cli/app.py +31 -0
  83. base_cli-0.5.0/lib/python/base_cli/asyncio_adapter.py +39 -0
  84. {base_cli-0.4.2 → base_cli-0.5.0}/lib/python/base_cli/command_protocol.py +12 -1
  85. {base_cli-0.4.2 → base_cli-0.5.0}/lib/python/base_cli/config.py +191 -16
  86. {base_cli-0.4.2 → base_cli-0.5.0}/lib/python/base_cli/context.py +13 -0
  87. {base_cli-0.4.2 → base_cli-0.5.0}/lib/python/base_cli/extensions.py +96 -22
  88. {base_cli-0.4.2 → base_cli-0.5.0}/lib/python/base_cli/history.py +55 -11
  89. {base_cli-0.4.2 → base_cli-0.5.0}/lib/python/base_cli/inspection.py +3 -2
  90. {base_cli-0.4.2 → base_cli-0.5.0}/lib/python/base_cli/integrations.py +32 -8
  91. {base_cli-0.4.2 → base_cli-0.5.0}/lib/python/base_cli/json_contracts.py +65 -16
  92. {base_cli-0.4.2 → base_cli-0.5.0}/lib/python/base_cli/lifecycle_options.py +20 -1
  93. base_cli-0.5.0/lib/python/base_cli/logging.py +448 -0
  94. {base_cli-0.4.2 → base_cli-0.5.0}/lib/python/base_cli/output.py +174 -46
  95. {base_cli-0.4.2 → base_cli-0.5.0}/lib/python/base_cli/paths.py +36 -0
  96. {base_cli-0.4.2 → base_cli-0.5.0}/lib/python/base_cli/profile.py +43 -11
  97. {base_cli-0.4.2 → base_cli-0.5.0}/lib/python/base_cli/redaction.py +77 -6
  98. base_cli-0.5.0/lib/python/base_cli/schemas/v1/command-protocol.schema.json +15 -0
  99. base_cli-0.5.0/lib/python/base_cli/schemas/v1/error.schema.json +17 -0
  100. base_cli-0.5.0/lib/python/base_cli/schemas/v1/inspection.schema.json +15 -0
  101. base_cli-0.5.0/lib/python/base_cli/schemas/v1/log.schema.json +18 -0
  102. base_cli-0.5.0/lib/python/base_cli/schemas/v1/ndjson.schema.json +13 -0
  103. base_cli-0.5.0/lib/python/base_cli/schemas/v1/output.schema.json +17 -0
  104. {base_cli-0.4.2 → base_cli-0.5.0}/lib/python/base_cli/testing.py +4 -4
  105. {base_cli-0.4.2 → base_cli-0.5.0}/lib/python/base_cli/typer.py +1 -1
  106. base_cli-0.4.2/README.md → base_cli-0.5.0/lib/python/base_cli.egg-info/PKG-INFO +204 -40
  107. {base_cli-0.4.2 → base_cli-0.5.0}/lib/python/base_cli.egg-info/SOURCES.txt +82 -1
  108. {base_cli-0.4.2 → base_cli-0.5.0}/lib/python/base_cli.egg-info/requires.txt +9 -3
  109. {base_cli-0.4.2 → base_cli-0.5.0}/pyproject.toml +29 -8
  110. base_cli-0.5.0/scripts/benchmark_runtime.py +912 -0
  111. base_cli-0.5.0/scripts/generate_api_reference.py +187 -0
  112. base_cli-0.5.0/scripts/generate_compatibility_dashboard.py +176 -0
  113. base_cli-0.5.0/scripts/generate_release_metadata.py +160 -0
  114. base_cli-0.5.0/scripts/record_compatibility_evidence.py +74 -0
  115. base_cli-0.5.0/scripts/release_metadata_helpers.py +24 -0
  116. base_cli-0.5.0/scripts/validate_changelog.py +216 -0
  117. base_cli-0.5.0/scripts/validate_consumer_typing.py +48 -0
  118. {base_cli-0.4.2 → base_cli-0.5.0}/scripts/validate_consumers.py +2 -2
  119. base_cli-0.5.0/scripts/validate_contract_fixtures.py +98 -0
  120. base_cli-0.5.0/scripts/validate_coverage.py +94 -0
  121. {base_cli-0.4.2 → base_cli-0.5.0}/scripts/validate_docs.py +57 -1
  122. {base_cli-0.4.2 → base_cli-0.5.0}/scripts/validate_package_artifact.py +15 -1
  123. base_cli-0.5.0/scripts/validate_release_metadata.py +87 -0
  124. base_cli-0.5.0/scripts/validate_release_provenance.py +181 -0
  125. base_cli-0.5.0/scripts/validate_release_ref.py +66 -0
  126. base_cli-0.5.0/scripts/validate_schemas.py +61 -0
  127. base_cli-0.5.0/scripts/verify_release_assets.py +178 -0
  128. {base_cli-0.4.2 → base_cli-0.5.0}/tests/test_adversarial_regressions.py +10 -3
  129. {base_cli-0.4.2 → base_cli-0.5.0}/tests/test_api_stability.py +12 -0
  130. {base_cli-0.4.2 → base_cli-0.5.0}/tests/test_app_lifecycle.py +4 -0
  131. base_cli-0.5.0/tests/test_app_module_boundaries.py +28 -0
  132. {base_cli-0.4.2 → base_cli-0.5.0}/tests/test_app_registration.py +16 -3
  133. {base_cli-0.4.2 → base_cli-0.5.0}/tests/test_app_run.py +75 -0
  134. {base_cli-0.4.2 → base_cli-0.5.0}/tests/test_app_run_metadata.py +196 -11
  135. {base_cli-0.4.2 → base_cli-0.5.0}/tests/test_app_runtime_boundary.py +9 -0
  136. base_cli-0.5.0/tests/test_batteries_included_config.py +362 -0
  137. base_cli-0.5.0/tests/test_benchmark_runtime.py +235 -0
  138. {base_cli-0.4.2 → base_cli-0.5.0}/tests/test_cleanup_security.py +35 -2
  139. {base_cli-0.4.2 → base_cli-0.5.0}/tests/test_click_tree_attachment.py +157 -3
  140. {base_cli-0.4.2 → base_cli-0.5.0}/tests/test_command_protocol.py +38 -0
  141. base_cli-0.5.0/tests/test_community_issue_templates.py +18 -0
  142. base_cli-0.5.0/tests/test_config_discovery_trust.py +93 -0
  143. base_cli-0.5.0/tests/test_consumer_quickstart_docs.py +28 -0
  144. base_cli-0.5.0/tests/test_dependency_documentation.py +29 -0
  145. {base_cli-0.4.2 → base_cli-0.5.0}/tests/test_explicit_config_validation.py +1 -1
  146. base_cli-0.5.0/tests/test_extensions.py +253 -0
  147. base_cli-0.5.0/tests/test_framework_config_runtime.py +316 -0
  148. base_cli-0.5.0/tests/test_generate_compatibility_dashboard.py +36 -0
  149. base_cli-0.5.0/tests/test_generated_api_reference.py +17 -0
  150. {base_cli-0.4.2 → base_cli-0.5.0}/tests/test_generic_core.py +27 -0
  151. {base_cli-0.4.2 → base_cli-0.5.0}/tests/test_history.py +26 -0
  152. {base_cli-0.4.2 → base_cli-0.5.0}/tests/test_integrations.py +68 -0
  153. base_cli-0.5.0/tests/test_json_contracts.py +628 -0
  154. base_cli-0.5.0/tests/test_json_descriptor_capture.py +78 -0
  155. base_cli-0.5.0/tests/test_logger_ownership.py +111 -0
  156. {base_cli-0.4.2 → base_cli-0.5.0}/tests/test_logging.py +86 -0
  157. base_cli-0.5.0/tests/test_logging_hot_path.py +217 -0
  158. base_cli-0.5.0/tests/test_optional_output_dependencies_docs.py +29 -0
  159. base_cli-0.5.0/tests/test_optional_yaml_dependency.py +87 -0
  160. base_cli-0.5.0/tests/test_output.py +501 -0
  161. base_cli-0.5.0/tests/test_package_workflow.py +38 -0
  162. {base_cli-0.4.2 → base_cli-0.5.0}/tests/test_paths.py +36 -1
  163. base_cli-0.5.0/tests/test_platform_edge_paths.py +296 -0
  164. base_cli-0.5.0/tests/test_project_intake.py +509 -0
  165. {base_cli-0.4.2 → base_cli-0.5.0}/tests/test_public_api.py +4 -0
  166. {base_cli-0.4.2 → base_cli-0.5.0}/tests/test_redaction_security.py +144 -0
  167. base_cli-0.5.0/tests/test_retention_contention.py +93 -0
  168. base_cli-0.5.0/tests/test_retention_platform.py +61 -0
  169. base_cli-0.5.0/tests/test_run_app_reentrancy.py +122 -0
  170. base_cli-0.5.0/tests/test_run_bundle_retention.py +432 -0
  171. base_cli-0.5.0/tests/test_run_json_preflight.py +227 -0
  172. base_cli-0.5.0/tests/test_strict_json_consumer_docs.py +27 -0
  173. {base_cli-0.4.2 → base_cli-0.5.0}/tests/test_testing.py +40 -0
  174. {base_cli-0.4.2 → base_cli-0.5.0}/tests/test_typed_contracts.py +37 -0
  175. {base_cli-0.4.2 → base_cli-0.5.0}/tests/test_typer_adapter.py +38 -0
  176. base_cli-0.5.0/tests/test_validate_changelog.py +120 -0
  177. base_cli-0.5.0/tests/test_validate_consumer_typing.py +34 -0
  178. base_cli-0.5.0/tests/test_validate_coverage.py +26 -0
  179. base_cli-0.5.0/tests/test_validate_docs.py +33 -0
  180. base_cli-0.5.0/tests/test_validate_package_artifact.py +11 -0
  181. base_cli-0.5.0/tests/test_validate_release_provenance.py +227 -0
  182. base_cli-0.5.0/tests/test_validate_release_ref.py +61 -0
  183. base_cli-0.5.0/tests/test_validate_schemas.py +42 -0
  184. base_cli-0.5.0/tests/test_verify_release_assets.py +139 -0
  185. base_cli-0.5.0/tests/test_windows_retention.py +43 -0
  186. base_cli-0.4.2/.github/ISSUE_TEMPLATE/support.md +0 -28
  187. base_cli-0.4.2/.github/workflows/compatibility.yml +0 -68
  188. base_cli-0.4.2/.github/workflows/package.yml +0 -186
  189. base_cli-0.4.2/.github/workflows/project-intake.yml +0 -255
  190. base_cli-0.4.2/.github/workflows/tests.yml +0 -140
  191. base_cli-0.4.2/VERSION +0 -1
  192. base_cli-0.4.2/compatibility/README.md +0 -38
  193. base_cli-0.4.2/docs/integrations.md +0 -54
  194. base_cli-0.4.2/docs/json-contracts.md +0 -113
  195. base_cli-0.4.2/docs/local-config.md +0 -23
  196. base_cli-0.4.2/docs/migrations.md +0 -53
  197. base_cli-0.4.2/docs/output-contracts.md +0 -25
  198. base_cli-0.4.2/docs/performance.md +0 -33
  199. base_cli-0.4.2/docs/releasing.md +0 -92
  200. base_cli-0.4.2/lib/python/base_cli/app.py +0 -3175
  201. base_cli-0.4.2/lib/python/base_cli/logging.py +0 -292
  202. base_cli-0.4.2/scripts/benchmark_runtime.py +0 -114
  203. base_cli-0.4.2/tests/test_batteries_included_config.py +0 -173
  204. base_cli-0.4.2/tests/test_benchmark_runtime.py +0 -21
  205. base_cli-0.4.2/tests/test_extensions.py +0 -119
  206. base_cli-0.4.2/tests/test_json_contracts.py +0 -256
  207. base_cli-0.4.2/tests/test_output.py +0 -282
  208. base_cli-0.4.2/tests/test_run_bundle_retention.py +0 -174
  209. {base_cli-0.4.2 → base_cli-0.5.0}/.github/base-project.yml +0 -0
  210. {base_cli-0.4.2 → base_cli-0.5.0}/.github/pull_request_template.md +0 -0
  211. {base_cli-0.4.2 → base_cli-0.5.0}/.github/workflows/examples.yml +0 -0
  212. {base_cli-0.4.2 → base_cli-0.5.0}/.github/workflows/issue-branch-policy.yml +0 -0
  213. {base_cli-0.4.2 → base_cli-0.5.0}/LICENSE +0 -0
  214. {base_cli-0.4.2 → base_cli-0.5.0}/MANIFEST.in +0 -0
  215. {base_cli-0.4.2 → base_cli-0.5.0}/SECURITY.md +0 -0
  216. {base_cli-0.4.2 → base_cli-0.5.0}/compatibility/consumers/atlas_click/src/atlas_click/__init__.py +0 -0
  217. {base_cli-0.4.2 → base_cli-0.5.0}/compatibility/consumers/atlas_click/src/atlas_click/cli.py +1 -1
  218. {base_cli-0.4.2 → base_cli-0.5.0}/compatibility/consumers/beacon_typer/src/beacon_typer/__init__.py +0 -0
  219. {base_cli-0.4.2 → base_cli-0.5.0}/compatibility/consumers/cinder_automation/src/cinder_automation/__init__.py +0 -0
  220. {base_cli-0.4.2 → base_cli-0.5.0}/compatibility/consumers/manifest.json +0 -0
  221. {base_cli-0.4.2 → base_cli-0.5.0}/docs/user-config-typing.md +0 -0
  222. {base_cli-0.4.2 → base_cli-0.5.0}/examples/README.md +0 -0
  223. {base_cli-0.4.2 → base_cli-0.5.0}/examples/automation_observability_app/README.md +0 -0
  224. {base_cli-0.4.2 → base_cli-0.5.0}/examples/automation_observability_app/pyproject.toml +0 -0
  225. {base_cli-0.4.2 → base_cli-0.5.0}/examples/automation_observability_app/src/automation_observability_app/__init__.py +0 -0
  226. {base_cli-0.4.2 → base_cli-0.5.0}/examples/automation_observability_app/tests/test_cli.py +0 -0
  227. {base_cli-0.4.2 → base_cli-0.5.0}/examples/minimal_cli/README.md +0 -0
  228. {base_cli-0.4.2 → base_cli-0.5.0}/examples/minimal_cli/pyproject.toml +0 -0
  229. {base_cli-0.4.2 → base_cli-0.5.0}/examples/minimal_cli/src/minimal_cli/__init__.py +0 -0
  230. {base_cli-0.4.2 → base_cli-0.5.0}/examples/minimal_cli/tests/test_cli.py +0 -0
  231. {base_cli-0.4.2 → base_cli-0.5.0}/examples/nested_click_app/pyproject.toml +0 -0
  232. {base_cli-0.4.2 → base_cli-0.5.0}/examples/nested_click_app/src/nested_click_app/__init__.py +0 -0
  233. {base_cli-0.4.2 → base_cli-0.5.0}/examples/nested_click_app/src/nested_click_app/cli.py +0 -0
  234. {base_cli-0.4.2 → base_cli-0.5.0}/examples/nested_click_app/src/nested_click_app/plugin.py +0 -0
  235. {base_cli-0.4.2 → base_cli-0.5.0}/examples/nested_click_app/tests/test_cli.py +0 -0
  236. {base_cli-0.4.2 → base_cli-0.5.0}/examples/typed_consumer.py +0 -0
  237. {base_cli-0.4.2 → base_cli-0.5.0}/examples/typer_app/src/typer_app/__init__.py +0 -0
  238. {base_cli-0.4.2 → base_cli-0.5.0}/examples/typer_app/src/typer_app/cli.py +0 -0
  239. {base_cli-0.4.2 → base_cli-0.5.0}/examples/typer_app/tests/test_cli.py +0 -0
  240. {base_cli-0.4.2 → base_cli-0.5.0}/examples/typer_consumer.py +0 -0
  241. {base_cli-0.4.2 → base_cli-0.5.0}/lib/python/base_cli/_cleanup.py +0 -0
  242. {base_cli-0.4.2 → base_cli-0.5.0}/lib/python/base_cli/attachment.py +0 -0
  243. {base_cli-0.4.2 → base_cli-0.5.0}/lib/python/base_cli/command_filters.py +0 -0
  244. {base_cli-0.4.2 → base_cli-0.5.0}/lib/python/base_cli/deprecations.py +0 -0
  245. {base_cli-0.4.2 → base_cli-0.5.0}/lib/python/base_cli/errors.py +0 -0
  246. {base_cli-0.4.2 → base_cli-0.5.0}/lib/python/base_cli/exit_codes.py +0 -0
  247. {base_cli-0.4.2 → base_cli-0.5.0}/lib/python/base_cli/experimental.py +0 -0
  248. {base_cli-0.4.2 → base_cli-0.5.0}/lib/python/base_cli/py.typed +0 -0
  249. {base_cli-0.4.2 → base_cli-0.5.0}/lib/python/base_cli/runtime.py +0 -0
  250. {base_cli-0.4.2 → base_cli-0.5.0}/lib/python/base_cli.egg-info/dependency_links.txt +0 -0
  251. {base_cli-0.4.2 → base_cli-0.5.0}/lib/python/base_cli.egg-info/top_level.txt +0 -0
  252. {base_cli-0.4.2 → base_cli-0.5.0}/scripts/validate_examples.py +0 -0
  253. {base_cli-0.4.2 → base_cli-0.5.0}/scripts/validate_installed_package.py +0 -0
  254. {base_cli-0.4.2 → base_cli-0.5.0}/setup.cfg +0 -0
  255. {base_cli-0.4.2 → base_cli-0.5.0}/tests/conftest.py +0 -0
  256. {base_cli-0.4.2 → base_cli-0.5.0}/tests/test_app_dry_run.py +0 -0
  257. {base_cli-0.4.2 → base_cli-0.5.0}/tests/test_app_log_retention.py +0 -0
  258. {base_cli-0.4.2 → base_cli-0.5.0}/tests/test_app_quiet.py +0 -0
  259. {base_cli-0.4.2 → base_cli-0.5.0}/tests/test_app_runtime_errors.py +0 -0
  260. {base_cli-0.4.2 → base_cli-0.5.0}/tests/test_app_security_boundaries.py +0 -0
  261. {base_cli-0.4.2 → base_cli-0.5.0}/tests/test_app_startup_transaction.py +0 -0
  262. {base_cli-0.4.2 → base_cli-0.5.0}/tests/test_app_subcommands.py +0 -0
  263. {base_cli-0.4.2 → base_cli-0.5.0}/tests/test_command_filters.py +0 -0
  264. {base_cli-0.4.2 → base_cli-0.5.0}/tests/test_context_workspace.py +0 -0
  265. {base_cli-0.4.2 → base_cli-0.5.0}/tests/test_inspection.py +0 -0
  266. {base_cli-0.4.2 → base_cli-0.5.0}/tests/test_invocation_parity.py +0 -0
  267. {base_cli-0.4.2 → base_cli-0.5.0}/tests/test_lifecycle_options.py +0 -0
  268. {base_cli-0.4.2 → base_cli-0.5.0}/tests/test_profile.py +0 -0
  269. {base_cli-0.4.2 → base_cli-0.5.0}/tests/test_security_documentation.py +0 -0
@@ -0,0 +1,50 @@
1
+ name: Bug report
2
+ description: Report a reproducible base-cli defect
3
+ title: "bug: "
4
+ labels:
5
+ - bug
6
+ body:
7
+ - type: markdown
8
+ attributes:
9
+ value: |
10
+ Do not include secrets, personal data, or vulnerability details. Use SECURITY.md for private reports.
11
+ - type: input
12
+ id: version
13
+ attributes:
14
+ label: Version or commit
15
+ description: Include the installed release, package revision, or commit.
16
+ validations:
17
+ required: true
18
+ - type: input
19
+ id: environment
20
+ attributes:
21
+ label: Environment
22
+ description: Include Python, Click/Typer, OS, architecture, and relevant extras.
23
+ validations:
24
+ required: true
25
+ - type: textarea
26
+ id: reproduction
27
+ attributes:
28
+ label: Reproduction
29
+ description: Give the smallest command, fixture, or test that reproduces the problem.
30
+ validations:
31
+ required: true
32
+ - type: textarea
33
+ id: expected
34
+ attributes:
35
+ label: Expected behavior
36
+ validations:
37
+ required: true
38
+ - type: textarea
39
+ id: actual
40
+ attributes:
41
+ label: Actual behavior
42
+ render: text
43
+ validations:
44
+ required: true
45
+ - type: textarea
46
+ id: logs
47
+ attributes:
48
+ label: Relevant logs
49
+ description: Redact credentials, tokens, personal data, and private paths.
50
+ render: text
@@ -0,0 +1,8 @@
1
+ blank_issues_enabled: true
2
+ contact_links:
3
+ - name: Support and adoption questions
4
+ url: https://github.com/orgs/basefoundry/discussions
5
+ about: Ask ecosystem-wide usage and onboarding questions in the canonical public forum.
6
+ - name: Private security report
7
+ url: https://github.com/basefoundry/base-cli/security/advisories/new
8
+ about: Never disclose vulnerabilities or sensitive data in a public issue.
@@ -0,0 +1,25 @@
1
+ name: Documentation improvement
2
+ description: Report missing, incorrect, or confusing base-cli documentation
3
+ title: "docs: "
4
+ labels:
5
+ - documentation
6
+ body:
7
+ - type: input
8
+ id: location
9
+ attributes:
10
+ label: Documentation location
11
+ description: Give the URL or repository path.
12
+ validations:
13
+ required: true
14
+ - type: textarea
15
+ id: problem
16
+ attributes:
17
+ label: Problem
18
+ description: Explain what a reader cannot understand or do.
19
+ validations:
20
+ required: true
21
+ - type: textarea
22
+ id: suggestion
23
+ attributes:
24
+ label: Suggested improvement
25
+ description: Describe the corrected or clearer outcome.
@@ -0,0 +1,25 @@
1
+ name: Feature proposal
2
+ description: Propose a user-facing base-cli capability or improvement
3
+ title: "feature: "
4
+ labels:
5
+ - enhancement
6
+ body:
7
+ - type: textarea
8
+ id: problem
9
+ attributes:
10
+ label: User problem
11
+ description: Who is affected, and what are they unable to do today?
12
+ validations:
13
+ required: true
14
+ - type: textarea
15
+ id: outcome
16
+ attributes:
17
+ label: Desired outcome
18
+ description: Describe what success looks like without requiring a particular implementation.
19
+ validations:
20
+ required: true
21
+ - type: textarea
22
+ id: alternatives
23
+ attributes:
24
+ label: Alternatives and context
25
+ description: Include workarounds, constraints, or compatibility concerns.
@@ -0,0 +1,12 @@
1
+ ---
2
+ name: Adoption support
3
+ about: Request migration or downstream compatibility help
4
+ title: "[Support] "
5
+ labels: ""
6
+ assignees: ""
7
+ ---
8
+
9
+ Use the Support and adoption question form when it is available. Include the
10
+ base-cli version, Python and operating-system versions, a minimal
11
+ reproduction, and redacted evidence. Never include secrets; use SECURITY.md
12
+ for private vulnerability reports.
@@ -0,0 +1,30 @@
1
+ name: Support and adoption question
2
+ description: Ask for help using or evaluating base-cli
3
+ title: "support: "
4
+ labels:
5
+ - adoption support
6
+ body:
7
+ - type: markdown
8
+ attributes:
9
+ value: |
10
+ For general ecosystem questions, prefer Base Discussions. Do not include secrets or security-sensitive details here.
11
+ - type: input
12
+ id: version
13
+ attributes:
14
+ label: Version or commit
15
+ validations:
16
+ required: true
17
+ - type: textarea
18
+ id: environment
19
+ attributes:
20
+ label: Environment
21
+ description: Include Python, Click/Typer, OS, architecture, and relevant extras.
22
+ validations:
23
+ required: true
24
+ - type: textarea
25
+ id: goal
26
+ attributes:
27
+ label: Goal and evidence
28
+ description: What are you trying to do, what did you try, and what happened?
29
+ validations:
30
+ required: true
@@ -0,0 +1,110 @@
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", "0.27.2"]
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
+ typer-click-boundaries:
41
+ name: Typer ${{ matrix.typer-version }} / Click ${{ matrix.click-version }} / Python ${{ matrix.python-version }}
42
+ runs-on: ubuntu-latest
43
+ timeout-minutes: 20
44
+ strategy:
45
+ fail-fast: false
46
+ matrix:
47
+ python-version: ["3.10", "3.14"]
48
+ typer-version: ["0.25.1", "0.27.2"]
49
+ click-version: ["8.2.1", "8.5.0"]
50
+ steps:
51
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
52
+ - name: Set up Python
53
+ uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
54
+ with:
55
+ python-version: ${{ matrix.python-version }}
56
+ - name: Install framework and supported Typer adapter
57
+ run: |
58
+ python -m pip install "setuptools<77" "wheel"
59
+ python -m pip install ".[dev,typer]"
60
+ - name: Pin the tested Click/Typer boundary pair
61
+ run: python -m pip install --upgrade "click==${{ matrix.click-version }}" "typer==${{ matrix.typer-version }}"
62
+ - name: Install Beacon fixture without dependency resolution
63
+ run: python -m pip install --no-deps compatibility/consumers/beacon_typer
64
+ - name: Run adapter and Beacon compatibility tests
65
+ run: python -m pytest tests/test_typer_adapter.py compatibility/consumers/beacon_typer/tests
66
+
67
+ downstream:
68
+ name: Install and test independent consumers
69
+ runs-on: ubuntu-latest
70
+ timeout-minutes: 15
71
+ steps:
72
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
73
+ - name: Set up Python
74
+ uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
75
+ with:
76
+ python-version: "3.13"
77
+ - name: Install framework build and test dependencies
78
+ run: python -m pip install ".[dev,typer,rich,telemetry]"
79
+ - name: Build and install the framework wheel
80
+ run: |
81
+ python -m build --wheel
82
+ python -m pip uninstall --yes base-cli
83
+ python -m pip install dist/*.whl
84
+ - name: Validate consumer manifest
85
+ run: python scripts/validate_consumers.py
86
+ - name: Install consumers without dependency resolution
87
+ run: |
88
+ python -m pip install --no-deps compatibility/consumers/atlas_click
89
+ python -m pip install --no-deps compatibility/consumers/beacon_typer
90
+ python -m pip install --no-deps "compatibility/consumers/cinder_automation[observability]"
91
+ - name: Verify the installed framework matches the source release
92
+ run: |
93
+ expected="$(tr -d '\r\n' < VERSION)"
94
+ actual="$(python -c 'from importlib.metadata import version; print(version("base-cli"))')"
95
+ test "$actual" = "$expected"
96
+ python -m pip check
97
+ - name: Run downstream compatibility suites
98
+ run: |
99
+ for tests in compatibility/consumers/*/tests; do
100
+ python -m pytest "$tests"
101
+ done
102
+ - name: Record dated compatibility evidence
103
+ run: python scripts/record_compatibility_evidence.py > compatibility-evidence.json
104
+ - name: Upload compatibility evidence
105
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
106
+ with:
107
+ name: base-cli-compatibility-evidence-${{ github.run_id }}
108
+ path: compatibility-evidence.json
109
+ if-no-files-found: error
110
+ retention-days: 90
@@ -0,0 +1,48 @@
1
+ name: Dependency compatibility
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
+ core:
16
+ name: Click ${{ matrix.click-version }} / PyYAML ${{ matrix.pyyaml-version }} / Python ${{ matrix.python-version }}
17
+ runs-on: ubuntu-latest
18
+ timeout-minutes: 15
19
+ strategy:
20
+ fail-fast: false
21
+ matrix:
22
+ python-version: ["3.10", "3.14"]
23
+ click-version: ["8.1.*", "8.2.*", "8.3.*", "8.4.*", "8.5.*"]
24
+ pyyaml-version: ["6.0.*"]
25
+ steps:
26
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
27
+ - name: Set up Python
28
+ uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
29
+ with:
30
+ python-version: ${{ matrix.python-version }}
31
+ - name: Install framework and test dependencies
32
+ run: python -m pip install "setuptools<77" "wheel" ".[dev]"
33
+ - name: Select tested core dependency lines
34
+ run: |
35
+ python -m pip install --upgrade --force-reinstall \
36
+ "click==${{ matrix.click-version }}" \
37
+ "PyYAML==${{ matrix.pyyaml-version }}"
38
+ - name: Verify resolved dependency contract
39
+ run: |
40
+ python - <<'PY'
41
+ from importlib.metadata import version
42
+
43
+ click_version = version("click")
44
+ yaml_version = version("PyYAML")
45
+ print(f"Click {click_version}; PyYAML {yaml_version}")
46
+ PY
47
+ - name: Run core suite
48
+ run: python -m pytest
@@ -11,7 +11,19 @@ on:
11
11
  - "mkdocs.yml"
12
12
  - "pyproject.toml"
13
13
  - "scripts/validate_docs.py"
14
+ - "scripts/validate_changelog.py"
15
+ - "scripts/generate_compatibility_dashboard.py"
16
+ - ".github/workflows/tests.yml"
17
+ - ".github/workflows/dependency-matrix.yml"
18
+ - ".github/workflows/compatibility.yml"
19
+ - "scripts/generate_api_reference.py"
20
+ - "scripts/generate_compatibility_dashboard.py"
21
+ - ".github/workflows/tests.yml"
22
+ - ".github/workflows/dependency-matrix.yml"
23
+ - ".github/workflows/compatibility.yml"
14
24
  - "tests/validate.sh"
25
+ - "tests/full_validate.sh"
26
+ - "docs/testing.md"
15
27
  - ".github/workflows/docs.yml"
16
28
  pull_request:
17
29
  paths:
@@ -21,7 +33,10 @@ on:
21
33
  - "mkdocs.yml"
22
34
  - "pyproject.toml"
23
35
  - "scripts/validate_docs.py"
36
+ - "scripts/generate_api_reference.py"
24
37
  - "tests/validate.sh"
38
+ - "tests/full_validate.sh"
39
+ - "docs/testing.md"
25
40
  - ".github/workflows/docs.yml"
26
41
  workflow_dispatch:
27
42
 
@@ -40,6 +55,8 @@ jobs:
40
55
  steps:
41
56
  - name: Check out source
42
57
  uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
58
+ with:
59
+ fetch-depth: 0
43
60
 
44
61
  - name: Set up Python
45
62
  uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
@@ -50,7 +67,13 @@ jobs:
50
67
  run: python -m pip install ".[docs]"
51
68
 
52
69
  - name: Validate repository links and examples
53
- run: python scripts/validate_docs.py
70
+ run: |
71
+ python scripts/validate_docs.py
72
+ python scripts/validate_changelog.py
73
+ python scripts/generate_compatibility_dashboard.py --check
74
+
75
+ - name: Validate generated public API reference
76
+ run: python scripts/generate_api_reference.py --check
54
77
 
55
78
  - name: Build documentation with strict warnings
56
79
  run: python -m mkdocs build --strict --site-dir site