strictcli 0.19.0__tar.gz → 0.20.1__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.
- strictcli-0.20.1/.rlsbl/changes/.validated +1 -0
- strictcli-0.20.1/.rlsbl/changes/0.15.0.md +18 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.15.1.md +9 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.16.0.md +9 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.16.1.md +2 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.17.0.md +2 -0
- strictcli-0.20.1/.rlsbl/changes/0.18.0.md +14 -0
- strictcli-0.20.1/.rlsbl/changes/0.20.0.jsonl +4 -0
- strictcli-0.20.1/.rlsbl/changes/0.20.0.md +19 -0
- strictcli-0.20.1/.rlsbl/changes/0.20.1.jsonl +3 -0
- strictcli-0.20.1/.rlsbl/changes/0.20.1.md +14 -0
- strictcli-0.20.1/.rlsbl/releases/v0.20.0.toml +8 -0
- strictcli-0.20.1/.rlsbl/releases/v0.20.1.toml +8 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/CHANGELOG.md +69 -3
- {strictcli-0.19.0 → strictcli-0.20.1}/PKG-INFO +1 -1
- {strictcli-0.19.0 → strictcli-0.20.1}/package-lock.json +2 -2
- {strictcli-0.19.0 → strictcli-0.20.1}/package.json +1 -1
- {strictcli-0.19.0 → strictcli-0.20.1}/pyproject.toml +1 -1
- {strictcli-0.19.0 → strictcli-0.20.1}/strictcli/__init__.py +128 -26
- strictcli-0.20.1/tests/test_command_tags.py +419 -0
- strictcli-0.20.1/tests/test_keyword_flags.py +117 -0
- strictcli-0.20.1/todo/keyword-collision-in-flag-param-name.md +18 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/uv.lock +1 -1
- strictcli-0.19.0/.rlsbl/changes/.validated +0 -1
- strictcli-0.19.0/.rlsbl/changes/0.15.0.md +0 -9
- strictcli-0.19.0/.rlsbl/changes/0.18.0.md +0 -5
- {strictcli-0.19.0 → strictcli-0.20.1}/.claude/settings.json +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.github/workflows/ci.yml +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.github/workflows/publish.yml +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.gitignore +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.npmignore +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/bases/.claude/settings.json +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/bases/.github/workflows/ci.yml +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/bases/.github/workflows/publish.yml +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/bases/.gitignore +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/bases/.npmignore +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/bases/.rlsbl/hooks/post-release.sh +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/bases/.rlsbl/hooks/pre-checks.sh +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/bases/.rlsbl/hooks/pre-release.sh +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/bases/.rlsbl/lint/npm.toml +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/bases/.rlsbl/lint/python.toml +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/bases/CHANGELOG.md +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/bases/CLAUDE.md +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/bases/LICENSE +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.10.0.jsonl +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.10.0.md +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.11.0.jsonl +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.11.0.md +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.12.0.jsonl +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.12.0.md +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.13.0.jsonl +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.13.0.md +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.14.0.jsonl +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.14.0.md +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.15.0.jsonl +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.15.1.jsonl +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.16.0.jsonl +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.16.1.jsonl +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.17.0.jsonl +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.18.0.jsonl +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.19.0.jsonl +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.19.0.md +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.4.0.jsonl +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.4.0.md +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.4.1.jsonl +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.4.1.md +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.5.0.jsonl +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.5.0.md +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.6.0.jsonl +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.6.0.md +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.6.1.jsonl +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.6.1.md +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.7.0.jsonl +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.7.0.md +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.7.1.jsonl +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.7.1.md +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.8.0.jsonl +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.8.0.md +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.8.1.jsonl +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.8.1.md +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.8.2.jsonl +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.8.2.md +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.8.3.jsonl +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.8.3.md +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.8.4.jsonl +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.8.4.md +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.8.5.jsonl +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.8.5.md +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.8.6.jsonl +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.8.6.md +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.8.7.jsonl +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.8.7.md +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.9.0.jsonl +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.9.0.md +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.9.1.jsonl +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/0.9.1.md +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/changes/unreleased.jsonl +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/config.json +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/hashes.json +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/hooks/post-release.sh +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/hooks/pre-checks.sh +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/hooks/pre-release.sh +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/lint/npm.toml +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/lint/python.toml +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/releases/unreleased.toml +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/releases/v0.10.0.toml +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/releases/v0.11.0.toml +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/releases/v0.12.0.toml +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/releases/v0.13.0.toml +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/releases/v0.15.0.toml +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/releases/v0.15.1.toml +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/releases/v0.16.0.toml +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/releases/v0.16.1.toml +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/releases/v0.17.0.toml +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/releases/v0.18.0.toml +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/releases/v0.19.0.toml +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/releases/v0.8.5.toml +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/releases/v0.8.6.toml +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/releases/v0.8.7.toml +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/releases/v0.9.0.toml +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/releases/v0.9.1.toml +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.rlsbl/version +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/.strictcli/schema.json +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/CLAUDE.md +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/LICENSE +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/README.md +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/index.js +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/postinstall.js +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_arg_default.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_at_prefix.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_auto_version.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_check_command.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_check_discovery.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_check_public_api.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_check_runner.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_check_schema.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_check_types.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_choices.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_command_help_suggestion.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_config.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_config_file_path.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_config_set_bugs.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_deep_nesting.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_dependencies.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_deprecated.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_dump_schema.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_e2e.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_env.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_exit_codes.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_flag_sets.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_float_type.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_global_flags.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_help.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_int_type.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_mutex.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_nesting.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_parser.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_passthrough.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_registration.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_repeatable.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_tagdsl.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_toml_loading.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_unique.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_utilities.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_validate.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/tests/test_variadic.py +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/todo/.defer/deferred.md +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/todo/.done/original-idea.md +0 -0
- {strictcli-0.19.0 → strictcli-0.20.1}/todo/.done/public-check-runner-api.md +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
5b2b40dead26752424a198c76f3634593b1cdb9b
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
## 0.15.0
|
|
2
|
+
|
|
3
|
+
Config set type coercion and key validation
|
|
4
|
+
|
|
5
|
+
<details>
|
|
6
|
+
<summary>Context</summary>
|
|
7
|
+
|
|
8
|
+
config set now validates keys against registered flags and coerces string values to the flag's declared type before writing. This is a breaking change: unknown keys are rejected.
|
|
9
|
+
|
|
10
|
+
</details>
|
|
11
|
+
|
|
12
|
+
### Breaking
|
|
13
|
+
|
|
14
|
+
- **Breaking.** `config set` now validates keys against registered flags and rejects unknown keys.
|
|
15
|
+
|
|
16
|
+
### Features
|
|
17
|
+
|
|
18
|
+
- **New feature.** `config set` coerces values to the flag's declared type (int, bool, float) before writing to config.
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
## 0.15.1
|
|
2
2
|
|
|
3
|
+
Config show bool parity and negative values in config set
|
|
4
|
+
|
|
5
|
+
<details>
|
|
6
|
+
<summary>Context</summary>
|
|
7
|
+
|
|
8
|
+
config show now outputs lowercase true/false matching Go. config set accepts negative numeric values.
|
|
9
|
+
|
|
10
|
+
</details>
|
|
11
|
+
|
|
3
12
|
### Breaking
|
|
4
13
|
|
|
5
14
|
- **Breaking.** Config set now accepts negative numeric values. Unknown single-dash tokens produce 'unexpected argument' instead of 'unknown flag'.
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
## 0.16.0
|
|
2
2
|
|
|
3
|
+
unique and env_separator flag fields, config array coercion, config set repeatable support
|
|
4
|
+
|
|
5
|
+
<details>
|
|
6
|
+
<summary>Context</summary>
|
|
7
|
+
|
|
8
|
+
Breaking: config show now requires --plain or --json. New features: unique field enforces no duplicate values on repeatable flags, env_separator controls how env vars are split into arrays, config arrays are coerced to declared types, config set supports repeatable flags with --clear and --default.
|
|
9
|
+
|
|
10
|
+
</details>
|
|
11
|
+
|
|
3
12
|
### Breaking
|
|
4
13
|
|
|
5
14
|
- **Config show.** `config show` now requires explicit `--plain` or `--json` flag instead of defaulting to plain text.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
## 0.18.0
|
|
2
|
+
|
|
3
|
+
Public API for running checks programmatically
|
|
4
|
+
|
|
5
|
+
<details>
|
|
6
|
+
<summary>Context</summary>
|
|
7
|
+
|
|
8
|
+
Adds App.run_checks(), format_check_results(), format_check_results_json(), and CheckRunResult — a stable public API replacing the private _filter_checks/_resolve_check_order/_run_checks/_check_format_human functions that consumers like rlsbl were forced to use.
|
|
9
|
+
|
|
10
|
+
</details>
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
- **New.** Public API for running checks programmatically: `App.run_checks()`, `format_check_results()`, `format_check_results_json()`, `CheckRunResult`.
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
{"commits":["9e7e116531923a9db84c2f9e7fc6326a9bf01079","a68465be720ee0728e72a09f5ba6bd3d563a9600"],"user_facing":true,"description":"**Breaking.** Command dataclass is now `frozen=True` with `tuple` fields instead of `list`.","type":"breaking"}
|
|
2
|
+
{"commits":["c5009427ea363e04d8c0096a1ec0628547317866","7808c1c5b08272af346aa4d0e9d69ff3ccef8c78"],"user_facing":true,"description":"**New.** Command tags: string labels on commands and groups with group-to-command inheritance.","type":"feature"}
|
|
3
|
+
{"commits":["ef7a4711dbcf7c0a53a3666de4507aab7c1cf9e0"],"user_facing":true,"description":"**New.** Tag contracts: registration-time validation that tagged commands have required flags.","type":"feature"}
|
|
4
|
+
{"commits":["bc911b9134605042b454bc2192c3fe68ee6f92bf","ff5ff5aa65b216fec2788f942751f11a8ca8b243"],"user_facing":false}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
## 0.20.0
|
|
2
|
+
|
|
3
|
+
Frozen Command, command tags, tag contracts
|
|
4
|
+
|
|
5
|
+
<details>
|
|
6
|
+
<summary>Context</summary>
|
|
7
|
+
|
|
8
|
+
Breaking: Command dataclass is now frozen=True with tuple fields (was mutable list). New: command tags (string labels with group inheritance) and tag contracts (registration-time validation that tagged commands have required flags).
|
|
9
|
+
|
|
10
|
+
</details>
|
|
11
|
+
|
|
12
|
+
### Breaking
|
|
13
|
+
|
|
14
|
+
- **Breaking.** Command dataclass is now `frozen=True` with `tuple` fields instead of `list`.
|
|
15
|
+
|
|
16
|
+
### Features
|
|
17
|
+
|
|
18
|
+
- **New.** Command tags: string labels on commands and groups with group-to-command inheritance.
|
|
19
|
+
- **New.** Tag contracts: registration-time validation that tagged commands have required flags.
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
{"commits":["88874b77625f9f096a9e7c38212cb65ab7bd4188"],"user_facing":false}
|
|
2
|
+
{"commits":["0e5647f165e7b5ebb4bb135bd664f072306b282a"],"user_facing":true,"description":"**Fix.** Flags named after Python keywords (`--global`, `--class`, `--import`) now produce valid parameter names with a trailing underscore (e.g., `global_`).","type":"fix"}
|
|
3
|
+
{"commits":["8e769b6aa17c51d30edae5a074f4a6f31c624853"],"user_facing":false}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
## 0.20.1
|
|
2
|
+
|
|
3
|
+
Fix keyword collision in flag parameter names
|
|
4
|
+
|
|
5
|
+
<details>
|
|
6
|
+
<summary>Context</summary>
|
|
7
|
+
|
|
8
|
+
Flags named after Python keywords (--global, --class, --import, etc.) now produce valid parameter names with a trailing underscore per PEP 8 convention.
|
|
9
|
+
|
|
10
|
+
</details>
|
|
11
|
+
|
|
12
|
+
### Fixes
|
|
13
|
+
|
|
14
|
+
- **Fix.** Flags named after Python keywords (`--global`, `--class`, `--import`) now produce valid parameter names with a trailing underscore (e.g., `global_`).
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Version bump type: patch, minor, or major
|
|
2
|
+
bump = "minor"
|
|
3
|
+
# Short description of this release (required)
|
|
4
|
+
description = "Frozen Command, command tags, tag contracts"
|
|
5
|
+
# Optional context explaining why these changes were made
|
|
6
|
+
context = "Breaking: Command dataclass is now frozen=True with tuple fields (was mutable list). New: command tags (string labels with group inheritance) and tag contracts (registration-time validation that tagged commands have required flags)."
|
|
7
|
+
include = ["pypi", "npm"]
|
|
8
|
+
exclude = []
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Version bump type: patch, minor, or major
|
|
2
|
+
bump = "patch"
|
|
3
|
+
# Short description of this release (required)
|
|
4
|
+
description = "Fix keyword collision in flag parameter names"
|
|
5
|
+
# Optional context explaining why these changes were made
|
|
6
|
+
context = "Flags named after Python keywords (--global, --class, --import, etc.) now produce valid parameter names with a trailing underscore per PEP 8 convention."
|
|
7
|
+
include = ["pypi", "npm"]
|
|
8
|
+
exclude = []
|
|
@@ -2,29 +2,66 @@
|
|
|
2
2
|
|
|
3
3
|
# Changelog
|
|
4
4
|
|
|
5
|
-
## 0.
|
|
5
|
+
## 0.20.1
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Fix keyword collision in flag parameter names
|
|
8
8
|
|
|
9
9
|
<details>
|
|
10
10
|
<summary>Context</summary>
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
Flags named after Python keywords (--global, --class, --import, etc.) now produce valid parameter names with a trailing underscore per PEP 8 convention.
|
|
13
|
+
|
|
14
|
+
</details>
|
|
15
|
+
|
|
16
|
+
### Fixes
|
|
17
|
+
|
|
18
|
+
- **Fix.** Flags named after Python keywords (`--global`, `--class`, `--import`) now produce valid parameter names with a trailing underscore (e.g., `global_`).
|
|
19
|
+
|
|
20
|
+
## 0.20.0
|
|
21
|
+
|
|
22
|
+
Frozen Command, command tags, tag contracts
|
|
23
|
+
|
|
24
|
+
<details>
|
|
25
|
+
<summary>Context</summary>
|
|
26
|
+
|
|
27
|
+
Breaking: Command dataclass is now frozen=True with tuple fields (was mutable list). New: command tags (string labels with group inheritance) and tag contracts (registration-time validation that tagged commands have required flags).
|
|
13
28
|
|
|
14
29
|
</details>
|
|
15
30
|
|
|
16
31
|
### Breaking
|
|
17
32
|
|
|
33
|
+
- **Breaking.** Command dataclass is now `frozen=True` with `tuple` fields instead of `list`.
|
|
34
|
+
|
|
35
|
+
### Features
|
|
36
|
+
|
|
37
|
+
- **New.** Command tags: string labels on commands and groups with group-to-command inheritance.
|
|
38
|
+
- **New.** Tag contracts: registration-time validation that tagged commands have required flags.
|
|
39
|
+
|
|
40
|
+
## 0.19.0
|
|
41
|
+
|
|
42
|
+
### Breaking
|
|
43
|
+
|
|
18
44
|
- **Breaking.** Renamed `Tag` to `FlagSet` and `tags=` parameter to `flag_sets=` across all API surfaces.
|
|
19
45
|
|
|
20
46
|
## 0.18.0
|
|
21
47
|
|
|
48
|
+
Public API for running checks programmatically
|
|
49
|
+
|
|
50
|
+
<details>
|
|
51
|
+
<summary>Context</summary>
|
|
52
|
+
|
|
53
|
+
Adds App.run_checks(), format_check_results(), format_check_results_json(), and CheckRunResult — a stable public API replacing the private _filter_checks/_resolve_check_order/_run_checks/_check_format_human functions that consumers like rlsbl were forced to use.
|
|
54
|
+
|
|
55
|
+
</details>
|
|
56
|
+
|
|
22
57
|
### Features
|
|
23
58
|
|
|
24
59
|
- **New.** Public API for running checks programmatically: `App.run_checks()`, `format_check_results()`, `format_check_results_json()`, `CheckRunResult`.
|
|
25
60
|
|
|
26
61
|
## 0.17.0
|
|
27
62
|
|
|
63
|
+
Repeatable flag default validation and help text display
|
|
64
|
+
|
|
28
65
|
### Breaking
|
|
29
66
|
|
|
30
67
|
- **Breaking.** Repeatable flag defaults are now validated at registration: must be a list, `default=[]` is rejected as redundant, and element types must match the flag type.
|
|
@@ -35,6 +72,8 @@ Breaking: Tag class renamed to FlagSet, tags= parameter renamed to flag_sets= ac
|
|
|
35
72
|
|
|
36
73
|
## 0.16.1
|
|
37
74
|
|
|
75
|
+
Error message fixes and help text improvements
|
|
76
|
+
|
|
38
77
|
### Fixes
|
|
39
78
|
|
|
40
79
|
- **Fix.** `config set` mutex error messages now include the `config set:` prefix for consistency.
|
|
@@ -42,6 +81,15 @@ Breaking: Tag class renamed to FlagSet, tags= parameter renamed to flag_sets= ac
|
|
|
42
81
|
|
|
43
82
|
## 0.16.0
|
|
44
83
|
|
|
84
|
+
unique and env_separator flag fields, config array coercion, config set repeatable support
|
|
85
|
+
|
|
86
|
+
<details>
|
|
87
|
+
<summary>Context</summary>
|
|
88
|
+
|
|
89
|
+
Breaking: config show now requires --plain or --json. New features: unique field enforces no duplicate values on repeatable flags, env_separator controls how env vars are split into arrays, config arrays are coerced to declared types, config set supports repeatable flags with --clear and --default.
|
|
90
|
+
|
|
91
|
+
</details>
|
|
92
|
+
|
|
45
93
|
### Breaking
|
|
46
94
|
|
|
47
95
|
- **Config show.** `config show` now requires explicit `--plain` or `--json` flag instead of defaulting to plain text.
|
|
@@ -61,6 +109,15 @@ Breaking: Tag class renamed to FlagSet, tags= parameter renamed to flag_sets= ac
|
|
|
61
109
|
|
|
62
110
|
## 0.15.1
|
|
63
111
|
|
|
112
|
+
Config show bool parity and negative values in config set
|
|
113
|
+
|
|
114
|
+
<details>
|
|
115
|
+
<summary>Context</summary>
|
|
116
|
+
|
|
117
|
+
config show now outputs lowercase true/false matching Go. config set accepts negative numeric values.
|
|
118
|
+
|
|
119
|
+
</details>
|
|
120
|
+
|
|
64
121
|
### Breaking
|
|
65
122
|
|
|
66
123
|
- **Breaking.** Config set now accepts negative numeric values. Unknown single-dash tokens produce 'unexpected argument' instead of 'unknown flag'.
|
|
@@ -71,6 +128,15 @@ Breaking: Tag class renamed to FlagSet, tags= parameter renamed to flag_sets= ac
|
|
|
71
128
|
|
|
72
129
|
## 0.15.0
|
|
73
130
|
|
|
131
|
+
Config set type coercion and key validation
|
|
132
|
+
|
|
133
|
+
<details>
|
|
134
|
+
<summary>Context</summary>
|
|
135
|
+
|
|
136
|
+
config set now validates keys against registered flags and coerces string values to the flag's declared type before writing. This is a breaking change: unknown keys are rejected.
|
|
137
|
+
|
|
138
|
+
</details>
|
|
139
|
+
|
|
74
140
|
### Breaking
|
|
75
141
|
|
|
76
142
|
- **Breaking.** `config set` now validates keys against registered flags and rejects unknown keys.
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "strictcli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.20.1",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "strictcli",
|
|
9
|
-
"version": "0.
|
|
9
|
+
"version": "0.20.1",
|
|
10
10
|
"hasInstallScript": true,
|
|
11
11
|
"license": "MIT"
|
|
12
12
|
}
|