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.
Files changed (56) hide show
  1. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.github/workflows/default_cicd_public.yml +1 -1
  2. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/CHANGELOG.md +5 -0
  3. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/Makefile +1 -1
  4. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/PKG-INFO +11 -11
  5. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/pyproject.toml +12 -12
  6. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/__init__conf__.py +1 -1
  7. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/cli/group.py +3 -2
  8. lib_cli_exit_tools-2.3.2/src/lib_cli_exit_tools/cli/typed_click.py +29 -0
  9. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.codacy/cli-config.yaml +0 -0
  10. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.codacy/cli.sh +0 -0
  11. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.codacy/codacy.yaml +0 -0
  12. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.codacy/tools-configs/lizard.yaml +0 -0
  13. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.codacy/tools-configs/trivy.yaml +0 -0
  14. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.data_arch_violations.json +0 -0
  15. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.devcontainer/devcontainer.json +0 -0
  16. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.devcontainer/settings.json +0 -0
  17. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.env.example +0 -0
  18. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.github/actions/extract-metadata/action.yml +0 -0
  19. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.github/dependabot.yml +0 -0
  20. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.github/workflows/codeql.yml +0 -0
  21. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.github/workflows/default_release_public.yml +0 -0
  22. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.gitignore +0 -0
  23. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.qlty/qlty.toml +0 -0
  24. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/.snyk +0 -0
  25. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/CONTRIBUTING.md +0 -0
  26. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/DEVELOPMENT.md +0 -0
  27. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/INSTALL.md +0 -0
  28. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/LICENSE +0 -0
  29. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/README.md +0 -0
  30. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/codecov.yml +0 -0
  31. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/docs/system-design/module_reference.md +0 -0
  32. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/notebooks/Quickstart.ipynb +0 -0
  33. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/__init__.py +0 -0
  34. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/__main__.py +0 -0
  35. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/adapters/__init__.py +0 -0
  36. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/adapters/signals.py +0 -0
  37. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/application/__init__.py +0 -0
  38. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/application/runner.py +0 -0
  39. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/cli/__init__.py +0 -0
  40. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/cli/commands.py +0 -0
  41. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/cli/styling.py +0 -0
  42. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/core/__init__.py +0 -0
  43. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/core/configuration.py +0 -0
  44. {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
  45. {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
  46. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/src/lib_cli_exit_tools/py.typed +0 -0
  47. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/tests/conftest.py +0 -0
  48. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/tests/test_adapters_signals.py +0 -0
  49. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/tests/test_application_runner.py +0 -0
  50. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/tests/test_behaviors.py +0 -0
  51. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/tests/test_cli.py +0 -0
  52. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/tests/test_core_configuration.py +0 -0
  53. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/tests/test_core_exit_codes.py +0 -0
  54. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/tests/test_metadata.py +0 -0
  55. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/tests/test_module_entry.py +0 -0
  56. {lib_cli_exit_tools-2.3.1 → lib_cli_exit_tools-2.3.2}/tests/test_signals_integration.py +0 -0
@@ -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@v6
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
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.1
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.7
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.4.4; extra == 'dev'
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.13.5; extra == 'dev'
30
- Requires-Dist: hypothesis>=6.152.2; extra == 'dev'
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.0; extra == 'dev'
33
- Requires-Dist: pyright[nodejs]>=1.1.409; extra == 'dev'
34
- Requires-Dist: pytest-asyncio>=1.3.0; extra == 'dev'
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.3; extra == 'dev'
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.11; extra == 'dev'
39
- Requires-Dist: textual>=8.2.4; extra == 'dev'
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.1"
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"]
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.4.4",
41
+ "build>=1.5.0",
42
42
  "codecov-cli>=11.2.8",
43
- "coverage[toml]>=7.13.5",
44
- "hypothesis>=6.152.2",
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.0",
48
- "pyright[nodejs]>=1.1.409",
49
- "pytest>=9.0.3",
50
- "pytest-asyncio>=1.3.0",
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.11",
53
- "textual>=8.2.4",
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.29.0"]
65
+ requires = ["hatchling>=1.30.1"]
66
66
  build-backend = "hatchling.build"
67
67
 
68
68
  [tool.hatch.build.targets.wheel]
@@ -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.1"
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
- @click.version_option(
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
- @click.option(
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"]