gitflow-analytics 1.3.6__tar.gz → 1.3.11__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.
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/PKG-INFO +1 -1
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/_version.py +1 -1
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/cli.py +103 -53
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/config/loader.py +1 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/config/schema.py +3 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/core/data_fetcher.py +246 -154
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics.egg-info/PKG-INFO +1 -1
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics.egg-info/SOURCES.txt +0 -7
- gitflow_analytics-1.3.6/docs/STORY_POINTS_CONFIG_SUMMARY.md +0 -107
- gitflow_analytics-1.3.6/docs/guides/LLM_CLASSIFICATION_GUIDE.md +0 -164
- gitflow_analytics-1.3.6/tests/debug_bulk_exists.py +0 -62
- gitflow_analytics-1.3.6/tests/debug_commit_story_points.py +0 -145
- gitflow_analytics-1.3.6/tests/debug_database_storage.py +0 -228
- gitflow_analytics-1.3.6/tests/debug_jira_enrichment.py +0 -110
- gitflow_analytics-1.3.6/tests/debug_story_points.py +0 -121
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/CHANGELOG.md +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/CLAUDE.md +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/LICENSE +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/MANIFEST.in +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/README.md +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/docs/README.md +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/docs/SECURITY.md +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/docs/STRUCTURE.md +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/docs/architecture/README.md +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/docs/architecture/branch-analysis-optimization.md +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/docs/architecture/caching-strategy.md +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/docs/architecture/llm-classifier-refactoring.md +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/docs/architecture/ml-pipeline.md +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/docs/configuration/configuration.md +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/docs/deployment/README.md +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/docs/design/README.md +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/docs/design/commit-classification-design.md +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/docs/design/git_pm_correlation_design.md +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/docs/design/platform-agnostic-pm-framework.md +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/docs/design/qualitative_data_extraction.md +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/docs/developer/README.md +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/docs/developer/contributing.md +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/docs/developer/development-setup.md +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/docs/developer/training-guide.md +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/docs/examples/README.md +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/docs/getting-started/README.md +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/docs/getting-started/first-analysis.md +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/docs/getting-started/installation.md +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/docs/getting-started/quickstart.md +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/docs/guides/README.md +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/docs/guides/chatgpt-setup.md +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/docs/guides/ml-categorization.md +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/docs/guides/troubleshooting.md +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/docs/reference/README.md +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/docs/reference/cache-system.md +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/docs/reference/cli-commands.md +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/docs/reference/configuration-schema.md +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/docs/reference/json-export-schema.md +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/pyproject.toml +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/setup.cfg +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/__init__.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/classification/__init__.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/classification/batch_classifier.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/classification/classifier.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/classification/feature_extractor.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/classification/linguist_analyzer.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/classification/model.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/cli_rich.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/config/__init__.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/config/errors.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/config/profiles.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/config/repository.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/config/validator.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/config.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/core/__init__.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/core/analyzer.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/core/branch_mapper.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/core/cache.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/core/identity.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/core/metrics_storage.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/core/progress.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/core/schema_version.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/extractors/__init__.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/extractors/base.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/extractors/ml_tickets.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/extractors/story_points.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/extractors/tickets.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/identity_llm/__init__.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/identity_llm/analysis_pass.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/identity_llm/analyzer.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/identity_llm/models.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/integrations/__init__.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/integrations/github_integration.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/integrations/jira_integration.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/integrations/orchestrator.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/metrics/__init__.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/metrics/activity_scoring.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/metrics/branch_health.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/metrics/dora.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/models/__init__.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/models/database.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/pm_framework/__init__.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/pm_framework/adapters/__init__.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/pm_framework/adapters/jira_adapter.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/pm_framework/base.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/pm_framework/models.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/pm_framework/orchestrator.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/pm_framework/registry.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/qualitative/__init__.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/qualitative/chatgpt_analyzer.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/qualitative/classifiers/__init__.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/qualitative/classifiers/change_type.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/qualitative/classifiers/domain_classifier.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/qualitative/classifiers/intent_analyzer.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/qualitative/classifiers/llm/__init__.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/qualitative/classifiers/llm/base.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/qualitative/classifiers/llm/batch_processor.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/qualitative/classifiers/llm/cache.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/qualitative/classifiers/llm/cost_tracker.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/qualitative/classifiers/llm/openai_client.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/qualitative/classifiers/llm/prompts.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/qualitative/classifiers/llm/response_parser.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/qualitative/classifiers/llm_commit_classifier.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/qualitative/classifiers/risk_analyzer.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/qualitative/core/__init__.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/qualitative/core/llm_fallback.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/qualitative/core/nlp_engine.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/qualitative/core/pattern_cache.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/qualitative/core/processor.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/qualitative/enhanced_analyzer.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/qualitative/example_enhanced_usage.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/qualitative/models/__init__.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/qualitative/models/schemas.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/qualitative/utils/__init__.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/qualitative/utils/batch_processor.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/qualitative/utils/cost_tracker.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/qualitative/utils/metrics.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/qualitative/utils/text_processing.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/reports/__init__.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/reports/analytics_writer.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/reports/base.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/reports/branch_health_writer.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/reports/classification_writer.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/reports/cli_integration.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/reports/csv_writer.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/reports/data_models.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/reports/database_report_generator.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/reports/example_usage.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/reports/factory.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/reports/formatters.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/reports/html_generator.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/reports/interfaces.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/reports/json_exporter.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/reports/narrative_writer.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/reports/story_point_correlation.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/reports/weekly_trends_writer.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/training/__init__.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/training/model_loader.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/training/pipeline.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/tui/__init__.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/tui/app.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/tui/screens/__init__.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/tui/screens/analysis_progress_screen.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/tui/screens/configuration_screen.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/tui/screens/loading_screen.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/tui/screens/main_screen.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/tui/screens/results_screen.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/tui/widgets/__init__.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/tui/widgets/data_table.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/tui/widgets/export_modal.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics/tui/widgets/progress_widget.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics.egg-info/dependency_links.txt +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics.egg-info/entry_points.txt +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics.egg-info/requires.txt +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/src/gitflow_analytics.egg-info/top_level.txt +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/tests/__init__.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/tests/conftest.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/tests/core/__init__.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/tests/core/test_analyzer.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/tests/core/test_cache.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/tests/core/test_identity.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/tests/core/test_progress.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/tests/extractors/__init__.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/tests/integrations/__init__.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/tests/metrics/__init__.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/tests/models/__init__.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/tests/qualitative/__init__.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/tests/qualitative/test_basic_integration.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/tests/reports/__init__.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/tests/test_atomic_caching.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/tests/test_classification_system.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/tests/test_cli.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/tests/test_config.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/tests/test_config_extends.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/tests/test_config_profiles.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/tests/test_config_story_points.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/tests/test_jira_connection.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/tests/test_llm_commit_classification.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/tests/test_march_2025_comparison.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/tests/test_metrics.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/tests/test_ml_accuracy.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/tests/test_ml_components.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/tests/test_ml_comprehensive.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/tests/test_ml_integration.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/tests/test_report_abstraction.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/tests/test_reports.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/tests/test_story_points_analysis.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/tests/test_training_pipeline.py +0 -0
- {gitflow_analytics-1.3.6 → gitflow_analytics-1.3.11}/tests/test_two_step_process.py +0 -0
|
@@ -1069,6 +1069,7 @@ def analyze(
|
|
|
1069
1069
|
|
|
1070
1070
|
# Perform data fetch for repositories that need analysis
|
|
1071
1071
|
from .core.data_fetcher import GitDataFetcher
|
|
1072
|
+
from .core.progress import get_progress_service
|
|
1072
1073
|
|
|
1073
1074
|
data_fetcher = GitDataFetcher(
|
|
1074
1075
|
cache=cache,
|
|
@@ -1083,74 +1084,105 @@ def analyze(
|
|
|
1083
1084
|
orchestrator = IntegrationOrchestrator(cfg, cache)
|
|
1084
1085
|
jira_integration = orchestrator.integrations.get("jira")
|
|
1085
1086
|
|
|
1087
|
+
# Get progress service for overall repository progress
|
|
1088
|
+
progress = get_progress_service()
|
|
1089
|
+
|
|
1086
1090
|
# Fetch data for repositories that need analysis
|
|
1087
1091
|
total_commits = 0
|
|
1088
1092
|
total_tickets = 0
|
|
1089
1093
|
|
|
1090
|
-
for
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
def progress_callback(message: str):
|
|
1097
|
-
if display:
|
|
1098
|
-
display.print_status(f" {message}", "info")
|
|
1099
|
-
|
|
1100
|
-
# Fetch repository data
|
|
1101
|
-
result = data_fetcher.fetch_repository_data(
|
|
1102
|
-
repo_path=repo_path,
|
|
1103
|
-
project_key=project_key,
|
|
1104
|
-
weeks_back=weeks,
|
|
1105
|
-
branch_patterns=getattr(repo_config, "branch_patterns", None),
|
|
1106
|
-
jira_integration=jira_integration,
|
|
1107
|
-
progress_callback=progress_callback,
|
|
1108
|
-
start_date=start_date,
|
|
1109
|
-
end_date=end_date,
|
|
1110
|
-
)
|
|
1094
|
+
# Create top-level progress for all repositories
|
|
1095
|
+
with progress.progress(
|
|
1096
|
+
total=len(repos_needing_analysis),
|
|
1097
|
+
description="Processing repositories",
|
|
1098
|
+
unit="repos",
|
|
1099
|
+
) as repos_progress_ctx:
|
|
1111
1100
|
|
|
1112
|
-
|
|
1113
|
-
|
|
1101
|
+
for idx, repo_config in enumerate(repos_needing_analysis, 1):
|
|
1102
|
+
try:
|
|
1103
|
+
repo_path = Path(repo_config.path)
|
|
1104
|
+
project_key = repo_config.project_key or repo_path.name
|
|
1114
1105
|
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
f"{
|
|
1119
|
-
"success",
|
|
1106
|
+
# Update overall progress description
|
|
1107
|
+
progress.set_description(
|
|
1108
|
+
repos_progress_ctx,
|
|
1109
|
+
f"Repository {idx}/{len(repos_needing_analysis)}: {project_key}",
|
|
1120
1110
|
)
|
|
1121
1111
|
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
project_key=project_key,
|
|
1127
|
-
analysis_start=start_date,
|
|
1128
|
-
analysis_end=end_date,
|
|
1129
|
-
weeks_analyzed=weeks,
|
|
1130
|
-
commit_count=result["stats"]["total_commits"],
|
|
1131
|
-
ticket_count=result["stats"]["unique_tickets"],
|
|
1132
|
-
config_hash=config_hash,
|
|
1133
|
-
)
|
|
1112
|
+
# Progress callback for fetch
|
|
1113
|
+
def progress_callback(message: str):
|
|
1114
|
+
if display:
|
|
1115
|
+
display.print_status(f" {message}", "info")
|
|
1134
1116
|
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1117
|
+
# Fetch repository data
|
|
1118
|
+
# For organization discovery, use branch patterns from analysis config
|
|
1119
|
+
# Default to ["*"] to analyze all branches when not specified
|
|
1120
|
+
branch_patterns = None
|
|
1121
|
+
if hasattr(cfg.analysis, "branch_patterns"):
|
|
1122
|
+
branch_patterns = cfg.analysis.branch_patterns
|
|
1123
|
+
elif cfg.github.organization:
|
|
1124
|
+
# For organization discovery, default to analyzing all branches
|
|
1125
|
+
branch_patterns = ["*"]
|
|
1126
|
+
|
|
1127
|
+
result = data_fetcher.fetch_repository_data(
|
|
1128
|
+
repo_path=repo_path,
|
|
1129
|
+
project_key=project_key,
|
|
1130
|
+
weeks_back=weeks,
|
|
1131
|
+
branch_patterns=branch_patterns,
|
|
1132
|
+
jira_integration=jira_integration,
|
|
1133
|
+
progress_callback=progress_callback,
|
|
1134
|
+
start_date=start_date,
|
|
1135
|
+
end_date=end_date,
|
|
1139
1136
|
)
|
|
1140
|
-
else:
|
|
1141
|
-
click.echo(f" ❌ Error fetching {project_key}: {e}")
|
|
1142
1137
|
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1138
|
+
total_commits += result["stats"]["total_commits"]
|
|
1139
|
+
total_tickets += result["stats"]["unique_tickets"]
|
|
1140
|
+
|
|
1141
|
+
if display:
|
|
1142
|
+
display.print_status(
|
|
1143
|
+
f" ✅ {project_key}: {result['stats']['total_commits']} commits, "
|
|
1144
|
+
f"{result['stats']['unique_tickets']} tickets",
|
|
1145
|
+
"success",
|
|
1146
|
+
)
|
|
1147
|
+
|
|
1148
|
+
# Mark repository analysis as complete
|
|
1149
|
+
cache.mark_repository_analysis_complete(
|
|
1146
1150
|
repo_path=str(repo_path),
|
|
1147
1151
|
repo_name=repo_config.name,
|
|
1152
|
+
project_key=project_key,
|
|
1148
1153
|
analysis_start=start_date,
|
|
1149
1154
|
analysis_end=end_date,
|
|
1150
|
-
|
|
1155
|
+
weeks_analyzed=weeks,
|
|
1156
|
+
commit_count=result["stats"]["total_commits"],
|
|
1157
|
+
ticket_count=result["stats"]["unique_tickets"],
|
|
1151
1158
|
config_hash=config_hash,
|
|
1152
1159
|
)
|
|
1153
|
-
|
|
1160
|
+
|
|
1161
|
+
# Update overall repository progress
|
|
1162
|
+
progress.update(repos_progress_ctx)
|
|
1163
|
+
|
|
1164
|
+
except Exception as e:
|
|
1165
|
+
if display:
|
|
1166
|
+
display.print_status(
|
|
1167
|
+
f" ❌ Error fetching {project_key}: {e}", "error"
|
|
1168
|
+
)
|
|
1169
|
+
else:
|
|
1170
|
+
click.echo(f" ❌ Error fetching {project_key}: {e}")
|
|
1171
|
+
|
|
1172
|
+
# Mark repository analysis as failed
|
|
1173
|
+
with contextlib.suppress(Exception):
|
|
1174
|
+
cache.mark_repository_analysis_failed(
|
|
1175
|
+
repo_path=str(repo_path),
|
|
1176
|
+
repo_name=repo_config.name,
|
|
1177
|
+
analysis_start=start_date,
|
|
1178
|
+
analysis_end=end_date,
|
|
1179
|
+
error_message=str(e),
|
|
1180
|
+
config_hash=config_hash,
|
|
1181
|
+
)
|
|
1182
|
+
|
|
1183
|
+
# Update progress even on failure
|
|
1184
|
+
progress.update(repos_progress_ctx)
|
|
1185
|
+
continue
|
|
1154
1186
|
|
|
1155
1187
|
if display:
|
|
1156
1188
|
display.print_status(
|
|
@@ -1322,11 +1354,20 @@ def analyze(
|
|
|
1322
1354
|
display.print_status(f" {message}", "info")
|
|
1323
1355
|
|
|
1324
1356
|
# Fetch repository data
|
|
1357
|
+
# For organization discovery, use branch patterns from analysis config
|
|
1358
|
+
# Default to ["*"] to analyze all branches when not specified
|
|
1359
|
+
branch_patterns = None
|
|
1360
|
+
if hasattr(cfg.analysis, "branch_patterns"):
|
|
1361
|
+
branch_patterns = cfg.analysis.branch_patterns
|
|
1362
|
+
elif cfg.github.organization:
|
|
1363
|
+
# For organization discovery, default to analyzing all branches
|
|
1364
|
+
branch_patterns = ["*"]
|
|
1365
|
+
|
|
1325
1366
|
result = data_fetcher.fetch_repository_data(
|
|
1326
1367
|
repo_path=repo_path,
|
|
1327
1368
|
project_key=project_key,
|
|
1328
1369
|
weeks_back=weeks,
|
|
1329
|
-
branch_patterns=
|
|
1370
|
+
branch_patterns=branch_patterns,
|
|
1330
1371
|
jira_integration=jira_integration,
|
|
1331
1372
|
progress_callback=progress_callback,
|
|
1332
1373
|
start_date=start_date,
|
|
@@ -3649,11 +3690,20 @@ def fetch(
|
|
|
3649
3690
|
click.echo(f" {message}")
|
|
3650
3691
|
|
|
3651
3692
|
# Fetch repository data
|
|
3693
|
+
# For organization discovery, use branch patterns from analysis config
|
|
3694
|
+
# Default to ["*"] to analyze all branches when not specified
|
|
3695
|
+
branch_patterns = None
|
|
3696
|
+
if hasattr(cfg.analysis, "branch_patterns"):
|
|
3697
|
+
branch_patterns = cfg.analysis.branch_patterns
|
|
3698
|
+
elif cfg.github.organization:
|
|
3699
|
+
# For organization discovery, default to analyzing all branches
|
|
3700
|
+
branch_patterns = ["*"]
|
|
3701
|
+
|
|
3652
3702
|
result = data_fetcher.fetch_repository_data(
|
|
3653
3703
|
repo_path=repo_path,
|
|
3654
3704
|
project_key=project_key,
|
|
3655
3705
|
weeks_back=weeks,
|
|
3656
|
-
branch_patterns=
|
|
3706
|
+
branch_patterns=branch_patterns,
|
|
3657
3707
|
jira_integration=jira_integration,
|
|
3658
3708
|
progress_callback=progress_callback,
|
|
3659
3709
|
start_date=start_date,
|
|
@@ -555,6 +555,7 @@ class ConfigLoader:
|
|
|
555
555
|
branch_mapping_rules=analysis_data.get("branch_mapping_rules", {}),
|
|
556
556
|
ticket_platforms=analysis_data.get("ticket_platforms"),
|
|
557
557
|
auto_identity_analysis=analysis_data.get("identity", {}).get("auto_analysis", True),
|
|
558
|
+
branch_patterns=analysis_data.get("branch_patterns"),
|
|
558
559
|
branch_analysis=branch_analysis_config,
|
|
559
560
|
ml_categorization=ml_categorization_config,
|
|
560
561
|
commit_classification=commit_classification_config,
|
|
@@ -305,6 +305,9 @@ class AnalysisConfig:
|
|
|
305
305
|
branch_mapping_rules: dict[str, list[str]] = field(default_factory=dict)
|
|
306
306
|
ticket_platforms: Optional[list[str]] = None
|
|
307
307
|
auto_identity_analysis: bool = True # Enable automatic identity analysis by default
|
|
308
|
+
branch_patterns: Optional[list[str]] = (
|
|
309
|
+
None # Branch patterns to analyze (e.g., ["*"] for all branches)
|
|
310
|
+
)
|
|
308
311
|
branch_analysis: BranchAnalysisConfig = field(default_factory=BranchAnalysisConfig)
|
|
309
312
|
ml_categorization: MLCategorization = field(default_factory=MLCategorization)
|
|
310
313
|
commit_classification: CommitClassificationConfig = field(
|