killpy 0.23.0__tar.gz → 0.24.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.
- {killpy-0.23.0 → killpy-0.24.0}/PKG-INFO +36 -3
- {killpy-0.23.0 → killpy-0.24.0}/README.md +35 -2
- {killpy-0.23.0 → killpy-0.24.0}/killpy/commands/list.py +76 -30
- {killpy-0.23.0 → killpy-0.24.0}/killpy.egg-info/PKG-INFO +36 -3
- {killpy-0.23.0 → killpy-0.24.0}/pyproject.toml +1 -1
- {killpy-0.23.0 → killpy-0.24.0}/killpy/__init__.py +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy/__main__.py +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy/cleaner.py +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy/cleaners/__init__.py +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy/cli.py +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy/commands/__init__.py +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy/commands/_utils.py +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy/commands/clean.py +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy/commands/delete.py +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy/commands/doctor.py +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy/commands/find.py +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy/commands/stats.py +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy/detectors/__init__.py +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy/detectors/artifacts.py +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy/detectors/base.py +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy/detectors/cache.py +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy/detectors/conda.py +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy/detectors/hatch.py +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy/detectors/pipenv.py +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy/detectors/pipx.py +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy/detectors/poetry.py +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy/detectors/pyenv.py +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy/detectors/tox.py +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy/detectors/uv.py +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy/detectors/venv.py +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy/files/__init__.py +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy/intelligence/__init__.py +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy/intelligence/git_analyzer.py +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy/intelligence/scoring.py +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy/intelligence/suggestions.py +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy/intelligence/tracker.py +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy/models.py +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy/scanner.py +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy.egg-info/SOURCES.txt +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy.egg-info/dependency_links.txt +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy.egg-info/entry_points.txt +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy.egg-info/requires.txt +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/killpy.egg-info/top_level.txt +0 -0
- {killpy-0.23.0 → killpy-0.24.0}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: killpy
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.24.0
|
|
4
4
|
Summary: List all .venv directories and Conda environments 🐍 on your system and check how much space they are using. You can then choose which ones to delete in order to free up space 🧹.
|
|
5
5
|
Project-URL: Homepage, https://github.com/Tlaloc-Es/killpy
|
|
6
6
|
Project-URL: Documentation, https://tlaloc-es.github.io/killpy/
|
|
@@ -47,6 +47,31 @@ uvx killpy --path ~
|
|
|
47
47
|
|
|
48
48
|
______________________________________________________________________
|
|
49
49
|
|
|
50
|
+
## Table of Contents
|
|
51
|
+
|
|
52
|
+
- [The Problem](#the-problem)
|
|
53
|
+
- [What killpy detects](#what-killpy-detects)
|
|
54
|
+
- [Quickstart](#quickstart)
|
|
55
|
+
- [Interactive TUI](#interactive-tui)
|
|
56
|
+
- [Keyboard shortcuts](#keyboard-shortcuts)
|
|
57
|
+
- [Search / filter](#search--filter)
|
|
58
|
+
- [Multi-select mode](#multi-select-mode)
|
|
59
|
+
- [CLI reference](#cli-reference)
|
|
60
|
+
- [`killpy` — launch TUI or headless delete](#killpy--launch-tui-or-headless-delete)
|
|
61
|
+
- [`killpy list` — inspect environments](#killpy-list--inspect-environments)
|
|
62
|
+
- [`killpy delete` — remove environments](#killpy-delete--remove-environments)
|
|
63
|
+
- [`killpy stats` — disk usage summary](#killpy-stats--disk-usage-summary)
|
|
64
|
+
- [`killpy clean` — remove cache directories](#killpy-clean--remove-cache-directories)
|
|
65
|
+
- [`killpy doctor` — smart health report](#killpy-doctor--smart-health-report)
|
|
66
|
+
- [killpy vs alternatives](#killpy-vs-alternatives)
|
|
67
|
+
- [FAQ](#faq)
|
|
68
|
+
- [Pre-commit hooks](#pre-commit-hooks)
|
|
69
|
+
- [Safety](#safety)
|
|
70
|
+
- [Roadmap](#roadmap)
|
|
71
|
+
- [Contributing](#contributing)
|
|
72
|
+
|
|
73
|
+
______________________________________________________________________
|
|
74
|
+
|
|
50
75
|
## The Problem
|
|
51
76
|
|
|
52
77
|
If you have been writing Python for more than a year, your disk is probably full of environments you forgot about.
|
|
@@ -227,8 +252,11 @@ killpy list --type venv --type conda # filter by type (repeatable)
|
|
|
227
252
|
killpy list --older-than 90 # not accessed in the last 90 days
|
|
228
253
|
killpy list --json # output as a JSON array
|
|
229
254
|
killpy list --json-stream # stream as NDJSON — one line per env
|
|
255
|
+
killpy list --quiet # suppress progress output (scripts/CI)
|
|
230
256
|
```
|
|
231
257
|
|
|
258
|
+
While scanning, `killpy list` shows a live progress indicator on **stderr** so you can see which detector is running. Stdout receives only the final output (table, JSON, or NDJSON), so pipes and redirections are never polluted. Use `--quiet` / `-q` to silence the progress indicator entirely.
|
|
259
|
+
|
|
232
260
|
`--json` example output:
|
|
233
261
|
|
|
234
262
|
```json
|
|
@@ -430,9 +458,12 @@ Deletes every `.venv` / `pyvenv.cfg` env not accessed in the last 90 days, witho
|
|
|
430
458
|
**How do I use killpy in a CI pipeline or script?**
|
|
431
459
|
|
|
432
460
|
```bash
|
|
433
|
-
# List as machine-readable JSON
|
|
461
|
+
# List as machine-readable JSON (progress goes to stderr, JSON to stdout)
|
|
434
462
|
killpy list --json
|
|
435
463
|
|
|
464
|
+
# Suppress progress output entirely with --quiet / -q
|
|
465
|
+
killpy list --json --quiet | jq '.[] | .size_human'
|
|
466
|
+
|
|
436
467
|
# Stream results as NDJSON in real time
|
|
437
468
|
killpy list --json-stream | jq '.size_bytes'
|
|
438
469
|
|
|
@@ -440,6 +471,8 @@ killpy list --json-stream | jq '.size_bytes'
|
|
|
440
471
|
killpy --path ./build_artifacts --delete-all --yes
|
|
441
472
|
```
|
|
442
473
|
|
|
474
|
+
Progress messages always go to **stderr**, so stdout is clean for piping even without `--quiet`. Use `-q` when you want no output at all on stderr.
|
|
475
|
+
|
|
443
476
|
**How do I skip certain directories?**
|
|
444
477
|
|
|
445
478
|
```bash
|
|
@@ -551,7 +584,7 @@ Typical minimal setup (safe for daily use):
|
|
|
551
584
|
|
|
552
585
|
```yaml
|
|
553
586
|
- repo: https://github.com/Tlaloc-Es/KillPy
|
|
554
|
-
rev: 0.
|
|
587
|
+
rev: 0.24.0
|
|
555
588
|
hooks:
|
|
556
589
|
- id: killpy
|
|
557
590
|
```
|
|
@@ -26,6 +26,31 @@ uvx killpy --path ~
|
|
|
26
26
|
|
|
27
27
|
______________________________________________________________________
|
|
28
28
|
|
|
29
|
+
## Table of Contents
|
|
30
|
+
|
|
31
|
+
- [The Problem](#the-problem)
|
|
32
|
+
- [What killpy detects](#what-killpy-detects)
|
|
33
|
+
- [Quickstart](#quickstart)
|
|
34
|
+
- [Interactive TUI](#interactive-tui)
|
|
35
|
+
- [Keyboard shortcuts](#keyboard-shortcuts)
|
|
36
|
+
- [Search / filter](#search--filter)
|
|
37
|
+
- [Multi-select mode](#multi-select-mode)
|
|
38
|
+
- [CLI reference](#cli-reference)
|
|
39
|
+
- [`killpy` — launch TUI or headless delete](#killpy--launch-tui-or-headless-delete)
|
|
40
|
+
- [`killpy list` — inspect environments](#killpy-list--inspect-environments)
|
|
41
|
+
- [`killpy delete` — remove environments](#killpy-delete--remove-environments)
|
|
42
|
+
- [`killpy stats` — disk usage summary](#killpy-stats--disk-usage-summary)
|
|
43
|
+
- [`killpy clean` — remove cache directories](#killpy-clean--remove-cache-directories)
|
|
44
|
+
- [`killpy doctor` — smart health report](#killpy-doctor--smart-health-report)
|
|
45
|
+
- [killpy vs alternatives](#killpy-vs-alternatives)
|
|
46
|
+
- [FAQ](#faq)
|
|
47
|
+
- [Pre-commit hooks](#pre-commit-hooks)
|
|
48
|
+
- [Safety](#safety)
|
|
49
|
+
- [Roadmap](#roadmap)
|
|
50
|
+
- [Contributing](#contributing)
|
|
51
|
+
|
|
52
|
+
______________________________________________________________________
|
|
53
|
+
|
|
29
54
|
## The Problem
|
|
30
55
|
|
|
31
56
|
If you have been writing Python for more than a year, your disk is probably full of environments you forgot about.
|
|
@@ -206,8 +231,11 @@ killpy list --type venv --type conda # filter by type (repeatable)
|
|
|
206
231
|
killpy list --older-than 90 # not accessed in the last 90 days
|
|
207
232
|
killpy list --json # output as a JSON array
|
|
208
233
|
killpy list --json-stream # stream as NDJSON — one line per env
|
|
234
|
+
killpy list --quiet # suppress progress output (scripts/CI)
|
|
209
235
|
```
|
|
210
236
|
|
|
237
|
+
While scanning, `killpy list` shows a live progress indicator on **stderr** so you can see which detector is running. Stdout receives only the final output (table, JSON, or NDJSON), so pipes and redirections are never polluted. Use `--quiet` / `-q` to silence the progress indicator entirely.
|
|
238
|
+
|
|
211
239
|
`--json` example output:
|
|
212
240
|
|
|
213
241
|
```json
|
|
@@ -409,9 +437,12 @@ Deletes every `.venv` / `pyvenv.cfg` env not accessed in the last 90 days, witho
|
|
|
409
437
|
**How do I use killpy in a CI pipeline or script?**
|
|
410
438
|
|
|
411
439
|
```bash
|
|
412
|
-
# List as machine-readable JSON
|
|
440
|
+
# List as machine-readable JSON (progress goes to stderr, JSON to stdout)
|
|
413
441
|
killpy list --json
|
|
414
442
|
|
|
443
|
+
# Suppress progress output entirely with --quiet / -q
|
|
444
|
+
killpy list --json --quiet | jq '.[] | .size_human'
|
|
445
|
+
|
|
415
446
|
# Stream results as NDJSON in real time
|
|
416
447
|
killpy list --json-stream | jq '.size_bytes'
|
|
417
448
|
|
|
@@ -419,6 +450,8 @@ killpy list --json-stream | jq '.size_bytes'
|
|
|
419
450
|
killpy --path ./build_artifacts --delete-all --yes
|
|
420
451
|
```
|
|
421
452
|
|
|
453
|
+
Progress messages always go to **stderr**, so stdout is clean for piping even without `--quiet`. Use `-q` when you want no output at all on stderr.
|
|
454
|
+
|
|
422
455
|
**How do I skip certain directories?**
|
|
423
456
|
|
|
424
457
|
```bash
|
|
@@ -530,7 +563,7 @@ Typical minimal setup (safe for daily use):
|
|
|
530
563
|
|
|
531
564
|
```yaml
|
|
532
565
|
- repo: https://github.com/Tlaloc-Es/KillPy
|
|
533
|
-
rev: 0.
|
|
566
|
+
rev: 0.24.0
|
|
534
567
|
hooks:
|
|
535
568
|
- id: killpy
|
|
536
569
|
```
|
|
@@ -14,6 +14,70 @@ from killpy.files import format_size
|
|
|
14
14
|
from killpy.scanner import Scanner
|
|
15
15
|
|
|
16
16
|
|
|
17
|
+
def _run_json_stream(
|
|
18
|
+
scanner: Scanner,
|
|
19
|
+
path: Path,
|
|
20
|
+
types: tuple[str, ...],
|
|
21
|
+
older_than: int | None,
|
|
22
|
+
quiet: bool,
|
|
23
|
+
stderr_console: Console,
|
|
24
|
+
) -> None:
|
|
25
|
+
if not quiet:
|
|
26
|
+
stderr_console.print("[dim]Scanning…[/dim]")
|
|
27
|
+
|
|
28
|
+
def _progress(detector, envs):
|
|
29
|
+
if not quiet:
|
|
30
|
+
stderr_console.print(
|
|
31
|
+
f"[dim] {detector.name}[/dim] — [dim]{len(envs)} found[/dim]",
|
|
32
|
+
)
|
|
33
|
+
for env in filter_envs(envs, types or None, older_than):
|
|
34
|
+
click.echo(json.dumps(env.to_dict()))
|
|
35
|
+
|
|
36
|
+
scanner.scan(path, on_progress=_progress)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def _scan_with_progress(
|
|
40
|
+
scanner: Scanner, path: Path, quiet: bool, stderr_console: Console
|
|
41
|
+
):
|
|
42
|
+
if quiet:
|
|
43
|
+
return scanner.scan(path)
|
|
44
|
+
|
|
45
|
+
status = stderr_console.status("Scanning…", spinner="dots")
|
|
46
|
+
status.start()
|
|
47
|
+
|
|
48
|
+
def _progress(detector, _envs):
|
|
49
|
+
status.update(f"Scanning… [dim]{detector.name}[/dim]")
|
|
50
|
+
|
|
51
|
+
envs = scanner.scan(path, on_progress=_progress)
|
|
52
|
+
status.stop()
|
|
53
|
+
return envs
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def _print_table(envs: list, console: Console) -> None:
|
|
57
|
+
table = Table(show_header=True, header_style="bold cyan")
|
|
58
|
+
table.add_column("Type", style="dim", min_width=10)
|
|
59
|
+
table.add_column("Name", min_width=20)
|
|
60
|
+
table.add_column("Last accessed", min_width=12)
|
|
61
|
+
table.add_column("Size", justify="right", min_width=9)
|
|
62
|
+
table.add_column("Path")
|
|
63
|
+
|
|
64
|
+
for env in envs:
|
|
65
|
+
table.add_row(
|
|
66
|
+
env.type,
|
|
67
|
+
env.name,
|
|
68
|
+
env.last_accessed_str,
|
|
69
|
+
env.size_human,
|
|
70
|
+
str(env.path),
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
console.print(table)
|
|
74
|
+
total = sum(e.size_bytes for e in envs)
|
|
75
|
+
console.print(
|
|
76
|
+
f"\n[bold]{len(envs)}[/bold] environment(s) — "
|
|
77
|
+
f"[bold]{format_size(total)}[/bold] total"
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
|
|
17
81
|
@click.command("list")
|
|
18
82
|
@click.option(
|
|
19
83
|
"--path",
|
|
@@ -52,26 +116,30 @@ from killpy.scanner import Scanner
|
|
|
52
116
|
default=False,
|
|
53
117
|
help="Output as JSON array.",
|
|
54
118
|
)
|
|
119
|
+
@click.option(
|
|
120
|
+
"--quiet",
|
|
121
|
+
"-q",
|
|
122
|
+
is_flag=True,
|
|
123
|
+
default=False,
|
|
124
|
+
help="Suppress progress messages (useful in scripts/pipelines).",
|
|
125
|
+
)
|
|
55
126
|
def list_cmd(
|
|
56
127
|
path: Path,
|
|
57
128
|
types: tuple[str, ...],
|
|
58
129
|
older_than: int | None,
|
|
59
130
|
as_json: bool,
|
|
60
131
|
as_json_stream: bool,
|
|
132
|
+
quiet: bool,
|
|
61
133
|
) -> None:
|
|
62
134
|
"""List all detected Python environments under PATH."""
|
|
63
135
|
scanner = Scanner(types=set(types) if types else None)
|
|
136
|
+
stderr_console = Console(stderr=True)
|
|
64
137
|
|
|
65
138
|
if as_json_stream:
|
|
66
|
-
|
|
67
|
-
def _stream_progress(_detector, envs):
|
|
68
|
-
for env in filter_envs(envs, types or None, older_than):
|
|
69
|
-
click.echo(json.dumps(env.to_dict()))
|
|
70
|
-
|
|
71
|
-
scanner.scan(path, on_progress=_stream_progress)
|
|
139
|
+
_run_json_stream(scanner, path, types, older_than, quiet, stderr_console)
|
|
72
140
|
return
|
|
73
141
|
|
|
74
|
-
envs = scanner
|
|
142
|
+
envs = _scan_with_progress(scanner, path, quiet, stderr_console)
|
|
75
143
|
envs = filter_envs(envs, types or None, older_than)
|
|
76
144
|
|
|
77
145
|
if as_json:
|
|
@@ -82,26 +150,4 @@ def list_cmd(
|
|
|
82
150
|
click.echo("No environments found.")
|
|
83
151
|
return
|
|
84
152
|
|
|
85
|
-
|
|
86
|
-
table = Table(show_header=True, header_style="bold cyan")
|
|
87
|
-
table.add_column("Type", style="dim", min_width=10)
|
|
88
|
-
table.add_column("Name", min_width=20)
|
|
89
|
-
table.add_column("Last accessed", min_width=12)
|
|
90
|
-
table.add_column("Size", justify="right", min_width=9)
|
|
91
|
-
table.add_column("Path")
|
|
92
|
-
|
|
93
|
-
for env in envs:
|
|
94
|
-
table.add_row(
|
|
95
|
-
env.type,
|
|
96
|
-
env.name,
|
|
97
|
-
env.last_accessed_str,
|
|
98
|
-
env.size_human,
|
|
99
|
-
str(env.path),
|
|
100
|
-
)
|
|
101
|
-
|
|
102
|
-
console.print(table)
|
|
103
|
-
total = sum(e.size_bytes for e in envs)
|
|
104
|
-
console.print(
|
|
105
|
-
f"\n[bold]{len(envs)}[/bold] environment(s) — "
|
|
106
|
-
f"[bold]{format_size(total)}[/bold] total"
|
|
107
|
-
)
|
|
153
|
+
_print_table(envs, Console())
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: killpy
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.24.0
|
|
4
4
|
Summary: List all .venv directories and Conda environments 🐍 on your system and check how much space they are using. You can then choose which ones to delete in order to free up space 🧹.
|
|
5
5
|
Project-URL: Homepage, https://github.com/Tlaloc-Es/killpy
|
|
6
6
|
Project-URL: Documentation, https://tlaloc-es.github.io/killpy/
|
|
@@ -47,6 +47,31 @@ uvx killpy --path ~
|
|
|
47
47
|
|
|
48
48
|
______________________________________________________________________
|
|
49
49
|
|
|
50
|
+
## Table of Contents
|
|
51
|
+
|
|
52
|
+
- [The Problem](#the-problem)
|
|
53
|
+
- [What killpy detects](#what-killpy-detects)
|
|
54
|
+
- [Quickstart](#quickstart)
|
|
55
|
+
- [Interactive TUI](#interactive-tui)
|
|
56
|
+
- [Keyboard shortcuts](#keyboard-shortcuts)
|
|
57
|
+
- [Search / filter](#search--filter)
|
|
58
|
+
- [Multi-select mode](#multi-select-mode)
|
|
59
|
+
- [CLI reference](#cli-reference)
|
|
60
|
+
- [`killpy` — launch TUI or headless delete](#killpy--launch-tui-or-headless-delete)
|
|
61
|
+
- [`killpy list` — inspect environments](#killpy-list--inspect-environments)
|
|
62
|
+
- [`killpy delete` — remove environments](#killpy-delete--remove-environments)
|
|
63
|
+
- [`killpy stats` — disk usage summary](#killpy-stats--disk-usage-summary)
|
|
64
|
+
- [`killpy clean` — remove cache directories](#killpy-clean--remove-cache-directories)
|
|
65
|
+
- [`killpy doctor` — smart health report](#killpy-doctor--smart-health-report)
|
|
66
|
+
- [killpy vs alternatives](#killpy-vs-alternatives)
|
|
67
|
+
- [FAQ](#faq)
|
|
68
|
+
- [Pre-commit hooks](#pre-commit-hooks)
|
|
69
|
+
- [Safety](#safety)
|
|
70
|
+
- [Roadmap](#roadmap)
|
|
71
|
+
- [Contributing](#contributing)
|
|
72
|
+
|
|
73
|
+
______________________________________________________________________
|
|
74
|
+
|
|
50
75
|
## The Problem
|
|
51
76
|
|
|
52
77
|
If you have been writing Python for more than a year, your disk is probably full of environments you forgot about.
|
|
@@ -227,8 +252,11 @@ killpy list --type venv --type conda # filter by type (repeatable)
|
|
|
227
252
|
killpy list --older-than 90 # not accessed in the last 90 days
|
|
228
253
|
killpy list --json # output as a JSON array
|
|
229
254
|
killpy list --json-stream # stream as NDJSON — one line per env
|
|
255
|
+
killpy list --quiet # suppress progress output (scripts/CI)
|
|
230
256
|
```
|
|
231
257
|
|
|
258
|
+
While scanning, `killpy list` shows a live progress indicator on **stderr** so you can see which detector is running. Stdout receives only the final output (table, JSON, or NDJSON), so pipes and redirections are never polluted. Use `--quiet` / `-q` to silence the progress indicator entirely.
|
|
259
|
+
|
|
232
260
|
`--json` example output:
|
|
233
261
|
|
|
234
262
|
```json
|
|
@@ -430,9 +458,12 @@ Deletes every `.venv` / `pyvenv.cfg` env not accessed in the last 90 days, witho
|
|
|
430
458
|
**How do I use killpy in a CI pipeline or script?**
|
|
431
459
|
|
|
432
460
|
```bash
|
|
433
|
-
# List as machine-readable JSON
|
|
461
|
+
# List as machine-readable JSON (progress goes to stderr, JSON to stdout)
|
|
434
462
|
killpy list --json
|
|
435
463
|
|
|
464
|
+
# Suppress progress output entirely with --quiet / -q
|
|
465
|
+
killpy list --json --quiet | jq '.[] | .size_human'
|
|
466
|
+
|
|
436
467
|
# Stream results as NDJSON in real time
|
|
437
468
|
killpy list --json-stream | jq '.size_bytes'
|
|
438
469
|
|
|
@@ -440,6 +471,8 @@ killpy list --json-stream | jq '.size_bytes'
|
|
|
440
471
|
killpy --path ./build_artifacts --delete-all --yes
|
|
441
472
|
```
|
|
442
473
|
|
|
474
|
+
Progress messages always go to **stderr**, so stdout is clean for piping even without `--quiet`. Use `-q` when you want no output at all on stderr.
|
|
475
|
+
|
|
443
476
|
**How do I skip certain directories?**
|
|
444
477
|
|
|
445
478
|
```bash
|
|
@@ -551,7 +584,7 @@ Typical minimal setup (safe for daily use):
|
|
|
551
584
|
|
|
552
585
|
```yaml
|
|
553
586
|
- repo: https://github.com/Tlaloc-Es/KillPy
|
|
554
|
-
rev: 0.
|
|
587
|
+
rev: 0.24.0
|
|
555
588
|
hooks:
|
|
556
589
|
- id: killpy
|
|
557
590
|
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "killpy"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.24.0"
|
|
4
4
|
description = "List all .venv directories and Conda environments 🐍 on your system and check how much space they are using. You can then choose which ones to delete in order to free up space 🧹."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
classifiers = [
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|