strictcli 0.41.2__tar.gz → 0.43.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 (110) hide show
  1. {strictcli-0.41.2 → strictcli-0.43.0}/PKG-INFO +8 -8
  2. {strictcli-0.41.2 → strictcli-0.43.0}/README.md +3 -3
  3. {strictcli-0.41.2 → strictcli-0.43.0}/pyproject.toml +5 -5
  4. {strictcli-0.41.2 → strictcli-0.43.0}/strictcli/__init__.py +445 -67
  5. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_coverage.py +127 -23
  6. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_effects.py +6 -3
  7. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_effects_bypass_check.py +67 -1
  8. strictcli-0.43.0/tests/test_retired_choices.py +388 -0
  9. {strictcli-0.41.2 → strictcli-0.43.0}/uv.lock +1 -1
  10. {strictcli-0.41.2 → strictcli-0.43.0}/.claude/settings.json +0 -0
  11. {strictcli-0.41.2 → strictcli-0.43.0}/.github/workflows/ci.yml +0 -0
  12. {strictcli-0.41.2 → strictcli-0.43.0}/.github/workflows/publish.yml +0 -0
  13. {strictcli-0.41.2 → strictcli-0.43.0}/.gitignore +0 -0
  14. {strictcli-0.41.2 → strictcli-0.43.0}/.rlsbl/config.json +0 -0
  15. {strictcli-0.41.2 → strictcli-0.43.0}/.rlsbl/lint/python.toml +0 -0
  16. {strictcli-0.41.2 → strictcli-0.43.0}/.rlsbl/managed-files.json +0 -0
  17. {strictcli-0.41.2 → strictcli-0.43.0}/CLAUDE.md +0 -0
  18. {strictcli-0.41.2 → strictcli-0.43.0}/LICENSE +0 -0
  19. {strictcli-0.41.2 → strictcli-0.43.0}/scripts/add_effect_classification.py +0 -0
  20. {strictcli-0.41.2 → strictcli-0.43.0}/scripts/add_forwarding_declaration.py +0 -0
  21. {strictcli-0.41.2 → strictcli-0.43.0}/scripts/migrate_presence.py +0 -0
  22. {strictcli-0.41.2 → strictcli-0.43.0}/strictcli/py.typed +0 -0
  23. {strictcli-0.41.2 → strictcli-0.43.0}/tests/conftest.py +0 -0
  24. {strictcli-0.41.2 → strictcli-0.43.0}/tests/flagship_app.py +0 -0
  25. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_arg_decorator_order.py +0 -0
  26. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_arg_default.py +0 -0
  27. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_arg_default_validation.py +0 -0
  28. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_argv_value_order.py +0 -0
  29. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_at_prefix.py +0 -0
  30. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_auto_version.py +0 -0
  31. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_call.py +0 -0
  32. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_check_command.py +0 -0
  33. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_check_discovery.py +0 -0
  34. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_check_provider.py +0 -0
  35. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_check_public_api.py +0 -0
  36. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_check_runner.py +0 -0
  37. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_check_schema.py +0 -0
  38. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_check_types.py +0 -0
  39. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_choice_records.py +0 -0
  40. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_choices.py +0 -0
  41. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_choices_none.py +0 -0
  42. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_claimed_rendering.py +0 -0
  43. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_classification.py +0 -0
  44. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_command_help_suggestion.py +0 -0
  45. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_command_tags.py +0 -0
  46. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_compound_types.py +0 -0
  47. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_config.py +0 -0
  48. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_config_fields.py +0 -0
  49. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_config_file_path.py +0 -0
  50. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_config_set_bugs.py +0 -0
  51. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_confirm.py +0 -0
  52. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_connection_env.py +0 -0
  53. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_constraints.py +0 -0
  54. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_context.py +0 -0
  55. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_deep_nesting.py +0 -0
  56. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_deprecated.py +0 -0
  57. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_dry_run_unsupported.py +0 -0
  58. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_dump_schema.py +0 -0
  59. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_e2e.py +0 -0
  60. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_env.py +0 -0
  61. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_exit_codes.py +0 -0
  62. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_flag_sets.py +0 -0
  63. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_flagship_preview.py +0 -0
  64. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_flat_pre_typed.py +0 -0
  65. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_float_format.py +0 -0
  66. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_float_type.py +0 -0
  67. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_float_vectors.py +0 -0
  68. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_global_flag_conflict_position.py +0 -0
  69. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_global_flags.py +0 -0
  70. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_guard_v2.py +0 -0
  71. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_help.py +0 -0
  72. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_hermetic.py +0 -0
  73. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_infra_env.py +0 -0
  74. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_int_type.py +0 -0
  75. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_invoke.py +0 -0
  76. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_keyword_flags.py +0 -0
  77. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_machine_mode.py +0 -0
  78. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_mcp.py +0 -0
  79. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_member_spelling.py +0 -0
  80. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_nesting.py +0 -0
  81. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_owns_stdout.py +0 -0
  82. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_parser.py +0 -0
  83. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_passthrough.py +0 -0
  84. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_payload_schema.py +0 -0
  85. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_presence.py +0 -0
  86. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_provenance.py +0 -0
  87. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_provenance_phase2.py +0 -0
  88. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_record_pre_typed.py +0 -0
  89. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_registration.py +0 -0
  90. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_repeatable.py +0 -0
  91. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_reserved_global_flags.py +0 -0
  92. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_reserved_quartet.py +0 -0
  93. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_selectors.py +0 -0
  94. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_tagdsl.py +0 -0
  95. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_toml_loading.py +0 -0
  96. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_tool_export.py +0 -0
  97. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_trace_store.py +0 -0
  98. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_typed_args.py +0 -0
  99. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_ulid_vectors.py +0 -0
  100. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_unique.py +0 -0
  101. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_update.py +0 -0
  102. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_utilities.py +0 -0
  103. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_validate.py +0 -0
  104. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_value_sweep_order.py +0 -0
  105. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_variadic.py +0 -0
  106. {strictcli-0.41.2 → strictcli-0.43.0}/tests/test_visibility.py +0 -0
  107. {strictcli-0.41.2 → strictcli-0.43.0}/todo/.defer/deferred.md +0 -0
  108. {strictcli-0.41.2 → strictcli-0.43.0}/todo/.done/keyword-collision-in-flag-param-name.md +0 -0
  109. {strictcli-0.41.2 → strictcli-0.43.0}/todo/.done/original-idea.md +0 -0
  110. {strictcli-0.41.2 → strictcli-0.43.0}/todo/.done/public-check-runner-api.md +0 -0
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: strictcli
3
- Version: 0.41.2
4
- Summary: A strict CLI framework for Python, Go and TypeScript that makes you declare every command, flag, argument and help string, and errors at registration time on anything left unstated (Python implementation)
3
+ Version: 0.43.0
4
+ Summary: A CLI framework for the Era of Agents: nothing is inferred, everything is declared. First-class support for Go, Python, and TypeScript (Python implementation)
5
5
  Project-URL: Homepage, https://smmh.dev/strictcli/
6
6
  Project-URL: Documentation, https://smmh.dev/strictcli/
7
- Project-URL: Repository, https://github.com/smm-h/strictcli
8
- Project-URL: Issues, https://github.com/smm-h/strictcli/issues
9
- Project-URL: Changelog, https://github.com/smm-h/strictcli/blob/main/CHANGELOG.md
7
+ Project-URL: Repository, https://github.com/stricttools/strictcli
8
+ Project-URL: Issues, https://github.com/stricttools/strictcli/issues
9
+ Project-URL: Changelog, https://github.com/stricttools/strictcli/blob/main/CHANGELOG.md
10
10
  Author-email: "S. M. Hosseini" <m.hosseini@veliu.com>
11
11
  License-Expression: MIT
12
12
  License-File: LICENSE
@@ -24,7 +24,7 @@ Description-Content-Type: text/markdown
24
24
 
25
25
  # strictcli
26
26
 
27
- A strict CLI framework for Python, Go and TypeScript that makes you declare every command, flag, argument and help string, and errors at registration time on anything left unstated (Python implementation).
27
+ A CLI framework for the Era of Agents: nothing is inferred, everything is declared. First-class support for Go, Python, and TypeScript (Python implementation).
28
28
 
29
29
  strictcli makes you declare everything -- every command, flag, argument, and environment variable must have help text or the framework errors at registration time. Four types only: `str`, `bool`, `int`, `float`. No magic type inference, no implicit defaults.
30
30
 
@@ -657,8 +657,8 @@ paths have no TTY contract, so a consequential command is dispatched directly.
657
657
 
658
658
  ## See also
659
659
 
660
- - [strictcli monorepo](https://github.com/smm-h/strictcli) -- conformance tests, Go implementation, and project documentation
661
- - [Go implementation](https://github.com/smm-h/strictcli/tree/main/go) -- same semantics, functional options API
660
+ - [strictcli monorepo](https://github.com/stricttools/strictcli) -- conformance tests, Go implementation, and project documentation
661
+ - [Go implementation](https://github.com/stricttools/strictcli/tree/main/go) -- same semantics, functional options API
662
662
 
663
663
  ## License
664
664
 
@@ -1,6 +1,6 @@
1
1
  # strictcli
2
2
 
3
- A strict CLI framework for Python, Go and TypeScript that makes you declare every command, flag, argument and help string, and errors at registration time on anything left unstated (Python implementation).
3
+ A CLI framework for the Era of Agents: nothing is inferred, everything is declared. First-class support for Go, Python, and TypeScript (Python implementation).
4
4
 
5
5
  strictcli makes you declare everything -- every command, flag, argument, and environment variable must have help text or the framework errors at registration time. Four types only: `str`, `bool`, `int`, `float`. No magic type inference, no implicit defaults.
6
6
 
@@ -633,8 +633,8 @@ paths have no TTY contract, so a consequential command is dispatched directly.
633
633
 
634
634
  ## See also
635
635
 
636
- - [strictcli monorepo](https://github.com/smm-h/strictcli) -- conformance tests, Go implementation, and project documentation
637
- - [Go implementation](https://github.com/smm-h/strictcli/tree/main/go) -- same semantics, functional options API
636
+ - [strictcli monorepo](https://github.com/stricttools/strictcli) -- conformance tests, Go implementation, and project documentation
637
+ - [Go implementation](https://github.com/stricttools/strictcli/tree/main/go) -- same semantics, functional options API
638
638
 
639
639
  ## License
640
640
 
@@ -4,8 +4,8 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "strictcli"
7
- version = "0.41.2"
8
- description = "A strict CLI framework for Python, Go and TypeScript that makes you declare every command, flag, argument and help string, and errors at registration time on anything left unstated (Python implementation)"
7
+ version = "0.43.0"
8
+ description = "A CLI framework for the Era of Agents: nothing is inferred, everything is declared. First-class support for Go, Python, and TypeScript (Python implementation)"
9
9
  readme = "README.md"
10
10
  license = "MIT"
11
11
  requires-python = ">=3.11"
@@ -42,6 +42,6 @@ testpaths = ["tests"]
42
42
  [project.urls]
43
43
  Homepage = "https://smmh.dev/strictcli/"
44
44
  Documentation = "https://smmh.dev/strictcli/"
45
- Repository = "https://github.com/smm-h/strictcli"
46
- Issues = "https://github.com/smm-h/strictcli/issues"
47
- Changelog = "https://github.com/smm-h/strictcli/blob/main/CHANGELOG.md"
45
+ Repository = "https://github.com/stricttools/strictcli"
46
+ Issues = "https://github.com/stricttools/strictcli/issues"
47
+ Changelog = "https://github.com/stricttools/strictcli/blob/main/CHANGELOG.md"