Release v0.3.0: CLI Flexibility, Dynamic Strategies & Robustness Fixes
This release significantly enhances the CLI architecture to support flexible argument ordering, dynamic strategy loading via configuration, and improves overall system robustness and test coverage.
Key Features
- Flexible CLI Argument Parsing: Arguments like
--file-type,--limit,--root-path, and--idcan now be passed in any order. The newCliContextResolvercorrectly handles out-of-order flags. - Dynamic Strategy Extension: The CLI can now load custom
CliContextStrategyimplementations defined inconfig/context.yaml(understrategiesorparameterskeys), allowing users to extend CLI behavior without modifying the core codebase. - Explicit Help Command: Added dedicated support for
--helphandling inrun.pyto provide immediate usage information without triggering interactive modes or errors in non-interactive environments.
Fixes & Improvements
- Repository Implementation: Fixed
SimpleFileRepositoryto fully satisfyHasReadPermissionchecks by correctly implementingpathandroot_pathproperties and stubbing necessaryFileRepositoryPortmethods. - Capability Selection: Corrected
FileNameStrategyandFileTypeStrategyto includeparam_urimetadata, ensuring capabilities likeListDocumentsByNamePatternare correctly selected when their required arguments are present. - Test Suite Robustness:
- Refactored
test/testrunner to count individual pytest failures correctly. - Restored and fixed Python unit tests (
test_run_capabilities.py, etc.) to align with new CLI behaviors. - Silenced irrelevant third-party
DeprecationWarningfromtableschemaviapytest.ini.
- Refactored
Testing
- All unit tests passed (
./test/test). - Verified integration scenarios:
- Flags out of order (
--file-type pdf --limit 10 ...). - Capability selection via specific flags (
--file-name). - Dynamic strategy loading (code implemented, manual verification recommended with custom config).
- Flags out of order (
Breaking Changes
- None. The changes are backward compatible with existing command usage.
Checklist
- Code compiles/runs.
- Tests pass (
./test/test). - Documentation updated (implicit in code/help).
- Ready for merge.