gitflow-analytics 1.0.3__py3-none-any.whl → 1.3.11__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.
Files changed (116) hide show
  1. gitflow_analytics/_version.py +1 -1
  2. gitflow_analytics/classification/__init__.py +31 -0
  3. gitflow_analytics/classification/batch_classifier.py +752 -0
  4. gitflow_analytics/classification/classifier.py +464 -0
  5. gitflow_analytics/classification/feature_extractor.py +725 -0
  6. gitflow_analytics/classification/linguist_analyzer.py +574 -0
  7. gitflow_analytics/classification/model.py +455 -0
  8. gitflow_analytics/cli.py +4158 -350
  9. gitflow_analytics/cli_rich.py +198 -48
  10. gitflow_analytics/config/__init__.py +43 -0
  11. gitflow_analytics/config/errors.py +261 -0
  12. gitflow_analytics/config/loader.py +905 -0
  13. gitflow_analytics/config/profiles.py +264 -0
  14. gitflow_analytics/config/repository.py +124 -0
  15. gitflow_analytics/config/schema.py +444 -0
  16. gitflow_analytics/config/validator.py +154 -0
  17. gitflow_analytics/config.py +44 -508
  18. gitflow_analytics/core/analyzer.py +1209 -98
  19. gitflow_analytics/core/cache.py +1337 -29
  20. gitflow_analytics/core/data_fetcher.py +1285 -0
  21. gitflow_analytics/core/identity.py +363 -14
  22. gitflow_analytics/core/metrics_storage.py +526 -0
  23. gitflow_analytics/core/progress.py +372 -0
  24. gitflow_analytics/core/schema_version.py +269 -0
  25. gitflow_analytics/extractors/ml_tickets.py +1100 -0
  26. gitflow_analytics/extractors/story_points.py +8 -1
  27. gitflow_analytics/extractors/tickets.py +749 -11
  28. gitflow_analytics/identity_llm/__init__.py +6 -0
  29. gitflow_analytics/identity_llm/analysis_pass.py +231 -0
  30. gitflow_analytics/identity_llm/analyzer.py +464 -0
  31. gitflow_analytics/identity_llm/models.py +76 -0
  32. gitflow_analytics/integrations/github_integration.py +175 -11
  33. gitflow_analytics/integrations/jira_integration.py +461 -24
  34. gitflow_analytics/integrations/orchestrator.py +124 -1
  35. gitflow_analytics/metrics/activity_scoring.py +322 -0
  36. gitflow_analytics/metrics/branch_health.py +470 -0
  37. gitflow_analytics/metrics/dora.py +379 -20
  38. gitflow_analytics/models/database.py +843 -53
  39. gitflow_analytics/pm_framework/__init__.py +115 -0
  40. gitflow_analytics/pm_framework/adapters/__init__.py +50 -0
  41. gitflow_analytics/pm_framework/adapters/jira_adapter.py +1845 -0
  42. gitflow_analytics/pm_framework/base.py +406 -0
  43. gitflow_analytics/pm_framework/models.py +211 -0
  44. gitflow_analytics/pm_framework/orchestrator.py +652 -0
  45. gitflow_analytics/pm_framework/registry.py +333 -0
  46. gitflow_analytics/qualitative/__init__.py +9 -10
  47. gitflow_analytics/qualitative/chatgpt_analyzer.py +259 -0
  48. gitflow_analytics/qualitative/classifiers/__init__.py +3 -3
  49. gitflow_analytics/qualitative/classifiers/change_type.py +518 -244
  50. gitflow_analytics/qualitative/classifiers/domain_classifier.py +272 -165
  51. gitflow_analytics/qualitative/classifiers/intent_analyzer.py +321 -222
  52. gitflow_analytics/qualitative/classifiers/llm/__init__.py +35 -0
  53. gitflow_analytics/qualitative/classifiers/llm/base.py +193 -0
  54. gitflow_analytics/qualitative/classifiers/llm/batch_processor.py +383 -0
  55. gitflow_analytics/qualitative/classifiers/llm/cache.py +479 -0
  56. gitflow_analytics/qualitative/classifiers/llm/cost_tracker.py +435 -0
  57. gitflow_analytics/qualitative/classifiers/llm/openai_client.py +403 -0
  58. gitflow_analytics/qualitative/classifiers/llm/prompts.py +373 -0
  59. gitflow_analytics/qualitative/classifiers/llm/response_parser.py +287 -0
  60. gitflow_analytics/qualitative/classifiers/llm_commit_classifier.py +607 -0
  61. gitflow_analytics/qualitative/classifiers/risk_analyzer.py +215 -189
  62. gitflow_analytics/qualitative/core/__init__.py +4 -4
  63. gitflow_analytics/qualitative/core/llm_fallback.py +239 -235
  64. gitflow_analytics/qualitative/core/nlp_engine.py +157 -148
  65. gitflow_analytics/qualitative/core/pattern_cache.py +214 -192
  66. gitflow_analytics/qualitative/core/processor.py +381 -248
  67. gitflow_analytics/qualitative/enhanced_analyzer.py +2236 -0
  68. gitflow_analytics/qualitative/example_enhanced_usage.py +420 -0
  69. gitflow_analytics/qualitative/models/__init__.py +7 -7
  70. gitflow_analytics/qualitative/models/schemas.py +155 -121
  71. gitflow_analytics/qualitative/utils/__init__.py +4 -4
  72. gitflow_analytics/qualitative/utils/batch_processor.py +136 -123
  73. gitflow_analytics/qualitative/utils/cost_tracker.py +142 -140
  74. gitflow_analytics/qualitative/utils/metrics.py +172 -158
  75. gitflow_analytics/qualitative/utils/text_processing.py +146 -104
  76. gitflow_analytics/reports/__init__.py +100 -0
  77. gitflow_analytics/reports/analytics_writer.py +539 -14
  78. gitflow_analytics/reports/base.py +648 -0
  79. gitflow_analytics/reports/branch_health_writer.py +322 -0
  80. gitflow_analytics/reports/classification_writer.py +924 -0
  81. gitflow_analytics/reports/cli_integration.py +427 -0
  82. gitflow_analytics/reports/csv_writer.py +1676 -212
  83. gitflow_analytics/reports/data_models.py +504 -0
  84. gitflow_analytics/reports/database_report_generator.py +427 -0
  85. gitflow_analytics/reports/example_usage.py +344 -0
  86. gitflow_analytics/reports/factory.py +499 -0
  87. gitflow_analytics/reports/formatters.py +698 -0
  88. gitflow_analytics/reports/html_generator.py +1116 -0
  89. gitflow_analytics/reports/interfaces.py +489 -0
  90. gitflow_analytics/reports/json_exporter.py +2770 -0
  91. gitflow_analytics/reports/narrative_writer.py +2287 -158
  92. gitflow_analytics/reports/story_point_correlation.py +1144 -0
  93. gitflow_analytics/reports/weekly_trends_writer.py +389 -0
  94. gitflow_analytics/training/__init__.py +5 -0
  95. gitflow_analytics/training/model_loader.py +377 -0
  96. gitflow_analytics/training/pipeline.py +550 -0
  97. gitflow_analytics/tui/__init__.py +1 -1
  98. gitflow_analytics/tui/app.py +129 -126
  99. gitflow_analytics/tui/screens/__init__.py +3 -3
  100. gitflow_analytics/tui/screens/analysis_progress_screen.py +188 -179
  101. gitflow_analytics/tui/screens/configuration_screen.py +154 -178
  102. gitflow_analytics/tui/screens/loading_screen.py +100 -110
  103. gitflow_analytics/tui/screens/main_screen.py +89 -72
  104. gitflow_analytics/tui/screens/results_screen.py +305 -281
  105. gitflow_analytics/tui/widgets/__init__.py +2 -2
  106. gitflow_analytics/tui/widgets/data_table.py +67 -69
  107. gitflow_analytics/tui/widgets/export_modal.py +76 -76
  108. gitflow_analytics/tui/widgets/progress_widget.py +41 -46
  109. gitflow_analytics-1.3.11.dist-info/METADATA +1015 -0
  110. gitflow_analytics-1.3.11.dist-info/RECORD +122 -0
  111. gitflow_analytics-1.0.3.dist-info/METADATA +0 -490
  112. gitflow_analytics-1.0.3.dist-info/RECORD +0 -62
  113. {gitflow_analytics-1.0.3.dist-info → gitflow_analytics-1.3.11.dist-info}/WHEEL +0 -0
  114. {gitflow_analytics-1.0.3.dist-info → gitflow_analytics-1.3.11.dist-info}/entry_points.txt +0 -0
  115. {gitflow_analytics-1.0.3.dist-info → gitflow_analytics-1.3.11.dist-info}/licenses/LICENSE +0 -0
  116. {gitflow_analytics-1.0.3.dist-info → gitflow_analytics-1.3.11.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,122 @@
1
+ gitflow_analytics/__init__.py,sha256=yN1dyAUu4l9qX-YNAGRItEf4RFFe-5GQiOntXPIfdxo,683
2
+ gitflow_analytics/_version.py,sha256=bXQpvOWe_1iZd8zp8muFij7XZbsWHLHtQWQK6axVbUc,138
3
+ gitflow_analytics/cli.py,sha256=TI1v_IqiR_DpMp6N7IGH9aZDNkk7qwzgEc4kLtWTM8k,210011
4
+ gitflow_analytics/cli_rich.py,sha256=1Heeyadbqpn5d13jtI7jtcrpmbA0BmPY9lnMXrgSncI,19326
5
+ gitflow_analytics/config.py,sha256=XRuxvzLWyn_ML7mDCcuZ9-YFNAEsnt33vIuWxQQ_jxg,1033
6
+ gitflow_analytics/classification/__init__.py,sha256=p8shPUZpGaw7-ivhfAVrPDbSP2LrpvWC1WEsBJIg-PI,969
7
+ gitflow_analytics/classification/batch_classifier.py,sha256=-6--0j_7la-BDKczAtxAclQ69kL0j11vYRnVDZrKW1A,30539
8
+ gitflow_analytics/classification/classifier.py,sha256=U1vpdiMXqGdHR8iHWf_wPdrJxxNRB5By94BDpck8R9g,17750
9
+ gitflow_analytics/classification/feature_extractor.py,sha256=W82vztPQO8-MFw9Yt17K1kXrLZ5lNtuMSwC1NBsZPLQ,23804
10
+ gitflow_analytics/classification/linguist_analyzer.py,sha256=HjLx9mM7hGXtrvMba6osovHJLAacTx9oDmN6CS5w0bE,17687
11
+ gitflow_analytics/classification/model.py,sha256=2KbmFh9MpyvHMcNHbqwUTAAVLHHu3MiTfFIPyZSGa-8,16356
12
+ gitflow_analytics/config/__init__.py,sha256=lzFOHsJGoeDHuu_NEgcSeUFwU0bgV3lnL9w0Pyc4FI0,1037
13
+ gitflow_analytics/config/errors.py,sha256=IBKhAIwJ4gscZFnLDyE3jEp03wn2stPR7JQJXNSIfok,10386
14
+ gitflow_analytics/config/loader.py,sha256=oG6D6jEoVuK69a0060Oo2I9BEsZPs0jiE9YY7tzOv3Q,34238
15
+ gitflow_analytics/config/profiles.py,sha256=yUjFAWW6uzOUdi5qlPE-QV9681HigyrLiSJFpL8X9A0,7967
16
+ gitflow_analytics/config/repository.py,sha256=maptMAdCKDsuMAfoTAaTrMPVfVd_tKNLRenvuPe1-t4,4350
17
+ gitflow_analytics/config/schema.py,sha256=JOeu8VCgCvYs5B1oQuogQsRTO3UINdQlPNezyoGLoY4,14761
18
+ gitflow_analytics/config/validator.py,sha256=l7AHjXYJ8wEmyA1rn2WiItZXtAiRb9YBLjFCDl53qKM,5907
19
+ gitflow_analytics/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
+ gitflow_analytics/core/analyzer.py,sha256=59kGObzjziOb8geFyZMKCUvWmo3hcXE0eTgrjYEc1XA,58736
21
+ gitflow_analytics/core/branch_mapper.py,sha256=1L1ctrhTEqMZ61eS1nZRkcyaarLipeQgotw4HdXcSmM,7407
22
+ gitflow_analytics/core/cache.py,sha256=O3I_1Jbuj3GcnUo6CBe0nEJ_8fxKY2wcxeq9sff-OhY,67807
23
+ gitflow_analytics/core/data_fetcher.py,sha256=eO06-3lQ5O4j5d9Df8Qs4wT-1bvlLcUKbsgNe7L1LTU,57341
24
+ gitflow_analytics/core/identity.py,sha256=k7i-vcRJ2eiTU0_kYGY5QOhxcqnitibTTx7DVONW0kg,31237
25
+ gitflow_analytics/core/metrics_storage.py,sha256=hNXVXjpAaPHYoBFUCj_qR-hs9g8PbQKux_5esyevNEQ,21199
26
+ gitflow_analytics/core/progress.py,sha256=KUQU7ToX63JvPTm8RRy31OmnVeqzc8HfrdGpb2ZvtoY,12509
27
+ gitflow_analytics/core/schema_version.py,sha256=fhYKxerCgPHJoX4SAoJQO38sQcKDNguMEUWSj367Ilc,10660
28
+ gitflow_analytics/extractors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
+ gitflow_analytics/extractors/base.py,sha256=AKbYkFiMhNxVj7zfNzsJfh0rpyTdNr4Faea3bcZPPBo,1168
30
+ gitflow_analytics/extractors/ml_tickets.py,sha256=ZQpb8s_1HMy7F037UcBd0CTJPZilS-Djxumnlhj_E5E,43177
31
+ gitflow_analytics/extractors/story_points.py,sha256=IggP-Ei832oV9aD08a3li08kmjF3BqyU9i8EgAZcpfs,5324
32
+ gitflow_analytics/extractors/tickets.py,sha256=Ga_wdaViy_Wp8ok9JJ6ZhDYyOHyVdldxhx8PhVCWpx8,39979
33
+ gitflow_analytics/identity_llm/__init__.py,sha256=tpWDwapm6zIyb8LxLO8A6pHlE3wNorT_fBL-Yp9-XnU,250
34
+ gitflow_analytics/identity_llm/analysis_pass.py,sha256=mJUC8Cts2m6vAd_VEXRcZOF1FqHtnma8-N5yqd1Csh0,8787
35
+ gitflow_analytics/identity_llm/analyzer.py,sha256=iYx7CxgYpfiliY0qOtTpoy1GLAM-hvrJdtNuFO9llqc,17336
36
+ gitflow_analytics/identity_llm/models.py,sha256=YcTh1tz0_OgBPqapMzVglBAIUOfG5uPzur72631VFUU,2375
37
+ gitflow_analytics/integrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
+ gitflow_analytics/integrations/github_integration.py,sha256=52lyq5GNJIlTXIv7iwrkuxg0firpTcwYtTU9RAn8EIk,13324
39
+ gitflow_analytics/integrations/jira_integration.py,sha256=owGCiCPXKrrcVACjCRjE-U-IXO8xbcLmo9LJijssJdU,28757
40
+ gitflow_analytics/integrations/orchestrator.py,sha256=qbHEAuFCk0FUA487ustkEthwO2qVUtGg10ekKRX8blA,12230
41
+ gitflow_analytics/metrics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
+ gitflow_analytics/metrics/activity_scoring.py,sha256=h1uj_6dTKpCwNJfsimfaY0TB3Qaexw7I7IEFutoHwUY,12539
43
+ gitflow_analytics/metrics/branch_health.py,sha256=WxQS2IHl81lPCmkxMediHULyl_lQtuGKRAKNEA8yb9A,17401
44
+ gitflow_analytics/metrics/dora.py,sha256=U4Xk0tr7kPcpR7r-PevYBUDtZPkDIG-w_yS2DJOlTrk,27549
45
+ gitflow_analytics/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
46
+ gitflow_analytics/models/database.py,sha256=IVSEoAYT-V0EOFlKnrZujZlq_iiFboRr-hN2OnC1Eqs,39925
47
+ gitflow_analytics/pm_framework/__init__.py,sha256=2wEfO1uF6TlsymnKeMJimdLYay3K9rigGThhpGVBA3A,3698
48
+ gitflow_analytics/pm_framework/base.py,sha256=3fXjekfscGy_WslIbyVXdAhWDIIElei9okSyleUJgqU,15247
49
+ gitflow_analytics/pm_framework/models.py,sha256=uikCapq6KGe_zbWymzvNFvJaN38Nld9i9gBJFKTVtNo,7115
50
+ gitflow_analytics/pm_framework/orchestrator.py,sha256=RrcCFkbVHeYiF7CKGPhj5rCl99GjG1Z8-8F-8CDgfAs,27219
51
+ gitflow_analytics/pm_framework/registry.py,sha256=ggUHS3WFsKXifaYPZgY15r2vGZEKyx-G33bjIv0kwJQ,13636
52
+ gitflow_analytics/pm_framework/adapters/__init__.py,sha256=vS5btB-yIwVHZfoFYacWxHk3HszxIMWLnvBUgVDdNDU,1756
53
+ gitflow_analytics/pm_framework/adapters/jira_adapter.py,sha256=Cp4SAqvF6Yu9-HkmjNFMXk5phgCkePj0eKTWhNRtL38,72330
54
+ gitflow_analytics/qualitative/__init__.py,sha256=fwlb_xrv7Gatjylk5wclzckZxyss8K5cdZhhTHMWfYw,1184
55
+ gitflow_analytics/qualitative/chatgpt_analyzer.py,sha256=CHiaGO5ESGCcQ6pJPxfVZI9gTMp_9OD4TTltmgxCypU,11816
56
+ gitflow_analytics/qualitative/enhanced_analyzer.py,sha256=XWN27-hRkxLcQUt_XVejyGkPCkxA1qpHyGyACe2xtw8,92429
57
+ gitflow_analytics/qualitative/example_enhanced_usage.py,sha256=pKKhAjOCwmBaJPzZ8RDl8R4uG23NwFXUUeAqv6oYM2E,14924
58
+ gitflow_analytics/qualitative/classifiers/__init__.py,sha256=lgabpW-_aub_O-1CVbmgeUVEo2jf5O-DK0Y2dF-WrZc,346
59
+ gitflow_analytics/qualitative/classifiers/change_type.py,sha256=3glCIkNxTQAbk0s0Urp4nLp9OXtYzF0-I8SzOEpx9JE,23291
60
+ gitflow_analytics/qualitative/classifiers/domain_classifier.py,sha256=2bEXyKeO2QVCD8nBuSboi3kVSBnZAeNhxtYuPtaBpdQ,15747
61
+ gitflow_analytics/qualitative/classifiers/intent_analyzer.py,sha256=jjCbc0mdNccnLKTRTgZ3HsYka_yD_u-o-p_IGStpjw8,17442
62
+ gitflow_analytics/qualitative/classifiers/llm_commit_classifier.py,sha256=_FqTydUQV9dbJRyRmRC-O7TfKra6HJf91m6vJHPfp_M,21484
63
+ gitflow_analytics/qualitative/classifiers/risk_analyzer.py,sha256=UoSUa0DF2rEK5chA-dzUvWf44w-ofnghS1W6xbEv8KI,15015
64
+ gitflow_analytics/qualitative/classifiers/llm/__init__.py,sha256=QWBt39jmINB_Z2jJMuBiMxmd5Xlgw1v3otAq-0ymLHU,953
65
+ gitflow_analytics/qualitative/classifiers/llm/base.py,sha256=1_GEb-Q5hxj109nvJaZlimAJPyGErovSXV1atbNLyjM,6058
66
+ gitflow_analytics/qualitative/classifiers/llm/batch_processor.py,sha256=oSlJPYOAp-JXQRYVj9PFNSkoiFp8BdZViH-0cNNpo5E,13138
67
+ gitflow_analytics/qualitative/classifiers/llm/cache.py,sha256=5UWRMgz0bOc_GRShE5gvYEzLhxB-VBDkhZKRECNmjOI,16930
68
+ gitflow_analytics/qualitative/classifiers/llm/cost_tracker.py,sha256=2mqWPHo9SrhwZQ0Q_FNViI_M83Rl18sJVg3p1lwkcBM,14902
69
+ gitflow_analytics/qualitative/classifiers/llm/openai_client.py,sha256=845819deLuN6o5gZ2_lakklmmqovp0MWIbAYbuBGO0g,14083
70
+ gitflow_analytics/qualitative/classifiers/llm/prompts.py,sha256=7dLvCb8bQyZGOsQF_ajZpFxaXyHIbtfUfTO2yQJPxJs,12906
71
+ gitflow_analytics/qualitative/classifiers/llm/response_parser.py,sha256=AyGfTpmvpx4QvRKJDWGS3CbylLm2SOAD0nSZVrkGTrM,9931
72
+ gitflow_analytics/qualitative/core/__init__.py,sha256=22tZJDPyYE0k5-9lx_84R2SsZN8PRc_1I1L6prSkoSE,315
73
+ gitflow_analytics/qualitative/core/llm_fallback.py,sha256=-Q1tqy-vqN7kBe_tQN6odJjCGcFzVasS-piwuO1TGRw,24068
74
+ gitflow_analytics/qualitative/core/nlp_engine.py,sha256=c-R0chjKmCif5ilBl3JIURNushVNw5musc8INJhL3cc,14490
75
+ gitflow_analytics/qualitative/core/pattern_cache.py,sha256=H_t759ftWGJC3QQy6dKqdt3Mf2TojWfV6C41eVdPZTo,18537
76
+ gitflow_analytics/qualitative/core/processor.py,sha256=qcyCuw1c6gwYwOCBzMnbch9adOtXvWwb3SeyWRDGMDo,26507
77
+ gitflow_analytics/qualitative/models/__init__.py,sha256=Ro_lAXyt3jfL29xgZ6jn_DvDRv3PZ6myzsrXq_ctqRQ,457
78
+ gitflow_analytics/qualitative/models/schemas.py,sha256=9GRvp_mFOtIRiAbaNjzxq5Lo8PzD-r4F_-sqoyOjN3w,10670
79
+ gitflow_analytics/qualitative/utils/__init__.py,sha256=YGLGiP4WWFO-KnZERJ6uj8M3uJsmizsSeoR1tsoGK0c,319
80
+ gitflow_analytics/qualitative/utils/batch_processor.py,sha256=r0P_SrgDjBoed1K_VRNvxnilh32SBZa1X0symsnWtmg,11697
81
+ gitflow_analytics/qualitative/utils/cost_tracker.py,sha256=GPoO3ywlGqiJkjz6Uca4TVq3UGxz_NwAqP5B6_R6cNQ,12130
82
+ gitflow_analytics/qualitative/utils/metrics.py,sha256=_Gfyfrenxv-ynkSxVnkGpViROCDpDb1EI6K-x461nEk,13054
83
+ gitflow_analytics/qualitative/utils/text_processing.py,sha256=j3fF5K9DYuRauKGIAxnezyGmqedXkR9wIXailkhG0BY,9205
84
+ gitflow_analytics/reports/__init__.py,sha256=bU43ev2EDMKsCEQEzCyZU5yO2ZL4Oymq4N_3YD3pCQg,2156
85
+ gitflow_analytics/reports/analytics_writer.py,sha256=_w7rZrO6RzxqtqC7L3-NvBr074cN8_d88naTYBv7jhU,45217
86
+ gitflow_analytics/reports/base.py,sha256=IjYX7PbnpVyyB6LI6dz_oLd3vtYsu1eBB978X0zIJDE,23203
87
+ gitflow_analytics/reports/branch_health_writer.py,sha256=Yfd4rGQLx1oBK8tA8t_jQ0b3OeTXEb4GJYrPbXHmsBU,13111
88
+ gitflow_analytics/reports/classification_writer.py,sha256=3kyISHrLXUu8h4vtqBfn0N_k9uESfa2dSUX_MYqEQsc,46115
89
+ gitflow_analytics/reports/cli_integration.py,sha256=4znVx9arRT6WQHvbS4MDjJmdg_8HBLdegXGqH00qAqw,15361
90
+ gitflow_analytics/reports/csv_writer.py,sha256=XxyjcUIz3T6tvqUygOymOdzpkfjJgcGxLK6PbJ_QuO8,75685
91
+ gitflow_analytics/reports/data_models.py,sha256=ZUWVzafwT1fBQ2YWM5f4xk0OuWxofy8zwvUrnuJmwhg,14140
92
+ gitflow_analytics/reports/database_report_generator.py,sha256=WoYkCCKfO55UVDTXhZq5jZaJfmT31ruudUob3sKHkyo,17876
93
+ gitflow_analytics/reports/example_usage.py,sha256=MLIkSsbh_8VLXWZSPddoc2BVKXqnemAXD1k7AWcXiXo,11572
94
+ gitflow_analytics/reports/factory.py,sha256=1UutSVProqPS0pEqNik7tqQO55RgfHiN9bjtUiIerBI,15890
95
+ gitflow_analytics/reports/formatters.py,sha256=RFocNTbDwrNCw4IoL5etemWOPeengvDJ-97xzIyxzmU,19274
96
+ gitflow_analytics/reports/html_generator.py,sha256=gl4vhQZb8_oxvDonBP--v_wOXXgn32OCLwwyuzuKncE,62549
97
+ gitflow_analytics/reports/interfaces.py,sha256=XJJxmwhQ3-4iJrDQ1n5r8vFgL4gRgw_3HMpW3RPYrAU,12194
98
+ gitflow_analytics/reports/json_exporter.py,sha256=p-GpOBJsdmvXpwORTy7LLpipFFUzI8eGuNasmKn57kA,114323
99
+ gitflow_analytics/reports/narrative_writer.py,sha256=cCLnIHjXICUqq0Rd2Y20JnXxlOAYRUUDgjZeDj8Dn60,116360
100
+ gitflow_analytics/reports/story_point_correlation.py,sha256=V9fnqNOxJxK00w0Mx69BMpcZgdgQJyja_Pu4qD-SWw0,51210
101
+ gitflow_analytics/reports/weekly_trends_writer.py,sha256=m_TQ6ThSaa5rkAwfQpPRms2Jwgq3RReYwVBsts67cLk,15720
102
+ gitflow_analytics/training/__init__.py,sha256=YT5p7Wm4U8trzLnbS5FASJBWPMKhqp3rlAThjpxWnxo,143
103
+ gitflow_analytics/training/model_loader.py,sha256=xGZLSopGxDhC--2XN6ytRgi2CyjOKY4zS4fZ-ZlO6lM,13245
104
+ gitflow_analytics/training/pipeline.py,sha256=PQegTk_-OsPexVyRDfiy-3Df-7pcs25C4vPASr-HT9E,19951
105
+ gitflow_analytics/tui/__init__.py,sha256=1liMpth2RvUkmKfNUEnYEZkYi2RpYITFMmGKtBBwiUk,126
106
+ gitflow_analytics/tui/app.py,sha256=lZMgnAzfOqv-t3WlqecEgSAigyrfHSUEdwVsNoK4SGY,22029
107
+ gitflow_analytics/tui/screens/__init__.py,sha256=JVnPy-o4V6D2jehliXAbRET9x8zWmHR7PPk2is-l9OM,327
108
+ gitflow_analytics/tui/screens/analysis_progress_screen.py,sha256=FGFJ50-wB1a51XmldP1CqyjFPSGpsXHnRcwzNHeLQ-o,21160
109
+ gitflow_analytics/tui/screens/configuration_screen.py,sha256=QLtTz8xFAGdIxYsRmUyBr4m-1PteAk3_kxfE1UexqgA,19345
110
+ gitflow_analytics/tui/screens/loading_screen.py,sha256=5kh0kKKCa6-NMlZyPfu2fE4ROgmjU8_jA2xCUX3z5iY,14451
111
+ gitflow_analytics/tui/screens/main_screen.py,sha256=6aIzJrDtgXDlgGcW--wQUqncBBa_hcUytiLu76fMALw,11482
112
+ gitflow_analytics/tui/screens/results_screen.py,sha256=_u_gBbgLsemt3zAZq9lyjaTyNz3dUBHRCgv4O0YtYEw,28623
113
+ gitflow_analytics/tui/widgets/__init__.py,sha256=85l6vkJuRGJNvej-nUZZoNg562zl_1JFOlewVer1mLI,259
114
+ gitflow_analytics/tui/widgets/data_table.py,sha256=8fGNG4m7H41vCid3QwCHJa7bd8qu_DKrDf22iCks3XA,8722
115
+ gitflow_analytics/tui/widgets/export_modal.py,sha256=L-XKPOc6u-fow2TudPgDnC0kXZM1WZuGd_jahtV8lhg,10737
116
+ gitflow_analytics/tui/widgets/progress_widget.py,sha256=Qny6Q1nU0Pr3aj4aHfXLaRjya9MH3rldR2HWYiaQyGE,6167
117
+ gitflow_analytics-1.3.11.dist-info/licenses/LICENSE,sha256=xwvSwY1GYXpRpmbnFvvnbmMwpobnrdN9T821sGvjOY0,1066
118
+ gitflow_analytics-1.3.11.dist-info/METADATA,sha256=jMKDbH-PaYIUhDMkUWO3NDVlOgE-dMoMu-pzEB9KpgI,34092
119
+ gitflow_analytics-1.3.11.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
120
+ gitflow_analytics-1.3.11.dist-info/entry_points.txt,sha256=a3y8HnfLOvK1QVOgAkDY6VQXXm3o9ZSQRZrpiaS3hEM,65
121
+ gitflow_analytics-1.3.11.dist-info/top_level.txt,sha256=CQyxZXjKvpSB1kgqqtuE0PCRqfRsXZJL8JrYpJKtkrk,18
122
+ gitflow_analytics-1.3.11.dist-info/RECORD,,
@@ -1,490 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: gitflow-analytics
3
- Version: 1.0.3
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: Programming Language :: Python :: 3
15
- Classifier: Programming Language :: Python :: 3.9
16
- Classifier: Programming Language :: Python :: 3.10
17
- Classifier: Programming Language :: Python :: 3.11
18
- Classifier: Programming Language :: Python :: 3.12
19
- Classifier: Topic :: Software Development :: Version Control :: Git
20
- Classifier: Topic :: Software Development :: Quality Assurance
21
- Requires-Python: >=3.9
22
- Description-Content-Type: text/markdown
23
- License-File: LICENSE
24
- Requires-Dist: click>=8.1
25
- Requires-Dist: gitpython>=3.1
26
- Requires-Dist: tqdm>=4.65
27
- Requires-Dist: sqlalchemy>=2.0
28
- Requires-Dist: pandas>=2.0
29
- Requires-Dist: pyyaml>=6.0
30
- Requires-Dist: python-dateutil>=2.8
31
- Requires-Dist: python-dotenv>=1.0
32
- Requires-Dist: rich>=13.0.0
33
- Requires-Dist: spacy>=3.7.0
34
- Requires-Dist: scikit-learn>=1.3.0
35
- Requires-Dist: openai>=1.30.0
36
- Requires-Dist: tiktoken>=0.7.0
37
- Requires-Dist: numpy>=1.24.0
38
- Provides-Extra: dev
39
- Requires-Dist: pytest>=7.0; extra == "dev"
40
- Requires-Dist: pytest-cov>=4.0; extra == "dev"
41
- Requires-Dist: pytest-mock>=3.0; extra == "dev"
42
- Requires-Dist: ruff>=0.1.0; extra == "dev"
43
- Requires-Dist: mypy>=1.0; extra == "dev"
44
- Requires-Dist: black>=23.0; extra == "dev"
45
- Requires-Dist: isort>=5.0; extra == "dev"
46
- Requires-Dist: bandit[toml]>=1.7; extra == "dev"
47
- Requires-Dist: safety>=2.0; extra == "dev"
48
- Requires-Dist: python-semantic-release>=8.0.0; extra == "dev"
49
- Requires-Dist: types-PyYAML>=6.0; extra == "dev"
50
- Requires-Dist: types-requests>=2.28; extra == "dev"
51
- Provides-Extra: github
52
- Requires-Dist: pygithub>=1.58; extra == "github"
53
- Provides-Extra: tui
54
- Requires-Dist: textual>=0.41.0; extra == "tui"
55
- Provides-Extra: all
56
- Requires-Dist: gitflow-analytics[github,tui]; extra == "all"
57
- Dynamic: license-file
58
-
59
- # GitFlow Analytics
60
-
61
- [![PyPI version](https://badge.fury.io/py/gitflow-analytics.svg)](https://badge.fury.io/py/gitflow-analytics)
62
- [![Python Support](https://img.shields.io/pypi/pyversions/gitflow-analytics.svg)](https://pypi.org/project/gitflow-analytics/)
63
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
64
-
65
- 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.
66
-
67
- ## Features
68
-
69
- - 🚀 **Multi-repository analysis** with project grouping
70
- - 🏢 **Organization-based repository discovery** from GitHub
71
- - 👥 **Developer identity resolution** and normalization
72
- - 📊 **Work volume analysis** (absolute vs relative effort)
73
- - 🎯 **Story point extraction** from commit messages and PR descriptions
74
- - 🎫 **Multi-platform ticket tracking** (JIRA, GitHub Issues, ClickUp, Linear)
75
- - 📈 **Weekly CSV reports** with productivity metrics
76
- - 🔒 **Data anonymization** for external sharing
77
- - ⚡ **Smart caching** for fast repeated analyses
78
- - 🔄 **Batch processing** for large repositories
79
-
80
- ## Quick Start
81
-
82
- ### Installation
83
-
84
- **From PyPI (Recommended):**
85
-
86
- ```bash
87
- pip install gitflow-analytics
88
- ```
89
-
90
- **From Source (Development):**
91
-
92
- ```bash
93
- git clone https://github.com/bobmatnyc/gitflow-analytics.git
94
- cd gitflow-analytics
95
- pip install -e ".[dev]"
96
- ```
97
-
98
- ### Basic Usage
99
-
100
- 1. Create a configuration file (`config.yaml`):
101
-
102
- **Option A: Organization-based (Automatic Repository Discovery)**
103
- ```yaml
104
- version: "1.0"
105
-
106
- github:
107
- token: "${GITHUB_TOKEN}"
108
- organization: "myorg" # Automatically discovers all repositories
109
-
110
- analysis:
111
- story_point_patterns:
112
- - "(?:story\\s*points?|sp|pts?)\\s*[:=]\\s*(\\d+)"
113
- - "\\[(\\d+)\\s*(?:sp|pts?)\\]"
114
- ```
115
-
116
- **Option B: Repository-based (Manual Configuration)**
117
- ```yaml
118
- version: "1.0"
119
-
120
- github:
121
- token: "${GITHUB_TOKEN}"
122
- owner: "${GITHUB_OWNER}"
123
-
124
- repositories:
125
- - name: "frontend"
126
- path: "~/repos/frontend"
127
- github_repo: "myorg/frontend"
128
- project_key: "FRONTEND"
129
-
130
- - name: "backend"
131
- path: "~/repos/backend"
132
- github_repo: "myorg/backend"
133
- project_key: "BACKEND"
134
-
135
- analysis:
136
- story_point_patterns:
137
- - "(?:story\\s*points?|sp|pts?)\\s*[:=]\\s*(\\d+)"
138
- - "\\[(\\d+)\\s*(?:sp|pts?)\\]"
139
- ```
140
-
141
- 2. Create a `.env` file in the same directory as your `config.yaml`:
142
-
143
- ```bash
144
- # .env
145
- GITHUB_TOKEN=ghp_your_github_token_here
146
- GITHUB_OWNER=your_github_org # Only for repository-based setup
147
- ```
148
-
149
- 3. Run the analysis:
150
-
151
- ```bash
152
- gitflow-analytics analyze -c config.yaml
153
- ```
154
-
155
- ## Configuration Options
156
-
157
- ### Environment Variables and Credentials
158
-
159
- GitFlow Analytics automatically loads environment variables from a `.env` file in the same directory as your configuration YAML. This is the recommended approach for managing credentials securely.
160
-
161
- #### Step 1: Create a `.env` file
162
-
163
- Create a `.env` file next to your configuration YAML:
164
-
165
- ```bash
166
- # .env file (same directory as your config.yaml)
167
- # GitHub credentials (required)
168
- GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxx
169
- GITHUB_OWNER=myorg # Optional: default owner for repositories
170
-
171
- # JIRA credentials (optional - only if using JIRA integration)
172
- JIRA_ACCESS_USER=your.email@company.com
173
- JIRA_ACCESS_TOKEN=xxxxxxxxxxxxxxxxxxxx
174
-
175
- # Other optional tokens
176
- CLICKUP_TOKEN=pk_xxxxxxxxxxxx
177
- LINEAR_TOKEN=lin_api_xxxxxxxxxxxx
178
- ```
179
-
180
- #### Step 2: Reference in YAML configuration
181
-
182
- Use `${VARIABLE_NAME}` syntax in your YAML to reference environment variables:
183
-
184
- ```yaml
185
- # config.yaml
186
- version: "1.0"
187
-
188
- github:
189
- token: "${GITHUB_TOKEN}" # Required
190
- owner: "${GITHUB_OWNER}" # Optional
191
- organization: "${GITHUB_ORG}" # Optional (for org-based discovery)
192
-
193
- # Optional: JIRA integration
194
- jira:
195
- access_user: "${JIRA_ACCESS_USER}"
196
- access_token: "${JIRA_ACCESS_TOKEN}"
197
- base_url: "https://yourcompany.atlassian.net"
198
-
199
- # Optional: Configure which JIRA fields contain story points
200
- jira_integration:
201
- story_point_fields:
202
- - "Story Points"
203
- - "customfield_10016" # Your custom field ID
204
- ```
205
-
206
- #### Important Notes:
207
-
208
- - **Never commit `.env` files** to version control (add to `.gitignore`)
209
- - If credentials are not found in the `.env` file, the tool will exit with an informative error
210
- - The `.env` file must be in the same directory as your YAML configuration
211
- - All configured services must have corresponding environment variables set
212
-
213
- ### Organization vs Repository-based Setup
214
-
215
- GitFlow Analytics supports two main configuration approaches:
216
-
217
- #### Organization-based Configuration (Recommended)
218
-
219
- Automatically discovers all non-archived repositories from a GitHub organization:
220
-
221
- ```yaml
222
- version: "1.0"
223
-
224
- github:
225
- token: "${GITHUB_TOKEN}"
226
- organization: "myorg" # Your GitHub organization name
227
-
228
- # Optional: Customize analysis settings
229
- analysis:
230
- story_point_patterns:
231
- - "(?:story\\s*points?|sp|pts?)\\s*[:=]\\s*(\\d+)"
232
-
233
- exclude:
234
- authors:
235
- - "dependabot[bot]"
236
- - "github-actions[bot]"
237
- ```
238
-
239
- **Benefits:**
240
- - Automatically discovers new repositories as they're added to the organization
241
- - No need to manually configure each repository
242
- - Simplified configuration management
243
- - Perfect for teams with many repositories
244
-
245
- **Requirements:**
246
- - Your GitHub token must have organization read access
247
- - Repositories will be automatically cloned to local directories if they don't exist
248
-
249
- #### Repository-based Configuration
250
-
251
- Manually specify each repository to analyze:
252
-
253
- ```yaml
254
- version: "1.0"
255
-
256
- github:
257
- token: "${GITHUB_TOKEN}"
258
- owner: "${GITHUB_OWNER}" # Default owner for repositories
259
-
260
- repositories:
261
- - name: "frontend"
262
- path: "~/repos/frontend"
263
- github_repo: "myorg/frontend"
264
- project_key: "FRONTEND"
265
-
266
- - name: "backend"
267
- path: "~/repos/backend"
268
- github_repo: "myorg/backend"
269
- project_key: "BACKEND"
270
-
271
- analysis:
272
- story_point_patterns:
273
- - "(?:story\\s*points?|sp|pts?)\\s*[:=]\\s*(\\d+)"
274
- ```
275
-
276
- **Benefits:**
277
- - Fine-grained control over which repositories to analyze
278
- - Custom project keys and local paths
279
- - Works with mixed-ownership repositories
280
- - Compatible with existing configurations
281
-
282
- ### Directory Defaults
283
-
284
- GitFlow Analytics now defaults cache and report directories to be relative to the configuration file location:
285
-
286
- - **Reports**: Default to same directory as config file (unless overridden with `--output`)
287
- - **Cache**: Default to `.gitflow-cache/` in config file directory
288
- - **Backward compatibility**: Absolute paths in configuration continue to work as before
289
-
290
- Example directory structure:
291
- ```
292
- /project/
293
- ├── config.yaml # Configuration file
294
- ├── weekly_metrics.csv # Reports generated here by default
295
- ├── summary.csv
296
- └── .gitflow-cache/ # Cache directory
297
- ├── gitflow_cache.db
298
- └── identities.db
299
- ```
300
-
301
- ## Command Line Interface
302
-
303
- ### Main Commands
304
-
305
- ```bash
306
- # Analyze repositories
307
- gitflow-analytics analyze -c config.yaml --weeks 12 --output ./reports
308
-
309
- # Show cache statistics
310
- gitflow-analytics cache-stats -c config.yaml
311
-
312
- # List known developers
313
- gitflow-analytics list-developers -c config.yaml
314
-
315
- # Merge developer identities
316
- gitflow-analytics merge-identity -c config.yaml dev1_id dev2_id
317
-
318
- # Discover JIRA story point fields
319
- gitflow-analytics discover-jira-fields -c config.yaml
320
- ```
321
-
322
- ### Options
323
-
324
- - `--weeks, -w`: Number of weeks to analyze (default: 12)
325
- - `--output, -o`: Output directory for reports (default: ./reports)
326
- - `--anonymize`: Anonymize developer information
327
- - `--no-cache`: Disable caching for fresh analysis
328
- - `--clear-cache`: Clear cache before analysis
329
- - `--validate-only`: Validate configuration without running
330
-
331
- ## Complete Configuration Example
332
-
333
- Here's a complete example showing `.env` file and corresponding YAML configuration:
334
-
335
- ### `.env` file
336
- ```bash
337
- # GitHub Configuration
338
- GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxx
339
- GITHUB_ORG=EWTN-Global
340
-
341
- # JIRA Configuration
342
- JIRA_ACCESS_USER=developer@ewtn.com
343
- JIRA_ACCESS_TOKEN=ATATT3xxxxxxxxxxx
344
-
345
- # Optional: Other integrations
346
- # CLICKUP_TOKEN=pk_xxxxxxxxxxxx
347
- # LINEAR_TOKEN=lin_api_xxxxxxxxxxxx
348
- ```
349
-
350
- ### `config.yaml` file
351
- ```yaml
352
- version: "1.0"
353
-
354
- # GitHub configuration with organization discovery
355
- github:
356
- token: "${GITHUB_TOKEN}"
357
- organization: "${GITHUB_ORG}"
358
-
359
- # JIRA integration for story points
360
- jira:
361
- access_user: "${JIRA_ACCESS_USER}"
362
- access_token: "${JIRA_ACCESS_TOKEN}"
363
- base_url: "https://ewtn.atlassian.net"
364
-
365
- jira_integration:
366
- enabled: true
367
- fetch_story_points: true
368
- story_point_fields:
369
- - "Story point estimate" # Your field name
370
- - "customfield_10016" # Fallback field ID
371
-
372
- # Analysis configuration
373
- analysis:
374
- # Only track JIRA tickets (ignore GitHub issues, etc.)
375
- ticket_platforms:
376
- - jira
377
-
378
- # Exclude bot commits and boilerplate files
379
- exclude:
380
- authors:
381
- - "dependabot[bot]"
382
- - "renovate[bot]"
383
- paths:
384
- - "**/node_modules/**"
385
- - "**/*.min.js"
386
- - "**/package-lock.json"
387
-
388
- # Developer identity consolidation
389
- identity:
390
- similarity_threshold: 0.85
391
- manual_mappings:
392
- - primary_email: "john.doe@company.com"
393
- aliases:
394
- - "jdoe@oldcompany.com"
395
- - "john@personal.com"
396
-
397
- # Output configuration
398
- output:
399
- directory: "./reports"
400
- formats:
401
- - csv
402
- - markdown
403
- ```
404
-
405
- ## Output Reports
406
-
407
- The tool generates three CSV reports:
408
-
409
- 1. **Weekly Metrics** (`weekly_metrics_YYYYMMDD.csv`)
410
- - Week-by-week developer productivity
411
- - Story points, commits, lines changed
412
- - Ticket coverage percentages
413
- - Per-project breakdown
414
-
415
- 2. **Summary Statistics** (`summary_YYYYMMDD.csv`)
416
- - Overall project statistics
417
- - Platform-specific ticket counts
418
- - Top contributors
419
-
420
- 3. **Developer Report** (`developers_YYYYMMDD.csv`)
421
- - Complete developer profiles
422
- - Total contributions
423
- - Identity aliases
424
-
425
- ## Story Point Patterns
426
-
427
- Configure custom regex patterns to match your team's story point format:
428
-
429
- ```yaml
430
- story_point_patterns:
431
- - "SP: (\\d+)" # SP: 5
432
- - "\\[([0-9]+) pts\\]" # [3 pts]
433
- - "estimate: (\\d+)" # estimate: 8
434
- ```
435
-
436
- ## Ticket Platform Support
437
-
438
- Automatically detects and tracks tickets from:
439
- - **JIRA**: `PROJ-123`
440
- - **GitHub**: `#123`, `GH-123`
441
- - **ClickUp**: `CU-abc123`
442
- - **Linear**: `ENG-123`
443
-
444
- ### JIRA Integration
445
-
446
- GitFlow Analytics can fetch story points directly from JIRA tickets. Configure your JIRA instance:
447
-
448
- ```yaml
449
- jira:
450
- access_user: "${JIRA_ACCESS_USER}"
451
- access_token: "${JIRA_ACCESS_TOKEN}"
452
- base_url: "https://your-company.atlassian.net"
453
-
454
- jira_integration:
455
- enabled: true
456
- story_point_fields:
457
- - "Story point estimate" # Your custom field name
458
- - "customfield_10016" # Or use field ID
459
- ```
460
-
461
- To discover your JIRA story point fields:
462
- ```bash
463
- gitflow-analytics discover-jira-fields -c config.yaml
464
- ```
465
-
466
- ## Caching
467
-
468
- The tool uses SQLite for intelligent caching:
469
- - Commit analysis results
470
- - Developer identity mappings
471
- - Pull request data
472
-
473
- Cache is automatically managed with configurable TTL.
474
-
475
- ## Developer Identity Resolution
476
-
477
- Intelligently merges developer identities across:
478
- - Different email addresses
479
- - Name variations
480
- - GitHub usernames
481
-
482
- Manual overrides supported in configuration.
483
-
484
- ## Contributing
485
-
486
- Contributions are welcome! Please feel free to submit a Pull Request.
487
-
488
- ## License
489
-
490
- This project is licensed under the MIT License - see the LICENSE file for details.
@@ -1,62 +0,0 @@
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,,