cli-tools-kit 0.8.2__tar.gz → 0.8.4__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.
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/PKG-INFO +5 -1
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/cli_tools_kit/__init__.py +1 -1
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/cli_tools_kit/gui_installer.py +4 -3
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/cli_tools_kit/onboarding.py +1 -1
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/cli_tools_kit.egg-info/PKG-INFO +5 -1
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/cli_tools_kit.egg-info/requires.txt +4 -0
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/pyproject.toml +29 -1
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/tests/test_capability_groups.py +0 -2
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/tests/test_llm_groups.py +0 -2
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/tests/test_sources.py +1 -1
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/tests/test_taxonomy_cluster.py +0 -2
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/tests/test_tui_installer.py +4 -3
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/LICENSE +0 -0
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/README.md +0 -0
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/cli_tools_kit/__main__.py +0 -0
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/cli_tools_kit/advertise.py +0 -0
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/cli_tools_kit/autostart_gate.py +0 -0
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/cli_tools_kit/cron_installer.py +0 -0
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/cli_tools_kit/host.py +0 -0
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/cli_tools_kit/identity.py +0 -0
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/cli_tools_kit/skills.py +0 -0
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/cli_tools_kit/sources.py +0 -0
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/cli_tools_kit/taxonomy/__init__.py +0 -0
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/cli_tools_kit/taxonomy/build.py +0 -0
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/cli_tools_kit/taxonomy/capability.py +0 -0
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/cli_tools_kit/taxonomy/cluster.py +0 -0
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/cli_tools_kit/taxonomy/corpus.py +0 -0
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/cli_tools_kit/taxonomy/embedder.py +0 -0
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/cli_tools_kit/taxonomy/groups.py +0 -0
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/cli_tools_kit/taxonomy/llm_groups.py +0 -0
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/cli_tools_kit/tool_installer.py +0 -0
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/cli_tools_kit/tui_installer.py +0 -0
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/cli_tools_kit.egg-info/SOURCES.txt +0 -0
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/cli_tools_kit.egg-info/dependency_links.txt +0 -0
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/cli_tools_kit.egg-info/entry_points.txt +0 -0
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/cli_tools_kit.egg-info/top_level.txt +0 -0
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/setup.cfg +0 -0
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/tests/test_autostart_gate.py +0 -0
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/tests/test_cron_installer.py +0 -0
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/tests/test_host.py +0 -0
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/tests/test_identity.py +0 -0
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/tests/test_skills.py +0 -0
- {cli_tools_kit-0.8.2 → cli_tools_kit-0.8.4}/tests/test_tool_installer.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cli-tools-kit
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.4
|
|
4
4
|
Summary: Installer protocol + helpers for self-installing Python CLI/GUI tools (desktop shortcuts, bash aliases, cron entries), plus reusable tkinter and curses installer screens
|
|
5
5
|
Author: Steffen Probst
|
|
6
6
|
License: MIT License
|
|
@@ -47,6 +47,10 @@ Requires-Dist: termcolor>=2.0
|
|
|
47
47
|
Requires-Dist: tomli>=2.0; python_version < "3.11"
|
|
48
48
|
Provides-Extra: dev
|
|
49
49
|
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
50
|
+
Requires-Dist: pytest-cov>=5.0; extra == "dev"
|
|
51
|
+
Requires-Dist: ruff>=0.6; extra == "dev"
|
|
52
|
+
Requires-Dist: build>=1.0; extra == "dev"
|
|
53
|
+
Requires-Dist: twine>=5.0; extra == "dev"
|
|
50
54
|
Provides-Extra: gui
|
|
51
55
|
Requires-Dist: Pillow>=9.0; extra == "gui"
|
|
52
56
|
Dynamic: license-file
|
|
@@ -3382,7 +3382,6 @@ class InstallerApp:
|
|
|
3382
3382
|
return
|
|
3383
3383
|
|
|
3384
3384
|
model_idx = idx // samples_per_model
|
|
3385
|
-
sample_num = idx % samples_per_model
|
|
3386
3385
|
model_name = selected_models[model_idx]
|
|
3387
3386
|
model_path = os.path.join(models_dir, model_name)
|
|
3388
3387
|
|
|
@@ -3783,8 +3782,10 @@ class InstallerApp:
|
|
|
3783
3782
|
dialog.after(0, mark_failed)
|
|
3784
3783
|
|
|
3785
3784
|
except Exception as e:
|
|
3785
|
+
error_msg = str(e)[:20]
|
|
3786
|
+
|
|
3786
3787
|
def mark_error():
|
|
3787
|
-
update_grid_cell(idx, None, f"Error: {
|
|
3788
|
+
update_grid_cell(idx, None, f"Error: {error_msg}")
|
|
3788
3789
|
current_index[0] += 1
|
|
3789
3790
|
dialog.after(100, generate_next_varied)
|
|
3790
3791
|
dialog.after(0, mark_error)
|
|
@@ -4663,7 +4664,7 @@ class InstallerApp:
|
|
|
4663
4664
|
autostart_var.trace_add("write", self._on_checkbox_changed)
|
|
4664
4665
|
# A tool with conditions gets the checkbox and a ⚙ side by side;
|
|
4665
4666
|
# without them the checkbox stays centred as before.
|
|
4666
|
-
if
|
|
4667
|
+
if parent.autostart_conditions:
|
|
4667
4668
|
holder = ttk.Frame(autostart_frame, style="Card.TFrame")
|
|
4668
4669
|
holder.pack(expand=True)
|
|
4669
4670
|
autostart_cb = ttk.Checkbutton(holder, variable=autostart_var, style="Card.TCheckbutton")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cli-tools-kit
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.4
|
|
4
4
|
Summary: Installer protocol + helpers for self-installing Python CLI/GUI tools (desktop shortcuts, bash aliases, cron entries), plus reusable tkinter and curses installer screens
|
|
5
5
|
Author: Steffen Probst
|
|
6
6
|
License: MIT License
|
|
@@ -47,6 +47,10 @@ Requires-Dist: termcolor>=2.0
|
|
|
47
47
|
Requires-Dist: tomli>=2.0; python_version < "3.11"
|
|
48
48
|
Provides-Extra: dev
|
|
49
49
|
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
50
|
+
Requires-Dist: pytest-cov>=5.0; extra == "dev"
|
|
51
|
+
Requires-Dist: ruff>=0.6; extra == "dev"
|
|
52
|
+
Requires-Dist: build>=1.0; extra == "dev"
|
|
53
|
+
Requires-Dist: twine>=5.0; extra == "dev"
|
|
50
54
|
Provides-Extra: gui
|
|
51
55
|
Requires-Dist: Pillow>=9.0; extra == "gui"
|
|
52
56
|
Dynamic: license-file
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "cli-tools-kit"
|
|
7
|
-
version = "0.8.
|
|
7
|
+
version = "0.8.4"
|
|
8
8
|
description = "Installer protocol + helpers for self-installing Python CLI/GUI tools (desktop shortcuts, bash aliases, cron entries), plus reusable tkinter and curses installer screens"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -36,6 +36,10 @@ dependencies = [
|
|
|
36
36
|
[project.optional-dependencies]
|
|
37
37
|
dev = [
|
|
38
38
|
"pytest>=7.0",
|
|
39
|
+
"pytest-cov>=5.0",
|
|
40
|
+
"ruff>=0.6",
|
|
41
|
+
"build>=1.0",
|
|
42
|
+
"twine>=5.0",
|
|
39
43
|
]
|
|
40
44
|
# The reusable tkinter GUI installer engine (cli_tools_kit.gui_installer) needs
|
|
41
45
|
# Pillow for tool-icon rendering. tkinter itself ships with CPython. The engine
|
|
@@ -60,3 +64,27 @@ Issues = "https://github.com/Probst1nator/cli-tools-kit/issues"
|
|
|
60
64
|
[tool.setuptools.packages.find]
|
|
61
65
|
include = ["cli_tools_kit*"]
|
|
62
66
|
exclude = ["tests*", "examples*"]
|
|
67
|
+
|
|
68
|
+
[tool.ruff]
|
|
69
|
+
target-version = "py310"
|
|
70
|
+
extend-exclude = ["build", "dist"]
|
|
71
|
+
|
|
72
|
+
[tool.ruff.lint]
|
|
73
|
+
# F catches undefined names (the 0.8.0-0.8.2 startup crash was one), E9
|
|
74
|
+
# syntax errors, B likely bugs, PLE pylint errors. B905 (zip strict) and
|
|
75
|
+
# B007 (unused loop variable) are style, not bugs, and strict= would change
|
|
76
|
+
# behaviour.
|
|
77
|
+
select = ["F", "E9", "B", "PLE"]
|
|
78
|
+
ignore = ["B905", "B007"]
|
|
79
|
+
|
|
80
|
+
[tool.pytest.ini_options]
|
|
81
|
+
testpaths = ["tests"]
|
|
82
|
+
|
|
83
|
+
[tool.coverage.run]
|
|
84
|
+
source = ["cli_tools_kit"]
|
|
85
|
+
branch = true
|
|
86
|
+
|
|
87
|
+
[tool.coverage.report]
|
|
88
|
+
fail_under = 34
|
|
89
|
+
show_missing = false
|
|
90
|
+
skip_covered = true
|
|
@@ -347,7 +347,7 @@ def test_local_root_is_the_default_when_no_flag(tmp_path: Path, engine,
|
|
|
347
347
|
def test_the_hook_resolves_and_refills_the_roots(tmp_path: Path, engine,
|
|
348
348
|
monkeypatch) -> None:
|
|
349
349
|
config = _tree(tmp_path)
|
|
350
|
-
_write(config,
|
|
350
|
+
_write(config, """
|
|
351
351
|
[[source]]
|
|
352
352
|
name = "org/tools"
|
|
353
353
|
path = "."
|
|
@@ -5,7 +5,7 @@ The curses drawing itself is not tested; everything below it is plain data.
|
|
|
5
5
|
|
|
6
6
|
from __future__ import annotations
|
|
7
7
|
|
|
8
|
-
from typing import List
|
|
8
|
+
from typing import List, Optional
|
|
9
9
|
|
|
10
10
|
import pytest
|
|
11
11
|
|
|
@@ -22,7 +22,8 @@ def _tool(name: str, skill: str = "", script: str = "") -> ToolEntry:
|
|
|
22
22
|
)
|
|
23
23
|
|
|
24
24
|
|
|
25
|
-
def _fake_host(monkeypatch: pytest.MonkeyPatch, installed: List[str], stale: List[str] =
|
|
25
|
+
def _fake_host(monkeypatch: pytest.MonkeyPatch, installed: List[str], stale: Optional[List[str]] = None):
|
|
26
|
+
stale = stale or []
|
|
26
27
|
monkeypatch.setattr(gi, "is_installed", lambda t: t.name in installed)
|
|
27
28
|
monkeypatch.setattr(gi, "needs_update", lambda t: t.name in stale)
|
|
28
29
|
|
|
@@ -31,7 +32,7 @@ def _target(key: str, have: List[str]) -> tui.SkillTarget:
|
|
|
31
32
|
return tui.SkillTarget(
|
|
32
33
|
key=key, label=key,
|
|
33
34
|
installed=lambda t: t.skill_name in have,
|
|
34
|
-
install=lambda t: (True,
|
|
35
|
+
install=lambda t: (True, "Run: source ~/.bashrc"),
|
|
35
36
|
uninstall=lambda t: (True, ""),
|
|
36
37
|
)
|
|
37
38
|
|
|
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
|