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

Files changed (155) hide show
  1. crackerjack/CLAUDE.md +1005 -0
  2. crackerjack/RULES.md +380 -0
  3. crackerjack/__init__.py +42 -13
  4. crackerjack/__main__.py +225 -299
  5. crackerjack/agents/__init__.py +41 -0
  6. crackerjack/agents/architect_agent.py +281 -0
  7. crackerjack/agents/base.py +169 -0
  8. crackerjack/agents/coordinator.py +512 -0
  9. crackerjack/agents/documentation_agent.py +498 -0
  10. crackerjack/agents/dry_agent.py +388 -0
  11. crackerjack/agents/formatting_agent.py +245 -0
  12. crackerjack/agents/import_optimization_agent.py +281 -0
  13. crackerjack/agents/performance_agent.py +669 -0
  14. crackerjack/agents/proactive_agent.py +104 -0
  15. crackerjack/agents/refactoring_agent.py +788 -0
  16. crackerjack/agents/security_agent.py +529 -0
  17. crackerjack/agents/test_creation_agent.py +652 -0
  18. crackerjack/agents/test_specialist_agent.py +486 -0
  19. crackerjack/agents/tracker.py +212 -0
  20. crackerjack/api.py +560 -0
  21. crackerjack/cli/__init__.py +24 -0
  22. crackerjack/cli/facade.py +104 -0
  23. crackerjack/cli/handlers.py +267 -0
  24. crackerjack/cli/interactive.py +471 -0
  25. crackerjack/cli/options.py +401 -0
  26. crackerjack/cli/utils.py +18 -0
  27. crackerjack/code_cleaner.py +618 -928
  28. crackerjack/config/__init__.py +19 -0
  29. crackerjack/config/hooks.py +218 -0
  30. crackerjack/core/__init__.py +0 -0
  31. crackerjack/core/async_workflow_orchestrator.py +406 -0
  32. crackerjack/core/autofix_coordinator.py +200 -0
  33. crackerjack/core/container.py +104 -0
  34. crackerjack/core/enhanced_container.py +542 -0
  35. crackerjack/core/performance.py +243 -0
  36. crackerjack/core/phase_coordinator.py +561 -0
  37. crackerjack/core/proactive_workflow.py +316 -0
  38. crackerjack/core/session_coordinator.py +289 -0
  39. crackerjack/core/workflow_orchestrator.py +640 -0
  40. crackerjack/dynamic_config.py +94 -103
  41. crackerjack/errors.py +263 -41
  42. crackerjack/executors/__init__.py +11 -0
  43. crackerjack/executors/async_hook_executor.py +431 -0
  44. crackerjack/executors/cached_hook_executor.py +242 -0
  45. crackerjack/executors/hook_executor.py +345 -0
  46. crackerjack/executors/individual_hook_executor.py +669 -0
  47. crackerjack/intelligence/__init__.py +44 -0
  48. crackerjack/intelligence/adaptive_learning.py +751 -0
  49. crackerjack/intelligence/agent_orchestrator.py +551 -0
  50. crackerjack/intelligence/agent_registry.py +414 -0
  51. crackerjack/intelligence/agent_selector.py +502 -0
  52. crackerjack/intelligence/integration.py +290 -0
  53. crackerjack/interactive.py +576 -315
  54. crackerjack/managers/__init__.py +11 -0
  55. crackerjack/managers/async_hook_manager.py +135 -0
  56. crackerjack/managers/hook_manager.py +137 -0
  57. crackerjack/managers/publish_manager.py +411 -0
  58. crackerjack/managers/test_command_builder.py +151 -0
  59. crackerjack/managers/test_executor.py +435 -0
  60. crackerjack/managers/test_manager.py +258 -0
  61. crackerjack/managers/test_manager_backup.py +1124 -0
  62. crackerjack/managers/test_progress.py +144 -0
  63. crackerjack/mcp/__init__.py +0 -0
  64. crackerjack/mcp/cache.py +336 -0
  65. crackerjack/mcp/client_runner.py +104 -0
  66. crackerjack/mcp/context.py +615 -0
  67. crackerjack/mcp/dashboard.py +636 -0
  68. crackerjack/mcp/enhanced_progress_monitor.py +479 -0
  69. crackerjack/mcp/file_monitor.py +336 -0
  70. crackerjack/mcp/progress_components.py +569 -0
  71. crackerjack/mcp/progress_monitor.py +949 -0
  72. crackerjack/mcp/rate_limiter.py +332 -0
  73. crackerjack/mcp/server.py +22 -0
  74. crackerjack/mcp/server_core.py +244 -0
  75. crackerjack/mcp/service_watchdog.py +501 -0
  76. crackerjack/mcp/state.py +395 -0
  77. crackerjack/mcp/task_manager.py +257 -0
  78. crackerjack/mcp/tools/__init__.py +17 -0
  79. crackerjack/mcp/tools/core_tools.py +249 -0
  80. crackerjack/mcp/tools/error_analyzer.py +308 -0
  81. crackerjack/mcp/tools/execution_tools.py +370 -0
  82. crackerjack/mcp/tools/execution_tools_backup.py +1097 -0
  83. crackerjack/mcp/tools/intelligence_tool_registry.py +80 -0
  84. crackerjack/mcp/tools/intelligence_tools.py +314 -0
  85. crackerjack/mcp/tools/monitoring_tools.py +502 -0
  86. crackerjack/mcp/tools/proactive_tools.py +384 -0
  87. crackerjack/mcp/tools/progress_tools.py +141 -0
  88. crackerjack/mcp/tools/utility_tools.py +341 -0
  89. crackerjack/mcp/tools/workflow_executor.py +360 -0
  90. crackerjack/mcp/websocket/__init__.py +14 -0
  91. crackerjack/mcp/websocket/app.py +39 -0
  92. crackerjack/mcp/websocket/endpoints.py +559 -0
  93. crackerjack/mcp/websocket/jobs.py +253 -0
  94. crackerjack/mcp/websocket/server.py +116 -0
  95. crackerjack/mcp/websocket/websocket_handler.py +78 -0
  96. crackerjack/mcp/websocket_server.py +10 -0
  97. crackerjack/models/__init__.py +31 -0
  98. crackerjack/models/config.py +93 -0
  99. crackerjack/models/config_adapter.py +230 -0
  100. crackerjack/models/protocols.py +118 -0
  101. crackerjack/models/task.py +154 -0
  102. crackerjack/monitoring/ai_agent_watchdog.py +450 -0
  103. crackerjack/monitoring/regression_prevention.py +638 -0
  104. crackerjack/orchestration/__init__.py +0 -0
  105. crackerjack/orchestration/advanced_orchestrator.py +970 -0
  106. crackerjack/orchestration/execution_strategies.py +341 -0
  107. crackerjack/orchestration/test_progress_streamer.py +636 -0
  108. crackerjack/plugins/__init__.py +15 -0
  109. crackerjack/plugins/base.py +200 -0
  110. crackerjack/plugins/hooks.py +246 -0
  111. crackerjack/plugins/loader.py +335 -0
  112. crackerjack/plugins/managers.py +259 -0
  113. crackerjack/py313.py +8 -3
  114. crackerjack/services/__init__.py +22 -0
  115. crackerjack/services/cache.py +314 -0
  116. crackerjack/services/config.py +347 -0
  117. crackerjack/services/config_integrity.py +99 -0
  118. crackerjack/services/contextual_ai_assistant.py +516 -0
  119. crackerjack/services/coverage_ratchet.py +347 -0
  120. crackerjack/services/debug.py +736 -0
  121. crackerjack/services/dependency_monitor.py +617 -0
  122. crackerjack/services/enhanced_filesystem.py +439 -0
  123. crackerjack/services/file_hasher.py +151 -0
  124. crackerjack/services/filesystem.py +395 -0
  125. crackerjack/services/git.py +165 -0
  126. crackerjack/services/health_metrics.py +611 -0
  127. crackerjack/services/initialization.py +847 -0
  128. crackerjack/services/log_manager.py +286 -0
  129. crackerjack/services/logging.py +174 -0
  130. crackerjack/services/metrics.py +578 -0
  131. crackerjack/services/pattern_cache.py +362 -0
  132. crackerjack/services/pattern_detector.py +515 -0
  133. crackerjack/services/performance_benchmarks.py +653 -0
  134. crackerjack/services/security.py +163 -0
  135. crackerjack/services/server_manager.py +234 -0
  136. crackerjack/services/smart_scheduling.py +144 -0
  137. crackerjack/services/tool_version_service.py +61 -0
  138. crackerjack/services/unified_config.py +437 -0
  139. crackerjack/services/version_checker.py +248 -0
  140. crackerjack/slash_commands/__init__.py +14 -0
  141. crackerjack/slash_commands/init.md +122 -0
  142. crackerjack/slash_commands/run.md +163 -0
  143. crackerjack/slash_commands/status.md +127 -0
  144. crackerjack-0.31.4.dist-info/METADATA +742 -0
  145. crackerjack-0.31.4.dist-info/RECORD +148 -0
  146. crackerjack-0.31.4.dist-info/entry_points.txt +2 -0
  147. crackerjack/.gitignore +0 -34
  148. crackerjack/.libcst.codemod.yaml +0 -18
  149. crackerjack/.pdm.toml +0 -1
  150. crackerjack/crackerjack.py +0 -3805
  151. crackerjack/pyproject.toml +0 -286
  152. crackerjack-0.30.3.dist-info/METADATA +0 -1290
  153. crackerjack-0.30.3.dist-info/RECORD +0 -16
  154. {crackerjack-0.30.3.dist-info → crackerjack-0.31.4.dist-info}/WHEEL +0 -0
  155. {crackerjack-0.30.3.dist-info → crackerjack-0.31.4.dist-info}/licenses/LICENSE +0 -0
@@ -1,286 +0,0 @@
1
- [build-system]
2
- build-backend = "hatchling.build"
3
- requires = [ "hatchling" ]
4
-
5
- [project]
6
- name = "crackerjack"
7
- version = "0.30.2"
8
- description = "Crackerjack: code quality toolkit"
9
- readme = "README.md"
10
- keywords = [
11
- "bandit",
12
- "black",
13
- "creosote",
14
- "mypy",
15
- "pyright",
16
- "pytest",
17
- "refurb",
18
- "ruff",
19
- ]
20
- license.text = "BSD-3-CLAUSE"
21
- maintainers = [
22
- { name = "lesleslie", email = "les@wedgwoodwebworks.com" },
23
- ]
24
-
25
- authors = [
26
- { name = "lesleslie", email = "les@wedgwoodwebworks.com" },
27
- ]
28
- requires-python = ">=3.13"
29
- classifiers = [
30
- "Development Status :: 4 - Beta",
31
- "Environment :: Console",
32
- "License :: OSI Approved :: BSD License",
33
- "Operating System :: POSIX",
34
- "Programming Language :: Python",
35
- "Programming Language :: Python :: 3 :: Only",
36
- "Programming Language :: Python :: 3.13",
37
- "Topic :: Software Development :: Libraries :: Python Modules",
38
- "Topic :: Software Development :: Quality Assurance",
39
- "Topic :: Software Development :: Testing",
40
- "Topic :: Utilities",
41
- "Typing :: Typed",
42
- ]
43
- dependencies = [
44
- "aiofiles>=24.1",
45
- "autotyping>=24.9",
46
- "hatchling>=1.25",
47
- "jinja2>=3.1",
48
- "keyring>=25.6",
49
- "pre-commit>=4.2",
50
- "pydantic>=2.11.7",
51
- "pyleak>=0.1.14",
52
- "pytest>=8.4.1",
53
- "pytest-asyncio>=1",
54
- "pytest-benchmark>=5.1",
55
- "pytest-cov>=6.2.1",
56
- "pytest-mock>=3.14.1",
57
- "pytest-timeout>=2.4",
58
- "pytest-xdist>=3.8",
59
- "pyyaml>=6.0.2",
60
- "rich>=14",
61
- "tomli-w>=1.2",
62
- "typer>=0.16",
63
- "uv>=0.7.20",
64
- ]
65
- urls.documentation = "https://github.com/lesleslie/crackerjack"
66
- urls.homepage = "https://github.com/lesleslie/crackerjack"
67
- urls.repository = "https://github.com/lesleslie/crackerjack"
68
-
69
- [dependency-groups]
70
- dev = [
71
- "complexipy>=3.3",
72
- "pyyaml>=6.0.2",
73
- "refurb>=2.1",
74
- ]
75
-
76
- [tool.ruff]
77
- target-version = "py313"
78
- line-length = 88
79
- fix = true
80
- unsafe-fixes = true
81
-
82
- show-fixes = true
83
- output-format = "full"
84
- format.docstring-code-format = true
85
- lint.extend-select = [
86
- "C901",
87
- "F", # pyflakes
88
- "I",
89
- "UP", # pyupgrade (includes F-string conversion)
90
- ]
91
- lint.ignore = [
92
- "E402", # Module level import not at top - sometimes necessary
93
- "F821", # Undefined name - can be resolved with proper imports
94
- ]
95
- lint.fixable = [ "ALL" ]
96
- lint.unfixable = [ ]
97
- lint.isort.no-lines-before = [
98
- "first-party",
99
- ]
100
- lint.mccabe.max-complexity = 13
101
-
102
- [tool.codespell]
103
- skip = "*/data/*"
104
- quiet-level = 3
105
- ignore-words-list = "crate,uptodate,nd,nin"
106
-
107
- [tool.pyproject-fmt]
108
- column_width = 120
109
- indent = 4
110
-
111
- [tool.pytest.ini_options]
112
- # Core pytest configuration
113
- asyncio_mode = "auto"
114
- asyncio_default_fixture_loop_scope = "function"
115
- python_files = [ "test_*.py", "*_test.py" ]
116
- testpaths = [ "tests", "crackerjack" ]
117
- python_classes = [ "Test*" ]
118
- python_functions = [ "test_*" ]
119
-
120
- # Markers
121
- markers = [
122
- "unit: marks test as a unit test",
123
- "benchmark: mark test as a benchmark (disables parallel execution)",
124
- "integration: marks test as an integration test",
125
- "no_leaks: detect asyncio task leaks, thread leaks, and event loop blocking",
126
- ]
127
-
128
- # Default timeout settings
129
- timeout = 300
130
- timeout_method = "thread"
131
-
132
- # Test command options
133
- addopts = "--cov=crackerjack --cov-report=term --cov-fail-under=42"
134
-
135
- # Filter out benchmark warnings when xdist is active
136
- filterwarnings = [
137
- "ignore::pytest_benchmark.logger.PytestBenchmarkWarning",
138
- ]
139
-
140
- [tool.pytest.benchmark]
141
- disable_gc = true
142
- warmup = false
143
- warmup_iterations = 0
144
- min_rounds = 1
145
- max_time = 5.0
146
-
147
- [tool.coverage.run]
148
- branch = false
149
- source = [ "crackerjack" ]
150
- data_file = ".coverage"
151
- parallel = false
152
- omit = [
153
- "*/tests/*",
154
- "*/site-packages/*",
155
- "*/__pycache__/*",
156
- "*/__init__.py",
157
- "*/_version.py",
158
- "*/conftest.py",
159
- "*/test_*.py",
160
- "*/_test.py",
161
- ]
162
-
163
- [tool.coverage.report]
164
- exclude_also = [
165
- "pragma: no cover",
166
- "def __repr__",
167
- "raise NotImplementedError",
168
- "if __name__ == .__main__.:",
169
- "pass",
170
- "raise ImportError",
171
- "except ImportError",
172
- "def __str__",
173
- "@abstractmethod",
174
- ]
175
- ignore_errors = false
176
-
177
- [tool.pyright]
178
- verboseOutput = true
179
- include = [
180
- "crackerjack",
181
- "tests",
182
- ]
183
- exclude = [
184
- "scratch",
185
- ".venv",
186
- "build",
187
- "dist",
188
- ]
189
- extraPaths = [
190
- ".venv/lib/python3.13/site-packages/",
191
- ]
192
- typeCheckingMode = "strict"
193
- # Enhanced strictness - only disable what's absolutely necessary
194
- reportMissingTypeStubs = false # Third-party libraries often lack stubs
195
- reportOptionalMemberAccess = "warning" # Upgrade from false to warning
196
- reportOptionalCall = "warning" # Upgrade from false to warning
197
- reportUnknownMemberType = "warning" # Upgrade from false to warning
198
- reportUnknownVariableType = false # Too noisy for dynamic code
199
- reportUnknownArgumentType = "warning" # Upgrade from false to warning
200
- reportInvalidTypeForm = "warning" # Upgrade from false to warning
201
- reportUnknownLambdaType = "warning" # Upgrade from false to warning
202
- reportUnknownParameterType = "warning"
203
- reportPrivateUsage = "warning" # Upgrade from false to warning
204
- reportUnnecessaryTypeIgnoreComment = "warning" # New - catch unused ignores
205
- reportUnnecessaryComparison = "warning" # New - catch unnecessary comparisons
206
- reportConstantRedefinition = "warning" # New - catch constant redefinitions
207
- pythonVersion = "3.13"
208
-
209
- [tool.uv]
210
- keyring-provider = "subprocess"
211
- publish-url = "https://upload.pypi.org/legacy/"
212
- check-url = "https://pypi.org/simple/"
213
-
214
- [tool.vulture]
215
- min_confidence = 86
216
- paths = [ "crackerjack" ]
217
- ignore_names = [ "cls" ]
218
-
219
- [tool.creosote]
220
- paths = [
221
- "crackerjack",
222
- ]
223
- deps-file = "pyproject.toml"
224
- exclude-deps = [
225
- "autotyping",
226
- "hatchling",
227
- "pre-commit",
228
- "pytest",
229
- "pytest-asyncio",
230
- "pytest-cov",
231
- "pytest-mock",
232
- "pytest-xdist",
233
- "pytest-benchmark",
234
- "pyfiglet",
235
- "pyyaml",
236
- "uv",
237
- "tomli-w",
238
- "google-crc32c",
239
- "pytest-timeout",
240
- "keyring",
241
- "inflection",
242
- "pydantic-settings",
243
- "pyleak",
244
- ]
245
-
246
- [tool.refurb]
247
- enable_all = true
248
- quiet = true
249
- # Enable Python 3.13+ specific modernizations
250
- python_version = "3.13"
251
-
252
- [tool.bandit]
253
- target = [
254
- "crackerjack",
255
- "tests", # Include tests for security analysis
256
- ]
257
- # Minimal skips - only skip what's absolutely necessary for this codebase
258
- skips = [
259
- "B101", # assert_used - tests legitimately use assert
260
- "B603", # subprocess_without_shell_equals_true - we use shell=False safely
261
- "B607", # start_process_with_partial_path - controlled subprocess calls
262
- ]
263
- # Enhanced security scanning
264
- exclude_dirs = [
265
- "tests/data", # Test data might contain examples
266
- ]
267
-
268
- # Autotyping optimization
269
-
270
- [tool.autotyping]
271
- exclude = [
272
- "tests/data/*",
273
- "*/conftest.py",
274
- ]
275
- safe = true
276
- aggressive = true
277
-
278
- # Code complexity monitoring
279
-
280
- [tool.complexipy]
281
- default_pattern = "**/*.py"
282
- exclude_patterns = [
283
- "**/tests/**",
284
- "**/test_*.py",
285
- ]
286
- max_complexity = 13