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.
- crackerjack/README.md +19 -0
- crackerjack/__init__.py +96 -2
- crackerjack/__main__.py +637 -138
- crackerjack/adapters/README.md +18 -0
- crackerjack/adapters/__init__.py +39 -0
- crackerjack/adapters/_output_paths.py +167 -0
- crackerjack/adapters/_qa_adapter_base.py +309 -0
- crackerjack/adapters/_tool_adapter_base.py +706 -0
- crackerjack/adapters/ai/README.md +65 -0
- crackerjack/adapters/ai/__init__.py +5 -0
- crackerjack/adapters/ai/claude.py +853 -0
- crackerjack/adapters/complexity/README.md +53 -0
- crackerjack/adapters/complexity/__init__.py +10 -0
- crackerjack/adapters/complexity/complexipy.py +641 -0
- crackerjack/adapters/dependency/__init__.py +22 -0
- crackerjack/adapters/dependency/pip_audit.py +418 -0
- crackerjack/adapters/format/README.md +72 -0
- crackerjack/adapters/format/__init__.py +11 -0
- crackerjack/adapters/format/mdformat.py +313 -0
- crackerjack/adapters/format/ruff.py +516 -0
- crackerjack/adapters/lint/README.md +47 -0
- crackerjack/adapters/lint/__init__.py +11 -0
- crackerjack/adapters/lint/codespell.py +273 -0
- crackerjack/adapters/lsp/README.md +49 -0
- crackerjack/adapters/lsp/__init__.py +27 -0
- crackerjack/adapters/lsp/_base.py +194 -0
- crackerjack/adapters/lsp/_client.py +358 -0
- crackerjack/adapters/lsp/_manager.py +193 -0
- crackerjack/adapters/lsp/skylos.py +283 -0
- crackerjack/adapters/lsp/zuban.py +557 -0
- crackerjack/adapters/refactor/README.md +59 -0
- crackerjack/adapters/refactor/__init__.py +12 -0
- crackerjack/adapters/refactor/creosote.py +318 -0
- crackerjack/adapters/refactor/refurb.py +406 -0
- crackerjack/adapters/refactor/skylos.py +494 -0
- crackerjack/adapters/sast/README.md +132 -0
- crackerjack/adapters/sast/__init__.py +32 -0
- crackerjack/adapters/sast/_base.py +201 -0
- crackerjack/adapters/sast/bandit.py +423 -0
- crackerjack/adapters/sast/pyscn.py +405 -0
- crackerjack/adapters/sast/semgrep.py +241 -0
- crackerjack/adapters/security/README.md +111 -0
- crackerjack/adapters/security/__init__.py +17 -0
- crackerjack/adapters/security/gitleaks.py +339 -0
- crackerjack/adapters/type/README.md +52 -0
- crackerjack/adapters/type/__init__.py +12 -0
- crackerjack/adapters/type/pyrefly.py +402 -0
- crackerjack/adapters/type/ty.py +402 -0
- crackerjack/adapters/type/zuban.py +522 -0
- crackerjack/adapters/utility/README.md +51 -0
- crackerjack/adapters/utility/__init__.py +10 -0
- crackerjack/adapters/utility/checks.py +884 -0
- crackerjack/agents/README.md +264 -0
- crackerjack/agents/__init__.py +66 -0
- crackerjack/agents/architect_agent.py +238 -0
- crackerjack/agents/base.py +167 -0
- crackerjack/agents/claude_code_bridge.py +641 -0
- crackerjack/agents/coordinator.py +600 -0
- crackerjack/agents/documentation_agent.py +520 -0
- crackerjack/agents/dry_agent.py +585 -0
- crackerjack/agents/enhanced_coordinator.py +279 -0
- crackerjack/agents/enhanced_proactive_agent.py +185 -0
- crackerjack/agents/error_middleware.py +53 -0
- crackerjack/agents/formatting_agent.py +230 -0
- crackerjack/agents/helpers/__init__.py +9 -0
- crackerjack/agents/helpers/performance/__init__.py +22 -0
- crackerjack/agents/helpers/performance/performance_ast_analyzer.py +357 -0
- crackerjack/agents/helpers/performance/performance_pattern_detector.py +909 -0
- crackerjack/agents/helpers/performance/performance_recommender.py +572 -0
- crackerjack/agents/helpers/refactoring/__init__.py +22 -0
- crackerjack/agents/helpers/refactoring/code_transformer.py +536 -0
- crackerjack/agents/helpers/refactoring/complexity_analyzer.py +344 -0
- crackerjack/agents/helpers/refactoring/dead_code_detector.py +437 -0
- crackerjack/agents/helpers/test_creation/__init__.py +19 -0
- crackerjack/agents/helpers/test_creation/test_ast_analyzer.py +216 -0
- crackerjack/agents/helpers/test_creation/test_coverage_analyzer.py +643 -0
- crackerjack/agents/helpers/test_creation/test_template_generator.py +1031 -0
- crackerjack/agents/import_optimization_agent.py +1181 -0
- crackerjack/agents/performance_agent.py +325 -0
- crackerjack/agents/performance_helpers.py +205 -0
- crackerjack/agents/proactive_agent.py +55 -0
- crackerjack/agents/refactoring_agent.py +511 -0
- crackerjack/agents/refactoring_helpers.py +247 -0
- crackerjack/agents/security_agent.py +793 -0
- crackerjack/agents/semantic_agent.py +479 -0
- crackerjack/agents/semantic_helpers.py +356 -0
- crackerjack/agents/test_creation_agent.py +570 -0
- crackerjack/agents/test_specialist_agent.py +526 -0
- crackerjack/agents/tracker.py +110 -0
- crackerjack/api.py +647 -0
- crackerjack/cli/README.md +394 -0
- crackerjack/cli/__init__.py +24 -0
- crackerjack/cli/cache_handlers.py +209 -0
- crackerjack/cli/cache_handlers_enhanced.py +680 -0
- crackerjack/cli/facade.py +162 -0
- crackerjack/cli/formatting.py +13 -0
- crackerjack/cli/handlers/__init__.py +85 -0
- crackerjack/cli/handlers/advanced.py +103 -0
- crackerjack/cli/handlers/ai_features.py +62 -0
- crackerjack/cli/handlers/analytics.py +479 -0
- crackerjack/cli/handlers/changelog.py +271 -0
- crackerjack/cli/handlers/config_handlers.py +16 -0
- crackerjack/cli/handlers/coverage.py +84 -0
- crackerjack/cli/handlers/documentation.py +280 -0
- crackerjack/cli/handlers/main_handlers.py +497 -0
- crackerjack/cli/handlers/monitoring.py +371 -0
- crackerjack/cli/handlers.py +700 -0
- crackerjack/cli/interactive.py +488 -0
- crackerjack/cli/options.py +1216 -0
- crackerjack/cli/semantic_handlers.py +292 -0
- crackerjack/cli/utils.py +19 -0
- crackerjack/cli/version.py +19 -0
- crackerjack/code_cleaner.py +1307 -0
- crackerjack/config/README.md +472 -0
- crackerjack/config/__init__.py +275 -0
- crackerjack/config/global_lock_config.py +207 -0
- crackerjack/config/hooks.py +390 -0
- crackerjack/config/loader.py +239 -0
- crackerjack/config/settings.py +141 -0
- crackerjack/config/tool_commands.py +331 -0
- crackerjack/core/README.md +393 -0
- crackerjack/core/__init__.py +0 -0
- crackerjack/core/async_workflow_orchestrator.py +738 -0
- crackerjack/core/autofix_coordinator.py +282 -0
- crackerjack/core/container.py +105 -0
- crackerjack/core/enhanced_container.py +583 -0
- crackerjack/core/file_lifecycle.py +472 -0
- crackerjack/core/performance.py +244 -0
- crackerjack/core/performance_monitor.py +357 -0
- crackerjack/core/phase_coordinator.py +1227 -0
- crackerjack/core/proactive_workflow.py +267 -0
- crackerjack/core/resource_manager.py +425 -0
- crackerjack/core/retry.py +275 -0
- crackerjack/core/service_watchdog.py +601 -0
- crackerjack/core/session_coordinator.py +239 -0
- crackerjack/core/timeout_manager.py +563 -0
- crackerjack/core/websocket_lifecycle.py +410 -0
- crackerjack/core/workflow/__init__.py +21 -0
- crackerjack/core/workflow/workflow_ai_coordinator.py +863 -0
- crackerjack/core/workflow/workflow_event_orchestrator.py +1107 -0
- crackerjack/core/workflow/workflow_issue_parser.py +714 -0
- crackerjack/core/workflow/workflow_phase_executor.py +1158 -0
- crackerjack/core/workflow/workflow_security_gates.py +400 -0
- crackerjack/core/workflow_orchestrator.py +2243 -0
- crackerjack/data/README.md +11 -0
- crackerjack/data/__init__.py +8 -0
- crackerjack/data/models.py +79 -0
- crackerjack/data/repository.py +210 -0
- crackerjack/decorators/README.md +180 -0
- crackerjack/decorators/__init__.py +35 -0
- crackerjack/decorators/error_handling.py +649 -0
- crackerjack/decorators/error_handling_decorators.py +334 -0
- crackerjack/decorators/helpers.py +58 -0
- crackerjack/decorators/patterns.py +281 -0
- crackerjack/decorators/utils.py +58 -0
- crackerjack/docs/INDEX.md +11 -0
- crackerjack/docs/README.md +11 -0
- crackerjack/docs/generated/api/API_REFERENCE.md +10895 -0
- crackerjack/docs/generated/api/CLI_REFERENCE.md +109 -0
- crackerjack/docs/generated/api/CROSS_REFERENCES.md +1755 -0
- crackerjack/docs/generated/api/PROTOCOLS.md +3 -0
- crackerjack/docs/generated/api/SERVICES.md +1252 -0
- crackerjack/documentation/README.md +11 -0
- crackerjack/documentation/__init__.py +31 -0
- crackerjack/documentation/ai_templates.py +756 -0
- crackerjack/documentation/dual_output_generator.py +767 -0
- crackerjack/documentation/mkdocs_integration.py +518 -0
- crackerjack/documentation/reference_generator.py +1065 -0
- crackerjack/dynamic_config.py +678 -0
- crackerjack/errors.py +378 -0
- crackerjack/events/README.md +11 -0
- crackerjack/events/__init__.py +16 -0
- crackerjack/events/telemetry.py +175 -0
- crackerjack/events/workflow_bus.py +346 -0
- crackerjack/exceptions/README.md +301 -0
- crackerjack/exceptions/__init__.py +5 -0
- crackerjack/exceptions/config.py +4 -0
- crackerjack/exceptions/tool_execution_error.py +245 -0
- crackerjack/executors/README.md +591 -0
- crackerjack/executors/__init__.py +13 -0
- crackerjack/executors/async_hook_executor.py +938 -0
- crackerjack/executors/cached_hook_executor.py +316 -0
- crackerjack/executors/hook_executor.py +1295 -0
- crackerjack/executors/hook_lock_manager.py +708 -0
- crackerjack/executors/individual_hook_executor.py +739 -0
- crackerjack/executors/lsp_aware_hook_executor.py +349 -0
- crackerjack/executors/progress_hook_executor.py +282 -0
- crackerjack/executors/tool_proxy.py +433 -0
- crackerjack/hooks/README.md +485 -0
- crackerjack/hooks/lsp_hook.py +93 -0
- crackerjack/intelligence/README.md +557 -0
- crackerjack/intelligence/__init__.py +37 -0
- crackerjack/intelligence/adaptive_learning.py +693 -0
- crackerjack/intelligence/agent_orchestrator.py +485 -0
- crackerjack/intelligence/agent_registry.py +377 -0
- crackerjack/intelligence/agent_selector.py +439 -0
- crackerjack/intelligence/integration.py +250 -0
- crackerjack/interactive.py +719 -0
- crackerjack/managers/README.md +369 -0
- crackerjack/managers/__init__.py +11 -0
- crackerjack/managers/async_hook_manager.py +135 -0
- crackerjack/managers/hook_manager.py +585 -0
- crackerjack/managers/publish_manager.py +631 -0
- crackerjack/managers/test_command_builder.py +391 -0
- crackerjack/managers/test_executor.py +474 -0
- crackerjack/managers/test_manager.py +1357 -0
- crackerjack/managers/test_progress.py +187 -0
- crackerjack/mcp/README.md +374 -0
- crackerjack/mcp/__init__.py +0 -0
- crackerjack/mcp/cache.py +352 -0
- crackerjack/mcp/client_runner.py +121 -0
- crackerjack/mcp/context.py +802 -0
- crackerjack/mcp/dashboard.py +657 -0
- crackerjack/mcp/enhanced_progress_monitor.py +493 -0
- crackerjack/mcp/file_monitor.py +394 -0
- crackerjack/mcp/progress_components.py +607 -0
- crackerjack/mcp/progress_monitor.py +1016 -0
- crackerjack/mcp/rate_limiter.py +336 -0
- crackerjack/mcp/server.py +24 -0
- crackerjack/mcp/server_core.py +526 -0
- crackerjack/mcp/service_watchdog.py +505 -0
- crackerjack/mcp/state.py +407 -0
- crackerjack/mcp/task_manager.py +259 -0
- crackerjack/mcp/tools/README.md +27 -0
- crackerjack/mcp/tools/__init__.py +19 -0
- crackerjack/mcp/tools/core_tools.py +469 -0
- crackerjack/mcp/tools/error_analyzer.py +283 -0
- crackerjack/mcp/tools/execution_tools.py +384 -0
- crackerjack/mcp/tools/intelligence_tool_registry.py +46 -0
- crackerjack/mcp/tools/intelligence_tools.py +264 -0
- crackerjack/mcp/tools/monitoring_tools.py +628 -0
- crackerjack/mcp/tools/proactive_tools.py +367 -0
- crackerjack/mcp/tools/progress_tools.py +222 -0
- crackerjack/mcp/tools/semantic_tools.py +584 -0
- crackerjack/mcp/tools/utility_tools.py +358 -0
- crackerjack/mcp/tools/workflow_executor.py +699 -0
- crackerjack/mcp/websocket/README.md +31 -0
- crackerjack/mcp/websocket/__init__.py +14 -0
- crackerjack/mcp/websocket/app.py +54 -0
- crackerjack/mcp/websocket/endpoints.py +492 -0
- crackerjack/mcp/websocket/event_bridge.py +188 -0
- crackerjack/mcp/websocket/jobs.py +406 -0
- crackerjack/mcp/websocket/monitoring/__init__.py +25 -0
- crackerjack/mcp/websocket/monitoring/api/__init__.py +19 -0
- crackerjack/mcp/websocket/monitoring/api/dependencies.py +141 -0
- crackerjack/mcp/websocket/monitoring/api/heatmap.py +154 -0
- crackerjack/mcp/websocket/monitoring/api/intelligence.py +199 -0
- crackerjack/mcp/websocket/monitoring/api/metrics.py +203 -0
- crackerjack/mcp/websocket/monitoring/api/telemetry.py +101 -0
- crackerjack/mcp/websocket/monitoring/dashboard.py +18 -0
- crackerjack/mcp/websocket/monitoring/factory.py +109 -0
- crackerjack/mcp/websocket/monitoring/filters.py +10 -0
- crackerjack/mcp/websocket/monitoring/metrics.py +64 -0
- crackerjack/mcp/websocket/monitoring/models.py +90 -0
- crackerjack/mcp/websocket/monitoring/utils.py +171 -0
- crackerjack/mcp/websocket/monitoring/websocket_manager.py +78 -0
- crackerjack/mcp/websocket/monitoring/websockets/__init__.py +17 -0
- crackerjack/mcp/websocket/monitoring/websockets/dependencies.py +126 -0
- crackerjack/mcp/websocket/monitoring/websockets/heatmap.py +176 -0
- crackerjack/mcp/websocket/monitoring/websockets/intelligence.py +291 -0
- crackerjack/mcp/websocket/monitoring/websockets/metrics.py +291 -0
- crackerjack/mcp/websocket/monitoring_endpoints.py +21 -0
- crackerjack/mcp/websocket/server.py +174 -0
- crackerjack/mcp/websocket/websocket_handler.py +276 -0
- crackerjack/mcp/websocket_server.py +10 -0
- crackerjack/models/README.md +308 -0
- crackerjack/models/__init__.py +40 -0
- crackerjack/models/config.py +730 -0
- crackerjack/models/config_adapter.py +265 -0
- crackerjack/models/protocols.py +1535 -0
- crackerjack/models/pydantic_models.py +320 -0
- crackerjack/models/qa_config.py +145 -0
- crackerjack/models/qa_results.py +134 -0
- crackerjack/models/resource_protocols.py +299 -0
- crackerjack/models/results.py +35 -0
- crackerjack/models/semantic_models.py +258 -0
- crackerjack/models/task.py +173 -0
- crackerjack/models/test_models.py +60 -0
- crackerjack/monitoring/README.md +11 -0
- crackerjack/monitoring/__init__.py +0 -0
- crackerjack/monitoring/ai_agent_watchdog.py +405 -0
- crackerjack/monitoring/metrics_collector.py +427 -0
- crackerjack/monitoring/regression_prevention.py +580 -0
- crackerjack/monitoring/websocket_server.py +406 -0
- crackerjack/orchestration/README.md +340 -0
- crackerjack/orchestration/__init__.py +43 -0
- crackerjack/orchestration/advanced_orchestrator.py +894 -0
- crackerjack/orchestration/cache/README.md +312 -0
- crackerjack/orchestration/cache/__init__.py +37 -0
- crackerjack/orchestration/cache/memory_cache.py +338 -0
- crackerjack/orchestration/cache/tool_proxy_cache.py +340 -0
- crackerjack/orchestration/config.py +297 -0
- crackerjack/orchestration/coverage_improvement.py +180 -0
- crackerjack/orchestration/execution_strategies.py +361 -0
- crackerjack/orchestration/hook_orchestrator.py +1398 -0
- crackerjack/orchestration/strategies/README.md +401 -0
- crackerjack/orchestration/strategies/__init__.py +39 -0
- crackerjack/orchestration/strategies/adaptive_strategy.py +630 -0
- crackerjack/orchestration/strategies/parallel_strategy.py +237 -0
- crackerjack/orchestration/strategies/sequential_strategy.py +299 -0
- crackerjack/orchestration/test_progress_streamer.py +647 -0
- crackerjack/plugins/README.md +11 -0
- crackerjack/plugins/__init__.py +15 -0
- crackerjack/plugins/base.py +200 -0
- crackerjack/plugins/hooks.py +254 -0
- crackerjack/plugins/loader.py +335 -0
- crackerjack/plugins/managers.py +264 -0
- crackerjack/py313.py +191 -0
- crackerjack/security/README.md +11 -0
- crackerjack/security/__init__.py +0 -0
- crackerjack/security/audit.py +197 -0
- crackerjack/services/README.md +374 -0
- crackerjack/services/__init__.py +9 -0
- crackerjack/services/ai/README.md +295 -0
- crackerjack/services/ai/__init__.py +7 -0
- crackerjack/services/ai/advanced_optimizer.py +878 -0
- crackerjack/services/ai/contextual_ai_assistant.py +542 -0
- crackerjack/services/ai/embeddings.py +444 -0
- crackerjack/services/ai/intelligent_commit.py +328 -0
- crackerjack/services/ai/predictive_analytics.py +510 -0
- crackerjack/services/anomaly_detector.py +392 -0
- crackerjack/services/api_extractor.py +617 -0
- crackerjack/services/backup_service.py +467 -0
- crackerjack/services/bounded_status_operations.py +530 -0
- crackerjack/services/cache.py +369 -0
- crackerjack/services/changelog_automation.py +399 -0
- crackerjack/services/command_execution_service.py +305 -0
- crackerjack/services/config_integrity.py +132 -0
- crackerjack/services/config_merge.py +546 -0
- crackerjack/services/config_service.py +198 -0
- crackerjack/services/config_template.py +493 -0
- crackerjack/services/coverage_badge_service.py +173 -0
- crackerjack/services/coverage_ratchet.py +381 -0
- crackerjack/services/debug.py +733 -0
- crackerjack/services/dependency_analyzer.py +460 -0
- crackerjack/services/dependency_monitor.py +622 -0
- crackerjack/services/documentation_generator.py +493 -0
- crackerjack/services/documentation_service.py +704 -0
- crackerjack/services/enhanced_filesystem.py +497 -0
- crackerjack/services/enterprise_optimizer.py +865 -0
- crackerjack/services/error_pattern_analyzer.py +676 -0
- crackerjack/services/file_filter.py +221 -0
- crackerjack/services/file_hasher.py +149 -0
- crackerjack/services/file_io_service.py +361 -0
- crackerjack/services/file_modifier.py +615 -0
- crackerjack/services/filesystem.py +381 -0
- crackerjack/services/git.py +422 -0
- crackerjack/services/health_metrics.py +615 -0
- crackerjack/services/heatmap_generator.py +744 -0
- crackerjack/services/incremental_executor.py +380 -0
- crackerjack/services/initialization.py +823 -0
- crackerjack/services/input_validator.py +668 -0
- crackerjack/services/intelligent_commit.py +327 -0
- crackerjack/services/log_manager.py +289 -0
- crackerjack/services/logging.py +228 -0
- crackerjack/services/lsp_client.py +628 -0
- crackerjack/services/memory_optimizer.py +414 -0
- crackerjack/services/metrics.py +587 -0
- crackerjack/services/monitoring/README.md +30 -0
- crackerjack/services/monitoring/__init__.py +9 -0
- crackerjack/services/monitoring/dependency_monitor.py +678 -0
- crackerjack/services/monitoring/error_pattern_analyzer.py +676 -0
- crackerjack/services/monitoring/health_metrics.py +716 -0
- crackerjack/services/monitoring/metrics.py +587 -0
- crackerjack/services/monitoring/performance_benchmarks.py +410 -0
- crackerjack/services/monitoring/performance_cache.py +388 -0
- crackerjack/services/monitoring/performance_monitor.py +569 -0
- crackerjack/services/parallel_executor.py +527 -0
- crackerjack/services/pattern_cache.py +333 -0
- crackerjack/services/pattern_detector.py +478 -0
- crackerjack/services/patterns/__init__.py +142 -0
- crackerjack/services/patterns/agents.py +107 -0
- crackerjack/services/patterns/code/__init__.py +15 -0
- crackerjack/services/patterns/code/detection.py +118 -0
- crackerjack/services/patterns/code/imports.py +107 -0
- crackerjack/services/patterns/code/paths.py +159 -0
- crackerjack/services/patterns/code/performance.py +119 -0
- crackerjack/services/patterns/code/replacement.py +36 -0
- crackerjack/services/patterns/core.py +212 -0
- crackerjack/services/patterns/documentation/__init__.py +14 -0
- crackerjack/services/patterns/documentation/badges_markdown.py +96 -0
- crackerjack/services/patterns/documentation/comments_blocks.py +83 -0
- crackerjack/services/patterns/documentation/docstrings.py +89 -0
- crackerjack/services/patterns/formatting.py +226 -0
- crackerjack/services/patterns/operations.py +339 -0
- crackerjack/services/patterns/security/__init__.py +23 -0
- crackerjack/services/patterns/security/code_injection.py +122 -0
- crackerjack/services/patterns/security/credentials.py +190 -0
- crackerjack/services/patterns/security/path_traversal.py +221 -0
- crackerjack/services/patterns/security/unsafe_operations.py +216 -0
- crackerjack/services/patterns/templates.py +62 -0
- crackerjack/services/patterns/testing/__init__.py +18 -0
- crackerjack/services/patterns/testing/error_patterns.py +107 -0
- crackerjack/services/patterns/testing/pytest_output.py +126 -0
- crackerjack/services/patterns/tool_output/__init__.py +16 -0
- crackerjack/services/patterns/tool_output/bandit.py +72 -0
- crackerjack/services/patterns/tool_output/other.py +97 -0
- crackerjack/services/patterns/tool_output/pyright.py +67 -0
- crackerjack/services/patterns/tool_output/ruff.py +44 -0
- crackerjack/services/patterns/url_sanitization.py +114 -0
- crackerjack/services/patterns/utilities.py +42 -0
- crackerjack/services/patterns/utils.py +339 -0
- crackerjack/services/patterns/validation.py +46 -0
- crackerjack/services/patterns/versioning.py +62 -0
- crackerjack/services/predictive_analytics.py +523 -0
- crackerjack/services/profiler.py +280 -0
- crackerjack/services/quality/README.md +415 -0
- crackerjack/services/quality/__init__.py +11 -0
- crackerjack/services/quality/anomaly_detector.py +392 -0
- crackerjack/services/quality/pattern_cache.py +333 -0
- crackerjack/services/quality/pattern_detector.py +479 -0
- crackerjack/services/quality/qa_orchestrator.py +491 -0
- crackerjack/services/quality/quality_baseline.py +395 -0
- crackerjack/services/quality/quality_baseline_enhanced.py +649 -0
- crackerjack/services/quality/quality_intelligence.py +949 -0
- crackerjack/services/regex_patterns.py +58 -0
- crackerjack/services/regex_utils.py +483 -0
- crackerjack/services/secure_path_utils.py +524 -0
- crackerjack/services/secure_status_formatter.py +450 -0
- crackerjack/services/secure_subprocess.py +635 -0
- crackerjack/services/security.py +239 -0
- crackerjack/services/security_logger.py +495 -0
- crackerjack/services/server_manager.py +411 -0
- crackerjack/services/smart_scheduling.py +167 -0
- crackerjack/services/status_authentication.py +460 -0
- crackerjack/services/status_security_manager.py +315 -0
- crackerjack/services/terminal_utils.py +0 -0
- crackerjack/services/thread_safe_status_collector.py +441 -0
- crackerjack/services/tool_filter.py +368 -0
- crackerjack/services/tool_version_service.py +43 -0
- crackerjack/services/unified_config.py +115 -0
- crackerjack/services/validation_rate_limiter.py +220 -0
- crackerjack/services/vector_store.py +689 -0
- crackerjack/services/version_analyzer.py +461 -0
- crackerjack/services/version_checker.py +223 -0
- crackerjack/services/websocket_resource_limiter.py +438 -0
- crackerjack/services/zuban_lsp_service.py +391 -0
- crackerjack/slash_commands/README.md +11 -0
- crackerjack/slash_commands/__init__.py +59 -0
- crackerjack/slash_commands/init.md +112 -0
- crackerjack/slash_commands/run.md +197 -0
- crackerjack/slash_commands/status.md +127 -0
- crackerjack/tools/README.md +11 -0
- crackerjack/tools/__init__.py +30 -0
- crackerjack/tools/_git_utils.py +105 -0
- crackerjack/tools/check_added_large_files.py +139 -0
- crackerjack/tools/check_ast.py +105 -0
- crackerjack/tools/check_json.py +103 -0
- crackerjack/tools/check_jsonschema.py +297 -0
- crackerjack/tools/check_toml.py +103 -0
- crackerjack/tools/check_yaml.py +110 -0
- crackerjack/tools/codespell_wrapper.py +72 -0
- crackerjack/tools/end_of_file_fixer.py +202 -0
- crackerjack/tools/format_json.py +128 -0
- crackerjack/tools/mdformat_wrapper.py +114 -0
- crackerjack/tools/trailing_whitespace.py +198 -0
- crackerjack/tools/validate_input_validator_patterns.py +236 -0
- crackerjack/tools/validate_regex_patterns.py +188 -0
- crackerjack/ui/README.md +11 -0
- crackerjack/ui/__init__.py +1 -0
- crackerjack/ui/dashboard_renderer.py +28 -0
- crackerjack/ui/templates/README.md +11 -0
- crackerjack/utils/console_utils.py +13 -0
- crackerjack/utils/dependency_guard.py +230 -0
- crackerjack/utils/retry_utils.py +275 -0
- crackerjack/workflows/README.md +590 -0
- crackerjack/workflows/__init__.py +46 -0
- crackerjack/workflows/actions.py +811 -0
- crackerjack/workflows/auto_fix.py +444 -0
- crackerjack/workflows/container_builder.py +499 -0
- crackerjack/workflows/definitions.py +443 -0
- crackerjack/workflows/engine.py +177 -0
- crackerjack/workflows/event_bridge.py +242 -0
- crackerjack-0.45.2.dist-info/METADATA +1678 -0
- crackerjack-0.45.2.dist-info/RECORD +478 -0
- {crackerjack-0.18.2.dist-info → crackerjack-0.45.2.dist-info}/WHEEL +1 -1
- crackerjack-0.45.2.dist-info/entry_points.txt +2 -0
- crackerjack/.gitignore +0 -14
- crackerjack/.libcst.codemod.yaml +0 -18
- crackerjack/.pdm.toml +0 -1
- crackerjack/.pre-commit-config.yaml +0 -91
- crackerjack/.pytest_cache/.gitignore +0 -2
- crackerjack/.pytest_cache/CACHEDIR.TAG +0 -4
- crackerjack/.pytest_cache/README.md +0 -8
- crackerjack/.pytest_cache/v/cache/nodeids +0 -1
- crackerjack/.pytest_cache/v/cache/stepwise +0 -1
- crackerjack/.ruff_cache/.gitignore +0 -1
- crackerjack/.ruff_cache/0.1.11/3256171999636029978 +0 -0
- crackerjack/.ruff_cache/0.1.14/602324811142551221 +0 -0
- crackerjack/.ruff_cache/0.1.4/10355199064880463147 +0 -0
- crackerjack/.ruff_cache/0.1.6/15140459877605758699 +0 -0
- crackerjack/.ruff_cache/0.1.7/1790508110482614856 +0 -0
- crackerjack/.ruff_cache/0.1.9/17041001205004563469 +0 -0
- crackerjack/.ruff_cache/0.11.2/4070660268492669020 +0 -0
- crackerjack/.ruff_cache/0.11.3/9818742842212983150 +0 -0
- crackerjack/.ruff_cache/0.11.4/9818742842212983150 +0 -0
- crackerjack/.ruff_cache/0.11.6/3557596832929915217 +0 -0
- crackerjack/.ruff_cache/0.11.7/10386934055395314831 +0 -0
- crackerjack/.ruff_cache/0.11.7/3557596832929915217 +0 -0
- crackerjack/.ruff_cache/0.11.8/530407680854991027 +0 -0
- crackerjack/.ruff_cache/0.2.0/10047773857155985907 +0 -0
- crackerjack/.ruff_cache/0.2.1/8522267973936635051 +0 -0
- crackerjack/.ruff_cache/0.2.2/18053836298936336950 +0 -0
- crackerjack/.ruff_cache/0.3.0/12548816621480535786 +0 -0
- crackerjack/.ruff_cache/0.3.3/11081883392474770722 +0 -0
- crackerjack/.ruff_cache/0.3.4/676973378459347183 +0 -0
- crackerjack/.ruff_cache/0.3.5/16311176246009842383 +0 -0
- crackerjack/.ruff_cache/0.5.7/1493622539551733492 +0 -0
- crackerjack/.ruff_cache/0.5.7/6231957614044513175 +0 -0
- crackerjack/.ruff_cache/0.5.7/9932762556785938009 +0 -0
- crackerjack/.ruff_cache/0.6.0/11982804814124138945 +0 -0
- crackerjack/.ruff_cache/0.6.0/12055761203849489982 +0 -0
- crackerjack/.ruff_cache/0.6.2/1206147804896221174 +0 -0
- crackerjack/.ruff_cache/0.6.4/1206147804896221174 +0 -0
- crackerjack/.ruff_cache/0.6.5/1206147804896221174 +0 -0
- crackerjack/.ruff_cache/0.6.7/3657366982708166874 +0 -0
- crackerjack/.ruff_cache/0.6.9/285614542852677309 +0 -0
- crackerjack/.ruff_cache/0.7.1/1024065805990144819 +0 -0
- crackerjack/.ruff_cache/0.7.1/285614542852677309 +0 -0
- crackerjack/.ruff_cache/0.7.3/16061516852537040135 +0 -0
- crackerjack/.ruff_cache/0.8.4/16354268377385700367 +0 -0
- crackerjack/.ruff_cache/0.9.10/12813592349865671909 +0 -0
- crackerjack/.ruff_cache/0.9.10/923908772239632759 +0 -0
- crackerjack/.ruff_cache/0.9.3/13948373885254993391 +0 -0
- crackerjack/.ruff_cache/0.9.9/12813592349865671909 +0 -0
- crackerjack/.ruff_cache/0.9.9/8843823720003377982 +0 -0
- crackerjack/.ruff_cache/CACHEDIR.TAG +0 -1
- crackerjack/crackerjack.py +0 -855
- crackerjack/pyproject.toml +0 -214
- crackerjack-0.18.2.dist-info/METADATA +0 -420
- crackerjack-0.18.2.dist-info/RECORD +0 -59
- crackerjack-0.18.2.dist-info/entry_points.txt +0 -4
- {crackerjack-0.18.2.dist-info → crackerjack-0.45.2.dist-info}/licenses/LICENSE +0 -0
crackerjack/pyproject.toml
DELETED
|
@@ -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
|
-
[](https://github.com/lesleslie/crackerjack)
|
|
44
|
-
[](https://www.python.org/downloads/)
|
|
45
|
-
[](https://github.com/astral-sh/ruff)
|
|
46
|
-
[](https://github.com/astral-sh/uv)
|
|
47
|
-
[](https://microsoft.github.io/pyright/)
|
|
48
|
-
[](https://pdm.fming.dev)
|
|
49
|
-
[](https://github.com/PyCQA/bandit)
|
|
50
|
-
[](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,,
|