demo

2024-01-08 to 2025-10-28 · HEAD eeedc49f1b · generated 2026-10-16 by gitpulse

598commits analysed
8authors
87files at HEAD
23%fix commits
327.8 dmedian age of modified code
1lowest bus factor (tests)

Hotspots

Area is lines of code; colour is hotspot score (relative churn x relative indent complexity). Hover for details.

src/shopsrc/shop/orders.py score 100.0 | 147 revisions | 2475 LOC | complexity 7137orders.pybillingsrc/shop/billing/charge.py score 7.84 | 98 revisions | 483 LOC | complexity 839charge.pysrc/shop/billing/tax.py score 0.11 | 15 revisions | 43 LOC | complexity 79tax.pydbsrc/shop/db/queries.py score 4.15 | 84 revisions | 308 LOC | complexity 518queries.pysrc/shop/db/models.py score 0.4 | 29 revisions | 98 LOC | complexity 145models.pyinvoicingsrc/shop/invoicing/render.py score 4.67 | 91 revisions | 332 LOC | complexity 538render.pyapisrc/shop/api/routes.py score 2.4 | 70 revisions | 228 LOC | complexity 359routes.pysrc/shop/api/handlers.py score 0.09 | 18 revisions | 36 LOC | complexity 51inventorysrc/shop/inventory/search.py score 0.69 | 25 revisions | 163 LOC | complexity 289search.pysrc/shop/inventory/products.py score 0.17 | 13 revisions | 77 LOC | complexity 136products.pyhelperssrc/shop/helpers/text.py score 1.25 | 43 revisions | 183 LOC | complexity 306text.pyteststests/test_orders.py score 43.32 | 101 revisions | 1601 LOC | complexity 4500test_orders.pytests/test_api.py score 0.35 | 24 revisions | 94 LOC | complexity 151test_api.pytests/test_billing.py score 0.26 | 26 revisions | 74 LOC | complexity 106test_billing.pydocs/architecture.md score 0.0 | 22 revisions | 22 LOC | complexity 0README.md score 0.0 | 20 revisions | 20 LOC | complexity 0.mailmap score 0.0 | 1 revisions | 2 LOC | complexity 0
lowhigh score
FileScoreRevisionsLOCComplexityFixesMain developer
src/shop/orders.py1001472475713750Alice Nguyen (67%)
tests/test_orders.py43.321011601450033Alice Nguyen (64%)
src/shop/billing/charge.py7.849848383921Bob Martin (77%)
src/shop/invoicing/render.py4.679133253817Bob Martin (71%)
src/shop/db/queries.py4.158430851817Carol Diaz (46%)
src/shop/api/routes.py2.47022835912Carol Diaz (53%)
src/shop/helpers/text.py1.25431833068Bob Martin (48%)
src/shop/inventory/search.py0.69251632893Dana Whitfield (72%)
src/shop/db/models.py0.429981453Carol Diaz (40%)
tests/test_api.py0.3524941515Alice Nguyen (49%)
tests/test_billing.py0.26267410611Alice Nguyen (48%)
src/shop/inventory/products.py0.1713771363Dana Whitfield (53%)
src/shop/billing/tax.py0.111543791Bob Martin (62%)
src/shop/api/handlers.py0.091836512Alice Nguyen (45%)
docs/architecture.md0222202Erin Walsh (69%)

Complexity trend

Indentation complexity of the top hotspots, sampled across the commits that touched them.

src/shop/orders.py
69 (2024-01-08) to 7137 (2025-10-24)
tests/test_orders.py
121 (2024-01-08) to 4500 (2025-10-24)
src/shop/billing/charge.py
8 (2024-01-08) to 839 (2025-10-17)

Temporal coupling

Files that change in the same commit (at least 5 shared revisions, degree 20% or more). Degree is shared revisions divided by the average revisions of the two files.

File AFile BDegreeSharedA to BB to AModules
src/shop/billing/charge.pysrc/shop/invoicing/render.py91%8688%95%crosses modules
src/shop/api/routes.pysrc/shop/db/queries.py71%5579%65%crosses modules
src/shop/orders.pytests/test_orders.py62%7752%76%crosses modules

Cross-module coupling (modules are the first 3 directories): shared revisions between modules.

src/shopsrc/shopsrc/shop / src/shop: 0 shared revisionssrc/shop / src/shop/api: 0 shared revisionssrc/shop / src/shop/billing: 0 shared revisionssrc/shop / src/shop/db: 0 shared revisionssrc/shop / src/shop/invoicing: 0 shared revisionssrc/shop / tests: 77 shared revisions77src/shop/apisrc/shop/apisrc/shop/api / src/shop: 0 shared revisionssrc/shop/api / src/shop/api: 0 shared revisionssrc/shop/api / src/shop/billing: 0 shared revisionssrc/shop/api / src/shop/db: 55 shared revisions55src/shop/api / src/shop/invoicing: 0 shared revisionssrc/shop/api / tests: 0 shared revisionssrc/shop/billingsrc/shop/billingsrc/shop/billing / src/shop: 0 shared revisionssrc/shop/billing / src/shop/api: 0 shared revisionssrc/shop/billing / src/shop/billing: 0 shared revisionssrc/shop/billing / src/shop/db: 0 shared revisionssrc/shop/billing / src/shop/invoicing: 86 shared revisions86src/shop/billing / tests: 0 shared revisionssrc/shop/dbsrc/shop/dbsrc/shop/db / src/shop: 0 shared revisionssrc/shop/db / src/shop/api: 55 shared revisions55src/shop/db / src/shop/billing: 0 shared revisionssrc/shop/db / src/shop/db: 0 shared revisionssrc/shop/db / src/shop/invoicing: 0 shared revisionssrc/shop/db / tests: 0 shared revisionssrc/shop/invoicingsrc/shop/invoicingsrc/shop/invoicing / src/shop: 0 shared revisionssrc/shop/invoicing / src/shop/api: 0 shared revisionssrc/shop/invoicing / src/shop/billing: 86 shared revisions86src/shop/invoicing / src/shop/db: 0 shared revisionssrc/shop/invoicing / src/shop/invoicing: 0 shared revisionssrc/shop/invoicing / tests: 0 shared revisionsteststeststests / src/shop: 77 shared revisions77tests / src/shop/api: 0 shared revisionstests / src/shop/billing: 0 shared revisionstests / src/shop/db: 0 shared revisionstests / src/shop/invoicing: 0 shared revisionstests / tests: 0 shared revisions

Knowledge

Ownership by lines ever added. Bus factor is the fewest authors holding more than half of a directory's knowledge.

DirectoryFilesBus factorTop owners
tests31Alice Nguyen 54%
src/shop/billing21Bob Martin 69%
src/shop/inventory21Dana Whitfield 62%
docs11Erin Walsh 69%
src/shop/invoicing11Bob Martin 71%
.172Alice Nguyen 33%, Bob Martin 20%
src112Alice Nguyen 27%, Bob Martin 25%
src/shop112Alice Nguyen 27%, Bob Martin 25%
src/shop/api22Carol Diaz 42%, Alice Nguyen 35%
src/shop/db22Carol Diaz 43%, Alice Nguyen 35%
src/shop/helpers12Bob Martin 48%, Gustavo Lima 25%

If dana@shop.example leave(s): files where they hold more than half of the knowledge.

FileDeparted shareMain developer
src/shop/inventory/search.py72%Dana Whitfield
src/shop/inventory/products.py53%Dana Whitfield

Team rhythm

Commits by weekday and hour (author-local time)

MonMon 00:00 - 0 commitsMon 01:00 - 0 commitsMon 02:00 - 0 commitsMon 03:00 - 0 commitsMon 04:00 - 0 commitsMon 05:00 - 0 commitsMon 06:00 - 0 commitsMon 07:00 - 0 commitsMon 08:00 - 3 commitsMon 09:00 - 9 commitsMon 10:00 - 14 commitsMon 11:00 - 12 commitsMon 12:00 - 8 commitsMon 13:00 - 17 commitsMon 14:00 - 19 commitsMon 15:00 - 18 commitsMon 16:00 - 13 commitsMon 17:00 - 5 commitsMon 18:00 - 3 commitsMon 19:00 - 4 commitsMon 20:00 - 2 commitsMon 21:00 - 1 commitsMon 22:00 - 2 commitsMon 23:00 - 2 commitsTueTue 00:00 - 1 commitsTue 01:00 - 0 commitsTue 02:00 - 0 commitsTue 03:00 - 0 commitsTue 04:00 - 0 commitsTue 05:00 - 0 commitsTue 06:00 - 0 commitsTue 07:00 - 0 commitsTue 08:00 - 2 commitsTue 09:00 - 6 commitsTue 10:00 - 11 commitsTue 11:00 - 9 commitsTue 12:00 - 15 commitsTue 13:00 - 14 commitsTue 14:00 - 9 commitsTue 15:00 - 9 commitsTue 16:00 - 9 commitsTue 17:00 - 4 commitsTue 18:00 - 0 commitsTue 19:00 - 2 commitsTue 20:00 - 3 commitsTue 21:00 - 3 commitsTue 22:00 - 1 commitsTue 23:00 - 4 commitsWedWed 00:00 - 1 commitsWed 01:00 - 0 commitsWed 02:00 - 0 commitsWed 03:00 - 0 commitsWed 04:00 - 0 commitsWed 05:00 - 0 commitsWed 06:00 - 0 commitsWed 07:00 - 0 commitsWed 08:00 - 2 commitsWed 09:00 - 7 commitsWed 10:00 - 11 commitsWed 11:00 - 8 commitsWed 12:00 - 13 commitsWed 13:00 - 15 commitsWed 14:00 - 19 commitsWed 15:00 - 14 commitsWed 16:00 - 12 commitsWed 17:00 - 6 commitsWed 18:00 - 2 commitsWed 19:00 - 1 commitsWed 20:00 - 4 commitsWed 21:00 - 5 commitsWed 22:00 - 1 commitsWed 23:00 - 0 commitsThuThu 00:00 - 0 commitsThu 01:00 - 0 commitsThu 02:00 - 0 commitsThu 03:00 - 0 commitsThu 04:00 - 0 commitsThu 05:00 - 0 commitsThu 06:00 - 0 commitsThu 07:00 - 0 commitsThu 08:00 - 3 commitsThu 09:00 - 9 commitsThu 10:00 - 7 commitsThu 11:00 - 10 commitsThu 12:00 - 11 commitsThu 13:00 - 13 commitsThu 14:00 - 17 commitsThu 15:00 - 17 commitsThu 16:00 - 13 commitsThu 17:00 - 14 commitsThu 18:00 - 0 commitsThu 19:00 - 3 commitsThu 20:00 - 3 commitsThu 21:00 - 3 commitsThu 22:00 - 3 commitsThu 23:00 - 0 commitsFriFri 00:00 - 0 commitsFri 01:00 - 0 commitsFri 02:00 - 0 commitsFri 03:00 - 0 commitsFri 04:00 - 0 commitsFri 05:00 - 0 commitsFri 06:00 - 0 commitsFri 07:00 - 0 commitsFri 08:00 - 1 commitsFri 09:00 - 8 commitsFri 10:00 - 9 commitsFri 11:00 - 2 commitsFri 12:00 - 7 commitsFri 13:00 - 13 commitsFri 14:00 - 16 commitsFri 15:00 - 16 commitsFri 16:00 - 8 commitsFri 17:00 - 5 commitsFri 18:00 - 2 commitsFri 19:00 - 0 commitsFri 20:00 - 1 commitsFri 21:00 - 3 commitsFri 22:00 - 2 commitsFri 23:00 - 2 commitsSatSat 00:00 - 1 commitsSat 01:00 - 0 commitsSat 02:00 - 0 commitsSat 03:00 - 0 commitsSat 04:00 - 0 commitsSat 05:00 - 0 commitsSat 06:00 - 0 commitsSat 07:00 - 0 commitsSat 08:00 - 0 commitsSat 09:00 - 0 commitsSat 10:00 - 1 commitsSat 11:00 - 0 commitsSat 12:00 - 1 commitsSat 13:00 - 1 commitsSat 14:00 - 2 commitsSat 15:00 - 0 commitsSat 16:00 - 1 commitsSat 17:00 - 1 commitsSat 18:00 - 0 commitsSat 19:00 - 0 commitsSat 20:00 - 0 commitsSat 21:00 - 0 commitsSat 22:00 - 0 commitsSat 23:00 - 0 commitsSunSun 00:00 - 0 commitsSun 01:00 - 0 commitsSun 02:00 - 0 commitsSun 03:00 - 0 commitsSun 04:00 - 0 commitsSun 05:00 - 0 commitsSun 06:00 - 0 commitsSun 07:00 - 0 commitsSun 08:00 - 0 commitsSun 09:00 - 4 commitsSun 10:00 - 2 commitsSun 11:00 - 3 commitsSun 12:00 - 0 commitsSun 13:00 - 2 commitsSun 14:00 - 1 commitsSun 15:00 - 1 commitsSun 16:00 - 0 commitsSun 17:00 - 0 commitsSun 18:00 - 0 commitsSun 19:00 - 0 commitsSun 20:00 - 0 commitsSun 21:00 - 0 commitsSun 22:00 - 0 commitsSun 23:00 - 1 commits0003060912151821

Commits per month

2024-01: 34 commits2024-02: 34 commits2024-03: 20 commits2024-04: 29 commits2024-05: 28 commits2024-06: 19 commits2024-07: 32 commits2024-08: 36 commits2024-09: 25 commits2024-10: 29 commits2024-11: 23 commits2024-12: 27 commits2025-01: 34 commits2025-02: 26 commits2025-03: 23 commits2025-04: 26 commits2025-05: 32 commits2025-06: 23 commits2025-07: 29 commits2025-08: 22 commits2025-09: 23 commits2025-10: 24 commits2024-012024-032024-052024-072024-092024-112025-012025-032025-052025-072025-09

Commit size (lines changed): median 21, 90th percentile 66

Lines changedCommits
1-10114
11-50397
51-20086
201-5001
>5000

First-time contributors in this window

AuthorFirst commit
Alice Nguyen2024-01-08
Bob Martin2024-01-10
Dana Whitfield2024-01-16
Carol Diaz2024-02-14
Erin Walsh2024-03-11
Farid Haddad2024-06-05
Gustavo Lima2024-06-28
Hana Sato2025-02-17

Fix ratio is a message heuristic. Code age is measured from a file's first appearance in the full history.