crackerjack 0.29.0__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 (158) 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 -253
  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 +670 -0
  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 +577 -0
  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/.pre-commit-config-ai.yaml +0 -149
  151. crackerjack/.pre-commit-config-fast.yaml +0 -69
  152. crackerjack/.pre-commit-config.yaml +0 -114
  153. crackerjack/crackerjack.py +0 -4140
  154. crackerjack/pyproject.toml +0 -285
  155. crackerjack-0.29.0.dist-info/METADATA +0 -1289
  156. crackerjack-0.29.0.dist-info/RECORD +0 -17
  157. {crackerjack-0.29.0.dist-info → crackerjack-0.31.4.dist-info}/WHEEL +0 -0
  158. {crackerjack-0.29.0.dist-info → crackerjack-0.31.4.dist-info}/licenses/LICENSE +0 -0
@@ -1,285 +0,0 @@
1
- [build-system]
2
- build-backend = "hatchling.build"
3
- requires = [ "hatchling" ]
4
-
5
- [project]
6
- name = "crackerjack"
7
- version = "0.28.0"
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
- "keyring>=25.6",
48
- "pre-commit>=4.2",
49
- "pydantic>=2.11.7",
50
- "pyleak>=0.1.14",
51
- "pytest>=8.4.1",
52
- "pytest-asyncio>=1",
53
- "pytest-benchmark>=5.1",
54
- "pytest-cov>=6.2.1",
55
- "pytest-mock>=3.14.1",
56
- "pytest-timeout>=2.4",
57
- "pytest-xdist>=3.8",
58
- "pyyaml>=6.0.2",
59
- "rich>=14",
60
- "tomli-w>=1.2",
61
- "typer>=0.16",
62
- "uv>=0.7.20",
63
- ]
64
- urls.documentation = "https://github.com/lesleslie/crackerjack"
65
- urls.homepage = "https://github.com/lesleslie/crackerjack"
66
- urls.repository = "https://github.com/lesleslie/crackerjack"
67
-
68
- [dependency-groups]
69
- dev = [
70
- "complexipy>=3.3",
71
- "pyyaml>=6.0.2",
72
- "refurb>=2.1",
73
- ]
74
-
75
- [tool.ruff]
76
- target-version = "py313"
77
- line-length = 88
78
- fix = true
79
- unsafe-fixes = true
80
-
81
- show-fixes = true
82
- output-format = "full"
83
- format.docstring-code-format = true
84
- lint.extend-select = [
85
- "C901",
86
- "F", # pyflakes
87
- "I",
88
- "UP", # pyupgrade (includes F-string conversion)
89
- ]
90
- lint.ignore = [
91
- "E402", # Module level import not at top - sometimes necessary
92
- "F821", # Undefined name - can be resolved with proper imports
93
- ]
94
- lint.fixable = [ "ALL" ]
95
- lint.unfixable = [ ]
96
- lint.isort.no-lines-before = [
97
- "first-party",
98
- ]
99
- lint.mccabe.max-complexity = 13
100
-
101
- [tool.codespell]
102
- skip = "*/data/*"
103
- quiet-level = 3
104
- ignore-words-list = "crate,uptodate,nd,nin"
105
-
106
- [tool.pyproject-fmt]
107
- column_width = 120
108
- indent = 4
109
-
110
- [tool.pytest.ini_options]
111
- # Core pytest configuration
112
- asyncio_mode = "auto"
113
- asyncio_default_fixture_loop_scope = "function"
114
- python_files = [ "test_*.py", "*_test.py" ]
115
- testpaths = [ "tests", "crackerjack" ]
116
- python_classes = [ "Test*" ]
117
- python_functions = [ "test_*" ]
118
-
119
- # Markers
120
- markers = [
121
- "unit: marks test as a unit test",
122
- "benchmark: mark test as a benchmark (disables parallel execution)",
123
- "integration: marks test as an integration test",
124
- "no_leaks: detect asyncio task leaks, thread leaks, and event loop blocking",
125
- ]
126
-
127
- # Default timeout settings
128
- timeout = 300
129
- timeout_method = "thread"
130
-
131
- # Test command options
132
- addopts = "--cov=crackerjack --cov-report=term --cov-fail-under=42"
133
-
134
- # Filter out benchmark warnings when xdist is active
135
- filterwarnings = [
136
- "ignore::pytest_benchmark.logger.PytestBenchmarkWarning",
137
- ]
138
-
139
- [tool.pytest.benchmark]
140
- disable_gc = true
141
- warmup = false
142
- warmup_iterations = 0
143
- min_rounds = 1
144
- max_time = 5.0
145
-
146
- [tool.coverage.run]
147
- branch = false
148
- source = [ "crackerjack" ]
149
- data_file = ".coverage"
150
- parallel = false
151
- omit = [
152
- "*/tests/*",
153
- "*/site-packages/*",
154
- "*/__pycache__/*",
155
- "*/__init__.py",
156
- "*/_version.py",
157
- "*/conftest.py",
158
- "*/test_*.py",
159
- "*/_test.py",
160
- ]
161
-
162
- [tool.coverage.report]
163
- exclude_also = [
164
- "pragma: no cover",
165
- "def __repr__",
166
- "raise NotImplementedError",
167
- "if __name__ == .__main__.:",
168
- "pass",
169
- "raise ImportError",
170
- "except ImportError",
171
- "def __str__",
172
- "@abstractmethod",
173
- ]
174
- ignore_errors = false
175
-
176
- [tool.pyright]
177
- verboseOutput = true
178
- include = [
179
- "crackerjack",
180
- "tests",
181
- ]
182
- exclude = [
183
- "scratch",
184
- ".venv",
185
- "build",
186
- "dist",
187
- ]
188
- extraPaths = [
189
- ".venv/lib/python3.13/site-packages/",
190
- ]
191
- typeCheckingMode = "strict"
192
- # Enhanced strictness - only disable what's absolutely necessary
193
- reportMissingTypeStubs = false # Third-party libraries often lack stubs
194
- reportOptionalMemberAccess = "warning" # Upgrade from false to warning
195
- reportOptionalCall = "warning" # Upgrade from false to warning
196
- reportUnknownMemberType = "warning" # Upgrade from false to warning
197
- reportUnknownVariableType = false # Too noisy for dynamic code
198
- reportUnknownArgumentType = "warning" # Upgrade from false to warning
199
- reportInvalidTypeForm = "warning" # Upgrade from false to warning
200
- reportUnknownLambdaType = "warning" # Upgrade from false to warning
201
- reportUnknownParameterType = "warning"
202
- reportPrivateUsage = "warning" # Upgrade from false to warning
203
- reportUnnecessaryTypeIgnoreComment = "warning" # New - catch unused ignores
204
- reportUnnecessaryComparison = "warning" # New - catch unnecessary comparisons
205
- reportConstantRedefinition = "warning" # New - catch constant redefinitions
206
- pythonVersion = "3.13"
207
-
208
- [tool.uv]
209
- keyring-provider = "subprocess"
210
- publish-url = "https://upload.pypi.org/legacy/"
211
- check-url = "https://pypi.org/simple/"
212
-
213
- [tool.vulture]
214
- min_confidence = 86
215
- paths = [ "crackerjack" ]
216
- ignore_names = [ "cls" ]
217
-
218
- [tool.creosote]
219
- paths = [
220
- "crackerjack",
221
- ]
222
- deps-file = "pyproject.toml"
223
- exclude-deps = [
224
- "autotyping",
225
- "hatchling",
226
- "pre-commit",
227
- "pytest",
228
- "pytest-asyncio",
229
- "pytest-cov",
230
- "pytest-mock",
231
- "pytest-xdist",
232
- "pytest-benchmark",
233
- "pyfiglet",
234
- "pyyaml",
235
- "uv",
236
- "tomli-w",
237
- "google-crc32c",
238
- "pytest-timeout",
239
- "keyring",
240
- "inflection",
241
- "pydantic-settings",
242
- "pyleak",
243
- ]
244
-
245
- [tool.refurb]
246
- enable_all = true
247
- quiet = true
248
- # Enable Python 3.13+ specific modernizations
249
- python_version = "3.13"
250
-
251
- [tool.bandit]
252
- target = [
253
- "crackerjack",
254
- "tests", # Include tests for security analysis
255
- ]
256
- # Minimal skips - only skip what's absolutely necessary for this codebase
257
- skips = [
258
- "B101", # assert_used - tests legitimately use assert
259
- "B603", # subprocess_without_shell_equals_true - we use shell=False safely
260
- "B607", # start_process_with_partial_path - controlled subprocess calls
261
- ]
262
- # Enhanced security scanning
263
- exclude_dirs = [
264
- "tests/data", # Test data might contain examples
265
- ]
266
-
267
- # Autotyping optimization
268
-
269
- [tool.autotyping]
270
- exclude = [
271
- "tests/data/*",
272
- "*/conftest.py",
273
- ]
274
- safe = true
275
- aggressive = true
276
-
277
- # Code complexity monitoring
278
-
279
- [tool.complexipy]
280
- default_pattern = "**/*.py"
281
- exclude_patterns = [
282
- "**/tests/**",
283
- "**/test_*.py",
284
- ]
285
- max_complexity = 13