gitflow-analytics 1.0.0__py3-none-any.whl → 1.0.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- gitflow_analytics/__init__.py +11 -9
- gitflow_analytics/_version.py +2 -2
- gitflow_analytics/cli.py +691 -243
- gitflow_analytics/cli_rich.py +353 -0
- gitflow_analytics/config.py +389 -96
- gitflow_analytics/core/analyzer.py +175 -78
- gitflow_analytics/core/branch_mapper.py +132 -132
- gitflow_analytics/core/cache.py +242 -173
- gitflow_analytics/core/identity.py +214 -178
- gitflow_analytics/extractors/base.py +13 -11
- gitflow_analytics/extractors/story_points.py +70 -59
- gitflow_analytics/extractors/tickets.py +111 -88
- gitflow_analytics/integrations/github_integration.py +91 -77
- gitflow_analytics/integrations/jira_integration.py +284 -0
- gitflow_analytics/integrations/orchestrator.py +99 -72
- gitflow_analytics/metrics/dora.py +183 -179
- gitflow_analytics/models/database.py +191 -54
- gitflow_analytics/qualitative/__init__.py +30 -0
- gitflow_analytics/qualitative/classifiers/__init__.py +13 -0
- gitflow_analytics/qualitative/classifiers/change_type.py +468 -0
- gitflow_analytics/qualitative/classifiers/domain_classifier.py +399 -0
- gitflow_analytics/qualitative/classifiers/intent_analyzer.py +436 -0
- gitflow_analytics/qualitative/classifiers/risk_analyzer.py +412 -0
- gitflow_analytics/qualitative/core/__init__.py +13 -0
- gitflow_analytics/qualitative/core/llm_fallback.py +653 -0
- gitflow_analytics/qualitative/core/nlp_engine.py +373 -0
- gitflow_analytics/qualitative/core/pattern_cache.py +457 -0
- gitflow_analytics/qualitative/core/processor.py +540 -0
- gitflow_analytics/qualitative/models/__init__.py +25 -0
- gitflow_analytics/qualitative/models/schemas.py +272 -0
- gitflow_analytics/qualitative/utils/__init__.py +13 -0
- gitflow_analytics/qualitative/utils/batch_processor.py +326 -0
- gitflow_analytics/qualitative/utils/cost_tracker.py +343 -0
- gitflow_analytics/qualitative/utils/metrics.py +347 -0
- gitflow_analytics/qualitative/utils/text_processing.py +243 -0
- gitflow_analytics/reports/analytics_writer.py +25 -8
- gitflow_analytics/reports/csv_writer.py +60 -32
- gitflow_analytics/reports/narrative_writer.py +21 -15
- gitflow_analytics/tui/__init__.py +5 -0
- gitflow_analytics/tui/app.py +721 -0
- gitflow_analytics/tui/screens/__init__.py +8 -0
- gitflow_analytics/tui/screens/analysis_progress_screen.py +487 -0
- gitflow_analytics/tui/screens/configuration_screen.py +547 -0
- gitflow_analytics/tui/screens/loading_screen.py +358 -0
- gitflow_analytics/tui/screens/main_screen.py +304 -0
- gitflow_analytics/tui/screens/results_screen.py +698 -0
- gitflow_analytics/tui/widgets/__init__.py +7 -0
- gitflow_analytics/tui/widgets/data_table.py +257 -0
- gitflow_analytics/tui/widgets/export_modal.py +301 -0
- gitflow_analytics/tui/widgets/progress_widget.py +192 -0
- gitflow_analytics-1.0.3.dist-info/METADATA +490 -0
- gitflow_analytics-1.0.3.dist-info/RECORD +62 -0
- gitflow_analytics-1.0.0.dist-info/METADATA +0 -201
- gitflow_analytics-1.0.0.dist-info/RECORD +0 -30
- {gitflow_analytics-1.0.0.dist-info → gitflow_analytics-1.0.3.dist-info}/WHEEL +0 -0
- {gitflow_analytics-1.0.0.dist-info → gitflow_analytics-1.0.3.dist-info}/entry_points.txt +0 -0
- {gitflow_analytics-1.0.0.dist-info → gitflow_analytics-1.0.3.dist-info}/licenses/LICENSE +0 -0
- {gitflow_analytics-1.0.0.dist-info → gitflow_analytics-1.0.3.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
gitflow_analytics/__init__.py,sha256=yN1dyAUu4l9qX-YNAGRItEf4RFFe-5GQiOntXPIfdxo,683
|
|
2
|
+
gitflow_analytics/_version.py,sha256=K1RfTm9uAPTEUj21mrxdqQ3kT2CuA6F1ML8t6HzEZwk,137
|
|
3
|
+
gitflow_analytics/cli.py,sha256=xHfdi9qYNgy2My78paWsFYPZg5Exo3fJXHmw7liI4Sw,37378
|
|
4
|
+
gitflow_analytics/cli_rich.py,sha256=FqOBGWNqTmxD2BHfmqtHWvHx4AFO-FgOTRwtx9eOEHE,13604
|
|
5
|
+
gitflow_analytics/config.py,sha256=08f5n9FFfA2wj-tEHQwYrQzBT42GSKURzhZgWRzTk0w,20966
|
|
6
|
+
gitflow_analytics/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
|
+
gitflow_analytics/core/analyzer.py,sha256=RgdfpH8tCjJJRKAhZGSiGQ83F-ekGQ9YtL4hf8r-rNw,10737
|
|
8
|
+
gitflow_analytics/core/branch_mapper.py,sha256=1L1ctrhTEqMZ61eS1nZRkcyaarLipeQgotw4HdXcSmM,7407
|
|
9
|
+
gitflow_analytics/core/cache.py,sha256=LIrp4O5GQfMvvgW_rG8zHr8vurYOsH6Du5u3Exh8S9k,14292
|
|
10
|
+
gitflow_analytics/core/identity.py,sha256=vcPcvKyIgf3gIjrdamW_ma7av6igK89ZH-1AZ0pQWMQ,17191
|
|
11
|
+
gitflow_analytics/extractors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
12
|
+
gitflow_analytics/extractors/base.py,sha256=AKbYkFiMhNxVj7zfNzsJfh0rpyTdNr4Faea3bcZPPBo,1168
|
|
13
|
+
gitflow_analytics/extractors/story_points.py,sha256=oS8nb0PWkZfhq3Jq14Hf_OMZN_tQwJWw9Dqc8ur5Kuk,5044
|
|
14
|
+
gitflow_analytics/extractors/tickets.py,sha256=erXzMPBTv2Wx2lbXE9HeOm0cy6hHu1pF6ZaQG6KATqg,7233
|
|
15
|
+
gitflow_analytics/integrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
16
|
+
gitflow_analytics/integrations/github_integration.py,sha256=0v9CtXQ6IhDCQBfoh_etAwiEFiPeHWTy0HQBtoItQBs,6437
|
|
17
|
+
gitflow_analytics/integrations/jira_integration.py,sha256=DRBXqILinsuyON8lxmhT-hRFhB85StX0DD3d7JMu808,10240
|
|
18
|
+
gitflow_analytics/integrations/orchestrator.py,sha256=KtBm3LBtwOK41azL3S1SYcpVuoJbGDy2BvojA7_rJEU,5732
|
|
19
|
+
gitflow_analytics/metrics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
20
|
+
gitflow_analytics/metrics/dora.py,sha256=H86NSqSL7ngWapt09w_mGGSVwpv04Dth8e5q4ZGar3I,12053
|
|
21
|
+
gitflow_analytics/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
22
|
+
gitflow_analytics/models/database.py,sha256=EUalU5RaQ8WB5idQSIw45rrpnyn-305j8tL9UnI0wxQ,10015
|
|
23
|
+
gitflow_analytics/qualitative/__init__.py,sha256=KUMF-RPpItm1ZcgVGRXeLkU12T1G0xDsowFdsGp0_so,886
|
|
24
|
+
gitflow_analytics/qualitative/classifiers/__init__.py,sha256=GSjcSNFzbtPfY6cMINExTd2Mssb7xJpRPeXmJRW22bc,348
|
|
25
|
+
gitflow_analytics/qualitative/classifiers/change_type.py,sha256=9EKbwFs8x4hV2J_57DZTYRDVeMm9YTRI25q6ySQMDTU,17828
|
|
26
|
+
gitflow_analytics/qualitative/classifiers/domain_classifier.py,sha256=azGjMpHLanm-rkZCZnihvHCukC0H9Cp5RiOx32Jwcc0,14881
|
|
27
|
+
gitflow_analytics/qualitative/classifiers/intent_analyzer.py,sha256=jfRPJUr3XgbEpwJ6CL-zyMCMZrkfhy2XisMdht-XK-M,16354
|
|
28
|
+
gitflow_analytics/qualitative/classifiers/risk_analyzer.py,sha256=XDt0CTv_ALqON47GEFoUvkC631084bDzrUIr99U2KBY,15395
|
|
29
|
+
gitflow_analytics/qualitative/core/__init__.py,sha256=1QkGWNhkWnVRWNCDuLUCYSrt1CM4hNwms33trBcCKEs,315
|
|
30
|
+
gitflow_analytics/qualitative/core/llm_fallback.py,sha256=8HQ-ekp9gevquvhiZotNhIXkWe7ir9N6gCVUAswUCt0,25206
|
|
31
|
+
gitflow_analytics/qualitative/core/nlp_engine.py,sha256=erde27Nag6YTbAbtk9Nb3Tm9rpnm8kwOW76Q1R4QvZI,14463
|
|
32
|
+
gitflow_analytics/qualitative/core/pattern_cache.py,sha256=4cFpYOEIEai8BXeTaHhGLilfnV0a_yLJ0ttlBWOTV8k,18985
|
|
33
|
+
gitflow_analytics/qualitative/core/processor.py,sha256=UqS2YWd0KFxhR8QoCV1x7KQg7worYB5aLUwXY0NhKX0,22329
|
|
34
|
+
gitflow_analytics/qualitative/models/__init__.py,sha256=VV4s_5_VvK4lPvRktdT_K0DGRx65rzQ4oB8NjQGFIfg,458
|
|
35
|
+
gitflow_analytics/qualitative/models/schemas.py,sha256=8T8BAUju7c3aQMZN4XyBB5P0Vn5TLdx0JANxkHXHw2g,10357
|
|
36
|
+
gitflow_analytics/qualitative/utils/__init__.py,sha256=M_zkw--7cDuWbUq-_pXzMIwkz-pqC6fmncz2INPPggU,320
|
|
37
|
+
gitflow_analytics/qualitative/utils/batch_processor.py,sha256=34Zh4KTPwn0JRk7D9bPj4eTK_F0iJPL_v3bHN4QtJ0g,12335
|
|
38
|
+
gitflow_analytics/qualitative/utils/cost_tracker.py,sha256=-NiIAIZUNDEfWqXZmumqyigN7QUuRnmJjIgdHXnQARQ,12709
|
|
39
|
+
gitflow_analytics/qualitative/utils/metrics.py,sha256=_TLFRsx5cYUOsBJix_VtCZv6mhoC_QXWGfIegnjai10,13443
|
|
40
|
+
gitflow_analytics/qualitative/utils/text_processing.py,sha256=RoZChe3je_M617HNxZSwPm3uTIrVJPvMSBB1ldz9LGg,9195
|
|
41
|
+
gitflow_analytics/reports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
42
|
+
gitflow_analytics/reports/analytics_writer.py,sha256=hpIMQMNvoD0srSfSAPTvZzyKvk9i3K_uz9OkBXNDY8Y,19870
|
|
43
|
+
gitflow_analytics/reports/csv_writer.py,sha256=XWaeL6Avj0TW6cQ_0Tl-5wNLT7XcDCJjuyqEK584Fig,14053
|
|
44
|
+
gitflow_analytics/reports/narrative_writer.py,sha256=HTUG44sKkO0kLStqHDFOiVi2LXcG_BUCDPf34kwAfGE,13048
|
|
45
|
+
gitflow_analytics/tui/__init__.py,sha256=fySf6x1-WQuyvXA0qKsBpgNFW9Akazi5WdvwYHeSi9I,125
|
|
46
|
+
gitflow_analytics/tui/app.py,sha256=LL0jTUuGYDFuPGojM6_2ecp2o3sf7bLfI_9BY_AaQO0,22756
|
|
47
|
+
gitflow_analytics/tui/screens/__init__.py,sha256=KuXesK7UNaJEvzpQ83lMhe1UGWmgRNtTrUOL8cnDJBU,326
|
|
48
|
+
gitflow_analytics/tui/screens/analysis_progress_screen.py,sha256=xW4oNcPyxksysjBdQNof1C3trqYXJItj1LcY751Od1k,21490
|
|
49
|
+
gitflow_analytics/tui/screens/configuration_screen.py,sha256=uT9nKlcF1ZMw7Y6dQnZDkFuoeKa5mSsvvk-2zOpJ8K8,20207
|
|
50
|
+
gitflow_analytics/tui/screens/loading_screen.py,sha256=cRuebJDZ9SSV8naaMolOD9BeDtakjrSQa8BgK1ioHtY,15351
|
|
51
|
+
gitflow_analytics/tui/screens/main_screen.py,sha256=AW0lJBVs_uB4VrP79_TdO33xkwWwMYXWj9ijZR116B4,11735
|
|
52
|
+
gitflow_analytics/tui/screens/results_screen.py,sha256=zfR6JIMbKNAIAuqhT4dyss7H9F0pFvjphEUEKjC5TJU,29608
|
|
53
|
+
gitflow_analytics/tui/widgets/__init__.py,sha256=l4U-2_DmxEm4wgjK0OS9KthI-9KBWY0d_k49PAbqTqc,258
|
|
54
|
+
gitflow_analytics/tui/widgets/data_table.py,sha256=FLBUZBN_LJ527NMyhKjnxVUGm95VopIB8xRbwLShTgI,9050
|
|
55
|
+
gitflow_analytics/tui/widgets/export_modal.py,sha256=rXbjgnfqy1vi4dm3qpk4Ng1pX7w_zfj8aUlYZbIjwII,11189
|
|
56
|
+
gitflow_analytics/tui/widgets/progress_widget.py,sha256=L0L5h5PlClajLUT0tH4MriRRCXEw359BoZwPPbP0xlw,6504
|
|
57
|
+
gitflow_analytics-1.0.3.dist-info/licenses/LICENSE,sha256=xwvSwY1GYXpRpmbnFvvnbmMwpobnrdN9T821sGvjOY0,1066
|
|
58
|
+
gitflow_analytics-1.0.3.dist-info/METADATA,sha256=Z2wxKlmDXtipMIyqY56hEZ3ULg0gN-SsUQcvPXPCa-U,13703
|
|
59
|
+
gitflow_analytics-1.0.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
60
|
+
gitflow_analytics-1.0.3.dist-info/entry_points.txt,sha256=a3y8HnfLOvK1QVOgAkDY6VQXXm3o9ZSQRZrpiaS3hEM,65
|
|
61
|
+
gitflow_analytics-1.0.3.dist-info/top_level.txt,sha256=CQyxZXjKvpSB1kgqqtuE0PCRqfRsXZJL8JrYpJKtkrk,18
|
|
62
|
+
gitflow_analytics-1.0.3.dist-info/RECORD,,
|
|
@@ -1,201 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: gitflow-analytics
|
|
3
|
-
Version: 1.0.0
|
|
4
|
-
Summary: Analyze Git repositories for developer productivity insights
|
|
5
|
-
Author-email: Bob Matyas <bobmatnyc@gmail.com>
|
|
6
|
-
License: MIT
|
|
7
|
-
Project-URL: Homepage, https://github.com/bobmatnyc/gitflow-analytics
|
|
8
|
-
Project-URL: Documentation, https://github.com/bobmatnyc/gitflow-analytics/blob/main/README.md
|
|
9
|
-
Project-URL: Repository, https://github.com/bobmatnyc/gitflow-analytics
|
|
10
|
-
Project-URL: Issues, https://github.com/bobmatnyc/gitflow-analytics/issues
|
|
11
|
-
Keywords: git,analytics,productivity,metrics,development
|
|
12
|
-
Classifier: Development Status :: 5 - Production/Stable
|
|
13
|
-
Classifier: Intended Audience :: Developers
|
|
14
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
-
Classifier: Programming Language :: Python :: 3
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
18
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
-
Classifier: Topic :: Software Development :: Version Control :: Git
|
|
22
|
-
Classifier: Topic :: Software Development :: Quality Assurance
|
|
23
|
-
Requires-Python: >=3.8
|
|
24
|
-
Description-Content-Type: text/markdown
|
|
25
|
-
License-File: LICENSE
|
|
26
|
-
Requires-Dist: click>=8.1
|
|
27
|
-
Requires-Dist: gitpython>=3.1
|
|
28
|
-
Requires-Dist: tqdm>=4.65
|
|
29
|
-
Requires-Dist: sqlalchemy>=2.0
|
|
30
|
-
Requires-Dist: pandas>=2.0
|
|
31
|
-
Requires-Dist: pyyaml>=6.0
|
|
32
|
-
Requires-Dist: python-dateutil>=2.8
|
|
33
|
-
Provides-Extra: dev
|
|
34
|
-
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
35
|
-
Requires-Dist: pytest-cov>=4.0; extra == "dev"
|
|
36
|
-
Requires-Dist: pytest-mock>=3.0; extra == "dev"
|
|
37
|
-
Requires-Dist: ruff>=0.1.0; extra == "dev"
|
|
38
|
-
Requires-Dist: mypy>=1.0; extra == "dev"
|
|
39
|
-
Requires-Dist: black>=23.0; extra == "dev"
|
|
40
|
-
Provides-Extra: github
|
|
41
|
-
Requires-Dist: pygithub>=1.58; extra == "github"
|
|
42
|
-
Provides-Extra: all
|
|
43
|
-
Requires-Dist: gitflow-analytics[github]; extra == "all"
|
|
44
|
-
Dynamic: license-file
|
|
45
|
-
|
|
46
|
-
# GitFlow Analytics
|
|
47
|
-
|
|
48
|
-
A Python package for analyzing Git repositories to generate comprehensive developer productivity reports. It extracts data directly from Git history and GitHub APIs, providing weekly summaries, productivity insights, and gap analysis.
|
|
49
|
-
|
|
50
|
-
## Features
|
|
51
|
-
|
|
52
|
-
- 🚀 **Multi-repository analysis** with project grouping
|
|
53
|
-
- 👥 **Developer identity resolution** and normalization
|
|
54
|
-
- 📊 **Work volume analysis** (absolute vs relative effort)
|
|
55
|
-
- 🎯 **Story point extraction** from commit messages and PR descriptions
|
|
56
|
-
- 🎫 **Multi-platform ticket tracking** (JIRA, GitHub Issues, ClickUp, Linear)
|
|
57
|
-
- 📈 **Weekly CSV reports** with productivity metrics
|
|
58
|
-
- 🔒 **Data anonymization** for external sharing
|
|
59
|
-
- ⚡ **Smart caching** for fast repeated analyses
|
|
60
|
-
- 🔄 **Batch processing** for large repositories
|
|
61
|
-
|
|
62
|
-
## Quick Start
|
|
63
|
-
|
|
64
|
-
### Installation
|
|
65
|
-
|
|
66
|
-
```bash
|
|
67
|
-
pip install gitflow-analytics
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
### Basic Usage
|
|
71
|
-
|
|
72
|
-
1. Create a configuration file (`config.yaml`):
|
|
73
|
-
|
|
74
|
-
```yaml
|
|
75
|
-
version: "1.0"
|
|
76
|
-
|
|
77
|
-
github:
|
|
78
|
-
token: "${GITHUB_TOKEN}"
|
|
79
|
-
owner: "${GITHUB_OWNER}"
|
|
80
|
-
|
|
81
|
-
repositories:
|
|
82
|
-
- name: "frontend"
|
|
83
|
-
path: "~/repos/frontend"
|
|
84
|
-
github_repo: "myorg/frontend"
|
|
85
|
-
project_key: "FRONTEND"
|
|
86
|
-
|
|
87
|
-
- name: "backend"
|
|
88
|
-
path: "~/repos/backend"
|
|
89
|
-
github_repo: "myorg/backend"
|
|
90
|
-
project_key: "BACKEND"
|
|
91
|
-
|
|
92
|
-
analysis:
|
|
93
|
-
story_point_patterns:
|
|
94
|
-
- "(?:story\\s*points?|sp|pts?)\\s*[:=]\\s*(\\d+)"
|
|
95
|
-
- "\\[(\\d+)\\s*(?:sp|pts?)\\]"
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
2. Set environment variables:
|
|
99
|
-
|
|
100
|
-
```bash
|
|
101
|
-
export GITHUB_TOKEN=your_github_token
|
|
102
|
-
export GITHUB_OWNER=your_github_org
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
3. Run the analysis:
|
|
106
|
-
|
|
107
|
-
```bash
|
|
108
|
-
gitflow-analytics analyze -c config.yaml
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
## Command Line Interface
|
|
112
|
-
|
|
113
|
-
### Main Commands
|
|
114
|
-
|
|
115
|
-
```bash
|
|
116
|
-
# Analyze repositories
|
|
117
|
-
gitflow-analytics analyze -c config.yaml --weeks 12 --output ./reports
|
|
118
|
-
|
|
119
|
-
# Show cache statistics
|
|
120
|
-
gitflow-analytics cache-stats -c config.yaml
|
|
121
|
-
|
|
122
|
-
# List known developers
|
|
123
|
-
gitflow-analytics list-developers -c config.yaml
|
|
124
|
-
|
|
125
|
-
# Merge developer identities
|
|
126
|
-
gitflow-analytics merge-identity -c config.yaml dev1_id dev2_id
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
### Options
|
|
130
|
-
|
|
131
|
-
- `--weeks, -w`: Number of weeks to analyze (default: 12)
|
|
132
|
-
- `--output, -o`: Output directory for reports (default: ./reports)
|
|
133
|
-
- `--anonymize`: Anonymize developer information
|
|
134
|
-
- `--no-cache`: Disable caching for fresh analysis
|
|
135
|
-
- `--clear-cache`: Clear cache before analysis
|
|
136
|
-
- `--validate-only`: Validate configuration without running
|
|
137
|
-
|
|
138
|
-
## Output Reports
|
|
139
|
-
|
|
140
|
-
The tool generates three CSV reports:
|
|
141
|
-
|
|
142
|
-
1. **Weekly Metrics** (`weekly_metrics_YYYYMMDD.csv`)
|
|
143
|
-
- Week-by-week developer productivity
|
|
144
|
-
- Story points, commits, lines changed
|
|
145
|
-
- Ticket coverage percentages
|
|
146
|
-
- Per-project breakdown
|
|
147
|
-
|
|
148
|
-
2. **Summary Statistics** (`summary_YYYYMMDD.csv`)
|
|
149
|
-
- Overall project statistics
|
|
150
|
-
- Platform-specific ticket counts
|
|
151
|
-
- Top contributors
|
|
152
|
-
|
|
153
|
-
3. **Developer Report** (`developers_YYYYMMDD.csv`)
|
|
154
|
-
- Complete developer profiles
|
|
155
|
-
- Total contributions
|
|
156
|
-
- Identity aliases
|
|
157
|
-
|
|
158
|
-
## Story Point Patterns
|
|
159
|
-
|
|
160
|
-
Configure custom regex patterns to match your team's story point format:
|
|
161
|
-
|
|
162
|
-
```yaml
|
|
163
|
-
story_point_patterns:
|
|
164
|
-
- "SP: (\\d+)" # SP: 5
|
|
165
|
-
- "\\[([0-9]+) pts\\]" # [3 pts]
|
|
166
|
-
- "estimate: (\\d+)" # estimate: 8
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
## Ticket Platform Support
|
|
170
|
-
|
|
171
|
-
Automatically detects and tracks tickets from:
|
|
172
|
-
- **JIRA**: `PROJ-123`
|
|
173
|
-
- **GitHub**: `#123`, `GH-123`
|
|
174
|
-
- **ClickUp**: `CU-abc123`
|
|
175
|
-
- **Linear**: `ENG-123`
|
|
176
|
-
|
|
177
|
-
## Caching
|
|
178
|
-
|
|
179
|
-
The tool uses SQLite for intelligent caching:
|
|
180
|
-
- Commit analysis results
|
|
181
|
-
- Developer identity mappings
|
|
182
|
-
- Pull request data
|
|
183
|
-
|
|
184
|
-
Cache is automatically managed with configurable TTL.
|
|
185
|
-
|
|
186
|
-
## Developer Identity Resolution
|
|
187
|
-
|
|
188
|
-
Intelligently merges developer identities across:
|
|
189
|
-
- Different email addresses
|
|
190
|
-
- Name variations
|
|
191
|
-
- GitHub usernames
|
|
192
|
-
|
|
193
|
-
Manual overrides supported in configuration.
|
|
194
|
-
|
|
195
|
-
## Contributing
|
|
196
|
-
|
|
197
|
-
Contributions are welcome! Please feel free to submit a Pull Request.
|
|
198
|
-
|
|
199
|
-
## License
|
|
200
|
-
|
|
201
|
-
This project is licensed under the MIT License - see the LICENSE file for details.
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
gitflow_analytics/__init__.py,sha256=Ur3taLHb9eO5P1T-hi2llyCkHTKhk1hLuurxcp9hLQs,639
|
|
2
|
-
gitflow_analytics/_version.py,sha256=l0-c8EmumJVRuJG4Iyn8ezTW00USlPFUPNchN-DwoDs,136
|
|
3
|
-
gitflow_analytics/cli.py,sha256=viyQeAWyf1bdH1iwsy1GHleaMaMhA3PkjAp0VuEF9zA,16707
|
|
4
|
-
gitflow_analytics/config.py,sha256=23CBJS2qiYFbcG4JMFCRUyQ4JpK5sF3Qp4bcvyH3lkU,8421
|
|
5
|
-
gitflow_analytics/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
|
-
gitflow_analytics/core/analyzer.py,sha256=TpzyXuUpAzVpg1WZeB7oRFodn-R69hvhcjWZoCH96wg,7765
|
|
7
|
-
gitflow_analytics/core/branch_mapper.py,sha256=3wh45lu_vaCev9rmXHTMOpqLQTxsjKFXAE6_WpjhOcc,7610
|
|
8
|
-
gitflow_analytics/core/cache.py,sha256=RlfsoEe98kZ4xXe28dbLS7MapMem__XN3EoBU1v4q2c,11691
|
|
9
|
-
gitflow_analytics/core/identity.py,sha256=RKzTNqtFWwqwPCo09ClT65rEanBY8UjXx2rV0mdwZmM,17091
|
|
10
|
-
gitflow_analytics/extractors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
|
-
gitflow_analytics/extractors/base.py,sha256=0I_dmKiLmH7PNXNpDH5FDtOhmkMfnjJJOj4KA-GJuSo,1208
|
|
12
|
-
gitflow_analytics/extractors/story_points.py,sha256=DuMNw78pw2A_k6us9lYfMFLqwVI5Ip6JMBPsSBDFxzU,5038
|
|
13
|
-
gitflow_analytics/extractors/tickets.py,sha256=ghoPhwg1LFXF_h888MBt6nyY_Ni-w4eqakl4JSpeqIE,6230
|
|
14
|
-
gitflow_analytics/integrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
|
-
gitflow_analytics/integrations/github_integration.py,sha256=qgUIpvtP7hRkshxX4QXQkIEdsrPDVSTDTfwfXvWxE1s,6344
|
|
16
|
-
gitflow_analytics/integrations/orchestrator.py,sha256=3Itdo59LZ65Gjrjo4Fik_yzpcRLfH0DXrSJHLu-BGQo,4331
|
|
17
|
-
gitflow_analytics/metrics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
18
|
-
gitflow_analytics/metrics/dora.py,sha256=MLpOJX4ZxiBXxxk0jkpvj67Brgj0CcRHWD-cnsTDbL4,12765
|
|
19
|
-
gitflow_analytics/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
20
|
-
gitflow_analytics/models/database.py,sha256=iE-ERPMpA7HE4livaLaoCmBF_N8L9UFtUzsfOffc5CI,5548
|
|
21
|
-
gitflow_analytics/reports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
22
|
-
gitflow_analytics/reports/analytics_writer.py,sha256=yRzZwfYTANp1Glh2S02T6XBcXvTxEVOG1FZnewCs_d8,19054
|
|
23
|
-
gitflow_analytics/reports/csv_writer.py,sha256=9ApngbIbGy9GfXm8EfkRcnSWGhQI-Iz-22F8ogWW3Hs,12611
|
|
24
|
-
gitflow_analytics/reports/narrative_writer.py,sha256=fyQyXbaYG1Bvoec5kdB9JH2NYP4ov3w0NIpu6nORFdQ,12758
|
|
25
|
-
gitflow_analytics-1.0.0.dist-info/licenses/LICENSE,sha256=xwvSwY1GYXpRpmbnFvvnbmMwpobnrdN9T821sGvjOY0,1066
|
|
26
|
-
gitflow_analytics-1.0.0.dist-info/METADATA,sha256=SSoW_ptXcv0m_1ap1eNi1G54lvFnUzgQHfNpDmNfZK0,5765
|
|
27
|
-
gitflow_analytics-1.0.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
28
|
-
gitflow_analytics-1.0.0.dist-info/entry_points.txt,sha256=a3y8HnfLOvK1QVOgAkDY6VQXXm3o9ZSQRZrpiaS3hEM,65
|
|
29
|
-
gitflow_analytics-1.0.0.dist-info/top_level.txt,sha256=CQyxZXjKvpSB1kgqqtuE0PCRqfRsXZJL8JrYpJKtkrk,18
|
|
30
|
-
gitflow_analytics-1.0.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|