lib-cli-exit-tools 2.3.1__tar.gz → 2.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.
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.github/workflows/default_cicd_public.yml +1 -1
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/CHANGELOG.md +5 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/Makefile +1 -1
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/PKG-INFO +11 -11
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/pyproject.toml +12 -12
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/__init__conf__.py +1 -1
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/cli/group.py +3 -2
- lib_cli_exit_tools-2.3.2/src/lib_cli_exit_tools/cli/typed_click.py +29 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.codacy/cli-config.yaml +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.codacy/cli.sh +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.codacy/codacy.yaml +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.codacy/tools-configs/lizard.yaml +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.codacy/tools-configs/trivy.yaml +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.data_arch_violations.json +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.devcontainer/devcontainer.json +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.devcontainer/settings.json +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.env.example +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.github/actions/extract-metadata/action.yml +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.github/dependabot.yml +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.github/workflows/codeql.yml +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.github/workflows/default_release_public.yml +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.gitignore +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.qlty/qlty.toml +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.snyk +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/CONTRIBUTING.md +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/DEVELOPMENT.md +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/INSTALL.md +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/LICENSE +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/README.md +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/codecov.yml +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/docs/system-design/module_reference.md +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/notebooks/Quickstart.ipynb +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/__init__.py +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/__main__.py +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/adapters/__init__.py +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/adapters/signals.py +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/application/__init__.py +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/application/runner.py +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/cli/__init__.py +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/cli/commands.py +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/cli/styling.py +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/core/__init__.py +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/core/configuration.py +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/core/exit_codes.py +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/lib_cli_exit_tools.py +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/py.typed +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/tests/conftest.py +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/tests/test_adapters_signals.py +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/tests/test_application_runner.py +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/tests/test_behaviors.py +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/tests/test_cli.py +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/tests/test_core_configuration.py +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/tests/test_core_exit_codes.py +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/tests/test_metadata.py +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/tests/test_module_entry.py +0 -0
- {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/tests/test_signals_integration.py +0 -0
{lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.github/workflows/default_cicd_public.yml
RENAMED
|
@@ -214,7 +214,7 @@ jobs:
|
|
|
214
214
|
&& steps.pytest.outcome == 'success'
|
|
215
215
|
&& matrix.os == 'ubuntu-latest'
|
|
216
216
|
&& matrix.python == needs.setup.outputs.python-latest
|
|
217
|
-
uses: codecov/codecov-action@
|
|
217
|
+
uses: codecov/codecov-action@v7
|
|
218
218
|
with:
|
|
219
219
|
files: ${{ env.COV_REPORT_FILE }}
|
|
220
220
|
fail_ci_if_error: false
|
|
@@ -4,6 +4,11 @@ All notable changes to this project are documented here. The format follows [Kee
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [2.3.2] 2026-06-14
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
- Added a `cli/typed_click.py` facade that wraps rich-click's `option` / `version_option` decorators behind explicit, fully-known signatures. This keeps the CLI layer clean under pyright 1.1.410 strict mode (which reports `reportUnknownMemberType` for rich-click's re-exported click decorators) without disabling the rule — the single `# pyright: ignore` is isolated to the facade boundary.
|
|
11
|
+
|
|
7
12
|
## [2.3.1] - 2026-04-24
|
|
8
13
|
|
|
9
14
|
### Fixed
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# BMK MAKEFILE 2.9.
|
|
1
|
+
# BMK MAKEFILE 2.9.4
|
|
2
2
|
# do not alter this file - it might be overwritten on new versions of BMK
|
|
3
3
|
# if You want to alter it, remove the first line # BMK MAKEFILE 1.0 - then it is a custom makefile and will not be overwritten
|
|
4
4
|
# bmk Makefile — thin wrapper using `uv tool install` for persistent bmk
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lib_cli_exit_tools
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.2
|
|
4
4
|
Summary: CLI exit handling helpers: clean signals, exit codes, and error printing
|
|
5
5
|
Project-URL: Homepage, https://github.com/bitranox/lib_cli_exit_tools
|
|
6
6
|
Project-URL: Repository, https://github.com/bitranox/lib_cli_exit_tools.git
|
|
@@ -21,22 +21,22 @@ Classifier: Programming Language :: Python :: 3.13
|
|
|
21
21
|
Classifier: Programming Language :: Python :: 3.14
|
|
22
22
|
Classifier: Typing :: Typed
|
|
23
23
|
Requires-Python: >=3.10
|
|
24
|
-
Requires-Dist: rich-click>=1.9.
|
|
24
|
+
Requires-Dist: rich-click>=1.9.8
|
|
25
25
|
Provides-Extra: dev
|
|
26
26
|
Requires-Dist: bandit>=1.9.4; extra == 'dev'
|
|
27
|
-
Requires-Dist: build>=1.
|
|
27
|
+
Requires-Dist: build>=1.5.0; extra == 'dev'
|
|
28
28
|
Requires-Dist: codecov-cli>=11.2.8; extra == 'dev'
|
|
29
|
-
Requires-Dist: coverage[toml]>=7.
|
|
30
|
-
Requires-Dist: hypothesis>=6.
|
|
29
|
+
Requires-Dist: coverage[toml]>=7.14.1; extra == 'dev'
|
|
30
|
+
Requires-Dist: hypothesis>=6.155.2; extra == 'dev'
|
|
31
31
|
Requires-Dist: import-linter>=2.11; extra == 'dev'
|
|
32
|
-
Requires-Dist: pip-audit>=2.10.
|
|
33
|
-
Requires-Dist: pyright[nodejs]>=1.1.
|
|
34
|
-
Requires-Dist: pytest-asyncio>=1.
|
|
32
|
+
Requires-Dist: pip-audit>=2.10.1; extra == 'dev'
|
|
33
|
+
Requires-Dist: pyright[nodejs]>=1.1.410; extra == 'dev'
|
|
34
|
+
Requires-Dist: pytest-asyncio>=1.4.0; extra == 'dev'
|
|
35
35
|
Requires-Dist: pytest-cov>=7.1.0; extra == 'dev'
|
|
36
|
-
Requires-Dist: pytest>=9.0
|
|
36
|
+
Requires-Dist: pytest>=9.1.0; extra == 'dev'
|
|
37
37
|
Requires-Dist: rtoml>=0.13.0; extra == 'dev'
|
|
38
|
-
Requires-Dist: ruff>=0.15.
|
|
39
|
-
Requires-Dist: textual>=8.2.
|
|
38
|
+
Requires-Dist: ruff>=0.15.17; extra == 'dev'
|
|
39
|
+
Requires-Dist: textual>=8.2.7; extra == 'dev'
|
|
40
40
|
Requires-Dist: twine>=6.2.0; extra == 'dev'
|
|
41
41
|
Description-Content-Type: text/markdown
|
|
42
42
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "lib_cli_exit_tools"
|
|
3
|
-
version = "2.3.
|
|
3
|
+
version = "2.3.2"
|
|
4
4
|
description = "CLI exit handling helpers: clean signals, exit codes, and error printing"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.10"
|
|
7
|
-
dependencies = ["rich-click>=1.9.
|
|
7
|
+
dependencies = ["rich-click>=1.9.8"]
|
|
8
8
|
license = { text = "MIT" }
|
|
9
9
|
authors = [{ name = "bitranox", email = "bitranox@gmail.com" }]
|
|
10
10
|
keywords = ["cli", "exit", "signals", "errors", "click"]
|
|
@@ -38,19 +38,19 @@ Issues = "https://github.com/bitranox/lib_cli_exit_tools/issues"
|
|
|
38
38
|
|
|
39
39
|
[project.optional-dependencies]
|
|
40
40
|
dev = [
|
|
41
|
-
"build>=1.
|
|
41
|
+
"build>=1.5.0",
|
|
42
42
|
"codecov-cli>=11.2.8",
|
|
43
|
-
"coverage[toml]>=7.
|
|
44
|
-
"hypothesis>=6.
|
|
43
|
+
"coverage[toml]>=7.14.1",
|
|
44
|
+
"hypothesis>=6.155.2",
|
|
45
45
|
"import-linter>=2.11",
|
|
46
46
|
"bandit>=1.9.4",
|
|
47
|
-
"pip-audit>=2.10.
|
|
48
|
-
"pyright[nodejs]>=1.1.
|
|
49
|
-
"pytest>=9.0
|
|
50
|
-
"pytest-asyncio>=1.
|
|
47
|
+
"pip-audit>=2.10.1",
|
|
48
|
+
"pyright[nodejs]>=1.1.410",
|
|
49
|
+
"pytest>=9.1.0",
|
|
50
|
+
"pytest-asyncio>=1.4.0",
|
|
51
51
|
"pytest-cov>=7.1.0",
|
|
52
|
-
"ruff>=0.15.
|
|
53
|
-
"textual>=8.2.
|
|
52
|
+
"ruff>=0.15.17",
|
|
53
|
+
"textual>=8.2.7",
|
|
54
54
|
"rtoml>=0.13.0",
|
|
55
55
|
"twine>=6.2.0"
|
|
56
56
|
]
|
|
@@ -62,7 +62,7 @@ cli-exit-tools = "lib_cli_exit_tools.cli:main"
|
|
|
62
62
|
lib-cli-exit-tools = "lib_cli_exit_tools.cli:main"
|
|
63
63
|
|
|
64
64
|
[build-system]
|
|
65
|
-
requires = ["hatchling>=1.
|
|
65
|
+
requires = ["hatchling>=1.30.1"]
|
|
66
66
|
build-backend = "hatchling.build"
|
|
67
67
|
|
|
68
68
|
[tool.hatch.build.targets.wheel]
|
{lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/__init__conf__.py
RENAMED
|
@@ -24,7 +24,7 @@ name = "lib_cli_exit_tools"
|
|
|
24
24
|
#: Human-readable summary shown in CLI help output.
|
|
25
25
|
title = "CLI exit handling helpers: clean signals, exit codes, and error printing"
|
|
26
26
|
#: Current release version pulled from ``pyproject.toml`` by automation.
|
|
27
|
-
version = "2.3.
|
|
27
|
+
version = "2.3.2"
|
|
28
28
|
#: Repository homepage presented to users.
|
|
29
29
|
homepage = "https://github.com/bitranox/lib_cli_exit_tools"
|
|
30
30
|
#: Author attribution surfaced in CLI output.
|
|
@@ -23,6 +23,7 @@ from .. import __init__conf__
|
|
|
23
23
|
from .. import lib_cli_exit_tools
|
|
24
24
|
from .commands import CLICK_CONTEXT_SETTINGS
|
|
25
25
|
from .styling import _temporary_rich_click_configuration # pyright: ignore[reportPrivateUsage]
|
|
26
|
+
from .typed_click import option, version_option
|
|
26
27
|
|
|
27
28
|
|
|
28
29
|
@dataclass
|
|
@@ -41,12 +42,12 @@ class CliContextState:
|
|
|
41
42
|
|
|
42
43
|
|
|
43
44
|
@click.group(help=__init__conf__.title, context_settings=CLICK_CONTEXT_SETTINGS)
|
|
44
|
-
@
|
|
45
|
+
@version_option(
|
|
45
46
|
version=__init__conf__.version,
|
|
46
47
|
prog_name=__init__conf__.shell_command,
|
|
47
48
|
message=f"{__init__conf__.shell_command} version {__init__conf__.version}",
|
|
48
49
|
)
|
|
49
|
-
@
|
|
50
|
+
@option(
|
|
50
51
|
"--traceback/--no-traceback",
|
|
51
52
|
is_flag=True,
|
|
52
53
|
default=False,
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"""Strictly-typed wrappers for rich_click decorators with partially-unknown types.
|
|
2
|
+
|
|
3
|
+
rich_click ships ``py.typed`` but re-exports click's decorators, whose
|
|
4
|
+
``ParamType[Unknown]`` parameters make pyright (strict mode) report
|
|
5
|
+
``reportUnknownMemberType`` at every call site. Wrapping the affected decorators
|
|
6
|
+
here behind explicit, fully-known signatures keeps the rest of the code
|
|
7
|
+
strict-clean without disabling the rule. This module is the single boundary that
|
|
8
|
+
touches the untyped surface, so the only ``# pyright: ignore`` for this gap lives here.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from collections.abc import Callable
|
|
12
|
+
from typing import Any
|
|
13
|
+
|
|
14
|
+
import rich_click as click
|
|
15
|
+
|
|
16
|
+
_CommandDecorator = Callable[[Callable[..., Any]], Callable[..., Any]]
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def option(*param_decls: str, **attrs: Any) -> _CommandDecorator:
|
|
20
|
+
"""Typed wrapper over :func:`rich_click.option`. See module docstring."""
|
|
21
|
+
return click.option(*param_decls, **attrs) # pyright: ignore[reportUnknownMemberType]
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def version_option(*param_decls: str, **attrs: Any) -> _CommandDecorator:
|
|
25
|
+
"""Typed wrapper over :func:`rich_click.version_option`. See module docstring."""
|
|
26
|
+
return click.version_option(*param_decls, **attrs) # pyright: ignore[reportUnknownMemberType]
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
__all__ = ["option", "version_option"]
|
|
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
|
{lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.github/actions/extract-metadata/action.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.github/workflows/default_release_public.yml
RENAMED
|
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
|
{lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/docs/system-design/module_reference.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/adapters/__init__.py
RENAMED
|
File without changes
|
{lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/adapters/signals.py
RENAMED
|
File without changes
|
{lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/application/__init__.py
RENAMED
|
File without changes
|
{lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/application/runner.py
RENAMED
|
File without changes
|
{lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/cli/__init__.py
RENAMED
|
File without changes
|
{lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/cli/commands.py
RENAMED
|
File without changes
|
|
File without changes
|
{lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/core/__init__.py
RENAMED
|
File without changes
|
{lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/core/configuration.py
RENAMED
|
File without changes
|
{lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/core/exit_codes.py
RENAMED
|
File without changes
|
{lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/lib_cli_exit_tools.py
RENAMED
|
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
|