crackerjack 0.25.0__py3-none-any.whl → 0.27.0__py3-none-any.whl
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.
Potentially problematic release.
This version of crackerjack might be problematic. Click here for more details.
- crackerjack/.gitignore +11 -0
- crackerjack/.pre-commit-config-ai.yaml +60 -33
- crackerjack/.pre-commit-config.yaml +31 -5
- crackerjack/__main__.py +22 -1
- crackerjack/crackerjack.py +1360 -39
- crackerjack/pyproject.toml +71 -30
- {crackerjack-0.25.0.dist-info → crackerjack-0.27.0.dist-info}/METADATA +188 -128
- crackerjack-0.27.0.dist-info/RECORD +16 -0
- crackerjack-0.25.0.dist-info/RECORD +0 -16
- {crackerjack-0.25.0.dist-info → crackerjack-0.27.0.dist-info}/WHEEL +0 -0
- {crackerjack-0.25.0.dist-info → crackerjack-0.27.0.dist-info}/licenses/LICENSE +0 -0
crackerjack/pyproject.toml
CHANGED
|
@@ -4,7 +4,7 @@ requires = [ "hatchling" ]
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "crackerjack"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.26.0"
|
|
8
8
|
description = "Crackerjack: code quality toolkit"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
keywords = [
|
|
@@ -41,11 +41,13 @@ classifiers = [
|
|
|
41
41
|
"Typing :: Typed",
|
|
42
42
|
]
|
|
43
43
|
dependencies = [
|
|
44
|
+
"aiofiles>=24.1",
|
|
44
45
|
"autotyping>=24.9",
|
|
45
46
|
"hatchling>=1.25",
|
|
46
47
|
"keyring>=25.6",
|
|
47
48
|
"pre-commit>=4.2",
|
|
48
49
|
"pydantic>=2.11.7",
|
|
50
|
+
"pyleak>=0.1.14",
|
|
49
51
|
"pytest>=8.4.1",
|
|
50
52
|
"pytest-asyncio>=1",
|
|
51
53
|
"pytest-benchmark>=5.1",
|
|
@@ -85,17 +87,15 @@ lint.extend-select = [
|
|
|
85
87
|
"UP", # pyupgrade (includes F-string conversion)
|
|
86
88
|
]
|
|
87
89
|
lint.ignore = [
|
|
88
|
-
"D100",
|
|
89
|
-
"D101",
|
|
90
|
-
"D102",
|
|
91
|
-
"D103",
|
|
92
|
-
"D104",
|
|
93
|
-
"D105",
|
|
94
|
-
"
|
|
95
|
-
"
|
|
96
|
-
"
|
|
97
|
-
"F821",
|
|
98
|
-
"UP040",
|
|
90
|
+
"D100", # Missing docstring in public module - can be safely enabled
|
|
91
|
+
"D101", # Missing docstring in public class - conflicts with code cleaning
|
|
92
|
+
"D102", # Missing docstring in public method - conflicts with code cleaning
|
|
93
|
+
"D103", # Missing docstring in public function - conflicts with code cleaning
|
|
94
|
+
"D104", # Missing docstring in public package - package level docs
|
|
95
|
+
"D105", # Missing docstring in magic method - conflicts with code cleaning
|
|
96
|
+
"D107", # Missing docstring in __init__ - conflicts with code cleaning
|
|
97
|
+
"E402", # Module level import not at top - sometimes necessary
|
|
98
|
+
"F821", # Undefined name - can be resolved with proper imports
|
|
99
99
|
]
|
|
100
100
|
lint.fixable = [ "ALL" ]
|
|
101
101
|
lint.unfixable = [ ]
|
|
@@ -128,6 +128,7 @@ markers = [
|
|
|
128
128
|
"unit: marks test as a unit test",
|
|
129
129
|
"benchmark: mark test as a benchmark (disables parallel execution)",
|
|
130
130
|
"integration: marks test as an integration test",
|
|
131
|
+
"no_leaks: detect asyncio task leaks, thread leaks, and event loop blocking",
|
|
131
132
|
]
|
|
132
133
|
|
|
133
134
|
# Default timeout settings
|
|
@@ -183,24 +184,32 @@ ignore_errors = false
|
|
|
183
184
|
verboseOutput = true
|
|
184
185
|
include = [
|
|
185
186
|
"crackerjack",
|
|
187
|
+
"tests",
|
|
186
188
|
]
|
|
187
189
|
exclude = [
|
|
188
190
|
"scratch",
|
|
191
|
+
".venv",
|
|
192
|
+
"build",
|
|
193
|
+
"dist",
|
|
189
194
|
]
|
|
190
195
|
extraPaths = [
|
|
191
196
|
".venv/lib/python3.13/site-packages/",
|
|
192
197
|
]
|
|
193
198
|
typeCheckingMode = "strict"
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
199
|
+
# Enhanced strictness - only disable what's absolutely necessary
|
|
200
|
+
reportMissingTypeStubs = false # Third-party libraries often lack stubs
|
|
201
|
+
reportOptionalMemberAccess = "warning" # Upgrade from false to warning
|
|
202
|
+
reportOptionalCall = "warning" # Upgrade from false to warning
|
|
203
|
+
reportUnknownMemberType = "warning" # Upgrade from false to warning
|
|
204
|
+
reportUnknownVariableType = false # Too noisy for dynamic code
|
|
205
|
+
reportUnknownArgumentType = "warning" # Upgrade from false to warning
|
|
206
|
+
reportInvalidTypeForm = "warning" # Upgrade from false to warning
|
|
207
|
+
reportUnknownLambdaType = "warning" # Upgrade from false to warning
|
|
202
208
|
reportUnknownParameterType = "warning"
|
|
203
|
-
reportPrivateUsage = false
|
|
209
|
+
reportPrivateUsage = "warning" # Upgrade from false to warning
|
|
210
|
+
reportUnnecessaryTypeIgnoreComment = "warning" # New - catch unused ignores
|
|
211
|
+
reportUnnecessaryComparison = "warning" # New - catch unnecessary comparisons
|
|
212
|
+
reportConstantRedefinition = "warning" # New - catch constant redefinitions
|
|
204
213
|
pythonVersion = "3.13"
|
|
205
214
|
|
|
206
215
|
[tool.uv]
|
|
@@ -237,24 +246,56 @@ exclude-deps = [
|
|
|
237
246
|
"keyring",
|
|
238
247
|
"inflection",
|
|
239
248
|
"pydantic-settings",
|
|
249
|
+
"pyleak",
|
|
240
250
|
]
|
|
241
251
|
|
|
242
252
|
[tool.refurb]
|
|
243
253
|
enable_all = true
|
|
244
254
|
quiet = true
|
|
255
|
+
# Enable Python 3.13+ specific modernizations
|
|
256
|
+
python_version = "3.13"
|
|
245
257
|
|
|
246
258
|
[tool.bandit]
|
|
247
259
|
target = [
|
|
248
260
|
"crackerjack",
|
|
261
|
+
"tests", # Include tests for security analysis
|
|
249
262
|
]
|
|
263
|
+
# Minimal skips - only skip what's absolutely necessary for this codebase
|
|
250
264
|
skips = [
|
|
251
|
-
"B101",
|
|
252
|
-
"
|
|
253
|
-
"
|
|
254
|
-
"B403",
|
|
255
|
-
"B404",
|
|
256
|
-
"B602",
|
|
257
|
-
"B603",
|
|
258
|
-
"B607",
|
|
259
|
-
"B704",
|
|
265
|
+
"B101", # assert_used - tests legitimately use assert
|
|
266
|
+
"B603", # subprocess_without_shell_equals_true - we use shell=False safely
|
|
267
|
+
"B607", # start_process_with_partial_path - controlled subprocess calls
|
|
260
268
|
]
|
|
269
|
+
# Enhanced security scanning
|
|
270
|
+
exclude_dirs = [
|
|
271
|
+
"tests/data", # Test data might contain examples
|
|
272
|
+
]
|
|
273
|
+
|
|
274
|
+
# Enhanced documentation quality
|
|
275
|
+
|
|
276
|
+
[tool.pydocstyle]
|
|
277
|
+
convention = "google"
|
|
278
|
+
add-ignore = [
|
|
279
|
+
"D100", # Missing docstring in public module
|
|
280
|
+
"D104", # Missing docstring in public package
|
|
281
|
+
]
|
|
282
|
+
|
|
283
|
+
# Autotyping optimization
|
|
284
|
+
|
|
285
|
+
[tool.autotyping]
|
|
286
|
+
exclude = [
|
|
287
|
+
"tests/data/*",
|
|
288
|
+
"*/conftest.py",
|
|
289
|
+
]
|
|
290
|
+
safe = true
|
|
291
|
+
aggressive = true
|
|
292
|
+
|
|
293
|
+
# Code complexity monitoring
|
|
294
|
+
|
|
295
|
+
[tool.complexipy]
|
|
296
|
+
default_pattern = "**/*.py"
|
|
297
|
+
exclude_patterns = [
|
|
298
|
+
"**/tests/**",
|
|
299
|
+
"**/test_*.py",
|
|
300
|
+
]
|
|
301
|
+
max_complexity = 13
|