shellscripts 0.24.0__tar.gz → 0.24.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.
- {shellscripts-0.24.0 → shellscripts-0.24.1}/PKG-INFO +2 -2
- {shellscripts-0.24.0 → shellscripts-0.24.1}/README.md +1 -1
- {shellscripts-0.24.0 → shellscripts-0.24.1}/pyproject.toml +1 -1
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/__init__.py +1 -1
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/version_check.py +6 -5
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shellscripts.egg-info/PKG-INFO +2 -2
- {shellscripts-0.24.0 → shellscripts-0.24.1}/tests/test_tst_014_pypi_version_source.py +49 -5
- {shellscripts-0.24.0 → shellscripts-0.24.1}/LICENSE +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/setup.cfg +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/__main__.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/commands/__init__.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/commands/_dc_common.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/commands/ai_install.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/commands/bin_links.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/commands/claude.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/commands/clean.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/commands/codex.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/commands/copilot.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/commands/dicom2jpg.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/commands/dicomviewer.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/commands/diff_cmd.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/commands/doxygen_cmd.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/commands/edit_cmd.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/commands/gemini.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/commands/kiro.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/commands/opencode.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/commands/pdf_crop.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/commands/pdf_merge.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/commands/pdf_split_by_format.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/commands/pdf_split_by_toc.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/commands/pdf_tiler_090.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/commands/pdf_tiler_100.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/commands/pdf_toc_clean.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/commands/pi.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/commands/req_cmd.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/commands/tests_cmd.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/commands/ubuntu_dark_theme.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/commands/venv_cmd.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/commands/video2h264.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/commands/video2h265.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/commands/view_cmd.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/commands/vscode_cmd.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/commands/vsinsider_cmd.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/config.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/core.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/utils.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shellscripts.egg-info/SOURCES.txt +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shellscripts.egg-info/dependency_links.txt +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shellscripts.egg-info/entry_points.txt +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/src/shellscripts.egg-info/top_level.txt +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/tests/test_tst_001_002_core.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/tests/test_tst_003_ai_install.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/tests/test_tst_004_bin_links_clean.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/tests/test_tst_005_cli_launchers.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/tests/test_tst_006_dc_common.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/tests/test_tst_007_pdf_commands.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/tests/test_tst_008_env_commands.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/tests/test_tst_010_req_cmd.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/tests/test_tst_011_video_commands.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/tests/test_tst_012_workflow_runtime.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/tests/test_tst_013_release_pypi_gating.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/tests/test_tst_015_pre_release_check.py +0 -0
- {shellscripts-0.24.0 → shellscripts-0.24.1}/tests/test_tst_016_release_precheck_gating.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: shellscripts
|
|
3
|
-
Version: 0.24.
|
|
3
|
+
Version: 0.24.1
|
|
4
4
|
Summary: Execute useful shell scripts via an uvx-compatible CLI interface.
|
|
5
5
|
Author: Francesco Rolando
|
|
6
6
|
License-Expression: GPL-3.0-only
|
|
@@ -31,7 +31,7 @@ Dynamic: license-file
|
|
|
31
31
|
> * **No Support or Feature Requests:** Please **do not** open issues, bug reports, or feature requests. They will not be addressed or accepted at this stage of development.
|
|
32
32
|
> * **No Warranty:** This software is provided **"AS IS"**, without warranty of any kind, express or implied. You may use it strictly for **testing and evaluation purposes** at your own sole risk.
|
|
33
33
|
|
|
34
|
-
# s/shellScripts (0.24.
|
|
34
|
+
# s/shellScripts (0.24.1)
|
|
35
35
|
|
|
36
36
|
<p align="center">
|
|
37
37
|
<img src="https://img.shields.io/badge/python-3.11%2B-3776AB?style=flat-square&logo=python&logoColor=white" alt="Python 3.11+">
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
> * **No Support or Feature Requests:** Please **do not** open issues, bug reports, or feature requests. They will not be addressed or accepted at this stage of development.
|
|
11
11
|
> * **No Warranty:** This software is provided **"AS IS"**, without warranty of any kind, express or implied. You may use it strictly for **testing and evaluation purposes** at your own sole risk.
|
|
12
12
|
|
|
13
|
-
# s/shellScripts (0.24.
|
|
13
|
+
# s/shellScripts (0.24.1)
|
|
14
14
|
|
|
15
15
|
<p align="center">
|
|
16
16
|
<img src="https://img.shields.io/badge/python-3.11%2B-3776AB?style=flat-square&logo=python&logoColor=white" alt="Python 3.11+">
|
|
@@ -263,11 +263,12 @@ def print_remote_latest_versions(current_version: str) -> None:
|
|
|
263
263
|
|
|
264
264
|
@details Emits one `<source> latest: <version>` line per remote source in
|
|
265
265
|
fixed order (PyPI, GitHub). A failed source lookup prints one bright-red
|
|
266
|
-
|
|
267
|
-
|
|
266
|
+
`<source> latest: unknown (<reason>)` line where `<reason>` is the
|
|
267
|
+
`_format_request_error` descriptor of the actual failure, and the remaining
|
|
268
|
+
source is still processed. Complexity O(1) excluding network latency.
|
|
268
269
|
@param current_version {str} Installed package version used in User-Agent.
|
|
269
270
|
@return {None} Writes two report or error lines to stdout.
|
|
270
|
-
@satisfies REQ-003, REQ-075, DES-020
|
|
271
|
+
@satisfies REQ-003, REQ-075, REQ-084, DES-020
|
|
271
272
|
"""
|
|
272
273
|
|
|
273
274
|
for source_label, fetch_version in (
|
|
@@ -278,8 +279,8 @@ def print_remote_latest_versions(current_version: str) -> None:
|
|
|
278
279
|
latest_version = fetch_version(current_version).lstrip("v")
|
|
279
280
|
except Exception as error:
|
|
280
281
|
print(
|
|
281
|
-
f"{BRIGHT_RED}{source_label} latest
|
|
282
|
-
f"{_format_request_error(error)}
|
|
282
|
+
f"{BRIGHT_RED}{source_label} latest: unknown "
|
|
283
|
+
f"({_format_request_error(error)}){RESET}"
|
|
283
284
|
)
|
|
284
285
|
continue
|
|
285
286
|
print(f"{source_label} latest: {latest_version}")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: shellscripts
|
|
3
|
-
Version: 0.24.
|
|
3
|
+
Version: 0.24.1
|
|
4
4
|
Summary: Execute useful shell scripts via an uvx-compatible CLI interface.
|
|
5
5
|
Author: Francesco Rolando
|
|
6
6
|
License-Expression: GPL-3.0-only
|
|
@@ -31,7 +31,7 @@ Dynamic: license-file
|
|
|
31
31
|
> * **No Support or Feature Requests:** Please **do not** open issues, bug reports, or feature requests. They will not be addressed or accepted at this stage of development.
|
|
32
32
|
> * **No Warranty:** This software is provided **"AS IS"**, without warranty of any kind, express or implied. You may use it strictly for **testing and evaluation purposes** at your own sole risk.
|
|
33
33
|
|
|
34
|
-
# s/shellScripts (0.24.
|
|
34
|
+
# s/shellScripts (0.24.1)
|
|
35
35
|
|
|
36
36
|
<p align="center">
|
|
37
37
|
<img src="https://img.shields.io/badge/python-3.11%2B-3776AB?style=flat-square&logo=python&logoColor=white" alt="Python 3.11+">
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
import json
|
|
16
16
|
import types
|
|
17
17
|
import urllib.error
|
|
18
|
+
from email.message import Message
|
|
18
19
|
|
|
19
20
|
import shell_scripts.core as core
|
|
20
21
|
from shell_scripts.config import get_default_runtime_config
|
|
@@ -204,12 +205,12 @@ def test_print_remote_latest_versions_reports_failed_source_and_continues(
|
|
|
204
205
|
"""
|
|
205
206
|
@brief Validate per-source error reporting during version report.
|
|
206
207
|
@details Forces the PyPI lookup to raise a non-HTTP exception and asserts
|
|
207
|
-
|
|
208
|
-
emitted.
|
|
208
|
+
the bright-red `PyPI latest: unknown (<reason>)` failure line while the
|
|
209
|
+
GitHub line is still emitted.
|
|
209
210
|
@param monkeypatch {pytest.MonkeyPatch} Runtime patch helper.
|
|
210
211
|
@param capsys {pytest.CaptureFixture[str]} Stdout/stderr capture helper.
|
|
211
212
|
@return {None} Assertions only.
|
|
212
|
-
@satisfies TST-014, DES-020
|
|
213
|
+
@satisfies TST-014, REQ-084, DES-020
|
|
213
214
|
"""
|
|
214
215
|
|
|
215
216
|
def _raise_url_error(_version):
|
|
@@ -229,11 +230,54 @@ def test_print_remote_latest_versions_reports_failed_source_and_continues(
|
|
|
229
230
|
version_check.print_remote_latest_versions("0.1.0")
|
|
230
231
|
captured = capsys.readouterr()
|
|
231
232
|
|
|
232
|
-
|
|
233
|
-
assert
|
|
233
|
+
expected_output = "PyPI latest: unknown (URLError: <urlopen error pypi unreachable>)"
|
|
234
|
+
assert expected_output in captured.out
|
|
235
|
+
assert "PyPI latest check failed" not in captured.out
|
|
234
236
|
assert "GitHub latest: 0.1.0" in captured.out
|
|
235
237
|
|
|
236
238
|
|
|
239
|
+
def test_print_remote_latest_versions_reports_github_http_404(
|
|
240
|
+
monkeypatch,
|
|
241
|
+
capsys,
|
|
242
|
+
):
|
|
243
|
+
"""
|
|
244
|
+
@brief Validate GitHub HTTP failure rendering during version report.
|
|
245
|
+
@details Forces the GitHub lookup to raise an HTTP 404 error and asserts
|
|
246
|
+
the bright-red `GitHub latest: unknown (HTTP 404)` failure line while
|
|
247
|
+
the PyPI line is still emitted.
|
|
248
|
+
@param monkeypatch {pytest.MonkeyPatch} Runtime patch helper.
|
|
249
|
+
@param capsys {pytest.CaptureFixture[str]} Stdout/stderr capture helper.
|
|
250
|
+
@return {None} Assertions only.
|
|
251
|
+
@satisfies TST-014, REQ-084, DES-020
|
|
252
|
+
"""
|
|
253
|
+
|
|
254
|
+
def _raise_http_404(_version):
|
|
255
|
+
"""
|
|
256
|
+
@brief Simulate GitHub API HTTP 404 failure.
|
|
257
|
+
@param _version {str} Unused installed version.
|
|
258
|
+
@return {None} Always raises.
|
|
259
|
+
@throws {urllib.error.HTTPError} Deterministic HTTP failure.
|
|
260
|
+
"""
|
|
261
|
+
raise urllib.error.HTTPError(
|
|
262
|
+
version_check.GITHUB_API_URL, 404, "Not Found", Message(), None
|
|
263
|
+
)
|
|
264
|
+
|
|
265
|
+
monkeypatch.setattr(
|
|
266
|
+
version_check, "fetch_pypi_latest_version", lambda _version: "0.1.0"
|
|
267
|
+
)
|
|
268
|
+
monkeypatch.setattr(
|
|
269
|
+
version_check, "fetch_github_latest_release", _raise_http_404
|
|
270
|
+
)
|
|
271
|
+
|
|
272
|
+
version_check.print_remote_latest_versions("0.1.0")
|
|
273
|
+
captured = capsys.readouterr()
|
|
274
|
+
|
|
275
|
+
expected_output = "GitHub latest: unknown (HTTP 404)"
|
|
276
|
+
assert expected_output in captured.out
|
|
277
|
+
assert "GitHub latest check failed" not in captured.out
|
|
278
|
+
assert "PyPI latest: 0.1.0" in captured.out
|
|
279
|
+
|
|
280
|
+
|
|
237
281
|
def test_main_version_prints_installed_pypi_and_github_lines(
|
|
238
282
|
monkeypatch,
|
|
239
283
|
capsys,
|
|
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
|
{shellscripts-0.24.0 → shellscripts-0.24.1}/src/shell_scripts/commands/pdf_split_by_format.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
|
|
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
|