lib-cli-exit-tools 2.1.1__tar.gz → 2.2.0__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 (76) hide show
  1. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/.github/workflows/ci.yml +11 -3
  2. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/CHANGELOG.md +9 -0
  3. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/INSTALL.md +1 -1
  4. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/PKG-INFO +6 -5
  5. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/README.md +2 -2
  6. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/pyproject.toml +15 -5
  7. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/src/lib_cli_exit_tools/__init__conf__.py +1 -1
  8. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/tests/test_metadata.py +6 -1
  9. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/.codacy/cli-config.yaml +0 -0
  10. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/.codacy/cli.sh +0 -0
  11. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/.codacy/codacy.yaml +0 -0
  12. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/.codacy/tools-configs/lizard.yaml +0 -0
  13. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/.codacy/tools-configs/trivy.yaml +0 -0
  14. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/.devcontainer/devcontainer.json +0 -0
  15. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/.devcontainer/settings.json +0 -0
  16. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/.env.example +0 -0
  17. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/.github/dependabot.yml +0 -0
  18. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/.github/workflows/codeql.yml +0 -0
  19. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/.github/workflows/release.yml +0 -0
  20. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/.gitignore +0 -0
  21. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/.qlty/qlty.toml +0 -0
  22. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/.snyk +0 -0
  23. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/AGENTS.md +0 -0
  24. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/AGENTS_README.md +0 -0
  25. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/CONTRIBUTING.md +0 -0
  26. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/DEVELOPMENT.md +0 -0
  27. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/LICENSE +0 -0
  28. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/Makefile +0 -0
  29. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/codecov.yml +0 -0
  30. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/docs/system-design/module_reference.md +0 -0
  31. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/notebooks/Quickstart.ipynb +0 -0
  32. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/scripts/__init__.py +0 -0
  33. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/scripts/__main__.py +0 -0
  34. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/scripts/_utils.py +0 -0
  35. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/scripts/build.py +0 -0
  36. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/scripts/bump.py +0 -0
  37. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/scripts/bump_major.py +0 -0
  38. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/scripts/bump_minor.py +0 -0
  39. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/scripts/bump_patch.py +0 -0
  40. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/scripts/bump_version.py +0 -0
  41. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/scripts/clean.py +0 -0
  42. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/scripts/cli.py +0 -0
  43. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/scripts/dependencies.py +0 -0
  44. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/scripts/dev.py +0 -0
  45. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/scripts/help.py +0 -0
  46. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/scripts/install.py +0 -0
  47. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/scripts/menu.py +0 -0
  48. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/scripts/push.py +0 -0
  49. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/scripts/release.py +0 -0
  50. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/scripts/run_cli.py +0 -0
  51. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/scripts/target_metadata.py +0 -0
  52. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/scripts/test.py +0 -0
  53. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/scripts/toml_config.py +0 -0
  54. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/scripts/version_current.py +0 -0
  55. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/src/lib_cli_exit_tools/__init__.py +0 -0
  56. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/src/lib_cli_exit_tools/__main__.py +0 -0
  57. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/src/lib_cli_exit_tools/adapters/__init__.py +0 -0
  58. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/src/lib_cli_exit_tools/adapters/signals.py +0 -0
  59. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/src/lib_cli_exit_tools/application/__init__.py +0 -0
  60. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/src/lib_cli_exit_tools/application/runner.py +0 -0
  61. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/src/lib_cli_exit_tools/cli.py +0 -0
  62. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/src/lib_cli_exit_tools/core/__init__.py +0 -0
  63. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/src/lib_cli_exit_tools/core/configuration.py +0 -0
  64. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/src/lib_cli_exit_tools/core/exit_codes.py +0 -0
  65. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/src/lib_cli_exit_tools/lib_cli_exit_tools.py +0 -0
  66. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/src/lib_cli_exit_tools/py.typed +0 -0
  67. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/tests/conftest.py +0 -0
  68. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/tests/test_adapters_signals.py +0 -0
  69. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/tests/test_application_runner.py +0 -0
  70. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/tests/test_behaviors.py +0 -0
  71. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/tests/test_cli.py +0 -0
  72. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/tests/test_core_configuration.py +0 -0
  73. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/tests/test_core_exit_codes.py +0 -0
  74. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/tests/test_module_entry.py +0 -0
  75. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/tests/test_scripts.py +0 -0
  76. {lib_cli_exit_tools-2.1.1 → lib_cli_exit_tools-2.2.0}/tests/test_signals_integration.py +0 -0
@@ -18,7 +18,7 @@ jobs:
18
18
  matrix:
19
19
  os: [ubuntu-latest, macos-latest, windows-latest]
20
20
  # Test against Python 3.13 and the latest 3.x available on Actions runners
21
- python: ["3.13", "3.x"]
21
+ python: ["3.10","3.11","3.12","3.13", "3.x"]
22
22
  env:
23
23
  PYO3_USE_ABI3_FORWARD_COMPATIBILITY: "1"
24
24
  PYTHONIOENCODING: "utf-8"
@@ -37,9 +37,13 @@ jobs:
37
37
  shell: python
38
38
  run: |
39
39
  import os
40
- import tomllib
41
40
  from pathlib import Path
42
41
 
42
+ try:
43
+ import tomllib
44
+ except ModuleNotFoundError:
45
+ import pip._vendor.tomli as tomllib
46
+
43
47
  data = tomllib.loads(Path('pyproject.toml').read_text('utf-8'))
44
48
  project = data['project']['name']
45
49
  module = project.replace('-', '_')
@@ -123,9 +127,13 @@ jobs:
123
127
  shell: python
124
128
  run: |
125
129
  import os
126
- import tomllib
127
130
  from pathlib import Path
128
131
 
132
+ try:
133
+ import tomllib
134
+ except ModuleNotFoundError:
135
+ import pip._vendor.tomli as tomllib
136
+
129
137
  data = tomllib.loads(Path('pyproject.toml').read_text('utf-8'))
130
138
  project = data['project']['name']
131
139
  module = project.replace('-', '_')
@@ -3,6 +3,15 @@
3
3
  All notable changes to this project are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
4
4
 
5
5
 
6
+ ## [2.2.0] - 2025-12-11
7
+
8
+ ### Changed
9
+ - Lowered minimum Python version from 3.13 to 3.10 for broader compatibility.
10
+ - Updated ruff target-version to py310 to match the new baseline.
11
+
12
+ ### Security
13
+ - Added setuptools vulnerability IDs (PYSEC-2022-43012, CVE-2024-6345, PYSEC-2025-49) to pip-audit ignore list. These are build-time dependencies managed by the CI environment, not runtime dependencies.
14
+
6
15
  ## [2.1.1] - 2025-12-08
7
16
 
8
17
  ### Changed
@@ -27,7 +27,7 @@ The sections below cover more specialised workflows, from editable installs to a
27
27
 
28
28
  ## Supported Python Versions
29
29
 
30
- `lib_cli_exit_tools` targets Python 3.13 and newer. Wheels are published for CPython on Linux, macOS, and Windows. For alternative interpreters (PyPy) install from source using `pip install lib_cli_exit_tools`.
30
+ `lib_cli_exit_tools` targets Python 3.10 and newer. Wheels are published for CPython on Linux, macOS, and Windows. For alternative interpreters (PyPy) install from source using `pip install lib_cli_exit_tools`.
31
31
 
32
32
  ## Installation Flows
33
33
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lib_cli_exit_tools
3
- Version: 2.1.1
3
+ Version: 2.2.0
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
@@ -15,7 +15,7 @@ Classifier: Operating System :: OS Independent
15
15
  Classifier: Programming Language :: Python :: 3
16
16
  Classifier: Programming Language :: Python :: 3 :: Only
17
17
  Classifier: Typing :: Typed
18
- Requires-Python: >=3.13
18
+ Requires-Python: >=3.10
19
19
  Requires-Dist: rich-click>=1.9.4
20
20
  Provides-Extra: dev
21
21
  Requires-Dist: bandit>=1.9.2; extra == 'dev'
@@ -23,7 +23,7 @@ Requires-Dist: build>=1.3.0; extra == 'dev'
23
23
  Requires-Dist: codecov-cli>=11.2.6; extra == 'dev'
24
24
  Requires-Dist: coverage[toml]>=7.13.0; extra == 'dev'
25
25
  Requires-Dist: hypothesis>=6.148.7; extra == 'dev'
26
- Requires-Dist: import-linter>=2.7; extra == 'dev'
26
+ Requires-Dist: import-linter>=2.8; extra == 'dev'
27
27
  Requires-Dist: pip-audit>=2.10.0; extra == 'dev'
28
28
  Requires-Dist: pyright>=1.1.407; extra == 'dev'
29
29
  Requires-Dist: pytest-asyncio>=1.3.0; extra == 'dev'
@@ -31,6 +31,7 @@ Requires-Dist: pytest-cov>=7.0.0; extra == 'dev'
31
31
  Requires-Dist: pytest>=9.0.2; extra == 'dev'
32
32
  Requires-Dist: ruff>=0.14.8; extra == 'dev'
33
33
  Requires-Dist: textual>=6.8.0; extra == 'dev'
34
+ Requires-Dist: tomli>=2.3.0; (python_version < '3.11') and extra == 'dev'
34
35
  Requires-Dist: twine>=6.2.0; extra == 'dev'
35
36
  Description-Content-Type: text/markdown
36
37
 
@@ -56,7 +57,7 @@ Small helpers for robust CLI exit handling:
56
57
 
57
58
  ## Install
58
59
 
59
- Requires Python 3.13 or newer.
60
+ Requires Python 3.10 or newer.
60
61
 
61
62
  ```bash
62
63
  pip install lib_cli_exit_tools
@@ -582,7 +583,7 @@ When installed, the generated console scripts (`lib-cli-exit-tools`, `cli-exit-t
582
583
 
583
584
  ## Modern Python Toolchain
584
585
 
585
- - Targets Python 3.13+ exclusively—no runtime shims or compatibility branches remain.
586
+ - Targets Python 3.10+ for modern language features and broad compatibility.
586
587
  - Development extras track the latest stable releases published on PyPI so quality gates match local and CI environments.
587
588
  - GitHub Actions workflows rely on the current major releases of `actions/checkout`, `actions/setup-python`, and `astral-sh/setup-uv`, aligning the automation stack with the 2025 runner images.
588
589
 
@@ -20,7 +20,7 @@ Small helpers for robust CLI exit handling:
20
20
 
21
21
  ## Install
22
22
 
23
- Requires Python 3.13 or newer.
23
+ Requires Python 3.10 or newer.
24
24
 
25
25
  ```bash
26
26
  pip install lib_cli_exit_tools
@@ -546,7 +546,7 @@ When installed, the generated console scripts (`lib-cli-exit-tools`, `cli-exit-t
546
546
 
547
547
  ## Modern Python Toolchain
548
548
 
549
- - Targets Python 3.13+ exclusively—no runtime shims or compatibility branches remain.
549
+ - Targets Python 3.10+ for modern language features and broad compatibility.
550
550
  - Development extras track the latest stable releases published on PyPI so quality gates match local and CI environments.
551
551
  - GitHub Actions workflows rely on the current major releases of `actions/checkout`, `actions/setup-python`, and `astral-sh/setup-uv`, aligning the automation stack with the 2025 runner images.
552
552
 
@@ -1,9 +1,9 @@
1
1
  [project]
2
2
  name = "lib_cli_exit_tools"
3
- version = "2.1.1"
3
+ version = "2.2.0"
4
4
  description = "CLI exit handling helpers: clean signals, exit codes, and error printing"
5
5
  readme = "README.md"
6
- requires-python = ">=3.13"
6
+ requires-python = ">=3.10"
7
7
  dependencies = ["rich-click>=1.9.4"]
8
8
  license = { text = "MIT" }
9
9
  authors = [{ name = "bitranox", email = "bitranox@gmail.com" }]
@@ -28,7 +28,7 @@ dev = [
28
28
  "codecov-cli>=11.2.6",
29
29
  "coverage[toml]>=7.13.0",
30
30
  "hypothesis>=6.148.7",
31
- "import-linter>=2.7",
31
+ "import-linter>=2.8",
32
32
  "bandit>=1.9.2",
33
33
  "pip-audit>=2.10.0",
34
34
  "pyright>=1.1.407",
@@ -37,6 +37,7 @@ dev = [
37
37
  "pytest-cov>=7.0.0",
38
38
  "ruff>=0.14.8",
39
39
  "textual>=6.8.0",
40
+ "tomli>=2.3.0;python_version<'3.11'",
40
41
  "twine>=6.2.0"
41
42
  ]
42
43
 
@@ -56,7 +57,7 @@ include = ["src/lib_cli_exit_tools/py.typed"]
56
57
 
57
58
  [tool.ruff]
58
59
  line-length = 160
59
- target-version = "py313"
60
+ target-version = "py310"
60
61
 
61
62
  [tool.ruff.lint.per-file-ignores]
62
63
  # ignore the "unused import sys" in the jupyter notebook - which we need (it is a linter hickup)
@@ -155,4 +156,13 @@ forbidden_modules = [
155
156
  # Known vulnerabilities to ignore (unfixable or accepted risk)
156
157
  # GHSA-4xh5-x5gv-qwph: py library ReDoS (no fix available, low risk)
157
158
  # PYSEC-2022-42969: same as above (alias)
158
- ignore-vulns = ["GHSA-4xh5-x5gv-qwph", "PYSEC-2022-42969"]
159
+ # PYSEC-2022-43012, CVE-2024-6345, PYSEC-2025-49: setuptools vulnerabilities
160
+ # These are build-time dependencies only, not runtime. The virtual environment
161
+ # setuptools version is managed by the CI environment/pip itself.
162
+ ignore-vulns = [
163
+ "GHSA-4xh5-x5gv-qwph",
164
+ "PYSEC-2022-42969",
165
+ "PYSEC-2022-43012",
166
+ "CVE-2024-6345",
167
+ "PYSEC-2025-49",
168
+ ]
@@ -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.1.1"
27
+ version = "2.2.0"
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.
@@ -8,10 +8,15 @@ Each test verifies exactly one metadata behavior:
8
8
  from __future__ import annotations
9
9
 
10
10
  import runpy
11
- import tomllib
11
+ import sys
12
12
  from pathlib import Path
13
13
  from typing import Any, cast
14
14
 
15
+ if sys.version_info >= (3, 11):
16
+ import tomllib
17
+ else:
18
+ import tomli as tomllib # type: ignore[import-not-found,no-redef]
19
+
15
20
  import pytest
16
21
 
17
22
  PROJECT_ROOT = Path(__file__).resolve().parent.parent