clevis 0.3.2__tar.gz → 0.4.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 (77) hide show
  1. {clevis-0.3.2 → clevis-0.4.0}/.claude/settings.local.json +3 -1
  2. {clevis-0.3.2 → clevis-0.4.0}/CHANGELOG.md +18 -0
  3. {clevis-0.3.2 → clevis-0.4.0}/HISTORY.md +31 -1
  4. clevis-0.4.0/PKG-INFO +672 -0
  5. clevis-0.4.0/README.md +632 -0
  6. {clevis-0.3.2 → clevis-0.4.0}/REQUIREMENTS.md +15 -0
  7. {clevis-0.3.2 → clevis-0.4.0}/TODO.md +55 -0
  8. clevis-0.4.0/analysis/2026-06-09-api-review-nested-prefix.md +438 -0
  9. clevis-0.4.0/analysis/2026-06-09-api-review-p2-007.md +322 -0
  10. clevis-0.4.0/analysis/dynamic-registration.md +505 -0
  11. clevis-0.4.0/docs/examples.rst +694 -0
  12. {clevis-0.3.2 → clevis-0.4.0}/docs/index.rst +1 -0
  13. {clevis-0.3.2 → clevis-0.4.0}/docs/installation.rst +125 -2
  14. {clevis-0.3.2 → clevis-0.4.0}/docs/usage.rst +332 -0
  15. clevis-0.4.0/examples/README.md +285 -0
  16. clevis-0.4.0/examples/commands.py +117 -0
  17. clevis-0.4.0/examples/dynamic.py +498 -0
  18. clevis-0.4.0/examples/environment.py +109 -0
  19. clevis-0.4.0/examples/environment.toml +32 -0
  20. clevis-0.4.0/examples/factory.py +132 -0
  21. clevis-0.4.0/examples/library_mode.py +253 -0
  22. clevis-0.4.0/examples/main.py +110 -0
  23. clevis-0.4.0/examples/nested.py +95 -0
  24. clevis-0.4.0/examples/plugin.py +93 -0
  25. clevis-0.4.0/examples/tools.toml +7 -0
  26. clevis-0.4.0/examples/validation.py +180 -0
  27. clevis-0.4.0/examples/validation.toml +13 -0
  28. {clevis-0.3.2 → clevis-0.4.0}/pyproject.toml +1 -1
  29. {clevis-0.3.2 → clevis-0.4.0}/src/clevis/__init__.py +27 -381
  30. clevis-0.4.0/src/clevis/configclass.py +98 -0
  31. clevis-0.4.0/src/clevis/factory.py +454 -0
  32. clevis-0.4.0/src/clevis/registration.py +197 -0
  33. clevis-0.4.0/tests/test_advanced_types.py +740 -0
  34. clevis-0.4.0/tests/test_field_owner_tracking.py +188 -0
  35. clevis-0.4.0/tests/test_nested_prefix.py +683 -0
  36. clevis-0.4.0/tests/test_registration.py +505 -0
  37. clevis-0.4.0/tests/test_yoker_schema.py +579 -0
  38. {clevis-0.3.2 → clevis-0.4.0}/uv.lock +1 -1
  39. clevis-0.3.2/PKG-INFO +0 -411
  40. clevis-0.3.2/README.md +0 -371
  41. clevis-0.3.2/examples/commands.py +0 -56
  42. clevis-0.3.2/examples/factory.py +0 -100
  43. clevis-0.3.2/examples/main.py +0 -63
  44. clevis-0.3.2/examples/nested-commands.py +0 -44
  45. clevis-0.3.2/examples/nested.py +0 -39
  46. {clevis-0.3.2 → clevis-0.4.0}/.github/workflows/test.yml +0 -0
  47. {clevis-0.3.2 → clevis-0.4.0}/.gitignore +0 -0
  48. {clevis-0.3.2 → clevis-0.4.0}/.python-version +0 -0
  49. {clevis-0.3.2 → clevis-0.4.0}/.readthedocs.yaml +0 -0
  50. {clevis-0.3.2 → clevis-0.4.0}/LICENSE +0 -0
  51. {clevis-0.3.2 → clevis-0.4.0}/Makefile +0 -0
  52. {clevis-0.3.2 → clevis-0.4.0}/PACKAGE.md +0 -0
  53. {clevis-0.3.2 → clevis-0.4.0}/analysis/2026-05-30-api-review-p1-003.md +0 -0
  54. {clevis-0.3.2 → clevis-0.4.0}/analysis/2026-06-05-api-review-p2-001-factory-pattern.md +0 -0
  55. {clevis-0.3.2 → clevis-0.4.0}/analysis/2026-06-05-api-review-subcommand-enhancements.md +0 -0
  56. {clevis-0.3.2 → clevis-0.4.0}/analysis/P2-002-security-parameter.md +0 -0
  57. {clevis-0.3.2 → clevis-0.4.0}/analysis/api-cli-optional.md +0 -0
  58. {clevis-0.3.2 → clevis-0.4.0}/analysis/edge-case-analysis.md +0 -0
  59. {clevis-0.3.2 → clevis-0.4.0}/analysis/functional.md +0 -0
  60. {clevis-0.3.2 → clevis-0.4.0}/analysis/security-P2-002.md +0 -0
  61. {clevis-0.3.2 → clevis-0.4.0}/docs/api.rst +0 -0
  62. {clevis-0.3.2 → clevis-0.4.0}/docs/conf.py +0 -0
  63. {clevis-0.3.2 → clevis-0.4.0}/example_config_param.py +0 -0
  64. {clevis-0.3.2 → clevis-0.4.0}/examples/app1.toml +0 -0
  65. {clevis-0.3.2 → clevis-0.4.0}/examples/nested.toml +0 -0
  66. {clevis-0.3.2 → clevis-0.4.0}/examples/project.toml +0 -0
  67. {clevis-0.3.2 → clevis-0.4.0}/nested-commands.toml +0 -0
  68. {clevis-0.3.2 → clevis-0.4.0}/src/clevis/__init__.pyi +0 -0
  69. {clevis-0.3.2 → clevis-0.4.0}/src/clevis/py.typed +0 -0
  70. {clevis-0.3.2 → clevis-0.4.0}/tests/test_bug_regression.py +0 -0
  71. {clevis-0.3.2 → clevis-0.4.0}/tests/test_clevis.py +0 -0
  72. {clevis-0.3.2 → clevis-0.4.0}/tests/test_config_key.py +0 -0
  73. {clevis-0.3.2 → clevis-0.4.0}/tests/test_edge_cases.py +0 -0
  74. {clevis-0.3.2 → clevis-0.4.0}/tests/test_parser.py +0 -0
  75. {clevis-0.3.2 → clevis-0.4.0}/tests/test_security.py +0 -0
  76. {clevis-0.3.2 → clevis-0.4.0}/tests/test_subcommand_config.py +0 -0
  77. {clevis-0.3.2 → clevis-0.4.0}/tests/test_toctou_fix.py +0 -0
@@ -30,7 +30,9 @@
30
30
  "Bash(git fetch *)",
31
31
  "Bash(git rebase *)",
32
32
  "Bash(python *)",
33
- "Bash(python3 *)"
33
+ "Bash(python3 *)",
34
+ "Skill(deep-research)",
35
+ "mcp__plugin_c3_pkgq__find_package"
34
36
  ]
35
37
  }
36
38
  }
@@ -5,6 +5,24 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## 0.3.3 (2026-06-07)
9
+
10
+ ### Added
11
+ - Support for `Literal["A", "B", "C"]` types with validation
12
+ - Support for container types: `list[T]`, `dict[K, V]`, `set[T]`, `tuple[T, ...]`
13
+ - Automatic conversion of TOML arrays to `tuple` and `set` types
14
+ - Support for nested dataclasses as dict values: `dict[str, DataclassType]`
15
+ - Compatibility with `frozen=True` dataclasses
16
+
17
+ ### Changed
18
+ - Enhanced `unpack_type()` to properly handle container types and Literal types
19
+ - Updated `from_dict()` to use `Config(cast=[tuple, set])` for automatic type casting
20
+ - Improved type hints with `Union` and `get_origin` imports
21
+
22
+ ### Fixed
23
+ - `unpack_type()` now correctly returns container types as-is instead of treating them as unions
24
+ - `unpack_type()` now correctly returns Literal types as-is for dacite validation
25
+
8
26
  ## 0.3.2 (2026-06-07)
9
27
 
10
28
  ### Added
@@ -5,7 +5,37 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
- ## 0.3.0 (2026-06-05)
8
+ ## 0.4.0 (2026-06-09)
9
+
10
+ ### Added
11
+
12
+ - **Dynamic Field Registration API (P2-007)**: New `register_field()` function enables runtime field registration for plugin systems
13
+ - Register new configuration fields after dataclass definition
14
+ - Support for plugins that extend configuration schema
15
+ - Enhanced introspection with `field.owner` tracking
16
+ - **Plugin System Capabilities**: Infrastructure for extending configuration schemas dynamically
17
+ - Field registration API for third-party extensions
18
+ - Example plugins demonstrating dynamic registration
19
+ - **Enhanced Subcommand Validation**: Validation that subcommand configs are not nested incorrectly
20
+ - Prevents configuration schema errors
21
+ - Better error messages for nested configuration issues
22
+
23
+ ### Fixed
24
+
25
+ - **Nested Config Handling**: Fixed duplicate CLI args from nested configs
26
+ - Tracks `nested_prefix` for config hierarchy
27
+ - Prevents argument duplication in subcommands
28
+ - **Dynamic Registration**: Resolved repr and TOML loading issues
29
+ - Fixed factory creation in `register_field` check
30
+ - Correct TOML config extraction for subcommands
31
+
32
+ ### Changed
33
+
34
+ - **Documentation**: Comprehensive documentation upgrade with examples
35
+ - Added API review and field owner tracking tests
36
+ - New examples: environment, validation, library_mode, simple plugin registration
37
+ - Examples README index for better navigation
38
+ - Improved consistency across documentation
9
39
 
10
40
  ### Added
11
41