strictcli 0.8.2__tar.gz → 0.8.3__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.8.3/.rlsbl/changes/.validated +1 -0
- strictcli-0.8.3/.rlsbl/changes/0.8.3.jsonl +1 -0
- strictcli-0.8.3/.rlsbl/changes/0.8.3.md +3 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/CHANGELOG.md +4 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/PKG-INFO +1 -1
- {strictcli-0.8.2 → strictcli-0.8.3}/package-lock.json +2 -2
- {strictcli-0.8.2 → strictcli-0.8.3}/package.json +1 -1
- {strictcli-0.8.2 → strictcli-0.8.3}/pyproject.toml +1 -1
- {strictcli-0.8.2 → strictcli-0.8.3}/strictcli/__init__.py +10 -7
- {strictcli-0.8.2 → strictcli-0.8.3}/uv.lock +1 -1
- strictcli-0.8.2/.rlsbl/changes/.validated +0 -1
- {strictcli-0.8.2 → strictcli-0.8.3}/.claude/settings.json +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.github/workflows/ci.yml +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.github/workflows/publish.yml +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.gitignore +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/bases/.claude/settings.json +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/bases/.github/workflows/ci.yml +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/bases/.github/workflows/publish.yml +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/bases/.gitignore +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/bases/.rlsbl/hooks/post-release.sh +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/bases/.rlsbl/hooks/pre-checks.sh +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/bases/.rlsbl/hooks/pre-release.sh +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/bases/.rlsbl/lint/go.toml +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/bases/.rlsbl/lint/npm.toml +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/bases/.rlsbl/lint/python.toml +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/bases/CHANGELOG.md +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/bases/CLAUDE.md +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/bases/LICENSE +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/changes/0.4.0.jsonl +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/changes/0.4.0.md +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/changes/0.4.1.jsonl +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/changes/0.4.1.md +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/changes/0.5.0.jsonl +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/changes/0.5.0.md +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/changes/0.6.0.jsonl +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/changes/0.6.0.md +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/changes/0.6.1.jsonl +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/changes/0.6.1.md +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/changes/0.7.0.jsonl +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/changes/0.7.0.md +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/changes/0.7.1.jsonl +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/changes/0.7.1.md +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/changes/0.8.0.jsonl +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/changes/0.8.0.md +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/changes/0.8.1.jsonl +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/changes/0.8.1.md +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/changes/0.8.2.jsonl +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/changes/0.8.2.md +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/changes/unreleased.jsonl +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/config.json +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/hashes.json +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/hooks/post-release.sh +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/hooks/pre-checks.sh +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/hooks/pre-release.sh +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/lint/go.toml +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/lint/npm.toml +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/lint/python.toml +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/.rlsbl/version +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/CLAUDE.md +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/LICENSE +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/README.md +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/index.js +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/postinstall.js +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/tests/test_arg_default.py +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/tests/test_auto_version.py +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/tests/test_check_command.py +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/tests/test_check_discovery.py +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/tests/test_check_runner.py +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/tests/test_check_schema.py +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/tests/test_check_types.py +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/tests/test_choices.py +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/tests/test_config.py +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/tests/test_deep_nesting.py +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/tests/test_dependencies.py +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/tests/test_deprecated.py +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/tests/test_dump_schema.py +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/tests/test_e2e.py +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/tests/test_env.py +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/tests/test_exit_codes.py +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/tests/test_float_type.py +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/tests/test_global_flags.py +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/tests/test_help.py +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/tests/test_int_type.py +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/tests/test_mutex.py +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/tests/test_nesting.py +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/tests/test_parser.py +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/tests/test_passthrough.py +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/tests/test_registration.py +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/tests/test_repeatable.py +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/tests/test_tagdsl.py +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/tests/test_tags.py +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/tests/test_toml_loading.py +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/tests/test_validate.py +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/tests/test_variadic.py +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/todo/.defer/deferred.md +0 -0
- {strictcli-0.8.2 → strictcli-0.8.3}/todo/.done/original-idea.md +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
d3c987f9ee7ca4844f3fa1f3760e0d8b9c07fd07
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"commits":["1bf6b917d4fef550eabde575acb491ad5dba4ee1","2d09d745566c35310c927f4337ff50a9efa82c2a","67f33abc550875ba81135b0ec9f183225168e5b2","c5b62a7030db6b350423e3efcf8f7bfa95292363","e278add8e7c5f749d7a550be8b74794543fa9c3a"],"user_facing":false}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "strictcli",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.3",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "strictcli",
|
|
9
|
-
"version": "0.8.
|
|
9
|
+
"version": "0.8.3",
|
|
10
10
|
"hasInstallScript": true,
|
|
11
11
|
"license": "MIT"
|
|
12
12
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
__version__ = "0.8.
|
|
5
|
+
__version__ = "0.8.3"
|
|
6
6
|
|
|
7
7
|
__all__ = [
|
|
8
8
|
"App", "Flag", "Arg", "Tag", "MutexGroup", "CoRequired", "Requires",
|
|
@@ -2666,12 +2666,15 @@ _CHECK_STATUS_LABELS = {"pass": "PASS", "fail": "FAIL", "warn": "WARN", "skip":
|
|
|
2666
2666
|
|
|
2667
2667
|
def _check_list_mode(check_defs: dict[str, _CheckDef], json_mode: bool) -> None:
|
|
2668
2668
|
"""Print check listing in human or JSON format."""
|
|
2669
|
+
# Sort alphabetically for deterministic output matching Go
|
|
2670
|
+
sorted_defs = sorted(check_defs.values(), key=lambda c: c.name)
|
|
2671
|
+
|
|
2669
2672
|
if json_mode:
|
|
2670
2673
|
items = [
|
|
2671
2674
|
{"name": cdef.name, "tags": cdef.tags, "severity": cdef.severity}
|
|
2672
|
-
for cdef in
|
|
2675
|
+
for cdef in sorted_defs
|
|
2673
2676
|
]
|
|
2674
|
-
print(json.dumps(items))
|
|
2677
|
+
print(json.dumps(items, separators=(",", ":")))
|
|
2675
2678
|
return
|
|
2676
2679
|
|
|
2677
2680
|
if not check_defs:
|
|
@@ -2679,14 +2682,14 @@ def _check_list_mode(check_defs: dict[str, _CheckDef], json_mode: bool) -> None:
|
|
|
2679
2682
|
return
|
|
2680
2683
|
|
|
2681
2684
|
# Compute column widths
|
|
2682
|
-
name_width = max(len(cdef.name) for cdef in
|
|
2685
|
+
name_width = max(len(cdef.name) for cdef in sorted_defs)
|
|
2683
2686
|
name_width = max(name_width, len("NAME"))
|
|
2684
|
-
tags_width = max(len(", ".join(cdef.tags)) for cdef in
|
|
2687
|
+
tags_width = max(len(", ".join(cdef.tags)) for cdef in sorted_defs)
|
|
2685
2688
|
tags_width = max(tags_width, len("TAGS"))
|
|
2686
2689
|
|
|
2687
2690
|
header = f"{'NAME':<{name_width}} {'TAGS':<{tags_width}} SEVERITY"
|
|
2688
2691
|
print(header)
|
|
2689
|
-
for cdef in
|
|
2692
|
+
for cdef in sorted_defs:
|
|
2690
2693
|
tags_str = ", ".join(cdef.tags)
|
|
2691
2694
|
print(f"{cdef.name:<{name_width}} {tags_str:<{tags_width}} {cdef.severity}")
|
|
2692
2695
|
|
|
@@ -2737,7 +2740,7 @@ def _check_format_json(results: list[tuple[str, CheckResult]]) -> None:
|
|
|
2737
2740
|
}
|
|
2738
2741
|
for name, result in results
|
|
2739
2742
|
]
|
|
2740
|
-
print(json.dumps(items))
|
|
2743
|
+
print(json.dumps(items, separators=(",", ":")))
|
|
2741
2744
|
|
|
2742
2745
|
|
|
2743
2746
|
# ---------------------------------------------------------------------------
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
61aec1f6ac50be6991dd46eff282317bad7487fd
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|