crackerjack 0.18.2__py3-none-any.whl → 0.45.2__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.
Files changed (533) hide show
  1. crackerjack/README.md +19 -0
  2. crackerjack/__init__.py +96 -2
  3. crackerjack/__main__.py +637 -138
  4. crackerjack/adapters/README.md +18 -0
  5. crackerjack/adapters/__init__.py +39 -0
  6. crackerjack/adapters/_output_paths.py +167 -0
  7. crackerjack/adapters/_qa_adapter_base.py +309 -0
  8. crackerjack/adapters/_tool_adapter_base.py +706 -0
  9. crackerjack/adapters/ai/README.md +65 -0
  10. crackerjack/adapters/ai/__init__.py +5 -0
  11. crackerjack/adapters/ai/claude.py +853 -0
  12. crackerjack/adapters/complexity/README.md +53 -0
  13. crackerjack/adapters/complexity/__init__.py +10 -0
  14. crackerjack/adapters/complexity/complexipy.py +641 -0
  15. crackerjack/adapters/dependency/__init__.py +22 -0
  16. crackerjack/adapters/dependency/pip_audit.py +418 -0
  17. crackerjack/adapters/format/README.md +72 -0
  18. crackerjack/adapters/format/__init__.py +11 -0
  19. crackerjack/adapters/format/mdformat.py +313 -0
  20. crackerjack/adapters/format/ruff.py +516 -0
  21. crackerjack/adapters/lint/README.md +47 -0
  22. crackerjack/adapters/lint/__init__.py +11 -0
  23. crackerjack/adapters/lint/codespell.py +273 -0
  24. crackerjack/adapters/lsp/README.md +49 -0
  25. crackerjack/adapters/lsp/__init__.py +27 -0
  26. crackerjack/adapters/lsp/_base.py +194 -0
  27. crackerjack/adapters/lsp/_client.py +358 -0
  28. crackerjack/adapters/lsp/_manager.py +193 -0
  29. crackerjack/adapters/lsp/skylos.py +283 -0
  30. crackerjack/adapters/lsp/zuban.py +557 -0
  31. crackerjack/adapters/refactor/README.md +59 -0
  32. crackerjack/adapters/refactor/__init__.py +12 -0
  33. crackerjack/adapters/refactor/creosote.py +318 -0
  34. crackerjack/adapters/refactor/refurb.py +406 -0
  35. crackerjack/adapters/refactor/skylos.py +494 -0
  36. crackerjack/adapters/sast/README.md +132 -0
  37. crackerjack/adapters/sast/__init__.py +32 -0
  38. crackerjack/adapters/sast/_base.py +201 -0
  39. crackerjack/adapters/sast/bandit.py +423 -0
  40. crackerjack/adapters/sast/pyscn.py +405 -0
  41. crackerjack/adapters/sast/semgrep.py +241 -0
  42. crackerjack/adapters/security/README.md +111 -0
  43. crackerjack/adapters/security/__init__.py +17 -0
  44. crackerjack/adapters/security/gitleaks.py +339 -0
  45. crackerjack/adapters/type/README.md +52 -0
  46. crackerjack/adapters/type/__init__.py +12 -0
  47. crackerjack/adapters/type/pyrefly.py +402 -0
  48. crackerjack/adapters/type/ty.py +402 -0
  49. crackerjack/adapters/type/zuban.py +522 -0
  50. crackerjack/adapters/utility/README.md +51 -0
  51. crackerjack/adapters/utility/__init__.py +10 -0
  52. crackerjack/adapters/utility/checks.py +884 -0
  53. crackerjack/agents/README.md +264 -0
  54. crackerjack/agents/__init__.py +66 -0
  55. crackerjack/agents/architect_agent.py +238 -0
  56. crackerjack/agents/base.py +167 -0
  57. crackerjack/agents/claude_code_bridge.py +641 -0
  58. crackerjack/agents/coordinator.py +600 -0
  59. crackerjack/agents/documentation_agent.py +520 -0
  60. crackerjack/agents/dry_agent.py +585 -0
  61. crackerjack/agents/enhanced_coordinator.py +279 -0
  62. crackerjack/agents/enhanced_proactive_agent.py +185 -0
  63. crackerjack/agents/error_middleware.py +53 -0
  64. crackerjack/agents/formatting_agent.py +230 -0
  65. crackerjack/agents/helpers/__init__.py +9 -0
  66. crackerjack/agents/helpers/performance/__init__.py +22 -0
  67. crackerjack/agents/helpers/performance/performance_ast_analyzer.py +357 -0
  68. crackerjack/agents/helpers/performance/performance_pattern_detector.py +909 -0
  69. crackerjack/agents/helpers/performance/performance_recommender.py +572 -0
  70. crackerjack/agents/helpers/refactoring/__init__.py +22 -0
  71. crackerjack/agents/helpers/refactoring/code_transformer.py +536 -0
  72. crackerjack/agents/helpers/refactoring/complexity_analyzer.py +344 -0
  73. crackerjack/agents/helpers/refactoring/dead_code_detector.py +437 -0
  74. crackerjack/agents/helpers/test_creation/__init__.py +19 -0
  75. crackerjack/agents/helpers/test_creation/test_ast_analyzer.py +216 -0
  76. crackerjack/agents/helpers/test_creation/test_coverage_analyzer.py +643 -0
  77. crackerjack/agents/helpers/test_creation/test_template_generator.py +1031 -0
  78. crackerjack/agents/import_optimization_agent.py +1181 -0
  79. crackerjack/agents/performance_agent.py +325 -0
  80. crackerjack/agents/performance_helpers.py +205 -0
  81. crackerjack/agents/proactive_agent.py +55 -0
  82. crackerjack/agents/refactoring_agent.py +511 -0
  83. crackerjack/agents/refactoring_helpers.py +247 -0
  84. crackerjack/agents/security_agent.py +793 -0
  85. crackerjack/agents/semantic_agent.py +479 -0
  86. crackerjack/agents/semantic_helpers.py +356 -0
  87. crackerjack/agents/test_creation_agent.py +570 -0
  88. crackerjack/agents/test_specialist_agent.py +526 -0
  89. crackerjack/agents/tracker.py +110 -0
  90. crackerjack/api.py +647 -0
  91. crackerjack/cli/README.md +394 -0
  92. crackerjack/cli/__init__.py +24 -0
  93. crackerjack/cli/cache_handlers.py +209 -0
  94. crackerjack/cli/cache_handlers_enhanced.py +680 -0
  95. crackerjack/cli/facade.py +162 -0
  96. crackerjack/cli/formatting.py +13 -0
  97. crackerjack/cli/handlers/__init__.py +85 -0
  98. crackerjack/cli/handlers/advanced.py +103 -0
  99. crackerjack/cli/handlers/ai_features.py +62 -0
  100. crackerjack/cli/handlers/analytics.py +479 -0
  101. crackerjack/cli/handlers/changelog.py +271 -0
  102. crackerjack/cli/handlers/config_handlers.py +16 -0
  103. crackerjack/cli/handlers/coverage.py +84 -0
  104. crackerjack/cli/handlers/documentation.py +280 -0
  105. crackerjack/cli/handlers/main_handlers.py +497 -0
  106. crackerjack/cli/handlers/monitoring.py +371 -0
  107. crackerjack/cli/handlers.py +700 -0
  108. crackerjack/cli/interactive.py +488 -0
  109. crackerjack/cli/options.py +1216 -0
  110. crackerjack/cli/semantic_handlers.py +292 -0
  111. crackerjack/cli/utils.py +19 -0
  112. crackerjack/cli/version.py +19 -0
  113. crackerjack/code_cleaner.py +1307 -0
  114. crackerjack/config/README.md +472 -0
  115. crackerjack/config/__init__.py +275 -0
  116. crackerjack/config/global_lock_config.py +207 -0
  117. crackerjack/config/hooks.py +390 -0
  118. crackerjack/config/loader.py +239 -0
  119. crackerjack/config/settings.py +141 -0
  120. crackerjack/config/tool_commands.py +331 -0
  121. crackerjack/core/README.md +393 -0
  122. crackerjack/core/__init__.py +0 -0
  123. crackerjack/core/async_workflow_orchestrator.py +738 -0
  124. crackerjack/core/autofix_coordinator.py +282 -0
  125. crackerjack/core/container.py +105 -0
  126. crackerjack/core/enhanced_container.py +583 -0
  127. crackerjack/core/file_lifecycle.py +472 -0
  128. crackerjack/core/performance.py +244 -0
  129. crackerjack/core/performance_monitor.py +357 -0
  130. crackerjack/core/phase_coordinator.py +1227 -0
  131. crackerjack/core/proactive_workflow.py +267 -0
  132. crackerjack/core/resource_manager.py +425 -0
  133. crackerjack/core/retry.py +275 -0
  134. crackerjack/core/service_watchdog.py +601 -0
  135. crackerjack/core/session_coordinator.py +239 -0
  136. crackerjack/core/timeout_manager.py +563 -0
  137. crackerjack/core/websocket_lifecycle.py +410 -0
  138. crackerjack/core/workflow/__init__.py +21 -0
  139. crackerjack/core/workflow/workflow_ai_coordinator.py +863 -0
  140. crackerjack/core/workflow/workflow_event_orchestrator.py +1107 -0
  141. crackerjack/core/workflow/workflow_issue_parser.py +714 -0
  142. crackerjack/core/workflow/workflow_phase_executor.py +1158 -0
  143. crackerjack/core/workflow/workflow_security_gates.py +400 -0
  144. crackerjack/core/workflow_orchestrator.py +2243 -0
  145. crackerjack/data/README.md +11 -0
  146. crackerjack/data/__init__.py +8 -0
  147. crackerjack/data/models.py +79 -0
  148. crackerjack/data/repository.py +210 -0
  149. crackerjack/decorators/README.md +180 -0
  150. crackerjack/decorators/__init__.py +35 -0
  151. crackerjack/decorators/error_handling.py +649 -0
  152. crackerjack/decorators/error_handling_decorators.py +334 -0
  153. crackerjack/decorators/helpers.py +58 -0
  154. crackerjack/decorators/patterns.py +281 -0
  155. crackerjack/decorators/utils.py +58 -0
  156. crackerjack/docs/INDEX.md +11 -0
  157. crackerjack/docs/README.md +11 -0
  158. crackerjack/docs/generated/api/API_REFERENCE.md +10895 -0
  159. crackerjack/docs/generated/api/CLI_REFERENCE.md +109 -0
  160. crackerjack/docs/generated/api/CROSS_REFERENCES.md +1755 -0
  161. crackerjack/docs/generated/api/PROTOCOLS.md +3 -0
  162. crackerjack/docs/generated/api/SERVICES.md +1252 -0
  163. crackerjack/documentation/README.md +11 -0
  164. crackerjack/documentation/__init__.py +31 -0
  165. crackerjack/documentation/ai_templates.py +756 -0
  166. crackerjack/documentation/dual_output_generator.py +767 -0
  167. crackerjack/documentation/mkdocs_integration.py +518 -0
  168. crackerjack/documentation/reference_generator.py +1065 -0
  169. crackerjack/dynamic_config.py +678 -0
  170. crackerjack/errors.py +378 -0
  171. crackerjack/events/README.md +11 -0
  172. crackerjack/events/__init__.py +16 -0
  173. crackerjack/events/telemetry.py +175 -0
  174. crackerjack/events/workflow_bus.py +346 -0
  175. crackerjack/exceptions/README.md +301 -0
  176. crackerjack/exceptions/__init__.py +5 -0
  177. crackerjack/exceptions/config.py +4 -0
  178. crackerjack/exceptions/tool_execution_error.py +245 -0
  179. crackerjack/executors/README.md +591 -0
  180. crackerjack/executors/__init__.py +13 -0
  181. crackerjack/executors/async_hook_executor.py +938 -0
  182. crackerjack/executors/cached_hook_executor.py +316 -0
  183. crackerjack/executors/hook_executor.py +1295 -0
  184. crackerjack/executors/hook_lock_manager.py +708 -0
  185. crackerjack/executors/individual_hook_executor.py +739 -0
  186. crackerjack/executors/lsp_aware_hook_executor.py +349 -0
  187. crackerjack/executors/progress_hook_executor.py +282 -0
  188. crackerjack/executors/tool_proxy.py +433 -0
  189. crackerjack/hooks/README.md +485 -0
  190. crackerjack/hooks/lsp_hook.py +93 -0
  191. crackerjack/intelligence/README.md +557 -0
  192. crackerjack/intelligence/__init__.py +37 -0
  193. crackerjack/intelligence/adaptive_learning.py +693 -0
  194. crackerjack/intelligence/agent_orchestrator.py +485 -0
  195. crackerjack/intelligence/agent_registry.py +377 -0
  196. crackerjack/intelligence/agent_selector.py +439 -0
  197. crackerjack/intelligence/integration.py +250 -0
  198. crackerjack/interactive.py +719 -0
  199. crackerjack/managers/README.md +369 -0
  200. crackerjack/managers/__init__.py +11 -0
  201. crackerjack/managers/async_hook_manager.py +135 -0
  202. crackerjack/managers/hook_manager.py +585 -0
  203. crackerjack/managers/publish_manager.py +631 -0
  204. crackerjack/managers/test_command_builder.py +391 -0
  205. crackerjack/managers/test_executor.py +474 -0
  206. crackerjack/managers/test_manager.py +1357 -0
  207. crackerjack/managers/test_progress.py +187 -0
  208. crackerjack/mcp/README.md +374 -0
  209. crackerjack/mcp/__init__.py +0 -0
  210. crackerjack/mcp/cache.py +352 -0
  211. crackerjack/mcp/client_runner.py +121 -0
  212. crackerjack/mcp/context.py +802 -0
  213. crackerjack/mcp/dashboard.py +657 -0
  214. crackerjack/mcp/enhanced_progress_monitor.py +493 -0
  215. crackerjack/mcp/file_monitor.py +394 -0
  216. crackerjack/mcp/progress_components.py +607 -0
  217. crackerjack/mcp/progress_monitor.py +1016 -0
  218. crackerjack/mcp/rate_limiter.py +336 -0
  219. crackerjack/mcp/server.py +24 -0
  220. crackerjack/mcp/server_core.py +526 -0
  221. crackerjack/mcp/service_watchdog.py +505 -0
  222. crackerjack/mcp/state.py +407 -0
  223. crackerjack/mcp/task_manager.py +259 -0
  224. crackerjack/mcp/tools/README.md +27 -0
  225. crackerjack/mcp/tools/__init__.py +19 -0
  226. crackerjack/mcp/tools/core_tools.py +469 -0
  227. crackerjack/mcp/tools/error_analyzer.py +283 -0
  228. crackerjack/mcp/tools/execution_tools.py +384 -0
  229. crackerjack/mcp/tools/intelligence_tool_registry.py +46 -0
  230. crackerjack/mcp/tools/intelligence_tools.py +264 -0
  231. crackerjack/mcp/tools/monitoring_tools.py +628 -0
  232. crackerjack/mcp/tools/proactive_tools.py +367 -0
  233. crackerjack/mcp/tools/progress_tools.py +222 -0
  234. crackerjack/mcp/tools/semantic_tools.py +584 -0
  235. crackerjack/mcp/tools/utility_tools.py +358 -0
  236. crackerjack/mcp/tools/workflow_executor.py +699 -0
  237. crackerjack/mcp/websocket/README.md +31 -0
  238. crackerjack/mcp/websocket/__init__.py +14 -0
  239. crackerjack/mcp/websocket/app.py +54 -0
  240. crackerjack/mcp/websocket/endpoints.py +492 -0
  241. crackerjack/mcp/websocket/event_bridge.py +188 -0
  242. crackerjack/mcp/websocket/jobs.py +406 -0
  243. crackerjack/mcp/websocket/monitoring/__init__.py +25 -0
  244. crackerjack/mcp/websocket/monitoring/api/__init__.py +19 -0
  245. crackerjack/mcp/websocket/monitoring/api/dependencies.py +141 -0
  246. crackerjack/mcp/websocket/monitoring/api/heatmap.py +154 -0
  247. crackerjack/mcp/websocket/monitoring/api/intelligence.py +199 -0
  248. crackerjack/mcp/websocket/monitoring/api/metrics.py +203 -0
  249. crackerjack/mcp/websocket/monitoring/api/telemetry.py +101 -0
  250. crackerjack/mcp/websocket/monitoring/dashboard.py +18 -0
  251. crackerjack/mcp/websocket/monitoring/factory.py +109 -0
  252. crackerjack/mcp/websocket/monitoring/filters.py +10 -0
  253. crackerjack/mcp/websocket/monitoring/metrics.py +64 -0
  254. crackerjack/mcp/websocket/monitoring/models.py +90 -0
  255. crackerjack/mcp/websocket/monitoring/utils.py +171 -0
  256. crackerjack/mcp/websocket/monitoring/websocket_manager.py +78 -0
  257. crackerjack/mcp/websocket/monitoring/websockets/__init__.py +17 -0
  258. crackerjack/mcp/websocket/monitoring/websockets/dependencies.py +126 -0
  259. crackerjack/mcp/websocket/monitoring/websockets/heatmap.py +176 -0
  260. crackerjack/mcp/websocket/monitoring/websockets/intelligence.py +291 -0
  261. crackerjack/mcp/websocket/monitoring/websockets/metrics.py +291 -0
  262. crackerjack/mcp/websocket/monitoring_endpoints.py +21 -0
  263. crackerjack/mcp/websocket/server.py +174 -0
  264. crackerjack/mcp/websocket/websocket_handler.py +276 -0
  265. crackerjack/mcp/websocket_server.py +10 -0
  266. crackerjack/models/README.md +308 -0
  267. crackerjack/models/__init__.py +40 -0
  268. crackerjack/models/config.py +730 -0
  269. crackerjack/models/config_adapter.py +265 -0
  270. crackerjack/models/protocols.py +1535 -0
  271. crackerjack/models/pydantic_models.py +320 -0
  272. crackerjack/models/qa_config.py +145 -0
  273. crackerjack/models/qa_results.py +134 -0
  274. crackerjack/models/resource_protocols.py +299 -0
  275. crackerjack/models/results.py +35 -0
  276. crackerjack/models/semantic_models.py +258 -0
  277. crackerjack/models/task.py +173 -0
  278. crackerjack/models/test_models.py +60 -0
  279. crackerjack/monitoring/README.md +11 -0
  280. crackerjack/monitoring/__init__.py +0 -0
  281. crackerjack/monitoring/ai_agent_watchdog.py +405 -0
  282. crackerjack/monitoring/metrics_collector.py +427 -0
  283. crackerjack/monitoring/regression_prevention.py +580 -0
  284. crackerjack/monitoring/websocket_server.py +406 -0
  285. crackerjack/orchestration/README.md +340 -0
  286. crackerjack/orchestration/__init__.py +43 -0
  287. crackerjack/orchestration/advanced_orchestrator.py +894 -0
  288. crackerjack/orchestration/cache/README.md +312 -0
  289. crackerjack/orchestration/cache/__init__.py +37 -0
  290. crackerjack/orchestration/cache/memory_cache.py +338 -0
  291. crackerjack/orchestration/cache/tool_proxy_cache.py +340 -0
  292. crackerjack/orchestration/config.py +297 -0
  293. crackerjack/orchestration/coverage_improvement.py +180 -0
  294. crackerjack/orchestration/execution_strategies.py +361 -0
  295. crackerjack/orchestration/hook_orchestrator.py +1398 -0
  296. crackerjack/orchestration/strategies/README.md +401 -0
  297. crackerjack/orchestration/strategies/__init__.py +39 -0
  298. crackerjack/orchestration/strategies/adaptive_strategy.py +630 -0
  299. crackerjack/orchestration/strategies/parallel_strategy.py +237 -0
  300. crackerjack/orchestration/strategies/sequential_strategy.py +299 -0
  301. crackerjack/orchestration/test_progress_streamer.py +647 -0
  302. crackerjack/plugins/README.md +11 -0
  303. crackerjack/plugins/__init__.py +15 -0
  304. crackerjack/plugins/base.py +200 -0
  305. crackerjack/plugins/hooks.py +254 -0
  306. crackerjack/plugins/loader.py +335 -0
  307. crackerjack/plugins/managers.py +264 -0
  308. crackerjack/py313.py +191 -0
  309. crackerjack/security/README.md +11 -0
  310. crackerjack/security/__init__.py +0 -0
  311. crackerjack/security/audit.py +197 -0
  312. crackerjack/services/README.md +374 -0
  313. crackerjack/services/__init__.py +9 -0
  314. crackerjack/services/ai/README.md +295 -0
  315. crackerjack/services/ai/__init__.py +7 -0
  316. crackerjack/services/ai/advanced_optimizer.py +878 -0
  317. crackerjack/services/ai/contextual_ai_assistant.py +542 -0
  318. crackerjack/services/ai/embeddings.py +444 -0
  319. crackerjack/services/ai/intelligent_commit.py +328 -0
  320. crackerjack/services/ai/predictive_analytics.py +510 -0
  321. crackerjack/services/anomaly_detector.py +392 -0
  322. crackerjack/services/api_extractor.py +617 -0
  323. crackerjack/services/backup_service.py +467 -0
  324. crackerjack/services/bounded_status_operations.py +530 -0
  325. crackerjack/services/cache.py +369 -0
  326. crackerjack/services/changelog_automation.py +399 -0
  327. crackerjack/services/command_execution_service.py +305 -0
  328. crackerjack/services/config_integrity.py +132 -0
  329. crackerjack/services/config_merge.py +546 -0
  330. crackerjack/services/config_service.py +198 -0
  331. crackerjack/services/config_template.py +493 -0
  332. crackerjack/services/coverage_badge_service.py +173 -0
  333. crackerjack/services/coverage_ratchet.py +381 -0
  334. crackerjack/services/debug.py +733 -0
  335. crackerjack/services/dependency_analyzer.py +460 -0
  336. crackerjack/services/dependency_monitor.py +622 -0
  337. crackerjack/services/documentation_generator.py +493 -0
  338. crackerjack/services/documentation_service.py +704 -0
  339. crackerjack/services/enhanced_filesystem.py +497 -0
  340. crackerjack/services/enterprise_optimizer.py +865 -0
  341. crackerjack/services/error_pattern_analyzer.py +676 -0
  342. crackerjack/services/file_filter.py +221 -0
  343. crackerjack/services/file_hasher.py +149 -0
  344. crackerjack/services/file_io_service.py +361 -0
  345. crackerjack/services/file_modifier.py +615 -0
  346. crackerjack/services/filesystem.py +381 -0
  347. crackerjack/services/git.py +422 -0
  348. crackerjack/services/health_metrics.py +615 -0
  349. crackerjack/services/heatmap_generator.py +744 -0
  350. crackerjack/services/incremental_executor.py +380 -0
  351. crackerjack/services/initialization.py +823 -0
  352. crackerjack/services/input_validator.py +668 -0
  353. crackerjack/services/intelligent_commit.py +327 -0
  354. crackerjack/services/log_manager.py +289 -0
  355. crackerjack/services/logging.py +228 -0
  356. crackerjack/services/lsp_client.py +628 -0
  357. crackerjack/services/memory_optimizer.py +414 -0
  358. crackerjack/services/metrics.py +587 -0
  359. crackerjack/services/monitoring/README.md +30 -0
  360. crackerjack/services/monitoring/__init__.py +9 -0
  361. crackerjack/services/monitoring/dependency_monitor.py +678 -0
  362. crackerjack/services/monitoring/error_pattern_analyzer.py +676 -0
  363. crackerjack/services/monitoring/health_metrics.py +716 -0
  364. crackerjack/services/monitoring/metrics.py +587 -0
  365. crackerjack/services/monitoring/performance_benchmarks.py +410 -0
  366. crackerjack/services/monitoring/performance_cache.py +388 -0
  367. crackerjack/services/monitoring/performance_monitor.py +569 -0
  368. crackerjack/services/parallel_executor.py +527 -0
  369. crackerjack/services/pattern_cache.py +333 -0
  370. crackerjack/services/pattern_detector.py +478 -0
  371. crackerjack/services/patterns/__init__.py +142 -0
  372. crackerjack/services/patterns/agents.py +107 -0
  373. crackerjack/services/patterns/code/__init__.py +15 -0
  374. crackerjack/services/patterns/code/detection.py +118 -0
  375. crackerjack/services/patterns/code/imports.py +107 -0
  376. crackerjack/services/patterns/code/paths.py +159 -0
  377. crackerjack/services/patterns/code/performance.py +119 -0
  378. crackerjack/services/patterns/code/replacement.py +36 -0
  379. crackerjack/services/patterns/core.py +212 -0
  380. crackerjack/services/patterns/documentation/__init__.py +14 -0
  381. crackerjack/services/patterns/documentation/badges_markdown.py +96 -0
  382. crackerjack/services/patterns/documentation/comments_blocks.py +83 -0
  383. crackerjack/services/patterns/documentation/docstrings.py +89 -0
  384. crackerjack/services/patterns/formatting.py +226 -0
  385. crackerjack/services/patterns/operations.py +339 -0
  386. crackerjack/services/patterns/security/__init__.py +23 -0
  387. crackerjack/services/patterns/security/code_injection.py +122 -0
  388. crackerjack/services/patterns/security/credentials.py +190 -0
  389. crackerjack/services/patterns/security/path_traversal.py +221 -0
  390. crackerjack/services/patterns/security/unsafe_operations.py +216 -0
  391. crackerjack/services/patterns/templates.py +62 -0
  392. crackerjack/services/patterns/testing/__init__.py +18 -0
  393. crackerjack/services/patterns/testing/error_patterns.py +107 -0
  394. crackerjack/services/patterns/testing/pytest_output.py +126 -0
  395. crackerjack/services/patterns/tool_output/__init__.py +16 -0
  396. crackerjack/services/patterns/tool_output/bandit.py +72 -0
  397. crackerjack/services/patterns/tool_output/other.py +97 -0
  398. crackerjack/services/patterns/tool_output/pyright.py +67 -0
  399. crackerjack/services/patterns/tool_output/ruff.py +44 -0
  400. crackerjack/services/patterns/url_sanitization.py +114 -0
  401. crackerjack/services/patterns/utilities.py +42 -0
  402. crackerjack/services/patterns/utils.py +339 -0
  403. crackerjack/services/patterns/validation.py +46 -0
  404. crackerjack/services/patterns/versioning.py +62 -0
  405. crackerjack/services/predictive_analytics.py +523 -0
  406. crackerjack/services/profiler.py +280 -0
  407. crackerjack/services/quality/README.md +415 -0
  408. crackerjack/services/quality/__init__.py +11 -0
  409. crackerjack/services/quality/anomaly_detector.py +392 -0
  410. crackerjack/services/quality/pattern_cache.py +333 -0
  411. crackerjack/services/quality/pattern_detector.py +479 -0
  412. crackerjack/services/quality/qa_orchestrator.py +491 -0
  413. crackerjack/services/quality/quality_baseline.py +395 -0
  414. crackerjack/services/quality/quality_baseline_enhanced.py +649 -0
  415. crackerjack/services/quality/quality_intelligence.py +949 -0
  416. crackerjack/services/regex_patterns.py +58 -0
  417. crackerjack/services/regex_utils.py +483 -0
  418. crackerjack/services/secure_path_utils.py +524 -0
  419. crackerjack/services/secure_status_formatter.py +450 -0
  420. crackerjack/services/secure_subprocess.py +635 -0
  421. crackerjack/services/security.py +239 -0
  422. crackerjack/services/security_logger.py +495 -0
  423. crackerjack/services/server_manager.py +411 -0
  424. crackerjack/services/smart_scheduling.py +167 -0
  425. crackerjack/services/status_authentication.py +460 -0
  426. crackerjack/services/status_security_manager.py +315 -0
  427. crackerjack/services/terminal_utils.py +0 -0
  428. crackerjack/services/thread_safe_status_collector.py +441 -0
  429. crackerjack/services/tool_filter.py +368 -0
  430. crackerjack/services/tool_version_service.py +43 -0
  431. crackerjack/services/unified_config.py +115 -0
  432. crackerjack/services/validation_rate_limiter.py +220 -0
  433. crackerjack/services/vector_store.py +689 -0
  434. crackerjack/services/version_analyzer.py +461 -0
  435. crackerjack/services/version_checker.py +223 -0
  436. crackerjack/services/websocket_resource_limiter.py +438 -0
  437. crackerjack/services/zuban_lsp_service.py +391 -0
  438. crackerjack/slash_commands/README.md +11 -0
  439. crackerjack/slash_commands/__init__.py +59 -0
  440. crackerjack/slash_commands/init.md +112 -0
  441. crackerjack/slash_commands/run.md +197 -0
  442. crackerjack/slash_commands/status.md +127 -0
  443. crackerjack/tools/README.md +11 -0
  444. crackerjack/tools/__init__.py +30 -0
  445. crackerjack/tools/_git_utils.py +105 -0
  446. crackerjack/tools/check_added_large_files.py +139 -0
  447. crackerjack/tools/check_ast.py +105 -0
  448. crackerjack/tools/check_json.py +103 -0
  449. crackerjack/tools/check_jsonschema.py +297 -0
  450. crackerjack/tools/check_toml.py +103 -0
  451. crackerjack/tools/check_yaml.py +110 -0
  452. crackerjack/tools/codespell_wrapper.py +72 -0
  453. crackerjack/tools/end_of_file_fixer.py +202 -0
  454. crackerjack/tools/format_json.py +128 -0
  455. crackerjack/tools/mdformat_wrapper.py +114 -0
  456. crackerjack/tools/trailing_whitespace.py +198 -0
  457. crackerjack/tools/validate_input_validator_patterns.py +236 -0
  458. crackerjack/tools/validate_regex_patterns.py +188 -0
  459. crackerjack/ui/README.md +11 -0
  460. crackerjack/ui/__init__.py +1 -0
  461. crackerjack/ui/dashboard_renderer.py +28 -0
  462. crackerjack/ui/templates/README.md +11 -0
  463. crackerjack/utils/console_utils.py +13 -0
  464. crackerjack/utils/dependency_guard.py +230 -0
  465. crackerjack/utils/retry_utils.py +275 -0
  466. crackerjack/workflows/README.md +590 -0
  467. crackerjack/workflows/__init__.py +46 -0
  468. crackerjack/workflows/actions.py +811 -0
  469. crackerjack/workflows/auto_fix.py +444 -0
  470. crackerjack/workflows/container_builder.py +499 -0
  471. crackerjack/workflows/definitions.py +443 -0
  472. crackerjack/workflows/engine.py +177 -0
  473. crackerjack/workflows/event_bridge.py +242 -0
  474. crackerjack-0.45.2.dist-info/METADATA +1678 -0
  475. crackerjack-0.45.2.dist-info/RECORD +478 -0
  476. {crackerjack-0.18.2.dist-info → crackerjack-0.45.2.dist-info}/WHEEL +1 -1
  477. crackerjack-0.45.2.dist-info/entry_points.txt +2 -0
  478. crackerjack/.gitignore +0 -14
  479. crackerjack/.libcst.codemod.yaml +0 -18
  480. crackerjack/.pdm.toml +0 -1
  481. crackerjack/.pre-commit-config.yaml +0 -91
  482. crackerjack/.pytest_cache/.gitignore +0 -2
  483. crackerjack/.pytest_cache/CACHEDIR.TAG +0 -4
  484. crackerjack/.pytest_cache/README.md +0 -8
  485. crackerjack/.pytest_cache/v/cache/nodeids +0 -1
  486. crackerjack/.pytest_cache/v/cache/stepwise +0 -1
  487. crackerjack/.ruff_cache/.gitignore +0 -1
  488. crackerjack/.ruff_cache/0.1.11/3256171999636029978 +0 -0
  489. crackerjack/.ruff_cache/0.1.14/602324811142551221 +0 -0
  490. crackerjack/.ruff_cache/0.1.4/10355199064880463147 +0 -0
  491. crackerjack/.ruff_cache/0.1.6/15140459877605758699 +0 -0
  492. crackerjack/.ruff_cache/0.1.7/1790508110482614856 +0 -0
  493. crackerjack/.ruff_cache/0.1.9/17041001205004563469 +0 -0
  494. crackerjack/.ruff_cache/0.11.2/4070660268492669020 +0 -0
  495. crackerjack/.ruff_cache/0.11.3/9818742842212983150 +0 -0
  496. crackerjack/.ruff_cache/0.11.4/9818742842212983150 +0 -0
  497. crackerjack/.ruff_cache/0.11.6/3557596832929915217 +0 -0
  498. crackerjack/.ruff_cache/0.11.7/10386934055395314831 +0 -0
  499. crackerjack/.ruff_cache/0.11.7/3557596832929915217 +0 -0
  500. crackerjack/.ruff_cache/0.11.8/530407680854991027 +0 -0
  501. crackerjack/.ruff_cache/0.2.0/10047773857155985907 +0 -0
  502. crackerjack/.ruff_cache/0.2.1/8522267973936635051 +0 -0
  503. crackerjack/.ruff_cache/0.2.2/18053836298936336950 +0 -0
  504. crackerjack/.ruff_cache/0.3.0/12548816621480535786 +0 -0
  505. crackerjack/.ruff_cache/0.3.3/11081883392474770722 +0 -0
  506. crackerjack/.ruff_cache/0.3.4/676973378459347183 +0 -0
  507. crackerjack/.ruff_cache/0.3.5/16311176246009842383 +0 -0
  508. crackerjack/.ruff_cache/0.5.7/1493622539551733492 +0 -0
  509. crackerjack/.ruff_cache/0.5.7/6231957614044513175 +0 -0
  510. crackerjack/.ruff_cache/0.5.7/9932762556785938009 +0 -0
  511. crackerjack/.ruff_cache/0.6.0/11982804814124138945 +0 -0
  512. crackerjack/.ruff_cache/0.6.0/12055761203849489982 +0 -0
  513. crackerjack/.ruff_cache/0.6.2/1206147804896221174 +0 -0
  514. crackerjack/.ruff_cache/0.6.4/1206147804896221174 +0 -0
  515. crackerjack/.ruff_cache/0.6.5/1206147804896221174 +0 -0
  516. crackerjack/.ruff_cache/0.6.7/3657366982708166874 +0 -0
  517. crackerjack/.ruff_cache/0.6.9/285614542852677309 +0 -0
  518. crackerjack/.ruff_cache/0.7.1/1024065805990144819 +0 -0
  519. crackerjack/.ruff_cache/0.7.1/285614542852677309 +0 -0
  520. crackerjack/.ruff_cache/0.7.3/16061516852537040135 +0 -0
  521. crackerjack/.ruff_cache/0.8.4/16354268377385700367 +0 -0
  522. crackerjack/.ruff_cache/0.9.10/12813592349865671909 +0 -0
  523. crackerjack/.ruff_cache/0.9.10/923908772239632759 +0 -0
  524. crackerjack/.ruff_cache/0.9.3/13948373885254993391 +0 -0
  525. crackerjack/.ruff_cache/0.9.9/12813592349865671909 +0 -0
  526. crackerjack/.ruff_cache/0.9.9/8843823720003377982 +0 -0
  527. crackerjack/.ruff_cache/CACHEDIR.TAG +0 -1
  528. crackerjack/crackerjack.py +0 -855
  529. crackerjack/pyproject.toml +0 -214
  530. crackerjack-0.18.2.dist-info/METADATA +0 -420
  531. crackerjack-0.18.2.dist-info/RECORD +0 -59
  532. crackerjack-0.18.2.dist-info/entry_points.txt +0 -4
  533. {crackerjack-0.18.2.dist-info → crackerjack-0.45.2.dist-info}/licenses/LICENSE +0 -0
@@ -1,214 +0,0 @@
1
- [tool.pytest.ini_options]
2
- addopts = "--cov=crackerjack --cov-report=term"
3
- asyncio_default_fixture_loop_scope = "function"
4
- python_files = ["test_*.py", "*_test.py"]
5
- asyncio_mode = "auto"
6
- testpaths = ["tests", "crackerjack"]
7
- python_classes = ["Test*"]
8
- python_functions = ["test_*"]
9
-
10
- [tool.coverage.run]
11
- branch = false
12
- source = ["crackerjack"]
13
- data_file = ".coverage"
14
- parallel = false
15
- omit = [
16
- "*/tests/*",
17
- "*/site-packages/*",
18
- "*/__pycache__/*",
19
- "*/__init__.py",
20
- "*/_version.py", "*/conftest.py", "*/test_*.py", "*/_test.py"
21
- ]
22
-
23
- [tool.coverage.report]
24
- exclude_also = [
25
- "pragma: no cover",
26
- "def __repr__",
27
- "raise NotImplementedError",
28
- "if __name__ == .__main__.:",
29
- "pass",
30
- "raise ImportError",
31
- "except ImportError",
32
- "def __str__",
33
- "@abstractmethod",
34
- ]
35
- ignore_errors = false
36
-
37
- [tool.codespell]
38
- skip = "*/data/*"
39
- quiet-level = 3
40
- ignore-words-list = "crate,uptodate"
41
-
42
- [tool.ruff]
43
- line-length = 88
44
- target-version = "py313"
45
- fix = true
46
- show-fixes = true
47
- output-format = "full"
48
- unsafe-fixes = true
49
-
50
- [tool.ruff.format]
51
- docstring-code-format = true
52
-
53
- [tool.ruff.lint]
54
- ignore = [
55
- "F821",
56
- "D100",
57
- "D101",
58
- "D102",
59
- "D103",
60
- "D104",
61
- "D105",
62
- "D106",
63
- "D107",
64
- ]
65
- extend-select = [
66
- "I",
67
- "C901",
68
- "D",
69
- ]
70
-
71
- [tool.ruff.lint.isort]
72
- no-lines-before = [
73
- "first-party",
74
- ]
75
-
76
- [tool.ruff.lint.mccabe]
77
- max-complexity = 13
78
-
79
- [tool.ruff.lint.pydocstyle]
80
- convention = "google"
81
-
82
- [tool.vulture]
83
- min_confidence = 86
84
- paths = ["crackerjack",]
85
- ignore_names = ["cls"]
86
-
87
- [tool.creosote]
88
- paths = [
89
- "crackerjack",
90
- ]
91
- deps-file = "pyproject.toml"
92
- exclude-deps = [
93
- "pdm-bump",
94
- "autotyping",
95
- "pre-commit",
96
- "pytest",
97
- "pytest-asyncio",
98
- "pytest-cov",
99
- "pytest-mock",
100
- "pdm",
101
- "pyfiglet",
102
- "pyyaml",
103
- "uv",
104
- "tomli-w",
105
- "google-crc32c",
106
- "pytest-timeout",
107
- ]
108
-
109
- [tool.refurb]
110
- enable_all = true
111
-
112
- [tool.bandit]
113
- target = [
114
- "crackerjack",
115
- ]
116
- skips = [
117
- "B101",
118
- "B301",
119
- "B311",
120
- "B403",
121
- "B404",
122
- "B602",
123
- "B603",
124
- "B607",
125
- "B704",
126
- ]
127
-
128
- [tool.pyright]
129
- verboseOutput = true
130
- include = [
131
- "crackerjack",
132
- ]
133
- exclude = [
134
- "scratch",
135
- ]
136
- extraPaths = [
137
- ".venv/lib/python3.13/site-packages/",
138
- ]
139
- typeCheckingMode = "strict"
140
- reportMissingTypeStubs = false
141
- reportOptionalMemberAccess = false
142
- reportOptionalCall = false
143
- reportUnknownMemberType = false
144
- reportUnknownVariableType = false
145
- reportUnknownArgumentType = false
146
- reportInvalidTypeForm = false
147
- reportUnknownLambdaType = false
148
- reportUnknownParameterType = "warning"
149
- reportPrivateUsage = false
150
- pythonVersion = "3.13"
151
- pythonPlatform = "Darwin"
152
-
153
- [project]
154
- name = "crackerjack"
155
- version = "0.18.1"
156
- description = "Default template for PDM package"
157
- requires-python = ">=3.13"
158
- readme = "README.md"
159
- keywords = [
160
- "black",
161
- "ruff",
162
- "mypy",
163
- "creosote",
164
- "refurb",
165
- ]
166
- classifiers = [
167
- "Environment :: Console",
168
- "Operating System :: POSIX",
169
- "Programming Language :: Python",
170
- "Programming Language :: Python :: 3.13",
171
- "Development Status :: 4 - Beta",
172
- "Topic :: Software Development :: Libraries :: Python Modules",
173
- "Topic :: Software Development :: Quality Assurance",
174
- "Topic :: Software Development :: Testing",
175
- "Topic :: Utilities",
176
- "Topic :: Software Development :: Libraries :: Python Modules",
177
- "License :: OSI Approved :: BSD License",
178
- "Typing :: Typed",
179
- ]
180
- dependencies = [
181
- "autotyping>=24.9.0",
182
- "pre-commit>=4.2.0",
183
- "pytest>=8.3.5",
184
- "pydantic>=2.11.4",
185
- "pdm-bump>=0.9.12",
186
- "pdm>=2.24.1",
187
- "uv>=0.7.3",
188
- "pytest-cov>=6.1.1",
189
- "pytest-mock>=3.14.0",
190
- "tomli-w>=1.2.0",
191
- "pytest-asyncio>=0.26.0",
192
- "rich>=14.0.0",
193
- "typer>=0.15.3",
194
- "pytest-timeout>=2.4.0",
195
- ]
196
- authors = [
197
- { name = "lesleslie", email = "les@wedgwoodwebworks.com" },
198
- ]
199
- maintainers = [
200
- { name = "lesleslie", email = "les@wedgwoodwebworks.com" },
201
- ]
202
-
203
- [project.license]
204
- text = "BSD-3-CLAUSE"
205
-
206
- [project.urls]
207
- homepage = "https://github.com/lesleslie/crackerjack"
208
- documentation = "https://github.com/lesleslie/crackerjack"
209
- repository = "https://github.com/lesleslie/crackerjack"
210
-
211
-
212
- [build-system]
213
- requires = ["pdm-backend"]
214
- build-backend = "pdm.backend"
@@ -1,420 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: crackerjack
3
- Version: 0.18.2
4
- Summary: Default template for PDM package
5
- Keywords: black,ruff,mypy,creosote,refurb
6
- Author-Email: lesleslie <les@wedgwoodwebworks.com>
7
- Maintainer-Email: lesleslie <les@wedgwoodwebworks.com>
8
- License: BSD-3-CLAUSE
9
- Classifier: Environment :: Console
10
- Classifier: Operating System :: POSIX
11
- Classifier: Programming Language :: Python
12
- Classifier: Programming Language :: Python :: 3.13
13
- Classifier: Development Status :: 4 - Beta
14
- Classifier: Topic :: Software Development :: Libraries :: Python Modules
15
- Classifier: Topic :: Software Development :: Quality Assurance
16
- Classifier: Topic :: Software Development :: Testing
17
- Classifier: Topic :: Utilities
18
- Classifier: Topic :: Software Development :: Libraries :: Python Modules
19
- Classifier: License :: OSI Approved :: BSD License
20
- Classifier: Typing :: Typed
21
- Project-URL: homepage, https://github.com/lesleslie/crackerjack
22
- Project-URL: documentation, https://github.com/lesleslie/crackerjack
23
- Project-URL: repository, https://github.com/lesleslie/crackerjack
24
- Requires-Python: >=3.13
25
- Requires-Dist: autotyping>=24.9.0
26
- Requires-Dist: pre-commit>=4.2.0
27
- Requires-Dist: pytest>=8.3.5
28
- Requires-Dist: pydantic>=2.11.4
29
- Requires-Dist: pdm-bump>=0.9.12
30
- Requires-Dist: pdm>=2.24.1
31
- Requires-Dist: uv>=0.7.3
32
- Requires-Dist: pytest-cov>=6.1.1
33
- Requires-Dist: pytest-mock>=3.14.0
34
- Requires-Dist: tomli-w>=1.2.0
35
- Requires-Dist: pytest-asyncio>=0.26.0
36
- Requires-Dist: rich>=14.0.0
37
- Requires-Dist: typer>=0.15.3
38
- Requires-Dist: pytest-timeout>=2.4.0
39
- Description-Content-Type: text/markdown
40
-
41
- # Crackerjack: Elevate Your Python Development
42
-
43
- [![Code style: crackerjack](https://img.shields.io/badge/code%20style-crackerjack-000042)](https://github.com/lesleslie/crackerjack)
44
- [![Python: 3.13+](https://img.shields.io/badge/python-3.13%2B-green)](https://www.python.org/downloads/)
45
- [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
46
- [![uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://github.com/astral-sh/uv)
47
- [![Checked with pyright](https://microsoft.github.io/pyright/img/pyright_badge.svg)](https://microsoft.github.io/pyright/)
48
- [![pdm-managed](https://img.shields.io/badge/pdm-managed-blueviolet)](https://pdm.fming.dev)
49
- [![security: bandit](https://img.shields.io/badge/security-bandit-yellow.svg)](https://github.com/PyCQA/bandit)
50
- [![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause)
51
-
52
- **Crackerjack** (`ˈkra-kər-ˌjak`): *a person or thing of marked excellence.*
53
-
54
- ## What is Crackerjack?
55
-
56
- Crackerjack is an opinionated Python project management tool that streamlines the entire development lifecycle. It combines best-in-class tools into a unified workflow, allowing you to focus on writing code rather than configuring tools.
57
-
58
- ### Why Choose Crackerjack?
59
-
60
- Crackerjack solves three critical challenges in Python development:
61
-
62
- 1. **Project Setup & Configuration**
63
- - **Challenge**: Setting up Python projects with best practices requires knowledge of numerous tools and configurations
64
- - **Solution**: Crackerjack automates project initialization with pre-configured templates and industry best practices
65
-
66
- 2. **Code Quality & Consistency**
67
- - **Challenge**: Maintaining consistent code quality across a project and team requires constant vigilance
68
- - **Solution**: Crackerjack enforces a unified style through integrated linting, formatting, and pre-commit hooks
69
-
70
- 3. **Streamlined Publishing**
71
- - **Challenge**: Publishing Python packages involves many manual, error-prone steps
72
- - **Solution**: Crackerjack automates the entire release process from testing to version bumping to publishing
73
-
74
- Crackerjack integrates powerful tools like Ruff, PDM, pre-commit, pytest, and more into a cohesive system that ensures code quality, consistency, and reliability. It's designed for developers who value both productivity and excellence.
75
-
76
- ---
77
-
78
- ## Getting Started
79
-
80
- ### Quick Start
81
-
82
- If you're new to Crackerjack, follow these steps:
83
- 1. **Install Python 3.13:** Ensure you have Python 3.13 installed.
84
- 2. **Install PDM:**
85
- ```
86
- pipx install pdm
87
- ```
88
- 3. **Install Crackerjack:**
89
- ```
90
- pip install crackerjack
91
- ```
92
-
93
- 4. **Initialize a New Project:**
94
- Navigate to your project's root directory and run:
95
- ```
96
- python -m crackerjack
97
- ```
98
-
99
- ---
100
-
101
- ## The Crackerjack Philosophy
102
-
103
- Crackerjack is built on the following core principles:
104
-
105
- - **Code Clarity:** Code should be easy to read, understand, and maintain.
106
- - **Automation:** Tedious tasks should be automated, allowing developers to focus on solving problems.
107
- - **Consistency:** Code style, formatting, and project structure should be consistent across projects.
108
- - **Reliability:** Tests are essential, and code should be checked rigorously.
109
- - **Tool Integration:** Leverage powerful existing tools instead of reinventing the wheel.
110
- - **Static Typing:** Static typing is essential for all development.
111
-
112
- ## Key Features
113
-
114
- ### Project Management
115
- - **Effortless Project Setup:** Initializes new Python projects with a standard directory structure, `pyproject.toml`, and essential configuration files
116
- - **PDM Integration:** Manages dependencies and virtual environments using [PDM](https://pdm.fming.dev/) with [uv](https://github.com/astral-sh/uv) for lightning-fast package operations
117
- - **Dependency Management:** Automatically detects and manages project dependencies
118
-
119
- ### Code Quality
120
- - **Automated Code Cleaning:** Removes unnecessary docstrings, line comments, and trailing whitespace
121
- - **Consistent Code Formatting:** Enforces a unified style using [Ruff](https://github.com/astral-sh/ruff), the lightning-fast Python linter and formatter
122
- - **Comprehensive Pre-commit Hooks:** Installs and manages a robust suite of pre-commit hooks (see the "Pre-commit Hooks" section below)
123
- - **Interactive Checks:** Supports interactive pre-commit hooks (like `refurb`, `bandit`, and `pyright`) to fix issues in real-time
124
- - **Static Type Checking:** Enforces type safety with Pyright integration
125
-
126
- ### Testing & Deployment
127
- - **Built-in Testing:** Automatically runs tests using `pytest`
128
- - **Easy Version Bumping:** Provides commands to bump the project version (micro, minor, or major)
129
- - **Simplified Publishing:** Automates publishing to PyPI via PDM
130
-
131
- ### Git Integration
132
- - **Commit and Push:** Commits and pushes your changes with standardized commit messages
133
- - **Pull Request Creation:** Creates pull requests to upstream repositories on GitHub or GitLab
134
- - **Pre-commit Integration:** Ensures code quality before commits
135
-
136
- ### Developer Experience
137
- - **Command-Line Interface:** Simple, intuitive CLI with comprehensive options
138
- - **Programmatic API:** Can be integrated into your own Python scripts and workflows
139
- - **AI Agent Integration:** Structured output format for integration with AI assistants
140
- - **Verbose Mode:** Detailed output for debugging and understanding what's happening
141
-
142
- ## Pre-commit Hooks
143
-
144
- Crackerjack automatically installs and manages these pre-commit hooks:
145
-
146
- 1. **pdm-lock-check:** Ensures the `pdm.lock` file is up to date.
147
- 2. **Core pre-commit-hooks:** Essential hooks from [pre-commit-hooks](https://github.com/pre-commit/pre-commit-hooks) (e.g., `trailing-whitespace`, `end-of-file-fixer`).
148
- 3. **Ruff:** [Ruff](https://github.com/astral-sh/ruff) for linting, code formatting, and general code style enforcement.
149
- 4. **Vulture:** [Vulture](https://github.com/jendrikseipp/vulture) to identify dead code.
150
- 5. **Creosote:** [Creosote](https://github.com/fredrikaverpil/creosote) to detect unused dependencies.
151
- 6. **Flynt:** [Flynt](https://github.com/ikamensh/flynt/) for converting string formatting to f-strings.
152
- 7. **Codespell:** [Codespell](https://github.com/codespell-project/codespell) for correcting typos in the code.
153
- 8. **Autotyping:** [Autotyping](https://github.com/JelleZijlstra/autotyping) for adding type hints.
154
- 9. **Refurb:** [Refurb](https://github.com/dosisod/refurb) to suggest code improvements.
155
- 10. **Bandit:** [Bandit](https://github.com/PyCQA/bandit) to identify potential security vulnerabilities.
156
- 11. **Pyright:** [Pyright](https://github.com/RobertCraigie/pyright-python) for static type checking.
157
- 12. **Ruff (again):** A final Ruff pass to ensure all changes comply with the enforced style.
158
-
159
- ## The Crackerjack Style Guide
160
-
161
- Crackerjack projects adhere to these guidelines:
162
-
163
- - **Static Typing:** Use type hints consistently throughout your code.
164
- - **Modern Type Hints:** Use the pipe operator (`|`) for union types (e.g., `Path | None` instead of `Optional[Path]`).
165
- - **Explicit Naming:** Choose clear, descriptive names for classes, functions, variables, and other identifiers.
166
- - **Markdown for Documentation:** Use Markdown (`.md`) for all documentation, READMEs, etc.
167
- - **Pathlib:** Use `pathlib.Path` for handling file and directory paths instead of `os.path`.
168
- - **Consistent Imports:** Use `import typing as t` for type hinting and prefix all typing references with `t.`.
169
- - **Protocol-Based Design:** Use `t.Protocol` for interface definitions instead of abstract base classes.
170
- - **Constants and Config:** Do not use all-caps for constants or configuration settings.
171
- - **Path Parameters:** Functions that handle file operations should accept `pathlib.Path` objects as parameters.
172
- - **Dependency Management:** Use PDM for dependency management, package building, and publishing.
173
- - **Testing:** Use pytest as your testing framework.
174
- - **Python Version:** Crackerjack projects target Python 3.13+ and use the latest language features.
175
- - **Clear Code:** Avoid overly complex code.
176
- - **Modular:** Functions should do one thing well.
177
-
178
- ## Installation
179
-
180
- 1. **Python:** Ensure you have Python 3.13 installed.
181
- 2. **PDM:** Install [PDM](https://pdm.fming.dev/) using `pipx`:
182
-
183
- ```
184
- pipx install pdm
185
- ```
186
-
187
- 3. **Crackerjack:** Install Crackerjack and initialize in your project root using:
188
- ```
189
- pip install crackerjack
190
- cd your_project_root
191
- python -m crackerjack
192
- ```
193
-
194
- ## Usage
195
-
196
- ### Command Line
197
-
198
- Run Crackerjack from the root of your Python project using:
199
-
200
- python -m crackerjack
201
-
202
- ### Programmatic API
203
-
204
- You can also use Crackerjack programmatically in your Python code:
205
-
206
- ```python
207
- import typing as t
208
- from pathlib import Path
209
- from rich.console import Console
210
- from crackerjack import create_crackerjack_runner
211
-
212
- # Create a custom options object
213
- class MyOptions:
214
- def __init__(self):
215
- # Core options
216
- self.commit = False # Commit changes to Git
217
- self.interactive = True # Run pre-commit hooks interactively
218
- self.verbose = True # Enable verbose output
219
-
220
- # Configuration options
221
- self.no_config_updates = False # Skip updating config files
222
- self.update_precommit = False # Update pre-commit hooks
223
- self.doc = False # Generate documentation (not implemented yet)
224
-
225
- # Process options
226
- self.clean = True # Clean code (remove docstrings, comments, etc.)
227
- self.test = True # Run tests using pytest
228
- self.skip_hooks = False # Skip running pre-commit hooks
229
-
230
- # Version and publishing options
231
- self.publish = None # Publish to PyPI (micro, minor, major)
232
- self.bump = "micro" # Bump version (micro, minor, major)
233
- self.all = None # Run with -x -t -p <version> -c
234
-
235
- # Git options
236
- self.create_pr = False # Create a pull request
237
-
238
- # Integration options
239
- self.ai_agent = False # Enable AI agent structured output
240
-
241
- # Create a Crackerjack runner with custom settings
242
- runner = create_crackerjack_runner(
243
- console=Console(force_terminal=True), # Rich console for pretty output
244
- pkg_path=Path.cwd(), # Path to your project
245
- python_version="3.13", # Target Python version
246
- dry_run=False # Set to True to simulate without changes
247
- )
248
-
249
- # Run Crackerjack with your options
250
- runner.process(MyOptions())
251
- ```
252
-
253
-
254
- ### Command-Line Options
255
-
256
- - `-c`, `--commit`: Commit changes to Git.
257
- - `-i`, `--interactive`: Run pre-commit hooks interactively when possible.
258
- - `-n`, `--no-config-updates`: Skip updating configuration files (e.g., `pyproject.toml`).
259
- - `-u`, `--update-precommit`: Update pre-commit hooks to the latest versions.
260
- - `-d`, `--doc`: Generate documentation. (not yet implemented)
261
- - `-v`, `--verbose`: Enable verbose output.
262
- - `-p`, `--publish <micro|minor|major>`: Bump the project version and publish to PyPI using PDM.
263
- - `-b`, `--bump <micro|minor|major>`: Bump the project version without publishing.
264
- - `-r`, `--pr`: Create a pull request to the upstream repository.
265
- - `-s`, `--skip-hooks`: Skip running pre-commit hooks (useful with `-t`).
266
- - `-x`, `--clean`: Clean code by removing docstrings, line comments, and extra whitespace.
267
- - `-t`, `--test`: Run tests using `pytest`.
268
- - `-a`, `--all`: Run with `-x -t -p <micro|minor|major> -c` development options.
269
- - `--ai-agent`: Enable AI agent mode with structured output (see [AI Agent Integration](#ai-agent-integration)).
270
- - `--help`: Display help.
271
-
272
- ### Example Workflows
273
-
274
- #### Development Workflows
275
-
276
- - **Quick Check** - Run basic checks on your code:
277
- ```bash
278
- python -m crackerjack
279
- ```
280
-
281
- - **Full Development Cycle** - Clean, test, bump version, publish, and commit:
282
- ```bash
283
- python -m crackerjack -a minor # All-in-one command
284
-
285
- # Equivalent to:
286
- python -m crackerjack -x -t -p minor -c
287
- ```
288
-
289
- - **Development with Tests** - Clean code, run checks, run tests, then commit:
290
- ```bash
291
- python -m crackerjack -c -x -t
292
- ```
293
-
294
- - **Fast Testing** - Run tests without running pre-commit hooks:
295
- ```bash
296
- python -m crackerjack -t -s
297
- ```
298
-
299
- #### Version Management
300
-
301
- - **Bump and Publish** - Bump version and publish to PyPI:
302
- ```bash
303
- python -m crackerjack -p micro # For patch version
304
- python -m crackerjack -p minor # For minor version
305
- python -m crackerjack -p major # For major version
306
- ```
307
-
308
- - **Version Bump Only** - Bump version without publishing:
309
- ```bash
310
- python -m crackerjack -b major
311
- ```
312
-
313
- #### Configuration Management
314
-
315
- - **Skip Config Updates** - Run checks without updating configuration files:
316
- ```bash
317
- python -m crackerjack -n
318
- ```
319
-
320
- - **Update Hooks** - Update pre-commit hooks to latest versions:
321
- ```bash
322
- python -m crackerjack -u
323
- ```
324
-
325
- #### Git Operations
326
-
327
- - **Commit Changes** - Run checks and commit changes:
328
- ```bash
329
- python -m crackerjack -c
330
- ```
331
-
332
- - **Create PR** - Create a pull request to the upstream repository:
333
- ```bash
334
- python -m crackerjack -r
335
- ```
336
-
337
- #### Other Operations
338
-
339
- - **Interactive Mode** - Run pre-commit hooks interactively:
340
- ```bash
341
- python -m crackerjack -i
342
- ```
343
-
344
- - **AI Integration** - Run with structured output for AI tools:
345
- ```bash
346
- python -m crackerjack --ai-agent --test
347
- ```
348
-
349
- - **Help** - Display command help:
350
- ```bash
351
- python -m crackerjack --help
352
- ```
353
-
354
- ## AI Agent Integration
355
-
356
- Crackerjack includes special features for integration with AI agents like Claude, ChatGPT, and other LLM-based assistants:
357
-
358
- - **Structured JSON Output:** When run with `--ai-agent`, Crackerjack outputs results in JSON format that's easy for AI agents to parse
359
- - **Clear Status Indicators:** Provides clear status indicators (running, success, failed, complete) to track progress
360
- - **Action Tracking:** Includes a list of actions performed to help AI agents understand what happened
361
-
362
- ### Example AI Agent Usage
363
-
364
- ```bash
365
- python -m crackerjack --ai-agent --test
366
- ```
367
-
368
- For detailed information about using Crackerjack with AI agents, including the structured output format and programmatic usage, see [README-AI-AGENT.md](README-AI-AGENT.md).
369
-
370
- ## Contributing
371
-
372
- Crackerjack is an evolving project. Contributions are welcome! Please open a pull request or issue.
373
-
374
- To contribute:
375
-
376
- 1. Add Crackerjack as a development dependency to your project:
377
- ```
378
- pdm add -G dev crackerjack
379
- ```
380
-
381
- 2. Run checks and tests before submitting:
382
- ```
383
- python -m crackerjack -x -t
384
- ```
385
-
386
- This ensures your code meets all quality standards before submission.
387
-
388
- ## License
389
-
390
- This project is licensed under the terms of the BSD 3-Clause license.
391
-
392
- ## Architecture
393
-
394
- Crackerjack is designed with modern Python principles in mind:
395
-
396
- - **Factory Pattern:** Uses a factory function (`create_crackerjack_runner`) to create instances with proper dependency injection
397
- - **Protocol-Based Design:** Defines clear interfaces using `t.Protocol` for better flexibility and testability
398
- - **Dependency Injection:** Components can be easily replaced with custom implementations
399
- - **Separation of Concerns:** CLI interface is separate from core logic
400
- - **Type Safety:** Comprehensive type hints throughout the codebase
401
- - **Testability:** Designed to be easily testable with mock objects
402
-
403
- ## Acknowledgments
404
-
405
- - **PDM:** For excellent dependency and virtual environment management.
406
- - **Ruff:** For lightning-fast linting and code formatting.
407
- - **pre-commit:** For the robust hook management system.
408
- - **pytest:** For the flexible and powerful testing framework.
409
- - **uv:** For greatly improving PDM speeds.
410
- - **bandit:** For finding security vulnerabilities.
411
- - **vulture:** For dead code detection.
412
- - **creosote:** For unused dependency detection.
413
- - **flynt:** For f-string conversion.
414
- - **codespell:** For spelling correction.
415
- - **autotyping:** For automatically adding type hints.
416
- - **refurb:** For code improvement suggestions.
417
- - **pyright:** For static type checking.
418
- - **Typer:** For the creation of the CLI.
419
-
420
- ---
@@ -1,59 +0,0 @@
1
- crackerjack-0.18.2.dist-info/METADATA,sha256=md28r6hShDoB9L6EjaPhi3h3M3PdTd7TIJroT8RWoog,17747
2
- crackerjack-0.18.2.dist-info/WHEEL,sha256=tSfRZzRHthuv7vxpI4aehrdN9scLjk-dCJkPLzkHxGg,90
3
- crackerjack-0.18.2.dist-info/entry_points.txt,sha256=6OYgBcLyFCUgeqLgnvMyOJxPCWzgy7se4rLPKtNonMs,34
4
- crackerjack-0.18.2.dist-info/licenses/LICENSE,sha256=fDt371P6_6sCu7RyqiZH_AhT1LdN3sN1zjBtqEhDYCk,1531
5
- crackerjack/.gitignore,sha256=oho3dNx7a7y36_y9AsalCkssU4in0MMsNAANWdc-h1c,153
6
- crackerjack/.libcst.codemod.yaml,sha256=a8DlErRAIPV1nE6QlyXPAzTOgkB24_spl2E9hphuf5s,772
7
- crackerjack/.pdm.toml,sha256=dZe44HRcuxxCFESGG8SZIjmc-cGzSoyK3Hs6t4NYA8w,23
8
- crackerjack/.pre-commit-config.yaml,sha256=maYyN5j43FZHPj9bO78whfechZ3X4ZzTMae5_Gctt3k,2456
9
- crackerjack/.pytest_cache/.gitignore,sha256=Ptcxtl0GFQwTji2tsL4Gl1UIiKa0frjEXsya26i46b0,37
10
- crackerjack/.pytest_cache/CACHEDIR.TAG,sha256=N9yI75oKvt2-gQU6bdj9-xOvthMEXqHrSlyBWnSjveQ,191
11
- crackerjack/.pytest_cache/README.md,sha256=c_1vzN2ALEGaay2YPWwxc7fal1WKxLWJ7ewt_kQ9ua0,302
12
- crackerjack/.pytest_cache/v/cache/nodeids,sha256=T1PNoYwrqgwDVLtfmj7L5e0Sq02OEbqHPC8RFhICuUU,2
13
- crackerjack/.pytest_cache/v/cache/stepwise,sha256=T1PNoYwrqgwDVLtfmj7L5e0Sq02OEbqHPC8RFhICuUU,2
14
- crackerjack/.ruff_cache/.gitignore,sha256=aEiIwOuxfzdCmLZe4oB1JsBmCUxwG8x-u-HBCV9JT8E,1
15
- crackerjack/.ruff_cache/0.1.11/3256171999636029978,sha256=-RLDsRf5uj09SyFQVzjwQ1HkTxjIRxNLLE24SEJxD4g,248
16
- crackerjack/.ruff_cache/0.1.14/602324811142551221,sha256=HIYvldb69IHdMzquAA8JpzU2RDT9shEB_dPvzyeFZ_g,248
17
- crackerjack/.ruff_cache/0.1.4/10355199064880463147,sha256=kmqNg5WySQYPeAqa5elfaV7yjdWQ1xAImpeuzglAqnE,248
18
- crackerjack/.ruff_cache/0.1.6/15140459877605758699,sha256=oQy5boAXeskdm5M0Abh_nyBtitWj5N5wtx_4gsDgu7c,248
19
- crackerjack/.ruff_cache/0.1.7/1790508110482614856,sha256=De7Puq32XF0925xrGehWSKX6cw5Wi2bpt1cnqh__f54,248
20
- crackerjack/.ruff_cache/0.1.9/17041001205004563469,sha256=tKP_k8HaHhQJyrHbDfJ93kM7vahjrU8cKQ1f_-OUzZY,248
21
- crackerjack/.ruff_cache/0.11.2/4070660268492669020,sha256=FTRTUmvj6nZw_QQBp_WHI-h3_iqRejzL39api-9wTvs,224
22
- crackerjack/.ruff_cache/0.11.3/9818742842212983150,sha256=U-4mT__a-OljovvAJvv5M6X7TCMa3dReLXx3kTNGgwU,224
23
- crackerjack/.ruff_cache/0.11.4/9818742842212983150,sha256=QF9j6-3MH_d0pDNotdbF2hlqCL66SxN8OLVKR3PZyZU,224
24
- crackerjack/.ruff_cache/0.11.6/3557596832929915217,sha256=yR2iXWDkSHVRw2eTiaCE8Eh34JPRUGc8vE3HYEEBk9k,224
25
- crackerjack/.ruff_cache/0.11.7/10386934055395314831,sha256=lBNwN5zAgM4OzbkXIOzCczUtfooATrD10htj9ASlFkc,224
26
- crackerjack/.ruff_cache/0.11.7/3557596832929915217,sha256=fKlwUbsvT3YIKV6UR-aA_i64lLignWeVfVu-MMmVbU0,207
27
- crackerjack/.ruff_cache/0.11.8/530407680854991027,sha256=t8aOUP7py-y-zm042WvHbeaEm_s_jO2ADZwZJsYIfmw,224
28
- crackerjack/.ruff_cache/0.2.0/10047773857155985907,sha256=j9LNa_RQ4Plor7go1uTYgz17cEENKvZQ-dP6b9MX0ik,248
29
- crackerjack/.ruff_cache/0.2.1/8522267973936635051,sha256=u_aPBMibtAp_iYvLwR88GMAECMcIgHezxMyuapmU2P4,248
30
- crackerjack/.ruff_cache/0.2.2/18053836298936336950,sha256=Xb_ebP0pVuUfSqPEZKlhQ70so_vqkEfMYpuHQ06iR5U,248
31
- crackerjack/.ruff_cache/0.3.0/12548816621480535786,sha256=TAZaMTWC-6O3eZXnWVsQgaKtVPew0QbrAFOWz96hK6g,248
32
- crackerjack/.ruff_cache/0.3.3/11081883392474770722,sha256=S9jhv2NNJwv6bi0JqfBMWcpMktP2A0ikJerra779HKM,248
33
- crackerjack/.ruff_cache/0.3.4/676973378459347183,sha256=qQXG3ByXNuDvpqAhrhjcQVJYeuyS1cBjIxyGgFlT6NI,248
34
- crackerjack/.ruff_cache/0.3.5/16311176246009842383,sha256=1jdzqow8vaK7V6TGKnAFbiL-JUeOUjP8XgYifP1Tg5s,248
35
- crackerjack/.ruff_cache/0.5.7/1493622539551733492,sha256=pSocPQAUIr0jKWiGFCL-guo-Wop2XDXNdJsjylo-ks4,224
36
- crackerjack/.ruff_cache/0.5.7/6231957614044513175,sha256=cpMwivWK0bqQ1V4WO_D1Q-aZarbhf-r4sk4Po8oXZc4,224
37
- crackerjack/.ruff_cache/0.5.7/9932762556785938009,sha256=OrAu-VJZI4ctEycJEplrzI2qXzgaxE5TPvj6IFVQSdw,224
38
- crackerjack/.ruff_cache/0.6.0/11982804814124138945,sha256=2lznSj8cCUgunSBia8roQ-Cj5TBFiSoe0wIl7cDAiY8,224
39
- crackerjack/.ruff_cache/0.6.0/12055761203849489982,sha256=mGzYAukLYQmayZDp4bfHzWpif-GH48e9xi-CMcQDPrM,224
40
- crackerjack/.ruff_cache/0.6.2/1206147804896221174,sha256=Pk8jauJiK81gV1Ox8gp-oUnAsGC2pn_zgOfhPnkM_Yk,224
41
- crackerjack/.ruff_cache/0.6.4/1206147804896221174,sha256=R7O7kFH1eaafsVBj8Tae7ByBULoSlEHITtnjGHZzdo4,224
42
- crackerjack/.ruff_cache/0.6.5/1206147804896221174,sha256=nnb6nWwDVgf1ka9tDmRNyrVOa5D0jWjXGo2SdIOrwE4,224
43
- crackerjack/.ruff_cache/0.6.7/3657366982708166874,sha256=MKU1_a_3BRoP6rKfsIyYJy3lzoXrYcsSw4y8y8ztLb8,224
44
- crackerjack/.ruff_cache/0.6.9/285614542852677309,sha256=6FVRfczYzXuiY_uArIpjA5Tue579y7kFL7hgvebRU2I,224
45
- crackerjack/.ruff_cache/0.7.1/1024065805990144819,sha256=3Sww592NB0PWBNHU_UIqvqgx33GEckEqKoFXxiu2wkA,224
46
- crackerjack/.ruff_cache/0.7.1/285614542852677309,sha256=mOHKRzKoSvW-1sHtqI_LHWRt-mBinJ4rQRtp9Yqzv5I,224
47
- crackerjack/.ruff_cache/0.7.3/16061516852537040135,sha256=AWJR9gmaO7-wpv8mY1homuwI8CrMPI3VrnbXH-wRPlg,224
48
- crackerjack/.ruff_cache/0.8.4/16354268377385700367,sha256=Ksz4X8N6Z1i83N0vV1PxmBRlqgjrtzmDCOg7VBF4baQ,224
49
- crackerjack/.ruff_cache/0.9.10/12813592349865671909,sha256=6yRYi5XvzLtzUymRBm6-DozDE48eJtLmaLGSghgY3Wo,224
50
- crackerjack/.ruff_cache/0.9.10/923908772239632759,sha256=XNakPJR4lyXTBP_I8A0Lpa8zo2WSQhbDnlRKD2lCNrI,224
51
- crackerjack/.ruff_cache/0.9.3/13948373885254993391,sha256=kGhtIkzPUtKAgvlKs3D8j4QM4qG8RhsHrmQJI69Sv3o,224
52
- crackerjack/.ruff_cache/0.9.9/12813592349865671909,sha256=tmr8_vhRD2OxsVuMfbJPdT9fDFX-d5tfC5U9jgziyho,224
53
- crackerjack/.ruff_cache/0.9.9/8843823720003377982,sha256=e4ymkXfQsUg5e_mtO34xTsaTvs1uA3_fI216Qq9qCAM,136
54
- crackerjack/.ruff_cache/CACHEDIR.TAG,sha256=WVMVbX4MVkpCclExbq8m-IcOZIOuIZf5FrYw5Pk-Ma4,43
55
- crackerjack/__init__.py,sha256=r9SuEjHUrW99hFWifRk4ofmYPSgf9rblcnzqhdV5bP0,157
56
- crackerjack/__main__.py,sha256=FDAcn9NYoQ7q01YDtdxUgKz3RloItUc-Z8x5kBGcemA,4557
57
- crackerjack/crackerjack.py,sha256=07yDkbj0ChR5hnqTC6zJw5Bx9YuP9cQad6G3Jbq9OyE,33512
58
- crackerjack/pyproject.toml,sha256=yAzLlHWcrBx_snYrDwUXOwwHFSUXRZtAZuDdf7eadVA,4199
59
- crackerjack-0.18.2.dist-info/RECORD,,