crackerjack 0.33.1__tar.gz → 0.33.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of crackerjack might be problematic. Click here for more details.
- {crackerjack-0.33.1 → crackerjack-0.33.3}/CHANGELOG.md +12 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/PKG-INFO +1 -1
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/regex_patterns.py +13 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/docs/archive/CONFIG_MANAGEMENT_REPLACEMENT_PLAN.md +58 -41
- {crackerjack-0.33.1 → crackerjack-0.33.3}/docs/archive/CONFIG_MERGE_REMOVAL_PLAN.md +26 -18
- {crackerjack-0.33.1 → crackerjack-0.33.3}/docs/archive/DOCUMENTATION_REORGANIZATION_PLAN.md +21 -12
- {crackerjack-0.33.1 → crackerjack-0.33.3}/fix_typing_imports.py +4 -4
- {crackerjack-0.33.1 → crackerjack-0.33.3}/pyproject.toml +1 -1
- {crackerjack-0.33.1 → crackerjack-0.33.3}/uv.lock +1 -1
- {crackerjack-0.33.1 → crackerjack-0.33.3}/.github/FUNDING.yml +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/.gitignore +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/.pre-commit-config.yaml +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/AGENTS.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/CLAUDE.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/LICENSE +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/QWEN.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/README.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/RULES.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/SECURITY.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/ai/AGENT-CAPABILITIES.json +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/ai/AGENT_SELECTION.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/ai/AI-REFERENCE.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/ai/ERROR-PATTERNS.yaml +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/__init__.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/__main__.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/adapters/__init__.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/adapters/lsp_client.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/adapters/rust_tool_adapter.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/adapters/rust_tool_manager.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/adapters/skylos_adapter.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/adapters/zuban_adapter.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/agents/__init__.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/agents/architect_agent.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/agents/base.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/agents/coordinator.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/agents/documentation_agent.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/agents/dry_agent.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/agents/formatting_agent.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/agents/import_optimization_agent.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/agents/performance_agent.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/agents/performance_helpers.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/agents/proactive_agent.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/agents/refactoring_agent.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/agents/refactoring_helpers.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/agents/security_agent.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/agents/test_creation_agent.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/agents/test_specialist_agent.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/agents/tracker.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/api.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/cli/__init__.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/cli/cache_handlers.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/cli/cache_handlers_enhanced.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/cli/facade.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/cli/handlers.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/cli/interactive.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/cli/options.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/cli/utils.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/code_cleaner.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/config/__init__.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/config/global_lock_config.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/config/hooks.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/core/__init__.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/core/async_workflow_orchestrator.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/core/autofix_coordinator.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/core/container.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/core/enhanced_container.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/core/file_lifecycle.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/core/performance.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/core/performance_monitor.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/core/phase_coordinator.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/core/proactive_workflow.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/core/resource_manager.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/core/service_watchdog.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/core/session_coordinator.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/core/timeout_manager.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/core/websocket_lifecycle.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/core/workflow_orchestrator.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/docs/INDEX.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/docs/generated/api/API_REFERENCE.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/docs/generated/api/CLI_REFERENCE.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/docs/generated/api/CROSS_REFERENCES.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/docs/generated/api/PROTOCOLS.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/docs/generated/api/SERVICES.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/documentation/__init__.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/documentation/ai_templates.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/documentation/dual_output_generator.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/documentation/mkdocs_integration.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/documentation/reference_generator.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/dynamic_config.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/errors.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/executors/__init__.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/executors/async_hook_executor.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/executors/cached_hook_executor.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/executors/hook_executor.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/executors/hook_lock_manager.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/executors/individual_hook_executor.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/executors/lsp_aware_hook_executor.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/executors/tool_proxy.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/hooks/lsp_hook.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/intelligence/__init__.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/intelligence/adaptive_learning.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/intelligence/agent_orchestrator.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/intelligence/agent_registry.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/intelligence/agent_selector.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/intelligence/integration.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/interactive.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/managers/__init__.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/managers/async_hook_manager.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/managers/hook_manager.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/managers/publish_manager.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/managers/test_command_builder.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/managers/test_executor.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/managers/test_manager.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/managers/test_manager_backup.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/managers/test_progress.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/__init__.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/cache.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/client_runner.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/context.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/dashboard.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/enhanced_progress_monitor.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/enhanced_progress_monitor.tcss +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/file_monitor.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/progress_components.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/progress_monitor.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/progress_monitor.tcss +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/rate_limiter.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/server.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/server_core.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/service_watchdog.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/state.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/task_manager.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/tools/__init__.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/tools/core_tools.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/tools/error_analyzer.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/tools/execution_tools.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/tools/execution_tools_backup.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/tools/intelligence_tool_registry.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/tools/intelligence_tools.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/tools/monitoring_tools.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/tools/monitoring_tools.py.backup +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/tools/proactive_tools.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/tools/progress_tools.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/tools/utility_tools.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/tools/workflow_executor.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/websocket/__init__.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/websocket/app.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/websocket/endpoints.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/websocket/jobs.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/websocket/monitoring_endpoints.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/websocket/server.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/websocket/websocket_handler.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mcp/websocket_server.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mixins/__init__.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/mixins/error_handling.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/models/__init__.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/models/config.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/models/config_adapter.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/models/protocols.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/models/resource_protocols.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/models/task.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/monitoring/__init__.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/monitoring/ai_agent_watchdog.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/monitoring/metrics_collector.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/monitoring/regression_prevention.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/monitoring/websocket_server.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/orchestration/__init__.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/orchestration/advanced_orchestrator.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/orchestration/coverage_improvement.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/orchestration/execution_strategies.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/orchestration/test_progress_streamer.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/plugins/__init__.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/plugins/base.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/plugins/hooks.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/plugins/loader.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/plugins/managers.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/pyproject.toml +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/security/__init__.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/security/audit.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/__init__.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/anomaly_detector.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/api_extractor.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/backup_service.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/bounded_status_operations.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/cache.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/changelog_automation.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/config.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/config_integrity.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/config_merge.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/config_template.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/contextual_ai_assistant.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/coverage_badge_service.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/coverage_ratchet.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/debug.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/dependency_analyzer.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/dependency_monitor.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/documentation_generator.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/documentation_service.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/enhanced_filesystem.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/enterprise_optimizer.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/error_pattern_analyzer.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/file_hasher.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/filesystem.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/git.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/health_metrics.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/heatmap_generator.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/initialization.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/input_validator.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/intelligent_commit.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/log_manager.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/logging.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/lsp_client.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/memory_optimizer.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/metrics.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/parallel_executor.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/pattern_cache.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/pattern_detector.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/performance_benchmarks.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/performance_cache.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/performance_monitor.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/predictive_analytics.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/quality_baseline.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/quality_baseline_enhanced.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/quality_intelligence.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/regex_utils.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/secure_path_utils.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/secure_status_formatter.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/secure_subprocess.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/security.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/security_logger.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/server_manager.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/smart_scheduling.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/status_authentication.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/status_security_manager.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/terminal_utils.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/thread_safe_status_collector.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/tool_version_service.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/unified_config.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/validation_rate_limiter.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/version_analyzer.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/version_checker.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/websocket_resource_limiter.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/services/zuban_lsp_service.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/slash_commands/__init__.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/slash_commands/init.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/slash_commands/run.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/slash_commands/status.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/tools/__init__.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/tools/fix_terminal.sh +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/tools/validate_input_validator_patterns.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/tools/validate_regex_patterns.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/crackerjack/uv.lock +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/docs/architecture/API_REFERENCE.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/docs/architecture/ARCHITECTURE.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/docs/development/IDE-SETUP.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/docs/development/RUST_TOOLING_FRAMEWORK.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/docs/planning/COMPLEXITY_REFACTORING_PLAN.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/docs/planning/COVERAGE_BADGE_IMPLEMENTATION_PLAN.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/docs/planning/CURRENT_IMPLEMENTATION_STATUS.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/docs/planning/DOCUMENTATION_SYSTEM_ARCHITECTURE.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/docs/planning/EXPERIMENTAL-EVALUATION.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/docs/planning/FEATURE_IMPLEMENTATION_PLAN.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/docs/planning/RESILIENT_HOOK_ARCHITECTURE_IMPLEMENTATION_SUMMARY.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/docs/planning/RESILIENT_HOOK_ARCHITECTURE_PLAN.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/docs/planning/STAGE_HEADERS_IMPLEMENTATION_PLAN.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/docs/planning/TIMEOUT_ARCHITECTURE_SOLUTION.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/docs/planning/TYPE_ANNOTATION_FIXING_PLAN.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/docs/planning/UVXUSAGE.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/docs/planning/ZUBAN_LSP_INTEGRATION_PLAN.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/docs/planning/ZUBAN_TOML_PARSING_BUG_ANALYSIS.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/docs/security/INPUT_VALIDATOR_SECURITY_AUDIT.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/docs/security/SECURITY-AUDIT.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/docs/security/SECURITY_AUDIT_REPORT.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/docs/security/SECURITY_AUDIT_STATUS_DISCLOSURE.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/docs/security/SECURITY_HARDENING_REPORT.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/docs/security/SECURITY_SUBPROCESS_HARDENING_REPORT.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/docs/systems/BACKUP_SYSTEM.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/docs/systems/CACHING_SYSTEM.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/docs/systems/DASHBOARD_ARCHITECTURE.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/docs/systems/MCP_INTEGRATION.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/docs/systems/MONITORING_INTEGRATION.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/docs/systems/UNIFIED_MONITORING_ARCHITECTURE.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/example.mcp.json +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/excalidraw.log +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/mypy.ini +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/scripts/__init__.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/scripts/integrate_resource_management.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/scripts/performance_benchmark.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/templates/api_reference.md.template +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/templates/changelog_entry.md.template +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/templates/user_guide.md.template +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/test_docs_site/site/docs/api-reference.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/test_docs_site/site/docs/getting-started.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/test_docs_site/site/docs/index.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/test_docs_site/site/docs/stylesheets/extra.css +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/test_docs_site/site/mkdocs.yml +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/__init__.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/base_test.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/conftest.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/coverage.json +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/data/__init__.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/data/comments_sample.txt +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/data/docstrings_sample.txt +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/data/expected_comments_sample.txt +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/data/init.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/docs/HEALTH_METRICS_TESTING_SUMMARY.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/docs/TEST_COVERAGE_PLAN.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/docs/TEST_IMPLEMENTATION_PLAN.md +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/run_tests.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/scripts/__init__.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/scripts/agent_audit_report.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/scripts/run_test_suite.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test___main__.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_ai_agent_workflow.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_ai_optimized_documentation.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_async_hook_executor.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_changelog_generation.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_cli/__init__.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_cli/test_global_lock_options.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_cli_semantic_naming.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_coordinator_performance.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_core_autofix_coordinator.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_core_comprehensive.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_core_coverage.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_core_enhanced_container.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_core_modules.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_core_performance.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_documentation_agent_simple.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_dynamic_config.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_dynamic_config_coverage.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_end_to_end_integration.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_enhanced_filesystem.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_enhanced_filesystem_comprehensive.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_enhanced_filesystem_coverage.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_execution_speed_optimization.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_executors/__init__.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_executors/test_lock_integration.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_fast_hooks_behavior.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_filesystem_coverage.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_final_validation.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_global_lock_config.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_hook_lock_manager.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_hook_manager_simple.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_import_coverage_consolidated.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_input_validation.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_intelligence_system.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_large_modules_coverage.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_main_entry_coverage.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_main_module.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_managers_consolidated.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_mcp_progress_monitor.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_mcp_server.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_models_comprehensive.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_models_config_adapter_coverage.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_models_focused.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_models_task_coverage.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_modernized_code.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_performance_agent_enhanced.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_performance_agent_simple.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_performance_benchmarks_focused.py.bak +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_phase_coordinator_simple.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_plugins_coverage.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_proactive_agent_system.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_protocol_compliance.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_publish_manager_coverage.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_pytest_features.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_regex_patterns.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_resource_cleanup_integration.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_secure_path_utils.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_secure_status_formatter.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_security_audit.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_security_hardening.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_security_integration.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_services_coverage.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_session_coordinator.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_session_coordinator_coverage.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_simple_tool_version_service.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_simple_workflow.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_stage_workflow_execution_order.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_structured_errors.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_structured_logging.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_syntax_validation.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_terminal_restoration.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_terminal_state.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_timeout_system.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_unified_api.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_unified_config.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_unified_monitoring_dashboard.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_validate_regex_patterns_tool.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_version_analyzer.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_version_bump_analyzer.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_websocket_endpoints.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_workflow_fast_hooks.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_workflow_integration.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tests/test_workflow_orchestrator.py +0 -0
- {crackerjack-0.33.1 → crackerjack-0.33.3}/tools/validate_regex_patterns_standalone.py +0 -0
|
@@ -5,6 +5,18 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.33.3] - 2025-09-14
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- Update config, core, deps, docs
|
|
13
|
+
|
|
14
|
+
## [0.33.2] - 2025-09-14
|
|
15
|
+
|
|
16
|
+
### Added
|
|
17
|
+
|
|
18
|
+
- Fix regex validation and remove conflicting pre-commit git hook
|
|
19
|
+
|
|
8
20
|
## [0.33.1] - 2025-09-14
|
|
9
21
|
|
|
10
22
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: crackerjack
|
|
3
|
-
Version: 0.33.
|
|
3
|
+
Version: 0.33.3
|
|
4
4
|
Summary: Crackerjack Python project management tool
|
|
5
5
|
Project-URL: documentation, https://github.com/lesleslie/crackerjack
|
|
6
6
|
Project-URL: homepage, https://github.com/lesleslie/crackerjack
|
|
@@ -2704,6 +2704,19 @@ SAFE_PATTERNS: dict[str, ValidatedPattern] = {
|
|
|
2704
2704
|
("no coverage here", "no coverage here"), # No match
|
|
2705
2705
|
],
|
|
2706
2706
|
),
|
|
2707
|
+
"detect_typing_usage": ValidatedPattern(
|
|
2708
|
+
name="detect_typing_usage",
|
|
2709
|
+
pattern=r"\bt\.[A-Z]",
|
|
2710
|
+
replacement="",
|
|
2711
|
+
description="Detect usage of typing module aliases like t.Any, t.Dict, etc.",
|
|
2712
|
+
global_replace=True,
|
|
2713
|
+
test_cases=[
|
|
2714
|
+
("def func(x: t.Any) -> t.Dict:", "def func(x: ny) -> ict:"), # Removes t.A and t.D
|
|
2715
|
+
("value: t.Optional[str] = None", "value: ptional[str] = None"), # Removes t.O
|
|
2716
|
+
("from typing import Dict", "from typing import Dict"), # No match
|
|
2717
|
+
("data = dict()", "data = dict()"), # No match
|
|
2718
|
+
],
|
|
2719
|
+
),
|
|
2707
2720
|
}
|
|
2708
2721
|
|
|
2709
2722
|
|
{crackerjack-0.33.1 → crackerjack-0.33.3}/docs/archive/CONFIG_MANAGEMENT_REPLACEMENT_PLAN.md
RENAMED
|
@@ -7,23 +7,27 @@ Replace the current ConfigMergeService and file-copying system with a cleaner, v
|
|
|
7
7
|
## Current System Problems
|
|
8
8
|
|
|
9
9
|
### 1. File Copying Overhead
|
|
10
|
+
|
|
10
11
|
- **Issue**: 6 config files are copied TO the package directory on every `python -m crackerjack` run
|
|
11
12
|
- **Files copied**: `.pre-commit-config.yaml`, `CLAUDE.md`, `RULES.md`, `.gitignore`, `example.mcp.json`, `uv.lock`
|
|
12
13
|
- **Location**: `_copy_config_files_to_package()` in PhaseCoordinator (lines 251-295)
|
|
13
14
|
- **Impact**: Unnecessary I/O, confusing self-referential copying for crackerjack itself
|
|
14
15
|
|
|
15
16
|
### 2. Dual Configuration Systems
|
|
17
|
+
|
|
16
18
|
- **ConfigMergeService**: Automatically merges configs from package templates to project
|
|
17
19
|
- **DynamicConfigGenerator**: Dynamically generates `.pre-commit-config.yaml`
|
|
18
20
|
- **Problem**: Both systems can overwrite manual changes, causing conflicts
|
|
19
21
|
|
|
20
22
|
### 3. Pre-commit Cache Issues
|
|
23
|
+
|
|
21
24
|
- **Location**: `~/.cache/pre-commit/`
|
|
22
25
|
- **Problem**: Cached environments don't refresh when config changes
|
|
23
26
|
- **Symptom**: Old hooks (like zuban) still appear even after config updates
|
|
24
27
|
- **Current workaround**: Manual `pre-commit clean && pre-commit install`
|
|
25
28
|
|
|
26
29
|
### 4. Forced Automatic Updates
|
|
30
|
+
|
|
27
31
|
- **Problem**: ConfigMergeService forces "smart merges" without user consent
|
|
28
32
|
- **Impact**: Manual configuration changes get reverted
|
|
29
33
|
- **Example**: Switching from zuban to pyright gets undone on next run
|
|
@@ -31,11 +35,12 @@ Replace the current ConfigMergeService and file-copying system with a cleaner, v
|
|
|
31
35
|
## Proposed Solution: Version-Based Pull Configuration System
|
|
32
36
|
|
|
33
37
|
### Core Principles
|
|
38
|
+
|
|
34
39
|
1. **No file copying**: Templates stored as Python data structures
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
40
|
+
1. **Pull-based updates**: Users explicitly request config updates
|
|
41
|
+
1. **Version tracking**: Each config has a version number
|
|
42
|
+
1. **Diff visibility**: Show changes before applying
|
|
43
|
+
1. **Cache management**: Automatic pre-commit cache invalidation
|
|
39
44
|
|
|
40
45
|
## Implementation Architecture
|
|
41
46
|
|
|
@@ -44,29 +49,31 @@ Replace the current ConfigMergeService and file-copying system with a cleaner, v
|
|
|
44
49
|
```python
|
|
45
50
|
# crackerjack/services/config_template.py
|
|
46
51
|
|
|
52
|
+
|
|
47
53
|
class ConfigTemplateService:
|
|
48
54
|
"""Version-based configuration template management."""
|
|
49
|
-
|
|
55
|
+
|
|
50
56
|
CONFIG_VERSIONS = {
|
|
51
57
|
"pre-commit": "3.0.0",
|
|
52
58
|
"pyproject": "1.2.0",
|
|
53
59
|
"gitignore": "1.0.0",
|
|
54
60
|
}
|
|
55
|
-
|
|
61
|
+
|
|
56
62
|
def get_template(self, config_type: str, version: str = None) -> dict:
|
|
57
63
|
"""Get config template as structured data."""
|
|
58
64
|
pass
|
|
59
|
-
|
|
65
|
+
|
|
60
66
|
def check_updates(self, project_path: Path) -> dict[str, UpdateInfo]:
|
|
61
67
|
"""Check if newer config versions are available."""
|
|
62
68
|
pass
|
|
63
|
-
|
|
69
|
+
|
|
64
70
|
def generate_diff(self, config_type: str, current: dict, new: dict) -> str:
|
|
65
71
|
"""Generate readable diff between configs."""
|
|
66
72
|
pass
|
|
67
|
-
|
|
68
|
-
def apply_update(
|
|
69
|
-
|
|
73
|
+
|
|
74
|
+
def apply_update(
|
|
75
|
+
self, config_type: str, project_path: Path, interactive: bool = False
|
|
76
|
+
) -> bool:
|
|
70
77
|
"""Apply config update with optional interactive mode."""
|
|
71
78
|
pass
|
|
72
79
|
```
|
|
@@ -89,9 +96,9 @@ PRE_COMMIT_TEMPLATE = {
|
|
|
89
96
|
"language": "system",
|
|
90
97
|
"files": r"\.py$",
|
|
91
98
|
}
|
|
92
|
-
]
|
|
99
|
+
],
|
|
93
100
|
}
|
|
94
|
-
]
|
|
101
|
+
],
|
|
95
102
|
}
|
|
96
103
|
|
|
97
104
|
PYPROJECT_TEMPLATE = {
|
|
@@ -102,7 +109,7 @@ PYPROJECT_TEMPLATE = {
|
|
|
102
109
|
"line-length": 88,
|
|
103
110
|
# ... rest of config
|
|
104
111
|
}
|
|
105
|
-
}
|
|
112
|
+
},
|
|
106
113
|
}
|
|
107
114
|
```
|
|
108
115
|
|
|
@@ -146,15 +153,15 @@ configs:
|
|
|
146
153
|
```python
|
|
147
154
|
class PreCommitCacheManager:
|
|
148
155
|
"""Manage pre-commit cache to prevent staleness."""
|
|
149
|
-
|
|
156
|
+
|
|
150
157
|
def get_config_hash(self, config_path: Path) -> str:
|
|
151
158
|
"""Generate hash of current config."""
|
|
152
159
|
pass
|
|
153
|
-
|
|
160
|
+
|
|
154
161
|
def should_refresh_cache(self, config_path: Path) -> bool:
|
|
155
162
|
"""Check if cache needs refresh based on config changes."""
|
|
156
163
|
pass
|
|
157
|
-
|
|
164
|
+
|
|
158
165
|
def refresh_cache(self) -> bool:
|
|
159
166
|
"""Run pre-commit clean and gc."""
|
|
160
167
|
subprocess.run(["pre-commit", "clean"])
|
|
@@ -166,44 +173,51 @@ class PreCommitCacheManager:
|
|
|
166
173
|
## Migration Plan
|
|
167
174
|
|
|
168
175
|
### Phase 1: Add New System (Week 1)
|
|
176
|
+
|
|
169
177
|
1. Create ConfigTemplateService
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
178
|
+
1. Convert existing configs to template format
|
|
179
|
+
1. Add version tracking
|
|
180
|
+
1. Implement diff generation
|
|
181
|
+
1. Add new CLI commands
|
|
174
182
|
|
|
175
183
|
### Phase 2: Integration (Week 2)
|
|
184
|
+
|
|
176
185
|
1. Add PreCommitCacheManager
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
186
|
+
1. Integrate cache management with updates
|
|
187
|
+
1. Add config version tracking file
|
|
188
|
+
1. Update documentation
|
|
180
189
|
|
|
181
190
|
### Phase 3: Deprecate Old System (Week 3)
|
|
191
|
+
|
|
182
192
|
1. Mark ConfigMergeService as deprecated
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
193
|
+
1. Remove `_copy_config_files_to_package` from PhaseCoordinator
|
|
194
|
+
1. Update InitializationService to use new system
|
|
195
|
+
1. Add migration warnings
|
|
186
196
|
|
|
187
197
|
### Phase 4: Remove Old System (Week 4)
|
|
198
|
+
|
|
188
199
|
1. Delete ConfigMergeService
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
200
|
+
1. Clean up all smart merge code
|
|
201
|
+
1. Remove package-level config templates
|
|
202
|
+
1. Final testing and validation
|
|
192
203
|
|
|
193
204
|
## Benefits
|
|
194
205
|
|
|
195
206
|
### For Crackerjack Project
|
|
207
|
+
|
|
196
208
|
- No more self-referential file copying
|
|
197
209
|
- Cleaner codebase without merge logic
|
|
198
210
|
- Faster execution (no I/O for copying)
|
|
199
211
|
|
|
200
212
|
### For Other Projects Using Crackerjack
|
|
213
|
+
|
|
201
214
|
- Control over when to update configs
|
|
202
215
|
- See changes before applying
|
|
203
216
|
- Pin configs to specific versions
|
|
204
217
|
- No surprise overwrites
|
|
205
218
|
|
|
206
219
|
### For Development
|
|
220
|
+
|
|
207
221
|
- Pre-commit cache properly managed
|
|
208
222
|
- No more stale hook issues
|
|
209
223
|
- Faster iteration cycles
|
|
@@ -220,7 +234,7 @@ class PreCommitCacheManager:
|
|
|
220
234
|
- [ ] Implement update mechanism
|
|
221
235
|
- [ ] Add interactive update mode
|
|
222
236
|
- [ ] Create migration documentation
|
|
223
|
-
- [ ] Remove _copy_config_files_to_package
|
|
237
|
+
- [ ] Remove \_copy_config_files_to_package
|
|
224
238
|
- [ ] Deprecate ConfigMergeService
|
|
225
239
|
- [ ] Update InitializationService
|
|
226
240
|
- [ ] Add tests for new system
|
|
@@ -229,20 +243,23 @@ class PreCommitCacheManager:
|
|
|
229
243
|
## Success Criteria
|
|
230
244
|
|
|
231
245
|
1. **Zero file copying**: No configs copied to package directory
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
246
|
+
1. **User control**: Updates only when explicitly requested
|
|
247
|
+
1. **Version visibility**: Clear tracking of config versions
|
|
248
|
+
1. **Cache freshness**: Pre-commit cache automatically managed
|
|
249
|
+
1. **Backward compatibility**: Smooth migration path
|
|
236
250
|
|
|
237
251
|
## Risk Mitigation
|
|
238
252
|
|
|
239
253
|
1. **Risk**: Breaking existing projects
|
|
254
|
+
|
|
240
255
|
- **Mitigation**: Gradual migration with deprecation warnings
|
|
241
256
|
|
|
242
|
-
|
|
257
|
+
1. **Risk**: Complex diff generation
|
|
258
|
+
|
|
243
259
|
- **Mitigation**: Start with simple text diffs, enhance later
|
|
244
260
|
|
|
245
|
-
|
|
261
|
+
1. **Risk**: User confusion
|
|
262
|
+
|
|
246
263
|
- **Mitigation**: Clear documentation and migration guide
|
|
247
264
|
|
|
248
265
|
## Timeline
|
|
@@ -255,7 +272,7 @@ class PreCommitCacheManager:
|
|
|
255
272
|
## Next Steps
|
|
256
273
|
|
|
257
274
|
1. Review and approve this plan
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
275
|
+
1. Create feature branch
|
|
276
|
+
1. Begin implementation with ConfigTemplateService
|
|
277
|
+
1. Regular testing during development
|
|
278
|
+
1. User acceptance testing before merge
|
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
The config merging system in crackerjack is causing configuration reversion issues:
|
|
6
6
|
|
|
7
7
|
1. **ConfigMergeService** automatically syncs configs from `crackerjack/` package directory to project root
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
1. **PhaseCoordinator** triggers this merge during every `python -m crackerjack` run
|
|
9
|
+
1. Manual changes (like switching from zuban to pyright) get reverted every time
|
|
10
|
+
1. The system was designed for project initialization but interferes with ongoing development
|
|
11
11
|
|
|
12
12
|
## Current Config Merge Flow
|
|
13
13
|
|
|
@@ -19,6 +19,7 @@ PhaseCoordinator._execute_configuration_steps()
|
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
Files involved:
|
|
22
|
+
|
|
22
23
|
- `/crackerjack/.pre-commit-config.yaml` (package template)
|
|
23
24
|
- `/.pre-commit-config.yaml` (project config - gets overwritten)
|
|
24
25
|
|
|
@@ -27,57 +28,64 @@ Files involved:
|
|
|
27
28
|
Remove the entire config merging system since:
|
|
28
29
|
|
|
29
30
|
1. **It's counterproductive** - prevents manual configuration changes
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
1. **It's not needed for existing projects** - only useful during initialization
|
|
32
|
+
1. **It creates confusion** - users expect manual edits to persist
|
|
33
|
+
1. **Alternative exists** - InitializationService can handle new project setup
|
|
33
34
|
|
|
34
35
|
## Implementation Steps
|
|
35
36
|
|
|
36
37
|
### Phase 1: Remove Config Merge Invocation
|
|
38
|
+
|
|
37
39
|
- **File**: `crackerjack/core/phase_coordinator.py`
|
|
38
40
|
- **Action**: Remove calls to `_handle_smart_config_merge()` and related methods
|
|
39
41
|
- **Lines**: 212, 221-278, 310-315
|
|
40
42
|
|
|
41
43
|
### Phase 2: Remove Package-Level Templates
|
|
44
|
+
|
|
42
45
|
- **Files to Delete**:
|
|
43
46
|
- `/crackerjack/.pre-commit-config.yaml`
|
|
44
47
|
- Any other config templates in package directory
|
|
45
48
|
- **Rationale**: Remove the source of unwanted merging
|
|
46
49
|
|
|
47
50
|
### Phase 3: Preserve InitializationService
|
|
48
|
-
|
|
51
|
+
|
|
52
|
+
- **File**: `crackerjack/services/initialization.py`
|
|
49
53
|
- **Action**: Keep as-is for `--init` functionality
|
|
50
54
|
- **Rationale**: Still useful for new project setup
|
|
51
55
|
|
|
52
56
|
### Phase 4: Remove ConfigMergeService (Optional)
|
|
57
|
+
|
|
53
58
|
- **Consideration**: May still be useful for `--init` command
|
|
54
59
|
- **Decision**: Keep for now, remove only if unused after Phase 1-2
|
|
55
60
|
|
|
56
61
|
## Benefits
|
|
57
62
|
|
|
58
63
|
1. **Manual edits persist** - Configuration changes will no longer be reverted
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
64
|
+
1. **Cleaner workflow** - Less magic, more predictable behavior
|
|
65
|
+
1. **Reduced complexity** - Fewer moving parts in the system
|
|
66
|
+
1. **User expectations met** - Configuration files behave like normal files
|
|
62
67
|
|
|
63
68
|
## Risks & Mitigation
|
|
64
69
|
|
|
65
70
|
1. **Risk**: Users might expect automatic config updates
|
|
71
|
+
|
|
66
72
|
- **Mitigation**: Document that configs should be managed manually
|
|
67
|
-
|
|
68
|
-
|
|
73
|
+
|
|
74
|
+
1. **Risk**: New projects won't get optimal configs
|
|
75
|
+
|
|
69
76
|
- **Mitigation**: InitializationService still provides good defaults
|
|
70
|
-
|
|
71
|
-
|
|
77
|
+
|
|
78
|
+
1. **Risk**: Breaking change for existing workflows
|
|
79
|
+
|
|
72
80
|
- **Mitigation**: Most users probably don't rely on config merging
|
|
73
81
|
|
|
74
82
|
## Testing Strategy
|
|
75
83
|
|
|
76
84
|
1. Remove config merge calls
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
85
|
+
1. Test that manual edits to `.pre-commit-config.yaml` persist after running crackerjack
|
|
86
|
+
1. Verify that `--init` still works for new projects
|
|
87
|
+
1. Confirm no functionality is broken
|
|
80
88
|
|
|
81
89
|
## Implementation Priority
|
|
82
90
|
|
|
83
|
-
**HIGH** - This is blocking the zuban → pyright transition and likely affects other manual configuration changes.
|
|
91
|
+
**HIGH** - This is blocking the zuban → pyright transition and likely affects other manual configuration changes.
|
|
@@ -5,18 +5,21 @@
|
|
|
5
5
|
**Problem**: 50+ markdown files scattered across project root, docs/, tests/, and nested directories with significant duplication and poor organization.
|
|
6
6
|
|
|
7
7
|
**Key Issues Identified**:
|
|
8
|
+
|
|
8
9
|
- Duplicated files: `API_REFERENCE.md`, `ARCHITECTURE.md` exist in both root and docs/
|
|
9
10
|
- Mixed purposes: User docs, implementation plans, and internal analysis all in root
|
|
10
11
|
- Scattered security docs: Root has `SECURITY.md`, `SECURITY-AUDIT.md` + 5 files in docs/security/
|
|
11
|
-
- Implementation plans cluttering root directory (12+
|
|
12
|
+
- Implementation plans cluttering root directory (12+ \*\_PLAN.md files)
|
|
12
13
|
- No clear navigation structure for developers
|
|
13
14
|
|
|
14
15
|
## Proposed Reorganization
|
|
15
16
|
|
|
16
17
|
### Project Root - Essential User Files Only
|
|
18
|
+
|
|
17
19
|
**Keep in root** (5 files):
|
|
20
|
+
|
|
18
21
|
```
|
|
19
|
-
README.md # Main project overview
|
|
22
|
+
README.md # Main project overview
|
|
20
23
|
CHANGELOG.md # Version history
|
|
21
24
|
CLAUDE.md # Claude Code instructions
|
|
22
25
|
SECURITY.md # Security policy (consolidated)
|
|
@@ -24,11 +27,12 @@ RULES.md # Development rules
|
|
|
24
27
|
```
|
|
25
28
|
|
|
26
29
|
### docs/ Directory - Organized Documentation
|
|
30
|
+
|
|
27
31
|
```
|
|
28
32
|
docs/
|
|
29
33
|
├── architecture/
|
|
30
34
|
│ ├── ARCHITECTURE.md # (moved from root, deduplicated)
|
|
31
|
-
│ ├── API_REFERENCE.md # (moved from root, deduplicated)
|
|
35
|
+
│ ├── API_REFERENCE.md # (moved from root, deduplicated)
|
|
32
36
|
│ └── AGENTS.md # (moved from root)
|
|
33
37
|
├── development/
|
|
34
38
|
│ ├── IDE-SETUP.md
|
|
@@ -63,6 +67,7 @@ docs/
|
|
|
63
67
|
```
|
|
64
68
|
|
|
65
69
|
### tests/docs/ - Test Documentation
|
|
70
|
+
|
|
66
71
|
```
|
|
67
72
|
tests/docs/
|
|
68
73
|
├── TEST_COVERAGE_PLAN.md
|
|
@@ -71,6 +76,7 @@ tests/docs/
|
|
|
71
76
|
```
|
|
72
77
|
|
|
73
78
|
### Keep As-Is
|
|
79
|
+
|
|
74
80
|
- `crackerjack/docs/generated/` - Generated API documentation
|
|
75
81
|
- `crackerjack/slash_commands/` - MCP command documentation
|
|
76
82
|
- `examples/README.md` - Example documentation
|
|
@@ -79,17 +85,20 @@ tests/docs/
|
|
|
79
85
|
## File Actions Required
|
|
80
86
|
|
|
81
87
|
### Moves (25 files)
|
|
88
|
+
|
|
82
89
|
- Root → docs/architecture/: `ARCHITECTURE.md`, `API_REFERENCE.md`, `AGENTS.md`
|
|
83
90
|
- Root → docs/ai/: `AI-REFERENCE.md`
|
|
84
91
|
- Root → docs/planning/: 12+ implementation and status files
|
|
85
92
|
- tests/ → tests/docs/: 3 test planning files
|
|
86
93
|
|
|
87
94
|
### Consolidations (2 merges)
|
|
95
|
+
|
|
88
96
|
- Merge duplicate `ARCHITECTURE.md` files (keep most current)
|
|
89
97
|
- Merge duplicate `API_REFERENCE.md` files (keep most current)
|
|
90
98
|
- Consolidate `SECURITY-AUDIT.md` into docs/security/
|
|
91
99
|
|
|
92
100
|
### Removals (3+ files)
|
|
101
|
+
|
|
93
102
|
- Remove duplicate versions after content verification
|
|
94
103
|
- Archive completed implementation plans (if any)
|
|
95
104
|
- Remove obsolete analysis files (candidate: `QWEN.md`, `UVXUSAGE.md`)
|
|
@@ -97,24 +106,24 @@ tests/docs/
|
|
|
97
106
|
## Reference Updates Needed
|
|
98
107
|
|
|
99
108
|
1. **CLAUDE.md**: Update any documentation references
|
|
100
|
-
|
|
101
|
-
|
|
109
|
+
1. **README.md**: Update documentation links to new structure
|
|
110
|
+
1. **Internal docs**: Update cross-references between moved files
|
|
102
111
|
|
|
103
112
|
## Implementation Order
|
|
104
113
|
|
|
105
114
|
1. Create new directory structure
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
115
|
+
1. Check duplicates for content differences
|
|
116
|
+
1. Move files to new locations
|
|
117
|
+
1. Update cross-references
|
|
118
|
+
1. Remove duplicates and obsolete files
|
|
119
|
+
1. Verify all links work
|
|
111
120
|
|
|
112
121
|
## Expected Outcome
|
|
113
122
|
|
|
114
123
|
- **Root directory**: Clean, only essential user files (5 files vs current 25+)
|
|
115
124
|
- **docs/ directory**: Logical organization by purpose and audience
|
|
116
|
-
- **No duplicates**: Single source of truth for each piece of documentation
|
|
125
|
+
- **No duplicates**: Single source of truth for each piece of documentation
|
|
117
126
|
- **Better navigation**: Clear hierarchy for finding relevant documentation
|
|
118
127
|
- **Easier maintenance**: Related docs grouped together
|
|
119
128
|
|
|
120
|
-
**File count reduction**: ~50 scattered files → ~35 organized files
|
|
129
|
+
**File count reduction**: ~50 scattered files → ~35 organized files
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
"""Fix missing 'import typing as t' in files that use 't' but don't import it."""
|
|
3
3
|
|
|
4
|
-
import re
|
|
5
4
|
import subprocess
|
|
6
|
-
import typing as t
|
|
7
5
|
from pathlib import Path
|
|
8
6
|
|
|
7
|
+
from crackerjack.services.regex_patterns import SAFE_PATTERNS
|
|
8
|
+
|
|
9
9
|
|
|
10
10
|
def get_files_needing_typing_import() -> list[str]:
|
|
11
11
|
"""Get files that use 't' but don't have the import."""
|
|
@@ -35,8 +35,8 @@ def file_needs_typing_import(file_path: str) -> bool:
|
|
|
35
35
|
with open(file_path, encoding="utf-8") as f:
|
|
36
36
|
content = f.read()
|
|
37
37
|
|
|
38
|
-
#
|
|
39
|
-
uses_t =
|
|
38
|
+
# REGEX OK: Using safe pattern for typing detection
|
|
39
|
+
uses_t = SAFE_PATTERNS["detect_typing_usage"].test(content)
|
|
40
40
|
|
|
41
41
|
# Check if it already has the import
|
|
42
42
|
has_import = "import typing as t" in content or "from typing import" in content
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|