clevis 0.3.0__tar.gz → 0.3.2__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 (58) hide show
  1. {clevis-0.3.0 → clevis-0.3.2}/.claude/settings.local.json +3 -1
  2. {clevis-0.3.0 → clevis-0.3.2}/.gitignore +2 -1
  3. clevis-0.3.2/CHANGELOG.md +64 -0
  4. clevis-0.3.2/PACKAGE.md +946 -0
  5. {clevis-0.3.0 → clevis-0.3.2}/PKG-INFO +1 -1
  6. clevis-0.3.2/analysis/edge-case-analysis.md +258 -0
  7. clevis-0.3.2/example_config_param.py +53 -0
  8. {clevis-0.3.0 → clevis-0.3.2}/examples/commands.py +24 -6
  9. clevis-0.3.2/examples/nested-commands.py +44 -0
  10. clevis-0.3.2/examples/nested.py +39 -0
  11. clevis-0.3.2/examples/nested.toml +5 -0
  12. clevis-0.3.2/nested-commands.toml +3 -0
  13. {clevis-0.3.0 → clevis-0.3.2}/pyproject.toml +1 -1
  14. {clevis-0.3.0 → clevis-0.3.2}/src/clevis/__init__.py +45 -3
  15. {clevis-0.3.0 → clevis-0.3.2}/tests/test_clevis.py +0 -1
  16. clevis-0.3.2/tests/test_config_key.py +359 -0
  17. clevis-0.3.2/tests/test_edge_cases.py +1106 -0
  18. {clevis-0.3.0 → clevis-0.3.2}/tests/test_security.py +0 -1
  19. clevis-0.3.2/tests/test_subcommand_config.py +449 -0
  20. {clevis-0.3.0 → clevis-0.3.2}/tests/test_toctou_fix.py +0 -1
  21. {clevis-0.3.0 → clevis-0.3.2}/uv.lock +1 -1
  22. clevis-0.3.0/PACKAGE.md +0 -351
  23. clevis-0.3.0/reporting/P1-003-optional-cli-support/development-summary.md +0 -235
  24. clevis-0.3.0/reporting/P1-003-optional-cli-support/functional-review.md +0 -378
  25. clevis-0.3.0/reporting/P2-001/development-summary.md +0 -148
  26. clevis-0.3.0/reporting/P2-002/development-summary.md +0 -221
  27. clevis-0.3.0/reporting/P2-002/functional-review.md +0 -279
  28. clevis-0.3.0/reporting/P2-005/development-summary.md +0 -71
  29. clevis-0.3.0/reporting/P2-006/development-summary.md +0 -140
  30. {clevis-0.3.0 → clevis-0.3.2}/.github/workflows/test.yml +0 -0
  31. {clevis-0.3.0 → clevis-0.3.2}/.python-version +0 -0
  32. {clevis-0.3.0 → clevis-0.3.2}/.readthedocs.yaml +0 -0
  33. {clevis-0.3.0 → clevis-0.3.2}/HISTORY.md +0 -0
  34. {clevis-0.3.0 → clevis-0.3.2}/LICENSE +0 -0
  35. {clevis-0.3.0 → clevis-0.3.2}/Makefile +0 -0
  36. {clevis-0.3.0 → clevis-0.3.2}/README.md +0 -0
  37. {clevis-0.3.0 → clevis-0.3.2}/REQUIREMENTS.md +0 -0
  38. {clevis-0.3.0 → clevis-0.3.2}/TODO.md +0 -0
  39. {clevis-0.3.0 → clevis-0.3.2}/analysis/2026-05-30-api-review-p1-003.md +0 -0
  40. {clevis-0.3.0 → clevis-0.3.2}/analysis/2026-06-05-api-review-p2-001-factory-pattern.md +0 -0
  41. {clevis-0.3.0 → clevis-0.3.2}/analysis/2026-06-05-api-review-subcommand-enhancements.md +0 -0
  42. {clevis-0.3.0 → clevis-0.3.2}/analysis/P2-002-security-parameter.md +0 -0
  43. {clevis-0.3.0 → clevis-0.3.2}/analysis/api-cli-optional.md +0 -0
  44. {clevis-0.3.0 → clevis-0.3.2}/analysis/functional.md +0 -0
  45. {clevis-0.3.0 → clevis-0.3.2}/analysis/security-P2-002.md +0 -0
  46. {clevis-0.3.0 → clevis-0.3.2}/docs/api.rst +0 -0
  47. {clevis-0.3.0 → clevis-0.3.2}/docs/conf.py +0 -0
  48. {clevis-0.3.0 → clevis-0.3.2}/docs/index.rst +0 -0
  49. {clevis-0.3.0 → clevis-0.3.2}/docs/installation.rst +0 -0
  50. {clevis-0.3.0 → clevis-0.3.2}/docs/usage.rst +0 -0
  51. {clevis-0.3.0 → clevis-0.3.2}/examples/app1.toml +0 -0
  52. {clevis-0.3.0 → clevis-0.3.2}/examples/factory.py +0 -0
  53. {clevis-0.3.0 → clevis-0.3.2}/examples/main.py +0 -0
  54. {clevis-0.3.0 → clevis-0.3.2}/examples/project.toml +0 -0
  55. {clevis-0.3.0 → clevis-0.3.2}/src/clevis/__init__.pyi +0 -0
  56. {clevis-0.3.0 → clevis-0.3.2}/src/clevis/py.typed +0 -0
  57. {clevis-0.3.0 → clevis-0.3.2}/tests/test_bug_regression.py +0 -0
  58. {clevis-0.3.0 → clevis-0.3.2}/tests/test_parser.py +0 -0
@@ -28,7 +28,9 @@
28
28
  "Bash(git update-index *)",
29
29
  "Bash(git ls-tree *)",
30
30
  "Bash(git fetch *)",
31
- "Bash(git rebase *)"
31
+ "Bash(git rebase *)",
32
+ "Bash(python *)",
33
+ "Bash(python3 *)"
32
34
  ]
33
35
  }
34
36
  }
@@ -25,4 +25,5 @@ htmlcov/
25
25
  .DS_Store
26
26
 
27
27
  # Documentation
28
- docs/_build/
28
+ docs/_build/
29
+ reporting
@@ -0,0 +1,64 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## 0.3.2 (2026-06-07)
9
+
10
+ ### Added
11
+ - `config` parameter in `@configclass` decorator to specify TOML extraction key independently from CLI command name
12
+ - Support for reusing TOML sections across multiple CLI commands
13
+ - Ability to extract TOML configuration without CLI subcommand
14
+
15
+ ### Changed
16
+ - Enhanced Factory class with `config` attribute for flexible TOML section extraction
17
+ - Improved documentation with examples of config parameter usage
18
+
19
+ ## 0.3.1 (2026-06-07)
20
+
21
+ ### Fixed
22
+ - Prevent cmd/prefix conflicts and root field leakage in subcommand configs
23
+ - Raise ConfigError when TOML section is not a table/dict
24
+ - Clear root-level fields before extracting subcommand section
25
+
26
+ ### Added
27
+ - Comprehensive edge case and subcommand tests (51 tests)
28
+ - Example demonstrating subcommand configuration pattern
29
+
30
+ ## 0.3.0 (2026-06-05)
31
+
32
+ ### Added
33
+ - Security checks for configuration file permissions
34
+ - TOCTOU-safe file permission checking using file descriptors
35
+ - ConfigError with actionable error messages
36
+ - Support for subcommands in CLI applications
37
+ - `get_cmd()` function to retrieve active subcommand
38
+ - `cmd`, `help`, and `aliases` parameters in `@configclass` decorator
39
+ - Environment variable interpolation support (via envtoml and tomlev)
40
+ - Multiple TOML parser fallback (envtoml > tomlev > tomli > tomllib)
41
+
42
+ ### Changed
43
+ - Improved error messages with field path and configuration suggestions
44
+ - Better handling of nested configuration classes
45
+
46
+ ### Security
47
+ - Configuration files now reject group/other readable permissions by default
48
+ - World-writable directories are rejected by default
49
+ - Security checks can be configured via SecurityAction enum
50
+
51
+ ## 0.2.0 (2025-12-15)
52
+
53
+ ### Added
54
+ - Initial release with core configuration management
55
+ - TOML file support
56
+ - Dataclass-based schema validation
57
+ - CLI argument generation from dataclass fields
58
+ - Nested configuration support
59
+ - User and project-level configuration files
60
+
61
+ ## 0.1.0 (2025-11-01)
62
+
63
+ ### Added
64
+ - Proof of concept implementation