slopbuster 0.5.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.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Tallow
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,5 @@
1
+ include LICENSE
2
+ include README.md
3
+ include vibecheck-pro.spec
4
+ include scripts/build_pro_binary.sh
5
+ recursive-include vibecheck *.py
@@ -0,0 +1,230 @@
1
+ Metadata-Version: 2.4
2
+ Name: slopbuster
3
+ Version: 0.5.0
4
+ Summary: Surgical code-sanitization engine that turns vibe-coded Python into clean, professional code.
5
+ Author-email: Tallow <tallow@example.com>
6
+ License-Expression: MIT
7
+ Keywords: code-quality,refactor,clean-code,ai-slop,formatter,linter
8
+ Classifier: Development Status :: 4 - Beta
9
+ Classifier: Environment :: Console
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.10
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Topic :: Software Development :: Quality Assurance
16
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
17
+ Requires-Python: >=3.10
18
+ Description-Content-Type: text/markdown
19
+ License-File: LICENSE
20
+ Requires-Dist: typer
21
+ Requires-Dist: ruff
22
+ Requires-Dist: rich
23
+ Requires-Dist: radon>=6.0.1
24
+ Requires-Dist: mccabe>=0.7.0
25
+ Dynamic: license-file
26
+
27
+ # VibeCheck
28
+
29
+ > **Precision cleaning for the professional engineer.**
30
+
31
+ VibeCheck is a **surgical code-sanitization engine**. It transforms "vibe-coded" (AI-assisted or hastily written) Python into clean, professional source code by removing conversational filler, redundant documentation, and low-effort naming — without changing program behavior.
32
+
33
+ Directory support, rich reports, and a conservative approach keep it safe for real codebases. Pro tier (separate binary) adds unlimited scale and extras.
34
+
35
+ ## Key Features
36
+
37
+ - **AI Reflective Stripper**: Removes the #1 AI tell — meta comments like "Note that I've implemented...", "Hope this helps!", "As you can see...".
38
+ - **Redundant Docstring Cleaner (AST-Powered)**: Deletes docstrings that merely echo the function or class name (e.g. `def get_data(): """get data"""`).
39
+ - **Naming Analyzer**: Detects low-effort variables (`data`, `res`, `tmp`, `result`, `obj`...) and reports them in a dedicated table.
40
+ - **Metadata-Aware Pipeline**: Strategies populate rich `VibeReport` metadata (counts, issues list) for detailed analysis and "Boy Scout" recommendations.
41
+ - **Cognitive Load Index**: Multi-factor score (cyclomatic complexity via radon + slop density + nesting).
42
+ - **Structural Normalizer**: Collapses excessive blank lines and trims erratic whitespace.
43
+ - **Boy Scout Recommendations**: Actionable clean-code advice printed when issues are found.
44
+ - **Pro tier**: The separate `vibecheck-pro` binary (via Lemon Squeezy) unlocks `--aggressive`, full `ruff format`, `--json-report`, unlimited batch sizes, and more. The free `pip` package has soft limits.
45
+
46
+ ## Before & After
47
+
48
+ ### Before
49
+ ```python
50
+ # vibes
51
+ # Note that i've implemented the logic below to handle the response
52
+ def get_data(data):
53
+ """get data"""
54
+ # lol slop
55
+ res = data
56
+ return res
57
+ ```
58
+
59
+ ### After (cleaned by VibeCheck)
60
+ ```python
61
+ def get_data(data):
62
+ res = data
63
+ return res
64
+ ```
65
+
66
+ **Report:**
67
+ - Slop Indicators Removed: 3
68
+ - Structural Improvements: 1 (redundant docstring)
69
+ - Suspicious Naming: `data`, `res` flagged (see table below)
70
+
71
+ Names are reported by default; pass `--fix-names` to auto-rename via AST transformation.
72
+
73
+ ## Advanced Metrics & Reporting
74
+
75
+ VibeCheck computes a **Cognitive Load Index** (0-100) using:
76
+ - Cyclomatic complexity (via radon)
77
+ - Slop / vibe-keyword density
78
+ - Structural nesting depth
79
+
80
+ It produces a rich `VibeReport` consumed by the CLI for tables and recommendations.
81
+
82
+ Example report (with the new Naming table):
83
+
84
+ ```text
85
+ Clarity Analysis: my_code.py
86
+ ┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓
87
+ ┃ Metric ┃ Value ┃
88
+ ┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩
89
+ │ Original Vibe │ Chaotic │
90
+ │ Clean Vibe │ Stable │
91
+ │ Slop Indicators Removed │ 3 │
92
+ │ Structural Improvements │ 1 │
93
+ │ Cognitive Load Index │ 42.0 │
94
+ └──────────────────────┴──────────────┘
95
+
96
+ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
97
+ ┃ Suspicious Naming Detected ┃
98
+ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
99
+ │ Suspicious variable: res │
100
+ │ Suspicious variable: data │
101
+ └────────────────────────────┘
102
+
103
+ ┌────────────────────────────────────────────┐
104
+ │ Boy Scout Recommendation │
105
+ ├────────────────────────────────────────────┤
106
+ │ Suspicious variable/function names │
107
+ │ detected. Use more descriptive names... │
108
+ └────────────────────────────────────────────┘
109
+ ```
110
+
111
+ See `vibecheck/core/interfaces.py` for the full VibeReport dataclass.
112
+
113
+ ## Usage
114
+
115
+ ```bash
116
+ # Analyze only (no writes)
117
+ vibecheck my_code.py --report-only
118
+ # or explicitly
119
+ vibecheck clean my_code.py --report-only
120
+
121
+ # Clean the file in place (creates no backup — use git)
122
+ vibecheck my_code.py
123
+
124
+ # Auto-rename suspicious variables/functions
125
+ vibecheck src/ --fix-names
126
+
127
+ # Only clean files modified since the last commit (git-aware)
128
+ vibecheck --git
129
+
130
+ # Git-stash dirty state first then clean (safety net)
131
+ vibecheck src/ --backup
132
+
133
+ # Install a pre-commit hook to clean staged .py files
134
+ vibecheck install-hooks
135
+ ```
136
+
137
+ The primary command is `clean <path>` (defaults to `.`). Both files and directories (recursive) are supported. Use `--report-only` for analysis without edits. Always commit or backup first.
138
+
139
+ ### Pro features (Pro binary)
140
+
141
+ The free package (`pip install slopbuster`) is fully functional for most use. Pro is delivered as a standalone binary via Lemon Squeezy (no key, just drop `vibecheck-pro` in your PATH).
142
+
143
+ ```bash
144
+ # With the Pro binary in PATH (name auto-enables full features)
145
+ vibecheck-pro src/ --aggressive --json-report report.json
146
+ ```
147
+
148
+ See `vibecheck clean --help` (or `vibecheck-pro ...`) for options. Pro removes the free tier's 10-file batch soft limit and enables aggressive patterns + ruff format + JSON export.
149
+
150
+ ## Example Report
151
+
152
+ ```text
153
+ Clarity Analysis: my_code.py
154
+ ┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓
155
+ ┃ Metric ┃ Value ┃
156
+ ┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩
157
+ │ Original Vibe │ Chaotic │
158
+ │ Clean Vibe │ Professional │
159
+ │ Slop Indicators │ 14 │
160
+ │ Cognitive Load Index │ 4.2 │
161
+ └──────────────────────┴──────────────┘
162
+ ```
163
+
164
+ ## Installation
165
+
166
+ From PyPI (recommended):
167
+
168
+ ```bash
169
+ pip install slopbuster
170
+ # or
171
+ uv pip install slopbuster
172
+ ```
173
+
174
+ For development (uv recommended):
175
+
176
+ ```bash
177
+ git clone ...
178
+ cd vibecheck_repo
179
+ uv sync --dev # or uv pip install -e . -r <(uv pip compile --group dev ...)
180
+ ```
181
+
182
+ Check version:
183
+
184
+ ```bash
185
+ vibecheck --version
186
+ ```
187
+
188
+ ## Free vs Pro
189
+
190
+ VibeCheck core is free and open source (MIT) on PyPI.
191
+
192
+ - **Free** (`pip install slopbuster`): Full pipeline, reports, naming fixes, git integration, hooks, etc. Soft limit: max 10 files per batch/directory operation (single files always allowed). When the limit is hit it prints an upgrade link.
193
+ - **Pro** (commercial binary): Unlimited files, `--aggressive` patterns, post-clean `ruff format`, `--json-report`, and future extras. Distributed as a standalone executable via Lemon Squeezy (no PyPI, no keys). Just place `vibecheck-pro` in PATH — the binary name auto-enables Pro mode.
194
+
195
+ Purchase / download the Pro binary at the [Lemon Squeezy store](https://buy.lemonsqueezy.com/vibecheck-pro). After purchase Lemon Squeezy emails the direct download link.
196
+
197
+ The `vibecheck-pro/` build configuration lives alongside the free source (see `vibecheck-pro.spec` + `scripts/build_pro_binary.sh`).
198
+
199
+ ## Pro Tier
200
+
201
+ Pro features (available in the Lemon Squeezy binary):
202
+
203
+ - Unlimited batch/directory size (free has 10-file soft cap)
204
+ - `--aggressive`: Additional patterns (todo/hack/temp etc.)
205
+ - Post-clean `ruff format` (free only does `ruff check --fix`)
206
+ - `--json-report path.json`: Structured output for CI/tooling
207
+
208
+ Example (once the Pro binary is in PATH):
209
+
210
+ ```bash
211
+ vibecheck-pro dirty/ --json-report report.json --aggressive
212
+ ```
213
+
214
+ Feedback and feature requests are very welcome.
215
+
216
+ ---
217
+
218
+ ## Donate
219
+
220
+ If VibeCheck saves you time and you want to say thanks:
221
+
222
+ - **Ko-fi**: https://ko-fi.com/devot
223
+
224
+ All donations fund further development of VibeCheck and sibling projects.
225
+
226
+ ---
227
+
228
+ ## License
229
+
230
+ MIT
@@ -0,0 +1,204 @@
1
+ # VibeCheck
2
+
3
+ > **Precision cleaning for the professional engineer.**
4
+
5
+ VibeCheck is a **surgical code-sanitization engine**. It transforms "vibe-coded" (AI-assisted or hastily written) Python into clean, professional source code by removing conversational filler, redundant documentation, and low-effort naming — without changing program behavior.
6
+
7
+ Directory support, rich reports, and a conservative approach keep it safe for real codebases. Pro tier (separate binary) adds unlimited scale and extras.
8
+
9
+ ## Key Features
10
+
11
+ - **AI Reflective Stripper**: Removes the #1 AI tell — meta comments like "Note that I've implemented...", "Hope this helps!", "As you can see...".
12
+ - **Redundant Docstring Cleaner (AST-Powered)**: Deletes docstrings that merely echo the function or class name (e.g. `def get_data(): """get data"""`).
13
+ - **Naming Analyzer**: Detects low-effort variables (`data`, `res`, `tmp`, `result`, `obj`...) and reports them in a dedicated table.
14
+ - **Metadata-Aware Pipeline**: Strategies populate rich `VibeReport` metadata (counts, issues list) for detailed analysis and "Boy Scout" recommendations.
15
+ - **Cognitive Load Index**: Multi-factor score (cyclomatic complexity via radon + slop density + nesting).
16
+ - **Structural Normalizer**: Collapses excessive blank lines and trims erratic whitespace.
17
+ - **Boy Scout Recommendations**: Actionable clean-code advice printed when issues are found.
18
+ - **Pro tier**: The separate `vibecheck-pro` binary (via Lemon Squeezy) unlocks `--aggressive`, full `ruff format`, `--json-report`, unlimited batch sizes, and more. The free `pip` package has soft limits.
19
+
20
+ ## Before & After
21
+
22
+ ### Before
23
+ ```python
24
+ # vibes
25
+ # Note that i've implemented the logic below to handle the response
26
+ def get_data(data):
27
+ """get data"""
28
+ # lol slop
29
+ res = data
30
+ return res
31
+ ```
32
+
33
+ ### After (cleaned by VibeCheck)
34
+ ```python
35
+ def get_data(data):
36
+ res = data
37
+ return res
38
+ ```
39
+
40
+ **Report:**
41
+ - Slop Indicators Removed: 3
42
+ - Structural Improvements: 1 (redundant docstring)
43
+ - Suspicious Naming: `data`, `res` flagged (see table below)
44
+
45
+ Names are reported by default; pass `--fix-names` to auto-rename via AST transformation.
46
+
47
+ ## Advanced Metrics & Reporting
48
+
49
+ VibeCheck computes a **Cognitive Load Index** (0-100) using:
50
+ - Cyclomatic complexity (via radon)
51
+ - Slop / vibe-keyword density
52
+ - Structural nesting depth
53
+
54
+ It produces a rich `VibeReport` consumed by the CLI for tables and recommendations.
55
+
56
+ Example report (with the new Naming table):
57
+
58
+ ```text
59
+ Clarity Analysis: my_code.py
60
+ ┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓
61
+ ┃ Metric ┃ Value ┃
62
+ ┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩
63
+ │ Original Vibe │ Chaotic │
64
+ │ Clean Vibe │ Stable │
65
+ │ Slop Indicators Removed │ 3 │
66
+ │ Structural Improvements │ 1 │
67
+ │ Cognitive Load Index │ 42.0 │
68
+ └──────────────────────┴──────────────┘
69
+
70
+ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
71
+ ┃ Suspicious Naming Detected ┃
72
+ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
73
+ │ Suspicious variable: res │
74
+ │ Suspicious variable: data │
75
+ └────────────────────────────┘
76
+
77
+ ┌────────────────────────────────────────────┐
78
+ │ Boy Scout Recommendation │
79
+ ├────────────────────────────────────────────┤
80
+ │ Suspicious variable/function names │
81
+ │ detected. Use more descriptive names... │
82
+ └────────────────────────────────────────────┘
83
+ ```
84
+
85
+ See `vibecheck/core/interfaces.py` for the full VibeReport dataclass.
86
+
87
+ ## Usage
88
+
89
+ ```bash
90
+ # Analyze only (no writes)
91
+ vibecheck my_code.py --report-only
92
+ # or explicitly
93
+ vibecheck clean my_code.py --report-only
94
+
95
+ # Clean the file in place (creates no backup — use git)
96
+ vibecheck my_code.py
97
+
98
+ # Auto-rename suspicious variables/functions
99
+ vibecheck src/ --fix-names
100
+
101
+ # Only clean files modified since the last commit (git-aware)
102
+ vibecheck --git
103
+
104
+ # Git-stash dirty state first then clean (safety net)
105
+ vibecheck src/ --backup
106
+
107
+ # Install a pre-commit hook to clean staged .py files
108
+ vibecheck install-hooks
109
+ ```
110
+
111
+ The primary command is `clean <path>` (defaults to `.`). Both files and directories (recursive) are supported. Use `--report-only` for analysis without edits. Always commit or backup first.
112
+
113
+ ### Pro features (Pro binary)
114
+
115
+ The free package (`pip install slopbuster`) is fully functional for most use. Pro is delivered as a standalone binary via Lemon Squeezy (no key, just drop `vibecheck-pro` in your PATH).
116
+
117
+ ```bash
118
+ # With the Pro binary in PATH (name auto-enables full features)
119
+ vibecheck-pro src/ --aggressive --json-report report.json
120
+ ```
121
+
122
+ See `vibecheck clean --help` (or `vibecheck-pro ...`) for options. Pro removes the free tier's 10-file batch soft limit and enables aggressive patterns + ruff format + JSON export.
123
+
124
+ ## Example Report
125
+
126
+ ```text
127
+ Clarity Analysis: my_code.py
128
+ ┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓
129
+ ┃ Metric ┃ Value ┃
130
+ ┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩
131
+ │ Original Vibe │ Chaotic │
132
+ │ Clean Vibe │ Professional │
133
+ │ Slop Indicators │ 14 │
134
+ │ Cognitive Load Index │ 4.2 │
135
+ └──────────────────────┴──────────────┘
136
+ ```
137
+
138
+ ## Installation
139
+
140
+ From PyPI (recommended):
141
+
142
+ ```bash
143
+ pip install slopbuster
144
+ # or
145
+ uv pip install slopbuster
146
+ ```
147
+
148
+ For development (uv recommended):
149
+
150
+ ```bash
151
+ git clone ...
152
+ cd vibecheck_repo
153
+ uv sync --dev # or uv pip install -e . -r <(uv pip compile --group dev ...)
154
+ ```
155
+
156
+ Check version:
157
+
158
+ ```bash
159
+ vibecheck --version
160
+ ```
161
+
162
+ ## Free vs Pro
163
+
164
+ VibeCheck core is free and open source (MIT) on PyPI.
165
+
166
+ - **Free** (`pip install slopbuster`): Full pipeline, reports, naming fixes, git integration, hooks, etc. Soft limit: max 10 files per batch/directory operation (single files always allowed). When the limit is hit it prints an upgrade link.
167
+ - **Pro** (commercial binary): Unlimited files, `--aggressive` patterns, post-clean `ruff format`, `--json-report`, and future extras. Distributed as a standalone executable via Lemon Squeezy (no PyPI, no keys). Just place `vibecheck-pro` in PATH — the binary name auto-enables Pro mode.
168
+
169
+ Purchase / download the Pro binary at the [Lemon Squeezy store](https://buy.lemonsqueezy.com/vibecheck-pro). After purchase Lemon Squeezy emails the direct download link.
170
+
171
+ The `vibecheck-pro/` build configuration lives alongside the free source (see `vibecheck-pro.spec` + `scripts/build_pro_binary.sh`).
172
+
173
+ ## Pro Tier
174
+
175
+ Pro features (available in the Lemon Squeezy binary):
176
+
177
+ - Unlimited batch/directory size (free has 10-file soft cap)
178
+ - `--aggressive`: Additional patterns (todo/hack/temp etc.)
179
+ - Post-clean `ruff format` (free only does `ruff check --fix`)
180
+ - `--json-report path.json`: Structured output for CI/tooling
181
+
182
+ Example (once the Pro binary is in PATH):
183
+
184
+ ```bash
185
+ vibecheck-pro dirty/ --json-report report.json --aggressive
186
+ ```
187
+
188
+ Feedback and feature requests are very welcome.
189
+
190
+ ---
191
+
192
+ ## Donate
193
+
194
+ If VibeCheck saves you time and you want to say thanks:
195
+
196
+ - **Ko-fi**: https://ko-fi.com/devot
197
+
198
+ All donations fund further development of VibeCheck and sibling projects.
199
+
200
+ ---
201
+
202
+ ## License
203
+
204
+ MIT
@@ -0,0 +1,46 @@
1
+ [project]
2
+ name = "slopbuster"
3
+ version = "0.5.0"
4
+ description = "Surgical code-sanitization engine that turns vibe-coded Python into clean, professional code."
5
+ readme = "README.md"
6
+ license = "MIT"
7
+ requires-python = ">=3.10"
8
+ authors = [{ name = "Tallow", email = "tallow@example.com" }]
9
+ keywords = ["code-quality", "refactor", "clean-code", "ai-slop", "formatter", "linter"]
10
+ classifiers = [
11
+ "Development Status :: 4 - Beta",
12
+ "Environment :: Console",
13
+ "Intended Audience :: Developers",
14
+ "Programming Language :: Python :: 3",
15
+ "Programming Language :: Python :: 3.10",
16
+ "Programming Language :: Python :: 3.11",
17
+ "Programming Language :: Python :: 3.12",
18
+ "Topic :: Software Development :: Quality Assurance",
19
+ "Topic :: Software Development :: Libraries :: Python Modules",
20
+ ]
21
+ dependencies = [
22
+ "typer",
23
+ "ruff",
24
+ "rich",
25
+ "radon>=6.0.1",
26
+ "mccabe>=0.7.0",
27
+ ]
28
+
29
+ [project.scripts]
30
+ vibecheck = "vibecheck.cli.main:app"
31
+
32
+ [tool.ruff]
33
+ line-length = 88
34
+ target-version = "py310"
35
+
36
+ [tool.ruff.lint]
37
+ select = ["E", "F", "I", "N", "W"]
38
+
39
+ [tool.pytest.ini_options]
40
+ testpaths = ["tests"]
41
+ python_files = "test_*.py"
42
+
43
+ [dependency-groups]
44
+ dev = [
45
+ "pytest>=9.0.3",
46
+ ]
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env bash
2
+ # Build the standalone vibecheck-pro binary using PyInstaller.
3
+ # Run from the vibecheck_repo root after `pip install pyinstaller` (or uv pip).
4
+ #
5
+ # After build, the dist/vibecheck-pro is uploaded to Lemon Squeezy for Pro customers.
6
+ # (LS is merchant of record and emails the download link; no keys in free tree.)
7
+
8
+ set -euo pipefail
9
+
10
+ echo "Cleaning previous builds..."
11
+ rm -rf build/ dist/ vibecheck.egg-info/ || true
12
+
13
+ echo "Building vibecheck-pro standalone binary..."
14
+ pyinstaller vibecheck-pro.spec
15
+
16
+ echo ""
17
+ echo "Binary created at: dist/vibecheck-pro"
18
+ echo "Test it: ./dist/vibecheck-pro --version"
19
+ echo "Test pro mode: ./dist/vibecheck-pro --help | cat"
20
+ echo ""
21
+ echo "Upload dist/vibecheck-pro to your Lemon Squeezy product/version."
22
+ echo "Users will place it in PATH; VS Code extension (future) will auto-detect."
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+