gitflow-analytics 1.0.3__tar.gz → 1.3.6__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/CHANGELOG.md +317 -0
- gitflow_analytics-1.3.6/CLAUDE.md +756 -0
- gitflow_analytics-1.3.6/PKG-INFO +1015 -0
- gitflow_analytics-1.3.6/README.md +956 -0
- gitflow_analytics-1.3.6/docs/README.md +116 -0
- gitflow_analytics-1.3.6/docs/SECURITY.md +191 -0
- gitflow_analytics-1.3.6/docs/STORY_POINTS_CONFIG_SUMMARY.md +107 -0
- gitflow_analytics-1.3.6/docs/STRUCTURE.md +193 -0
- gitflow_analytics-1.3.6/docs/architecture/README.md +183 -0
- gitflow_analytics-1.3.6/docs/architecture/branch-analysis-optimization.md +204 -0
- gitflow_analytics-1.3.6/docs/architecture/caching-strategy.md +200 -0
- gitflow_analytics-1.3.6/docs/architecture/llm-classifier-refactoring.md +167 -0
- gitflow_analytics-1.3.6/docs/architecture/ml-pipeline.md +192 -0
- gitflow_analytics-1.3.6/docs/configuration/configuration.md +494 -0
- gitflow_analytics-1.3.6/docs/deployment/README.md +261 -0
- gitflow_analytics-1.3.6/docs/design/README.md +251 -0
- gitflow_analytics-1.3.6/docs/design/commit-classification-design.md +1203 -0
- gitflow_analytics-1.3.6/docs/design/platform-agnostic-pm-framework.md +1273 -0
- gitflow_analytics-1.3.6/docs/developer/README.md +208 -0
- gitflow_analytics-1.3.6/docs/developer/contributing.md +190 -0
- gitflow_analytics-1.3.6/docs/developer/development-setup.md +278 -0
- gitflow_analytics-1.3.6/docs/developer/training-guide.md +308 -0
- gitflow_analytics-1.3.6/docs/examples/README.md +236 -0
- gitflow_analytics-1.3.6/docs/getting-started/README.md +58 -0
- gitflow_analytics-1.3.6/docs/getting-started/first-analysis.md +264 -0
- gitflow_analytics-1.3.6/docs/getting-started/installation.md +225 -0
- gitflow_analytics-1.3.6/docs/getting-started/quickstart.md +196 -0
- gitflow_analytics-1.3.6/docs/guides/LLM_CLASSIFICATION_GUIDE.md +164 -0
- gitflow_analytics-1.3.6/docs/guides/README.md +104 -0
- gitflow_analytics-1.3.6/docs/guides/chatgpt-setup.md +92 -0
- gitflow_analytics-1.3.6/docs/guides/ml-categorization.md +593 -0
- gitflow_analytics-1.3.6/docs/guides/troubleshooting.md +331 -0
- gitflow_analytics-1.3.6/docs/reference/README.md +162 -0
- gitflow_analytics-1.3.6/docs/reference/cache-system.md +310 -0
- gitflow_analytics-1.3.6/docs/reference/cli-commands.md +314 -0
- gitflow_analytics-1.3.6/docs/reference/configuration-schema.md +440 -0
- gitflow_analytics-1.3.6/docs/reference/json-export-schema.md +528 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/pyproject.toml +12 -8
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/_version.py +1 -1
- gitflow_analytics-1.3.6/src/gitflow_analytics/classification/__init__.py +31 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/classification/batch_classifier.py +752 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/classification/classifier.py +464 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/classification/feature_extractor.py +725 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/classification/linguist_analyzer.py +574 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/classification/model.py +455 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/cli.py +4647 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/cli_rich.py +198 -48
- gitflow_analytics-1.3.6/src/gitflow_analytics/config/__init__.py +43 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/config/errors.py +261 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/config/loader.py +904 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/config/profiles.py +264 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/config/repository.py +124 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/config/schema.py +441 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/config/validator.py +154 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/config.py +44 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/core/analyzer.py +1403 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/core/cache.py +1652 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/core/data_fetcher.py +1193 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/core/identity.py +363 -14
- gitflow_analytics-1.3.6/src/gitflow_analytics/core/metrics_storage.py +526 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/core/progress.py +372 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/core/schema_version.py +269 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/extractors/ml_tickets.py +1100 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/extractors/story_points.py +8 -1
- gitflow_analytics-1.3.6/src/gitflow_analytics/extractors/tickets.py +918 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/identity_llm/__init__.py +6 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/identity_llm/analysis_pass.py +231 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/identity_llm/analyzer.py +464 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/identity_llm/models.py +76 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/integrations/github_integration.py +338 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/integrations/jira_integration.py +721 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/integrations/orchestrator.py +269 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/metrics/activity_scoring.py +322 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/metrics/branch_health.py +470 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/metrics/dora.py +690 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/models/database.py +1098 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/pm_framework/__init__.py +115 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/pm_framework/adapters/__init__.py +50 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/pm_framework/adapters/jira_adapter.py +1845 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/pm_framework/base.py +406 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/pm_framework/models.py +211 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/pm_framework/orchestrator.py +652 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/pm_framework/registry.py +333 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/qualitative/__init__.py +9 -10
- gitflow_analytics-1.3.6/src/gitflow_analytics/qualitative/chatgpt_analyzer.py +259 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/qualitative/classifiers/__init__.py +3 -3
- gitflow_analytics-1.3.6/src/gitflow_analytics/qualitative/classifiers/change_type.py +742 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/qualitative/classifiers/domain_classifier.py +272 -165
- gitflow_analytics-1.3.6/src/gitflow_analytics/qualitative/classifiers/intent_analyzer.py +535 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/qualitative/classifiers/llm/__init__.py +35 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/qualitative/classifiers/llm/base.py +193 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/qualitative/classifiers/llm/batch_processor.py +383 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/qualitative/classifiers/llm/cache.py +479 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/qualitative/classifiers/llm/cost_tracker.py +435 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/qualitative/classifiers/llm/openai_client.py +403 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/qualitative/classifiers/llm/prompts.py +373 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/qualitative/classifiers/llm/response_parser.py +287 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/qualitative/classifiers/llm_commit_classifier.py +607 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/qualitative/classifiers/risk_analyzer.py +215 -189
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/qualitative/core/__init__.py +4 -4
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/qualitative/core/llm_fallback.py +239 -235
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/qualitative/core/nlp_engine.py +157 -148
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/qualitative/core/pattern_cache.py +214 -192
- gitflow_analytics-1.3.6/src/gitflow_analytics/qualitative/core/processor.py +673 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/qualitative/enhanced_analyzer.py +2236 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/qualitative/example_enhanced_usage.py +420 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/qualitative/models/__init__.py +7 -7
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/qualitative/models/schemas.py +155 -121
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/qualitative/utils/__init__.py +4 -4
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/qualitative/utils/batch_processor.py +136 -123
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/qualitative/utils/cost_tracker.py +142 -140
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/qualitative/utils/metrics.py +172 -158
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/qualitative/utils/text_processing.py +146 -104
- gitflow_analytics-1.3.6/src/gitflow_analytics/reports/__init__.py +100 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/reports/analytics_writer.py +996 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/reports/base.py +648 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/reports/branch_health_writer.py +322 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/reports/classification_writer.py +924 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/reports/cli_integration.py +427 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/reports/csv_writer.py +1803 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/reports/data_models.py +504 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/reports/database_report_generator.py +427 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/reports/example_usage.py +344 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/reports/factory.py +499 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/reports/formatters.py +698 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/reports/html_generator.py +1116 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/reports/interfaces.py +489 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/reports/json_exporter.py +2770 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/reports/narrative_writer.py +2398 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/reports/story_point_correlation.py +1144 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/reports/weekly_trends_writer.py +389 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/training/__init__.py +5 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/training/model_loader.py +377 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics/training/pipeline.py +550 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/tui/__init__.py +1 -1
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/tui/app.py +129 -126
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/tui/screens/__init__.py +3 -3
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/tui/screens/analysis_progress_screen.py +188 -179
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/tui/screens/configuration_screen.py +154 -178
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/tui/screens/loading_screen.py +100 -110
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/tui/screens/main_screen.py +89 -72
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/tui/screens/results_screen.py +305 -281
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/tui/widgets/__init__.py +2 -2
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/tui/widgets/data_table.py +67 -69
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/tui/widgets/export_modal.py +76 -76
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/tui/widgets/progress_widget.py +41 -46
- gitflow_analytics-1.3.6/src/gitflow_analytics.egg-info/PKG-INFO +1015 -0
- gitflow_analytics-1.3.6/src/gitflow_analytics.egg-info/SOURCES.txt +202 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics.egg-info/requires.txt +1 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/tests/core/test_analyzer.py +21 -1
- gitflow_analytics-1.3.6/tests/core/test_progress.py +254 -0
- gitflow_analytics-1.3.6/tests/debug_bulk_exists.py +62 -0
- gitflow_analytics-1.3.6/tests/debug_commit_story_points.py +145 -0
- gitflow_analytics-1.3.6/tests/debug_database_storage.py +228 -0
- gitflow_analytics-1.3.6/tests/debug_jira_enrichment.py +110 -0
- gitflow_analytics-1.3.6/tests/debug_story_points.py +121 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/tests/qualitative/test_basic_integration.py +2 -1
- gitflow_analytics-1.3.6/tests/test_atomic_caching.py +451 -0
- gitflow_analytics-1.3.6/tests/test_classification_system.py +311 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/tests/test_cli.py +14 -57
- gitflow_analytics-1.3.6/tests/test_config.py +239 -0
- gitflow_analytics-1.3.6/tests/test_config_extends.py +213 -0
- gitflow_analytics-1.3.6/tests/test_config_profiles.py +203 -0
- gitflow_analytics-1.3.6/tests/test_config_story_points.py +190 -0
- gitflow_analytics-1.3.6/tests/test_jira_connection.py +41 -0
- gitflow_analytics-1.3.6/tests/test_llm_commit_classification.py +435 -0
- gitflow_analytics-1.3.6/tests/test_march_2025_comparison.py +434 -0
- gitflow_analytics-1.3.6/tests/test_ml_accuracy.py +213 -0
- gitflow_analytics-1.3.6/tests/test_ml_components.py +156 -0
- gitflow_analytics-1.3.6/tests/test_ml_comprehensive.py +548 -0
- gitflow_analytics-1.3.6/tests/test_ml_integration.py +121 -0
- gitflow_analytics-1.3.6/tests/test_report_abstraction.py +374 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/tests/test_reports.py +2 -2
- gitflow_analytics-1.3.6/tests/test_story_points_analysis.py +455 -0
- gitflow_analytics-1.3.6/tests/test_training_pipeline.py +452 -0
- gitflow_analytics-1.3.6/tests/test_two_step_process.py +321 -0
- gitflow_analytics-1.0.3/CHANGELOG.md +0 -112
- gitflow_analytics-1.0.3/CLAUDE.md +0 -339
- gitflow_analytics-1.0.3/PKG-INFO +0 -490
- gitflow_analytics-1.0.3/README.md +0 -432
- gitflow_analytics-1.0.3/docs/DEPLOY.md +0 -308
- gitflow_analytics-1.0.3/docs/configuration.md +0 -258
- gitflow_analytics-1.0.3/src/gitflow_analytics/cli.py +0 -889
- gitflow_analytics-1.0.3/src/gitflow_analytics/config.py +0 -508
- gitflow_analytics-1.0.3/src/gitflow_analytics/core/analyzer.py +0 -292
- gitflow_analytics-1.0.3/src/gitflow_analytics/core/cache.py +0 -344
- gitflow_analytics-1.0.3/src/gitflow_analytics/extractors/tickets.py +0 -180
- gitflow_analytics-1.0.3/src/gitflow_analytics/integrations/github_integration.py +0 -174
- gitflow_analytics-1.0.3/src/gitflow_analytics/integrations/jira_integration.py +0 -284
- gitflow_analytics-1.0.3/src/gitflow_analytics/integrations/orchestrator.py +0 -146
- gitflow_analytics-1.0.3/src/gitflow_analytics/metrics/dora.py +0 -331
- gitflow_analytics-1.0.3/src/gitflow_analytics/models/database.py +0 -308
- gitflow_analytics-1.0.3/src/gitflow_analytics/qualitative/classifiers/change_type.py +0 -468
- gitflow_analytics-1.0.3/src/gitflow_analytics/qualitative/classifiers/intent_analyzer.py +0 -436
- gitflow_analytics-1.0.3/src/gitflow_analytics/qualitative/core/processor.py +0 -540
- gitflow_analytics-1.0.3/src/gitflow_analytics/reports/__init__.py +0 -0
- gitflow_analytics-1.0.3/src/gitflow_analytics/reports/analytics_writer.py +0 -471
- gitflow_analytics-1.0.3/src/gitflow_analytics/reports/csv_writer.py +0 -339
- gitflow_analytics-1.0.3/src/gitflow_analytics/reports/narrative_writer.py +0 -269
- gitflow_analytics-1.0.3/src/gitflow_analytics.egg-info/PKG-INFO +0 -490
- gitflow_analytics-1.0.3/src/gitflow_analytics.egg-info/SOURCES.txt +0 -88
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/LICENSE +0 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/MANIFEST.in +0 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/docs/design/git_pm_correlation_design.md +0 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/docs/design/qualitative_data_extraction.md +0 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/setup.cfg +0 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/__init__.py +0 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/core/__init__.py +0 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/core/branch_mapper.py +0 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/extractors/__init__.py +0 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/extractors/base.py +0 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/integrations/__init__.py +0 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/metrics/__init__.py +0 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics/models/__init__.py +0 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics.egg-info/dependency_links.txt +0 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics.egg-info/entry_points.txt +0 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/src/gitflow_analytics.egg-info/top_level.txt +0 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/tests/__init__.py +0 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/tests/conftest.py +0 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/tests/core/__init__.py +0 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/tests/core/test_cache.py +0 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/tests/core/test_identity.py +0 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/tests/extractors/__init__.py +0 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/tests/integrations/__init__.py +0 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/tests/metrics/__init__.py +0 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/tests/models/__init__.py +0 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/tests/qualitative/__init__.py +0 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/tests/reports/__init__.py +0 -0
- {gitflow_analytics-1.0.3 → gitflow_analytics-1.3.6}/tests/test_metrics.py +0 -0
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to GitFlow Analytics will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [1.2.24] - 2025-01-26
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
- Consolidated all multi-repository analysis fixes for EWTN organization
|
|
12
|
+
- Verified accuracy with sniff test on Aug 18-24 data (4 commits confirmed)
|
|
13
|
+
- All previous fixes working correctly:
|
|
14
|
+
- Repository processing progress indicator
|
|
15
|
+
- Authentication prompt elimination
|
|
16
|
+
- Qualitative analysis error handling
|
|
17
|
+
- Timestamp type handling
|
|
18
|
+
|
|
19
|
+
### Verified
|
|
20
|
+
- Multi-repository analysis accuracy confirmed
|
|
21
|
+
- Proper commit attribution across 95 repositories
|
|
22
|
+
- Correct date range filtering
|
|
23
|
+
- Accurate ticket coverage calculation (75%)
|
|
24
|
+
|
|
25
|
+
## [1.2.23] - 2025-01-25
|
|
26
|
+
|
|
27
|
+
### Fixed
|
|
28
|
+
- Fixed qualitative analysis 'int' object is not subscriptable error
|
|
29
|
+
- Corrected timestamp default value in NLP engine from time.time() to datetime.now()
|
|
30
|
+
- Added proper datetime import to nlp_engine module
|
|
31
|
+
- This resolves type mismatch when timestamp field is missing
|
|
32
|
+
|
|
33
|
+
## [1.2.22] - 2025-01-25
|
|
34
|
+
|
|
35
|
+
### Fixed
|
|
36
|
+
- Fixed qualitative analysis commit format handling
|
|
37
|
+
- Now handles both dict and object formats for commits
|
|
38
|
+
- Fixed 'dict' object has no attribute 'hash' error
|
|
39
|
+
- Fixed SQLAlchemy warning about text expressions
|
|
40
|
+
- Added proper text() wrapper for SELECT 1 statement
|
|
41
|
+
|
|
42
|
+
## [1.2.21] - 2025-01-25
|
|
43
|
+
|
|
44
|
+
### Fixed
|
|
45
|
+
- Fixed password prompts in data_fetcher during fetch/pull operations
|
|
46
|
+
- Replaced GitPython's fetch() and pull() with subprocess calls
|
|
47
|
+
- Added same environment variables to prevent credential prompts
|
|
48
|
+
- Added 30-second timeout for both fetch and pull operations
|
|
49
|
+
- This fixes the issue in the two-step fetch/classify process
|
|
50
|
+
|
|
51
|
+
## [1.2.20] - 2025-01-25
|
|
52
|
+
|
|
53
|
+
### Fixed
|
|
54
|
+
- Replaced GitPython clone with subprocess for better control
|
|
55
|
+
- Uses subprocess.run with explicit timeout (30 seconds)
|
|
56
|
+
- Disables credential helper to prevent prompts
|
|
57
|
+
- Sets GIT_TERMINAL_PROMPT=0 and GIT_ASKPASS= to force failure
|
|
58
|
+
- Shows which repository is being cloned for debugging
|
|
59
|
+
- Properly handles timeout with clear error message
|
|
60
|
+
|
|
61
|
+
## [1.2.19] - 2025-01-25
|
|
62
|
+
|
|
63
|
+
### Fixed
|
|
64
|
+
- Improved clone operation with timeout and better credential handling
|
|
65
|
+
- Added HTTP timeout (30 seconds) to prevent hanging on network issues
|
|
66
|
+
- Fixed environment variable passing to GitPython
|
|
67
|
+
- Added progress counter (x/95) to description for better visibility
|
|
68
|
+
- Enhanced credential failure detection
|
|
69
|
+
|
|
70
|
+
## [1.2.18] - 2025-01-25
|
|
71
|
+
|
|
72
|
+
### Fixed
|
|
73
|
+
- Enhanced GitHub authentication handling to prevent interactive password prompts
|
|
74
|
+
- Added GIT_TERMINAL_PROMPT=0 to disable git credential prompts
|
|
75
|
+
- Added GIT_ASKPASS=/bin/echo to prevent password dialogs
|
|
76
|
+
- Better detection of authentication failures (401, 403, permission denied)
|
|
77
|
+
- Clear error messages when authentication fails instead of hanging
|
|
78
|
+
|
|
79
|
+
## [1.2.17] - 2025-01-25
|
|
80
|
+
|
|
81
|
+
### Fixed
|
|
82
|
+
- **CRITICAL**: Fixed indentation bug in CLI that prevented multi-repository analysis
|
|
83
|
+
- Repository analysis code was incorrectly placed outside the for loop
|
|
84
|
+
- This caused only the last repository to be analyzed instead of all repositories
|
|
85
|
+
- Progress indicator now correctly updates for each repository (fixes "0/95" issue)
|
|
86
|
+
- Added authentication error handling for GitHub operations
|
|
87
|
+
- Prevents password prompts when GitHub token is invalid or expired
|
|
88
|
+
- Continues with local repository state if authentication fails
|
|
89
|
+
- Provides clear error messages for authentication issues
|
|
90
|
+
|
|
91
|
+
## [1.2.2] - 2025-01-07
|
|
92
|
+
|
|
93
|
+
### Fixed
|
|
94
|
+
- Fixed repositories not being updated from remote before analysis
|
|
95
|
+
- Added automatic git fetch/pull before analyzing repositories
|
|
96
|
+
- Impact: Ensures latest commits are included in analysis (fixes EWTN missing commits issue)
|
|
97
|
+
|
|
98
|
+
## [1.2.1] - 2025-01-07
|
|
99
|
+
|
|
100
|
+
### Fixed
|
|
101
|
+
- Fixed commits not being stored in CachedCommit table during fetch step
|
|
102
|
+
- Fixed narrative report generation when CSV generation is disabled (now default)
|
|
103
|
+
- Fixed canonical_id not being set on commits loaded from database
|
|
104
|
+
- Fixed timezone comparison issues in batch classification
|
|
105
|
+
- Fixed missing `classify_commits_batch` method in LLMCommitClassifier
|
|
106
|
+
- Fixed complexity_delta None value handling in narrative reports
|
|
107
|
+
- Fixed LLM classification to properly use API keys from .env files
|
|
108
|
+
|
|
109
|
+
### Added
|
|
110
|
+
- Added token tracking and cost display for LLM classification
|
|
111
|
+
- Added LLM usage statistics display after batch classification
|
|
112
|
+
- Shows model, API calls, total tokens, cost, and cache hits
|
|
113
|
+
- Improved error handling in commit storage with detailed logging
|
|
114
|
+
|
|
115
|
+
### Changed
|
|
116
|
+
- Commits are now properly stored in CachedCommit table during data fetch
|
|
117
|
+
- Identity resolver now updates canonical_id on commits for proper attribution
|
|
118
|
+
- Batch classifier now correctly queries commits with timezone-aware filtering
|
|
119
|
+
|
|
120
|
+
## [1.2.0] - 2025-01-07
|
|
121
|
+
|
|
122
|
+
### Added
|
|
123
|
+
- Two-step process (fetch then classify) is now the default behavior for better performance and cost efficiency
|
|
124
|
+
- Automatic data fetching when using batch classification mode
|
|
125
|
+
- New `--use-legacy-classification` flag to use the old single-step process if needed
|
|
126
|
+
|
|
127
|
+
### Changed
|
|
128
|
+
- `analyze` command now uses two-step process by default (fetch raw data, then classify)
|
|
129
|
+
- `--use-batch-classification` is now enabled by default (was previously opt-in)
|
|
130
|
+
- Improved messaging to clearly indicate Step 1 (fetch) and Step 2 (classify) operations
|
|
131
|
+
- Better integration between fetch and analyze operations for seamless user experience
|
|
132
|
+
|
|
133
|
+
### Fixed
|
|
134
|
+
- Fixed JIRA integration error: "'IntegrationOrchestrator' object has no attribute 'jira'"
|
|
135
|
+
- Corrected attribute access to use `orchestrator.integrations.get('jira')` instead of `orchestrator.jira`
|
|
136
|
+
- Fixed batch classification mode to automatically perform data fetching when needed
|
|
137
|
+
|
|
138
|
+
### Performance
|
|
139
|
+
- Two-step process reduces LLM costs by batching classification requests
|
|
140
|
+
- Faster subsequent runs when data is already fetched and cached
|
|
141
|
+
- More efficient processing of large repositories with many commits
|
|
142
|
+
|
|
143
|
+
## [1.1.0] - 2025-01-06
|
|
144
|
+
|
|
145
|
+
### Added
|
|
146
|
+
- Database-backed reporting system with SQLite storage for daily metrics
|
|
147
|
+
- Weekly trend analysis showing week-over-week changes in classification patterns
|
|
148
|
+
- Commit classification breakdown in project activity sections of narrative reports
|
|
149
|
+
- Support for flexible configuration field names (api_key/openrouter_api_key, model/primary_model)
|
|
150
|
+
- Auto-enable qualitative analysis when configured (no CLI flag needed)
|
|
151
|
+
- New `DailyMetrics` and `WeeklyTrends` database tables
|
|
152
|
+
- Database report generator that pulls directly from SQLite
|
|
153
|
+
- Per-developer and per-project classification metrics
|
|
154
|
+
- Cost tracking configuration mapping from cost_tracking.daily_budget_usd
|
|
155
|
+
|
|
156
|
+
### Changed
|
|
157
|
+
- All commits now properly classified into meaningful categories (feature, bug_fix, refactor, etc.)
|
|
158
|
+
- Tracked commits no longer use "tracked_work" as a category - properly classified instead
|
|
159
|
+
- Ticket information now enhances classification accuracy
|
|
160
|
+
- Ticket coverage displayed separately from classifications as a process metric
|
|
161
|
+
- HTML report temporarily disabled pending redesign (code preserved)
|
|
162
|
+
- Improved configuration field mapping for better compatibility
|
|
163
|
+
|
|
164
|
+
### Fixed
|
|
165
|
+
- Ticket platform filtering now properly respects configuration (e.g., JIRA-only)
|
|
166
|
+
- DateTime import scope issues in CLI module
|
|
167
|
+
- Classification data structure in narrative reports
|
|
168
|
+
- Identity resolution for developer mappings
|
|
169
|
+
- Qualitative analysis auto-enablement from configuration
|
|
170
|
+
|
|
171
|
+
### Performance
|
|
172
|
+
- Database caching reduces report generation time by up to 80%
|
|
173
|
+
- Batch processing for daily metrics storage
|
|
174
|
+
- Optimized queries with proper indexing
|
|
175
|
+
- Pre-calculated weekly trends for instant retrieval
|
|
176
|
+
|
|
177
|
+
## [1.0.7] - 2025-08-01
|
|
178
|
+
|
|
179
|
+
### Fixed
|
|
180
|
+
- Fixed timezone comparison error when sorting deployments in DORA metrics
|
|
181
|
+
- Added proper timezone normalization for all timestamps before sorting
|
|
182
|
+
- Improved handling of None timestamps in DORA calculations
|
|
183
|
+
|
|
184
|
+
## [1.0.6] - 2025-08-01
|
|
185
|
+
|
|
186
|
+
### Fixed
|
|
187
|
+
- Fixed timezone comparison errors in DORA metrics calculation
|
|
188
|
+
- Added comprehensive timezone handling for all deployment and PR timestamps
|
|
189
|
+
- Enhanced debug logging to trace analysis pipeline stages
|
|
190
|
+
|
|
191
|
+
## [1.0.5] - 2025-08-01
|
|
192
|
+
|
|
193
|
+
### Fixed
|
|
194
|
+
- Fixed DEBUG logging not appearing due to logger configuration issues
|
|
195
|
+
- Added timestamp normalization to ensure all Git commits use UTC timezone
|
|
196
|
+
- Enhanced debug output to identify which report fails
|
|
197
|
+
|
|
198
|
+
## [1.0.4] - 2025-08-01
|
|
199
|
+
|
|
200
|
+
### Added
|
|
201
|
+
- Structured logging with --log option (none|INFO|DEBUG)
|
|
202
|
+
- Enhanced timezone error debugging capabilities
|
|
203
|
+
- Safe datetime comparison functions
|
|
204
|
+
|
|
205
|
+
### Fixed
|
|
206
|
+
- Improved debugging output for timezone-related issues
|
|
207
|
+
- Better error messages for datetime comparison failures
|
|
208
|
+
|
|
209
|
+
## [1.0.3] - 2025-08-01
|
|
210
|
+
|
|
211
|
+
### Fixed
|
|
212
|
+
- Fixed comprehensive timezone comparison issues in database queries and report generation
|
|
213
|
+
- Improved timezone-aware datetime handling across all components
|
|
214
|
+
- Fixed timezone-related errors that were still affecting v1.0.2
|
|
215
|
+
|
|
216
|
+
## [1.0.2] - 2025-08-01
|
|
217
|
+
|
|
218
|
+
### Fixed
|
|
219
|
+
- Fixed SQLite index naming conflicts that could cause database errors
|
|
220
|
+
- Fixed PR cache UNIQUE constraint errors with proper upsert logic
|
|
221
|
+
- Fixed timezone comparison errors in report generation
|
|
222
|
+
- Added loading screen to TUI (before abandoning TUI approach)
|
|
223
|
+
- Moved Rich to core dependencies for better CLI output
|
|
224
|
+
|
|
225
|
+
## [1.0.1] - 2025-07-31
|
|
226
|
+
|
|
227
|
+
### Added
|
|
228
|
+
- Path exclusion support for filtering boilerplate/generated files from line count metrics
|
|
229
|
+
- Configurable via `analysis.exclude.paths` in YAML configuration
|
|
230
|
+
- Default exclusions for common patterns (node_modules, lock files, minified files, etc.)
|
|
231
|
+
- Filtered metrics available as `filtered_insertions`, `filtered_deletions`, `filtered_files_changed`
|
|
232
|
+
- JIRA integration for fetching story points from tickets
|
|
233
|
+
- Configurable story point field names via `jira_integration.story_point_fields`
|
|
234
|
+
- Automatic story point extraction from JIRA tickets referenced in commits
|
|
235
|
+
- Support for custom field IDs and field names
|
|
236
|
+
- Organization-based repository discovery from GitHub
|
|
237
|
+
- Automatic discovery of all non-archived repositories in an organization
|
|
238
|
+
- No manual repository configuration needed for organization-wide analysis
|
|
239
|
+
- Ticket platform filtering via `analysis.ticket_platforms`
|
|
240
|
+
- Ability to track only specific platforms (e.g., only JIRA, ignoring GitHub Issues)
|
|
241
|
+
- Enhanced `.env` file support
|
|
242
|
+
- Automatic loading from configuration directory
|
|
243
|
+
- Validation of required environment variables
|
|
244
|
+
- Clear error messages for missing credentials
|
|
245
|
+
- New CLI command: `discover-jira-fields` to find custom field IDs
|
|
246
|
+
|
|
247
|
+
### Changed
|
|
248
|
+
- All report generators now use filtered line counts when available
|
|
249
|
+
- Cache and output directories now default to config file location (not current directory)
|
|
250
|
+
- Improved developer identity resolution with better consolidation
|
|
251
|
+
|
|
252
|
+
### Fixed
|
|
253
|
+
- Timezone comparison errors between GitHub and local timestamps
|
|
254
|
+
- License configuration in pyproject.toml for PyPI compatibility
|
|
255
|
+
- Manual identity mapping format validation
|
|
256
|
+
- Linting errors for better code quality
|
|
257
|
+
|
|
258
|
+
### Documentation
|
|
259
|
+
- Added comprehensive environment variable configuration guide
|
|
260
|
+
- Complete configuration examples with `.env` and YAML files
|
|
261
|
+
- Path exclusion documentation with default patterns
|
|
262
|
+
- Updated README with clearer setup instructions
|
|
263
|
+
|
|
264
|
+
## [1.0.0] - 2025-07-29
|
|
265
|
+
|
|
266
|
+
### Added
|
|
267
|
+
- Initial release of GitFlow Analytics
|
|
268
|
+
- Core Git repository analysis with batch processing
|
|
269
|
+
- Developer identity resolution with fuzzy matching
|
|
270
|
+
- Manual identity mapping support
|
|
271
|
+
- Story point extraction from commit messages
|
|
272
|
+
- Multi-platform ticket tracking (GitHub, JIRA, Linear, ClickUp)
|
|
273
|
+
- Comprehensive caching system with SQLite
|
|
274
|
+
- CSV report generation:
|
|
275
|
+
- Weekly metrics
|
|
276
|
+
- Developer statistics
|
|
277
|
+
- Activity distribution
|
|
278
|
+
- Developer focus analysis
|
|
279
|
+
- Qualitative insights
|
|
280
|
+
- Markdown narrative reports with insights
|
|
281
|
+
- JSON export for API integration
|
|
282
|
+
- DORA metrics calculation:
|
|
283
|
+
- Deployment frequency
|
|
284
|
+
- Lead time for changes
|
|
285
|
+
- Mean time to recovery
|
|
286
|
+
- Change failure rate
|
|
287
|
+
- GitHub PR enrichment (optional)
|
|
288
|
+
- Branch to project mapping
|
|
289
|
+
- YAML configuration with environment variable support
|
|
290
|
+
- Progress bars for long operations
|
|
291
|
+
- Anonymization support for reports
|
|
292
|
+
|
|
293
|
+
### Configuration Features
|
|
294
|
+
- Repository definitions with project keys
|
|
295
|
+
- Story point extraction patterns
|
|
296
|
+
- Developer identity similarity threshold
|
|
297
|
+
- Manual identity mappings
|
|
298
|
+
- Default ticket platform specification
|
|
299
|
+
- Branch mapping rules
|
|
300
|
+
- Output format selection
|
|
301
|
+
- Cache TTL configuration
|
|
302
|
+
|
|
303
|
+
### Developer Experience
|
|
304
|
+
- Clear CLI with helpful error messages
|
|
305
|
+
- Comprehensive documentation
|
|
306
|
+
- Sample configuration files
|
|
307
|
+
- Progress indicators during analysis
|
|
308
|
+
- Detailed logging of operations
|
|
309
|
+
|
|
310
|
+
[1.0.7]: https://github.com/bobmatnyc/gitflow-analytics/releases/tag/v1.0.7
|
|
311
|
+
[1.0.6]: https://github.com/bobmatnyc/gitflow-analytics/releases/tag/v1.0.6
|
|
312
|
+
[1.0.5]: https://github.com/bobmatnyc/gitflow-analytics/releases/tag/v1.0.5
|
|
313
|
+
[1.0.4]: https://github.com/bobmatnyc/gitflow-analytics/releases/tag/v1.0.4
|
|
314
|
+
[1.0.3]: https://github.com/bobmatnyc/gitflow-analytics/releases/tag/v1.0.3
|
|
315
|
+
[1.0.2]: https://github.com/bobmatnyc/gitflow-analytics/releases/tag/v1.0.2
|
|
316
|
+
[1.0.1]: https://github.com/bobmatnyc/gitflow-analytics/releases/tag/v1.0.1
|
|
317
|
+
[1.0.0]: https://github.com/bobmatnyc/gitflow-analytics/releases/tag/v1.0.0
|