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.

@@ -4,7 +4,7 @@ requires = [ "hatchling" ]
4
4
 
5
5
  [project]
6
6
  name = "crackerjack"
7
- version = "0.24.10"
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
- "D106",
95
- "D107",
96
- "E402",
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
- reportMissingTypeStubs = false
195
- reportOptionalMemberAccess = false
196
- reportOptionalCall = false
197
- reportUnknownMemberType = false
198
- reportUnknownVariableType = false
199
- reportUnknownArgumentType = false
200
- reportInvalidTypeForm = false
201
- reportUnknownLambdaType = false
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
- "B301",
253
- "B311",
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