crackerjack 0.26.0__py3-none-any.whl → 0.27.1__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.

@@ -85,7 +85,7 @@ class WorkflowManager:
85
85
  def add_task(
86
86
  self, name: str, description: str, dependencies: list[str] | None = None
87
87
  ) -> Task:
88
- dep_tasks = []
88
+ dep_tasks: list[Task] = []
89
89
  if dependencies:
90
90
  for dep_name in dependencies:
91
91
  if dep_name not in self.tasks:
crackerjack/py313.py CHANGED
@@ -109,7 +109,7 @@ def process_hook_results[T, R](
109
109
  success_handler: typing.Callable[[T], R],
110
110
  failure_handler: typing.Callable[[T], R],
111
111
  ) -> list[R]:
112
- processed_results = []
112
+ processed_results: list[R] = []
113
113
  for result in results:
114
114
  if isinstance(result, dict) and result.get("status") == HookStatus.SUCCESS:
115
115
  processed_results.append(success_handler(result))
@@ -156,7 +156,7 @@ class EnhancedCommandRunner:
156
156
 
157
157
  def clean_python_code(code: str) -> str:
158
158
  lines = code.splitlines()
159
- cleaned_lines = []
159
+ cleaned_lines: list[str] = []
160
160
  for line in lines:
161
161
  match line.strip():
162
162
  case "":
@@ -4,7 +4,7 @@ requires = [ "hatchling" ]
4
4
 
5
5
  [project]
6
6
  name = "crackerjack"
7
- version = "0.25.0"
7
+ version = "0.27.0"
8
8
  description = "Crackerjack: code quality toolkit"
9
9
  readme = "README.md"
10
10
  keywords = [
@@ -41,6 +41,7 @@ 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",
@@ -80,23 +81,13 @@ output-format = "full"
80
81
  format.docstring-code-format = true
81
82
  lint.extend-select = [
82
83
  "C901",
83
- "D",
84
84
  "F", # pyflakes
85
85
  "I",
86
86
  "UP", # pyupgrade (includes F-string conversion)
87
87
  ]
88
88
  lint.ignore = [
89
- "D100",
90
- "D101",
91
- "D102",
92
- "D103",
93
- "D104",
94
- "D105",
95
- "D106",
96
- "D107",
97
- "E402",
98
- "F821",
99
- "UP040",
89
+ "E402", # Module level import not at top - sometimes necessary
90
+ "F821", # Undefined name - can be resolved with proper imports
100
91
  ]
101
92
  lint.fixable = [ "ALL" ]
102
93
  lint.unfixable = [ ]
@@ -104,7 +95,6 @@ lint.isort.no-lines-before = [
104
95
  "first-party",
105
96
  ]
106
97
  lint.mccabe.max-complexity = 13
107
- lint.pydocstyle.convention = "google"
108
98
 
109
99
  [tool.codespell]
110
100
  skip = "*/data/*"
@@ -185,24 +175,32 @@ ignore_errors = false
185
175
  verboseOutput = true
186
176
  include = [
187
177
  "crackerjack",
178
+ "tests",
188
179
  ]
189
180
  exclude = [
190
181
  "scratch",
182
+ ".venv",
183
+ "build",
184
+ "dist",
191
185
  ]
192
186
  extraPaths = [
193
187
  ".venv/lib/python3.13/site-packages/",
194
188
  ]
195
189
  typeCheckingMode = "strict"
196
- reportMissingTypeStubs = false
197
- reportOptionalMemberAccess = false
198
- reportOptionalCall = false
199
- reportUnknownMemberType = false
200
- reportUnknownVariableType = false
201
- reportUnknownArgumentType = false
202
- reportInvalidTypeForm = false
203
- reportUnknownLambdaType = false
190
+ # Enhanced strictness - only disable what's absolutely necessary
191
+ reportMissingTypeStubs = false # Third-party libraries often lack stubs
192
+ reportOptionalMemberAccess = "warning" # Upgrade from false to warning
193
+ reportOptionalCall = "warning" # Upgrade from false to warning
194
+ reportUnknownMemberType = "warning" # Upgrade from false to warning
195
+ reportUnknownVariableType = false # Too noisy for dynamic code
196
+ reportUnknownArgumentType = "warning" # Upgrade from false to warning
197
+ reportInvalidTypeForm = "warning" # Upgrade from false to warning
198
+ reportUnknownLambdaType = "warning" # Upgrade from false to warning
204
199
  reportUnknownParameterType = "warning"
205
- reportPrivateUsage = false
200
+ reportPrivateUsage = "warning" # Upgrade from false to warning
201
+ reportUnnecessaryTypeIgnoreComment = "warning" # New - catch unused ignores
202
+ reportUnnecessaryComparison = "warning" # New - catch unnecessary comparisons
203
+ reportConstantRedefinition = "warning" # New - catch constant redefinitions
206
204
  pythonVersion = "3.13"
207
205
 
208
206
  [tool.uv]
@@ -245,19 +243,41 @@ exclude-deps = [
245
243
  [tool.refurb]
246
244
  enable_all = true
247
245
  quiet = true
246
+ # Enable Python 3.13+ specific modernizations
247
+ python_version = "3.13"
248
248
 
249
249
  [tool.bandit]
250
250
  target = [
251
251
  "crackerjack",
252
+ "tests", # Include tests for security analysis
252
253
  ]
254
+ # Minimal skips - only skip what's absolutely necessary for this codebase
253
255
  skips = [
254
- "B101",
255
- "B301",
256
- "B311",
257
- "B403",
258
- "B404",
259
- "B602",
260
- "B603",
261
- "B607",
262
- "B704",
256
+ "B101", # assert_used - tests legitimately use assert
257
+ "B603", # subprocess_without_shell_equals_true - we use shell=False safely
258
+ "B607", # start_process_with_partial_path - controlled subprocess calls
263
259
  ]
260
+ # Enhanced security scanning
261
+ exclude_dirs = [
262
+ "tests/data", # Test data might contain examples
263
+ ]
264
+
265
+ # Autotyping optimization
266
+
267
+ [tool.autotyping]
268
+ exclude = [
269
+ "tests/data/*",
270
+ "*/conftest.py",
271
+ ]
272
+ safe = true
273
+ aggressive = true
274
+
275
+ # Code complexity monitoring
276
+
277
+ [tool.complexipy]
278
+ default_pattern = "**/*.py"
279
+ exclude_patterns = [
280
+ "**/tests/**",
281
+ "**/test_*.py",
282
+ ]
283
+ max_complexity = 13
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: crackerjack
3
- Version: 0.26.0
3
+ Version: 0.27.1
4
4
  Summary: Crackerjack: code quality toolkit
5
5
  Project-URL: documentation, https://github.com/lesleslie/crackerjack
6
6
  Project-URL: homepage, https://github.com/lesleslie/crackerjack
@@ -23,6 +23,7 @@ Classifier: Topic :: Software Development :: Testing
23
23
  Classifier: Topic :: Utilities
24
24
  Classifier: Typing :: Typed
25
25
  Requires-Python: >=3.13
26
+ Requires-Dist: aiofiles>=24.1
26
27
  Requires-Dist: autotyping>=24.9
27
28
  Requires-Dist: hatchling>=1.25
28
29
  Requires-Dist: keyring>=25.6
@@ -0,0 +1,16 @@
1
+ crackerjack/.gitignore,sha256=_d0WeGfNZQeCgzJXmjL9LKf-6jjytBulH-ZfWiIOZWI,453
2
+ crackerjack/.libcst.codemod.yaml,sha256=a8DlErRAIPV1nE6QlyXPAzTOgkB24_spl2E9hphuf5s,772
3
+ crackerjack/.pdm.toml,sha256=dZe44HRcuxxCFESGG8SZIjmc-cGzSoyK3Hs6t4NYA8w,23
4
+ crackerjack/.pre-commit-config-ai.yaml,sha256=-8WIT-6l6crGnQBlX-z3G6-3mKUsBWsURRyeti1ySmI,4267
5
+ crackerjack/.pre-commit-config.yaml,sha256=UgPPAC7O_npBLGJkC_v_2YQUSEIOgsBOXzZjyW2hNvs,2987
6
+ crackerjack/__init__.py,sha256=8tBSPAru_YDuPpjz05cL7pNbZjYFoRT_agGd_FWa3gY,839
7
+ crackerjack/__main__.py,sha256=p7S0GftrU9BHtyqT8q931UtEBoz3n8vPcT1R0OJnS1A,7073
8
+ crackerjack/crackerjack.py,sha256=R_fL_XItW_NNxEH3tj9buAmAPJ1CsdFNZd4KD7LJsS4,108843
9
+ crackerjack/errors.py,sha256=Wcv0rXfzV9pHOoXYrhQEjyJd4kUUBbdiY-5M9nI8pDw,4050
10
+ crackerjack/interactive.py,sha256=jnf3klyYFvuQ3u_iVVPshPW1LISfU1VXTOiczTWLxys,16138
11
+ crackerjack/py313.py,sha256=LCWcFNhF6QvPksobyUtxbnmlKosM03xDMb55yTlz6Ow,5910
12
+ crackerjack/pyproject.toml,sha256=0DKrCSAADU23POMqkig80AJKzxnZXleZbLZ2EiTzPHg,6870
13
+ crackerjack-0.27.1.dist-info/METADATA,sha256=29r5DGft8pRQP0QauVaNlbwhKxDYdHiFJnO6IpgL2Vw,28788
14
+ crackerjack-0.27.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
15
+ crackerjack-0.27.1.dist-info/licenses/LICENSE,sha256=fDt371P6_6sCu7RyqiZH_AhT1LdN3sN1zjBtqEhDYCk,1531
16
+ crackerjack-0.27.1.dist-info/RECORD,,
@@ -1,16 +0,0 @@
1
- crackerjack/.gitignore,sha256=n8cD6U16L3XZn__PvhYm_F7-YeFHFucHCyxWj2NZCGs,259
2
- crackerjack/.libcst.codemod.yaml,sha256=a8DlErRAIPV1nE6QlyXPAzTOgkB24_spl2E9hphuf5s,772
3
- crackerjack/.pdm.toml,sha256=dZe44HRcuxxCFESGG8SZIjmc-cGzSoyK3Hs6t4NYA8w,23
4
- crackerjack/.pre-commit-config-ai.yaml,sha256=0TDQp0HIiRiy5q09H0ytJk3M6l3rLOdJNWHgkHIRCGA,3274
5
- crackerjack/.pre-commit-config.yaml,sha256=gXFolNsl6aBeyAefmJ6igmwaNtUHjyfziocBDiulRwU,2642
6
- crackerjack/__init__.py,sha256=8tBSPAru_YDuPpjz05cL7pNbZjYFoRT_agGd_FWa3gY,839
7
- crackerjack/__main__.py,sha256=-h6Au8CGHS9QdzzbDMGzKHAlNEx7cYmzCrV4g4vV19k,6407
8
- crackerjack/crackerjack.py,sha256=iYzhBdEvhCdyrqv-t0jQ862JNn3rwV15P2beaOzu3zs,49463
9
- crackerjack/errors.py,sha256=Wcv0rXfzV9pHOoXYrhQEjyJd4kUUBbdiY-5M9nI8pDw,4050
10
- crackerjack/interactive.py,sha256=pFItgRUyjOakABLCRz6nIp6_Ycx2LBSeojpYNiTelv0,16126
11
- crackerjack/py313.py,sha256=buYE7LO11Q64ffowEhTZRFQoAGj_8sg3DTlZuv8M9eo,5890
12
- crackerjack/pyproject.toml,sha256=twaeui2pJCQnpe92JN1ACxUEHJrGb4T6F6m2Jazc4JI,5401
13
- crackerjack-0.26.0.dist-info/METADATA,sha256=m2Xb72Fq2Py8_QE_Lu61MccpxVMYZtspu75sZ4M7l00,28758
14
- crackerjack-0.26.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
15
- crackerjack-0.26.0.dist-info/licenses/LICENSE,sha256=fDt371P6_6sCu7RyqiZH_AhT1LdN3sN1zjBtqEhDYCk,1531
16
- crackerjack-0.26.0.dist-info/RECORD,,