anthropics / hypercorn
File Churn

File change frequency (churn) shows the distribution of file updates (days with at least one commit).

Overview
File Change Frequency Overall
  • There are 42 files with 4,278 lines of code.
    • 0 files changed more than 100 times (0 lines of code)
    • 0 files changed 51-100 times (0 lines of code)
    • 6 files changed 21-50 times (1,411 lines of code)
    • 23 files changed 6-20 times (2,434 lines of code)
    • 13 files changed 1-5 times (433 lines of code)
0% | 0% | 32% | 56% | 10%
Legend:
101+
51-100
21-50
6-20
1-5

explore: grouped by folders | grouped by update frequency | data
Contributors Count Frequency Overall
  • There are 42 files with 4,278 lines of code.
    • 0 files changed by more than 25 contributors (0 lines of code)
    • 0 files changed by 11-25 contributors (0 lines of code)
    • 2 files changed by 6-10 contributors (578 lines of code)
    • 23 files changed by 2-5 contributors (2,772 lines of code)
    • 17 files changed by 1 contributor (928 lines of code)
0% | 0% | 13% | 64% | 21%
Legend:
26+
11-25
6-10
2-5
1

explore: grouped by folders | grouped by contributors count | data
File Change Frequency per File Extension
py, rst, yaml, svg, toml, cfg, ini, gitignore, txt, bat, json
File Change Frequency per Extension
The number of recorded file updates
101+
51-100
21-50
6-20
1-5
py0% | 0% | 33% | 57% | 9%
yaml0% | 0% | 0% | 0% | 100%
File Change Frequency per Logical Decomposition
primary
primary (file change frequency)
The number of recorded file updates
101+
51-100
21-50
6-20
1-5
src0% | 0% | 33% | 56% | 9%
compliance0% | 0% | 0% | 100% | 0%
ROOT0% | 0% | 0% | 0% | 100%
Most Frequently Changed Files (Top 43)

See data for all files...

File# lines# unitscreatedlast modified# changes
(days)
# contributorsline
churn
first
contributor
latest
contributor
tcp_server.py
in src/hypercorn/asyncio
135 2 2020-01-17 2023-12-26 28 5 +258 / -105 philip.graham.jones@googlem... philip.graham.jones@googlem...
h11.py
in src/hypercorn/protocol
275 8 2020-01-17 2024-01-01 26 6 +370 / -53 philip.graham.jones@googlem... philip.graham.jones@googlem...
config.py
in src/hypercorn
303 22 2020-01-17 2024-01-01 24 6 +448 / -44 philip.graham.jones@googlem... philip.graham.jones@googlem...
run.py
in src/hypercorn/asyncio
190 6 2020-01-17 2024-01-01 23 3 +401 / -160 philip.graham.jones@googlem... philip.graham.jones@googlem...
utils.py
in src/hypercorn
173 15 2020-01-17 2024-01-01 22 5 +396 / -177 philip.graham.jones@googlem... philip.graham.jones@googlem...
ws_stream.py
in src/hypercorn/protocol
335 9 2020-01-17 2024-01-01 21 4 +458 / -79 philip.graham.jones@googlem... philip.graham.jones@googlem...
h2.py
in src/hypercorn/protocol
341 5 2020-01-17 2024-01-01 18 2 +416 / -27 philip.graham.jones@googlem... philip.graham.jones@googlem...
http_stream.py
in src/hypercorn/protocol
186 2 2020-01-17 2023-09-16 15 1 +274 / -68 philip.graham.jones@googlem... philip.graham.jones@googlem...
typing.py
in src/hypercorn
246 8 2020-01-17 2024-01-01 15 3 +385 / -43 philip.graham.jones@googlem... philip.graham.jones@googlem...
run.py
in src/hypercorn
111 3 2020-01-17 2024-01-01 14 5 +217 / -72 philip.graham.jones@googlem... philip.graham.jones@googlem...
tcp_server.py
in src/hypercorn/trio
130 2 2020-01-17 2023-07-08 14 3 +222 / -71 philip.graham.jones@googlem... philip.graham.jones@googlem...
__main__.py
in src/hypercorn
137 2 2020-01-17 2024-01-01 14 5 +321 / -13 philip.graham.jones@googlem... philip.graham.jones@googlem...
run.py
in src/hypercorn/trio
107 1 2020-01-17 2024-01-01 13 3 +178 / -51 philip.graham.jones@googlem... philip.graham.jones@googlem...
logging.py
in src/hypercorn
172 6 2020-01-17 2023-09-16 12 4 +329 / -127 philip.graham.jones@googlem... philip.graham.jones@googlem...
wsgi.py
in src/hypercorn/middleware
33 2 2020-06-03 2022-09-04 11 1 +192 / -143 philip.graham.jones@googlem... philip.graham.jones@googlem...
lifespan.py
in src/hypercorn/trio
83 1 2020-01-17 2023-01-13 11 2 +126 / -29 philip.graham.jones@googlem... konstantin.ignatov+github@s...
lifespan.py
in src/hypercorn/asyncio
86 2 2020-01-17 2023-01-13 10 2 +132 / -26 philip.graham.jones@googlem... konstantin.ignatov+github@s...
server.py
in compliance/h2spec
24 - 2018-05-28 2022-08-28 9 1 +21 / -35 philip.graham.jones@googlem... philip.graham.jones@googlem...
udp_server.py
in src/hypercorn/trio
37 1 2020-01-17 2022-08-28 9 3 +81 / -35 philip.graham.jones@googlem... philip.graham.jones@googlem...
udp_server.py
in src/hypercorn/asyncio
47 3 2020-01-17 2022-08-28 9 3 +109 / -49 philip.graham.jones@googlem... philip.graham.jones@googlem...
__init__.py
in src/hypercorn/protocol
84 1 2020-01-17 2022-08-28 9 1 +142 / -52 philip.graham.jones@googlem... philip.graham.jones@googlem...
dispatcher.py
in src/hypercorn/middleware
88 1 2020-06-03 2022-08-28 9 1 +131 / -23 philip.graham.jones@googlem... philip.graham.jones@googlem...
quic.py
in src/hypercorn/protocol
118 2 2020-01-17 2022-08-28 9 3 +154 / -19 philip.graham.jones@googlem... philip.graham.jones@googlem...
h3.py
in src/hypercorn/protocol
136 1 2020-01-17 2024-01-01 9 2 +160 / -11 philip.graham.jones@googlem... philip.graham.jones@googlem...
server.py
in compliance/autobahn
18 - 2018-05-28 2022-08-28 8 1 +25 / -34 philip.graham.jones@googlem... philip.graham.jones@googlem...
task_group.py
in src/hypercorn/asyncio
61 3 2020-04-15 2023-10-28 8 1 +107 / -33 philip.graham.jones@googlem... philip.graham.jones@googlem...
__init__.py
in src/hypercorn/asyncio
21 - 2020-01-17 2023-11-01 6 2 +64 / -18 philip.graham.jones@googlem... tinchester@gmail.com
__init__.py
in src/hypercorn/trio
26 - 2020-01-17 2023-10-08 6 2 +66 / -14 philip.graham.jones@googlem... philip.graham.jones@googlem...
app_wrappers.py
in src/hypercorn
142 4 2022-08-28 2023-12-28 6 1 +187 / -20 philip.graham.jones@googlem... philip.graham.jones@googlem...
http_to_https.py
in src/hypercorn/middleware
52 2 2020-06-03 2022-08-28 5 1 +83 / -16 philip.graham.jones@googlem... philip.graham.jones@googlem...
task_group.py
in src/hypercorn/trio
66 2 2021-11-26 2023-07-08 4 1 +91 / -13 philip.graham.jones@googlem... philip.graham.jones@googlem...
statsd.py
in src/hypercorn
74 1 2020-01-17 2022-08-25 4 1 +100 / -5 philip.graham.jones@googlem... philip.graham.jones@googlem...
__init__.py
in src/hypercorn
3 - 2020-01-17 2021-11-03 3 1 +7 / -2 philip.graham.jones@googlem... philip.graham.jones@googlem...
statsd.py
in src/hypercorn/trio
11 1 2020-01-17 2021-09-27 3 2 +17 / -1 philip.graham.jones@googlem... ben@anthropic.com
__init__.py
in src/hypercorn/middleware
12 - 2020-06-03 2023-12-28 3 1 +14 / -0 philip.graham.jones@googlem... philip.graham.jones@googlem...
events.py
in src/hypercorn
16 - 2020-01-17 2021-11-22 3 1 +28 / -3 philip.graham.jones@googlem... philip.graham.jones@googlem...
worker_context.py
in src/hypercorn/asyncio
34 4 2021-11-26 2024-01-01 3 2 +52 / -3 philip.graham.jones@googlem... philip.graham.jones@googlem...
worker_context.py
in src/hypercorn/trio
34 4 2021-11-26 2024-01-01 3 2 +53 / -3 philip.graham.jones@googlem... philip.graham.jones@googlem...
events.py
in src/hypercorn/protocol
38 1 2020-01-17 2022-08-26 3 1 +58 / -0 philip.graham.jones@googlem... philip.graham.jones@googlem...
13 - 2022-08-26 2023-07-08 2 1 +17 / -1 philip.graham.jones@googlem... philip.graham.jones@googlem...
statsd.py
in src/hypercorn/asyncio
18 1 2020-01-17 2021-02-07 2 1 +26 / -0 philip.graham.jones@googlem... philip.graham.jones@googlem...
proxy_fix.py
in src/hypercorn/middleware
62 2 2023-12-28 2024-01-01 2 2 +85 / -6 philip.graham.jones@googlem... florian@apolloner.eu
summarise.py
in compliance/autobahn
9 -
Files With Most Churn (Top 43)
Based on the number of lines added and deleted across all commits.

See data for all files...

File# lines# unitscreatedlast modified# changes
(days)
# contributorsline
churn
first
contributor
latest
contributor
utils.py
in src/hypercorn
173 15 2020-01-17 2024-01-01 22 5 +396 / -177 philip.graham.jones@googlem... philip.graham.jones@googlem...
run.py
in src/hypercorn/asyncio
190 6 2020-01-17 2024-01-01 23 3 +401 / -160 philip.graham.jones@googlem... philip.graham.jones@googlem...
ws_stream.py
in src/hypercorn/protocol
335 9 2020-01-17 2024-01-01 21 4 +458 / -79 philip.graham.jones@googlem... philip.graham.jones@googlem...
config.py
in src/hypercorn
303 22 2020-01-17 2024-01-01 24 6 +448 / -44 philip.graham.jones@googlem... philip.graham.jones@googlem...
logging.py
in src/hypercorn
172 6 2020-01-17 2023-09-16 12 4 +329 / -127 philip.graham.jones@googlem... philip.graham.jones@googlem...
h2.py
in src/hypercorn/protocol
341 5 2020-01-17 2024-01-01 18 2 +416 / -27 philip.graham.jones@googlem... philip.graham.jones@googlem...
typing.py
in src/hypercorn
246 8 2020-01-17 2024-01-01 15 3 +385 / -43 philip.graham.jones@googlem... philip.graham.jones@googlem...
h11.py
in src/hypercorn/protocol
275 8 2020-01-17 2024-01-01 26 6 +370 / -53 philip.graham.jones@googlem... philip.graham.jones@googlem...
tcp_server.py
in src/hypercorn/asyncio
135 2 2020-01-17 2023-12-26 28 5 +258 / -105 philip.graham.jones@googlem... philip.graham.jones@googlem...
http_stream.py
in src/hypercorn/protocol
186 2 2020-01-17 2023-09-16 15 1 +274 / -68 philip.graham.jones@googlem... philip.graham.jones@googlem...
wsgi.py
in src/hypercorn/middleware
33 2 2020-06-03 2022-09-04 11 1 +192 / -143 philip.graham.jones@googlem... philip.graham.jones@googlem...
__main__.py
in src/hypercorn
137 2 2020-01-17 2024-01-01 14 5 +321 / -13 philip.graham.jones@googlem... philip.graham.jones@googlem...
tcp_server.py
in src/hypercorn/trio
130 2 2020-01-17 2023-07-08 14 3 +222 / -71 philip.graham.jones@googlem... philip.graham.jones@googlem...
run.py
in src/hypercorn
111 3 2020-01-17 2024-01-01 14 5 +217 / -72 philip.graham.jones@googlem... philip.graham.jones@googlem...
run.py
in src/hypercorn/trio
107 1 2020-01-17 2024-01-01 13 3 +178 / -51 philip.graham.jones@googlem... philip.graham.jones@googlem...
app_wrappers.py
in src/hypercorn
142 4 2022-08-28 2023-12-28 6 1 +187 / -20 philip.graham.jones@googlem... philip.graham.jones@googlem...
__init__.py
in src/hypercorn/protocol
84 1 2020-01-17 2022-08-28 9 1 +142 / -52 philip.graham.jones@googlem... philip.graham.jones@googlem...
quic.py
in src/hypercorn/protocol
118 2 2020-01-17 2022-08-28 9 3 +154 / -19 philip.graham.jones@googlem... philip.graham.jones@googlem...
h3.py
in src/hypercorn/protocol
136 1 2020-01-17 2024-01-01 9 2 +160 / -11 philip.graham.jones@googlem... philip.graham.jones@googlem...
udp_server.py
in src/hypercorn/asyncio
47 3 2020-01-17 2022-08-28 9 3 +109 / -49 philip.graham.jones@googlem... philip.graham.jones@googlem...
lifespan.py
in src/hypercorn/asyncio
86 2 2020-01-17 2023-01-13 10 2 +132 / -26 philip.graham.jones@googlem... konstantin.ignatov+github@s...
lifespan.py
in src/hypercorn/trio
83 1 2020-01-17 2023-01-13 11 2 +126 / -29 philip.graham.jones@googlem... konstantin.ignatov+github@s...
dispatcher.py
in src/hypercorn/middleware
88 1 2020-06-03 2022-08-28 9 1 +131 / -23 philip.graham.jones@googlem... philip.graham.jones@googlem...
task_group.py
in src/hypercorn/asyncio
61 3 2020-04-15 2023-10-28 8 1 +107 / -33 philip.graham.jones@googlem... philip.graham.jones@googlem...
udp_server.py
in src/hypercorn/trio
37 1 2020-01-17 2022-08-28 9 3 +81 / -35 philip.graham.jones@googlem... philip.graham.jones@googlem...
statsd.py
in src/hypercorn
74 1 2020-01-17 2022-08-25 4 1 +100 / -5 philip.graham.jones@googlem... philip.graham.jones@googlem...
task_group.py
in src/hypercorn/trio
66 2 2021-11-26 2023-07-08 4 1 +91 / -13 philip.graham.jones@googlem... philip.graham.jones@googlem...
http_to_https.py
in src/hypercorn/middleware
52 2 2020-06-03 2022-08-28 5 1 +83 / -16 philip.graham.jones@googlem... philip.graham.jones@googlem...
proxy_fix.py
in src/hypercorn/middleware
62 2 2023-12-28 2024-01-01 2 2 +85 / -6 philip.graham.jones@googlem... florian@apolloner.eu
__init__.py
in src/hypercorn/asyncio
21 - 2020-01-17 2023-11-01 6 2 +64 / -18 philip.graham.jones@googlem... tinchester@gmail.com
__init__.py
in src/hypercorn/trio
26 - 2020-01-17 2023-10-08 6 2 +66 / -14 philip.graham.jones@googlem... philip.graham.jones@googlem...
server.py
in compliance/autobahn
18 - 2018-05-28 2022-08-28 8 1 +25 / -34 philip.graham.jones@googlem... philip.graham.jones@googlem...
events.py
in src/hypercorn/protocol
38 1 2020-01-17 2022-08-26 3 1 +58 / -0 philip.graham.jones@googlem... philip.graham.jones@googlem...
server.py
in compliance/h2spec
24 - 2018-05-28 2022-08-28 9 1 +21 / -35 philip.graham.jones@googlem... philip.graham.jones@googlem...
worker_context.py
in src/hypercorn/trio
34 4 2021-11-26 2024-01-01 3 2 +53 / -3 philip.graham.jones@googlem... philip.graham.jones@googlem...
worker_context.py
in src/hypercorn/asyncio
34 4 2021-11-26 2024-01-01 3 2 +52 / -3 philip.graham.jones@googlem... philip.graham.jones@googlem...
events.py
in src/hypercorn
16 - 2020-01-17 2021-11-22 3 1 +28 / -3 philip.graham.jones@googlem... philip.graham.jones@googlem...
statsd.py
in src/hypercorn/asyncio
18 1 2020-01-17 2021-02-07 2 1 +26 / -0 philip.graham.jones@googlem... philip.graham.jones@googlem...
statsd.py
in src/hypercorn/trio
11 1 2020-01-17 2021-09-27 3 2 +17 / -1 philip.graham.jones@googlem... ben@anthropic.com
13 - 2022-08-26 2023-07-08 2 1 +17 / -1 philip.graham.jones@googlem... philip.graham.jones@googlem...
__init__.py
in src/hypercorn/middleware
12 - 2020-06-03 2023-12-28 3 1 +14 / -0 philip.graham.jones@googlem... philip.graham.jones@googlem...
__init__.py
in src/hypercorn
3 - 2020-01-17 2021-11-03 3 1 +7 / -2 philip.graham.jones@googlem... philip.graham.jones@googlem...
summarise.py
in compliance/autobahn
9 -
Files With Most Contributors (Top 43)
Based on the number of unique email addresses found in commits.

See data for all files...

File# lines# unitscreatedlast modified# changes
(days)
# contributorsline
churn
first
contributor
latest
contributor
h11.py
in src/hypercorn/protocol
275 8 2020-01-17 2024-01-01 26 6 +370 / -53 philip.graham.jones@googlem... philip.graham.jones@googlem...
config.py
in src/hypercorn
303 22 2020-01-17 2024-01-01 24 6 +448 / -44 philip.graham.jones@googlem... philip.graham.jones@googlem...
tcp_server.py
in src/hypercorn/asyncio
135 2 2020-01-17 2023-12-26 28 5 +258 / -105 philip.graham.jones@googlem... philip.graham.jones@googlem...
utils.py
in src/hypercorn
173 15 2020-01-17 2024-01-01 22 5 +396 / -177 philip.graham.jones@googlem... philip.graham.jones@googlem...
__main__.py
in src/hypercorn
137 2 2020-01-17 2024-01-01 14 5 +321 / -13 philip.graham.jones@googlem... philip.graham.jones@googlem...
run.py
in src/hypercorn
111 3 2020-01-17 2024-01-01 14 5 +217 / -72 philip.graham.jones@googlem... philip.graham.jones@googlem...
ws_stream.py
in src/hypercorn/protocol
335 9 2020-01-17 2024-01-01 21 4 +458 / -79 philip.graham.jones@googlem... philip.graham.jones@googlem...
logging.py
in src/hypercorn
172 6 2020-01-17 2023-09-16 12 4 +329 / -127 philip.graham.jones@googlem... philip.graham.jones@googlem...
run.py
in src/hypercorn/asyncio
190 6 2020-01-17 2024-01-01 23 3 +401 / -160 philip.graham.jones@googlem... philip.graham.jones@googlem...
typing.py
in src/hypercorn
246 8 2020-01-17 2024-01-01 15 3 +385 / -43 philip.graham.jones@googlem... philip.graham.jones@googlem...
tcp_server.py
in src/hypercorn/trio
130 2 2020-01-17 2023-07-08 14 3 +222 / -71 philip.graham.jones@googlem... philip.graham.jones@googlem...
run.py
in src/hypercorn/trio
107 1 2020-01-17 2024-01-01 13 3 +178 / -51 philip.graham.jones@googlem... philip.graham.jones@googlem...
udp_server.py
in src/hypercorn/trio
37 1 2020-01-17 2022-08-28 9 3 +81 / -35 philip.graham.jones@googlem... philip.graham.jones@googlem...
quic.py
in src/hypercorn/protocol
118 2 2020-01-17 2022-08-28 9 3 +154 / -19 philip.graham.jones@googlem... philip.graham.jones@googlem...
udp_server.py
in src/hypercorn/asyncio
47 3 2020-01-17 2022-08-28 9 3 +109 / -49 philip.graham.jones@googlem... philip.graham.jones@googlem...
h2.py
in src/hypercorn/protocol
341 5 2020-01-17 2024-01-01 18 2 +416 / -27 philip.graham.jones@googlem... philip.graham.jones@googlem...
lifespan.py
in src/hypercorn/trio
83 1 2020-01-17 2023-01-13 11 2 +126 / -29 philip.graham.jones@googlem... konstantin.ignatov+github@s...
lifespan.py
in src/hypercorn/asyncio
86 2 2020-01-17 2023-01-13 10 2 +132 / -26 philip.graham.jones@googlem... konstantin.ignatov+github@s...
h3.py
in src/hypercorn/protocol
136 1 2020-01-17 2024-01-01 9 2 +160 / -11 philip.graham.jones@googlem... philip.graham.jones@googlem...
__init__.py
in src/hypercorn/trio
26 - 2020-01-17 2023-10-08 6 2 +66 / -14 philip.graham.jones@googlem... philip.graham.jones@googlem...
__init__.py
in src/hypercorn/asyncio
21 - 2020-01-17 2023-11-01 6 2 +64 / -18 philip.graham.jones@googlem... tinchester@gmail.com
statsd.py
in src/hypercorn/trio
11 1 2020-01-17 2021-09-27 3 2 +17 / -1 philip.graham.jones@googlem... ben@anthropic.com
worker_context.py
in src/hypercorn/trio
34 4 2021-11-26 2024-01-01 3 2 +53 / -3 philip.graham.jones@googlem... philip.graham.jones@googlem...
worker_context.py
in src/hypercorn/asyncio
34 4 2021-11-26 2024-01-01 3 2 +52 / -3 philip.graham.jones@googlem... philip.graham.jones@googlem...
proxy_fix.py
in src/hypercorn/middleware
62 2 2023-12-28 2024-01-01 2 2 +85 / -6 philip.graham.jones@googlem... florian@apolloner.eu
http_stream.py
in src/hypercorn/protocol
186 2 2020-01-17 2023-09-16 15 1 +274 / -68 philip.graham.jones@googlem... philip.graham.jones@googlem...
wsgi.py
in src/hypercorn/middleware
33 2 2020-06-03 2022-09-04 11 1 +192 / -143 philip.graham.jones@googlem... philip.graham.jones@googlem...
server.py
in compliance/h2spec
24 - 2018-05-28 2022-08-28 9 1 +21 / -35 philip.graham.jones@googlem... philip.graham.jones@googlem...
__init__.py
in src/hypercorn/protocol
84 1 2020-01-17 2022-08-28 9 1 +142 / -52 philip.graham.jones@googlem... philip.graham.jones@googlem...
dispatcher.py
in src/hypercorn/middleware
88 1 2020-06-03 2022-08-28 9 1 +131 / -23 philip.graham.jones@googlem... philip.graham.jones@googlem...
server.py
in compliance/autobahn
18 - 2018-05-28 2022-08-28 8 1 +25 / -34 philip.graham.jones@googlem... philip.graham.jones@googlem...
task_group.py
in src/hypercorn/asyncio
61 3 2020-04-15 2023-10-28 8 1 +107 / -33 philip.graham.jones@googlem... philip.graham.jones@googlem...
app_wrappers.py
in src/hypercorn
142 4 2022-08-28 2023-12-28 6 1 +187 / -20 philip.graham.jones@googlem... philip.graham.jones@googlem...
http_to_https.py
in src/hypercorn/middleware
52 2 2020-06-03 2022-08-28 5 1 +83 / -16 philip.graham.jones@googlem... philip.graham.jones@googlem...
task_group.py
in src/hypercorn/trio
66 2 2021-11-26 2023-07-08 4 1 +91 / -13 philip.graham.jones@googlem... philip.graham.jones@googlem...
statsd.py
in src/hypercorn
74 1 2020-01-17 2022-08-25 4 1 +100 / -5 philip.graham.jones@googlem... philip.graham.jones@googlem...
__init__.py
in src/hypercorn
3 - 2020-01-17 2021-11-03 3 1 +7 / -2 philip.graham.jones@googlem... philip.graham.jones@googlem...
events.py
in src/hypercorn
16 - 2020-01-17 2021-11-22 3 1 +28 / -3 philip.graham.jones@googlem... philip.graham.jones@googlem...
events.py
in src/hypercorn/protocol
38 1 2020-01-17 2022-08-26 3 1 +58 / -0 philip.graham.jones@googlem... philip.graham.jones@googlem...
__init__.py
in src/hypercorn/middleware
12 - 2020-06-03 2023-12-28 3 1 +14 / -0 philip.graham.jones@googlem... philip.graham.jones@googlem...
13 - 2022-08-26 2023-07-08 2 1 +17 / -1 philip.graham.jones@googlem... philip.graham.jones@googlem...
statsd.py
in src/hypercorn/asyncio
18 1 2020-01-17 2021-02-07 2 1 +26 / -0 philip.graham.jones@googlem... philip.graham.jones@googlem...
summarise.py
in compliance/autobahn
9 -
Files With Least Contributors (Top 43)
Based on the number of unique email addresses found in commits.

See data for all files...

File# lines# unitscreatedlast modified# changes
(days)
# contributorsline
churn
first
contributor
latest
contributor
summarise.py
in compliance/autobahn
9 -
http_stream.py
in src/hypercorn/protocol
186 2 2020-01-17 2023-09-16 15 1 +274 / -68 philip.graham.jones@googlem... philip.graham.jones@googlem...
app_wrappers.py
in src/hypercorn
142 4 2022-08-28 2023-12-28 6 1 +187 / -20 philip.graham.jones@googlem... philip.graham.jones@googlem...
dispatcher.py
in src/hypercorn/middleware
88 1 2020-06-03 2022-08-28 9 1 +131 / -23 philip.graham.jones@googlem... philip.graham.jones@googlem...
__init__.py
in src/hypercorn/protocol
84 1 2020-01-17 2022-08-28 9 1 +142 / -52 philip.graham.jones@googlem... philip.graham.jones@googlem...
statsd.py
in src/hypercorn
74 1 2020-01-17 2022-08-25 4 1 +100 / -5 philip.graham.jones@googlem... philip.graham.jones@googlem...
task_group.py
in src/hypercorn/trio
66 2 2021-11-26 2023-07-08 4 1 +91 / -13 philip.graham.jones@googlem... philip.graham.jones@googlem...
task_group.py
in src/hypercorn/asyncio
61 3 2020-04-15 2023-10-28 8 1 +107 / -33 philip.graham.jones@googlem... philip.graham.jones@googlem...
http_to_https.py
in src/hypercorn/middleware
52 2 2020-06-03 2022-08-28 5 1 +83 / -16 philip.graham.jones@googlem... philip.graham.jones@googlem...
events.py
in src/hypercorn/protocol
38 1 2020-01-17 2022-08-26 3 1 +58 / -0 philip.graham.jones@googlem... philip.graham.jones@googlem...
wsgi.py
in src/hypercorn/middleware
33 2 2020-06-03 2022-09-04 11 1 +192 / -143 philip.graham.jones@googlem... philip.graham.jones@googlem...
server.py
in compliance/h2spec
24 - 2018-05-28 2022-08-28 9 1 +21 / -35 philip.graham.jones@googlem... philip.graham.jones@googlem...
server.py
in compliance/autobahn
18 - 2018-05-28 2022-08-28 8 1 +25 / -34 philip.graham.jones@googlem... philip.graham.jones@googlem...
statsd.py
in src/hypercorn/asyncio
18 1 2020-01-17 2021-02-07 2 1 +26 / -0 philip.graham.jones@googlem... philip.graham.jones@googlem...
events.py
in src/hypercorn
16 - 2020-01-17 2021-11-22 3 1 +28 / -3 philip.graham.jones@googlem... philip.graham.jones@googlem...
13 - 2022-08-26 2023-07-08 2 1 +17 / -1 philip.graham.jones@googlem... philip.graham.jones@googlem...
__init__.py
in src/hypercorn/middleware
12 - 2020-06-03 2023-12-28 3 1 +14 / -0 philip.graham.jones@googlem... philip.graham.jones@googlem...
__init__.py
in src/hypercorn
3 - 2020-01-17 2021-11-03 3 1 +7 / -2 philip.graham.jones@googlem... philip.graham.jones@googlem...
h2.py
in src/hypercorn/protocol
341 5 2020-01-17 2024-01-01 18 2 +416 / -27 philip.graham.jones@googlem... philip.graham.jones@googlem...
h3.py
in src/hypercorn/protocol
136 1 2020-01-17 2024-01-01 9 2 +160 / -11 philip.graham.jones@googlem... philip.graham.jones@googlem...
lifespan.py
in src/hypercorn/asyncio
86 2 2020-01-17 2023-01-13 10 2 +132 / -26 philip.graham.jones@googlem... konstantin.ignatov+github@s...
lifespan.py
in src/hypercorn/trio
83 1 2020-01-17 2023-01-13 11 2 +126 / -29 philip.graham.jones@googlem... konstantin.ignatov+github@s...
proxy_fix.py
in src/hypercorn/middleware
62 2 2023-12-28 2024-01-01 2 2 +85 / -6 philip.graham.jones@googlem... florian@apolloner.eu
worker_context.py
in src/hypercorn/trio
34 4 2021-11-26 2024-01-01 3 2 +53 / -3 philip.graham.jones@googlem... philip.graham.jones@googlem...
worker_context.py
in src/hypercorn/asyncio
34 4 2021-11-26 2024-01-01 3 2 +52 / -3 philip.graham.jones@googlem... philip.graham.jones@googlem...
__init__.py
in src/hypercorn/trio
26 - 2020-01-17 2023-10-08 6 2 +66 / -14 philip.graham.jones@googlem... philip.graham.jones@googlem...
__init__.py
in src/hypercorn/asyncio
21 - 2020-01-17 2023-11-01 6 2 +64 / -18 philip.graham.jones@googlem... tinchester@gmail.com
statsd.py
in src/hypercorn/trio
11 1 2020-01-17 2021-09-27 3 2 +17 / -1 philip.graham.jones@googlem... ben@anthropic.com
typing.py
in src/hypercorn
246 8 2020-01-17 2024-01-01 15 3 +385 / -43 philip.graham.jones@googlem... philip.graham.jones@googlem...
run.py
in src/hypercorn/asyncio
190 6 2020-01-17 2024-01-01 23 3 +401 / -160 philip.graham.jones@googlem... philip.graham.jones@googlem...
tcp_server.py
in src/hypercorn/trio
130 2 2020-01-17 2023-07-08 14 3 +222 / -71 philip.graham.jones@googlem... philip.graham.jones@googlem...
quic.py
in src/hypercorn/protocol
118 2 2020-01-17 2022-08-28 9 3 +154 / -19 philip.graham.jones@googlem... philip.graham.jones@googlem...
run.py
in src/hypercorn/trio
107 1 2020-01-17 2024-01-01 13 3 +178 / -51 philip.graham.jones@googlem... philip.graham.jones@googlem...
udp_server.py
in src/hypercorn/asyncio
47 3 2020-01-17 2022-08-28 9 3 +109 / -49 philip.graham.jones@googlem... philip.graham.jones@googlem...
udp_server.py
in src/hypercorn/trio
37 1 2020-01-17 2022-08-28 9 3 +81 / -35 philip.graham.jones@googlem... philip.graham.jones@googlem...
ws_stream.py
in src/hypercorn/protocol
335 9 2020-01-17 2024-01-01 21 4 +458 / -79 philip.graham.jones@googlem... philip.graham.jones@googlem...
logging.py
in src/hypercorn
172 6 2020-01-17 2023-09-16 12 4 +329 / -127 philip.graham.jones@googlem... philip.graham.jones@googlem...
utils.py
in src/hypercorn
173 15 2020-01-17 2024-01-01 22 5 +396 / -177 philip.graham.jones@googlem... philip.graham.jones@googlem...
__main__.py
in src/hypercorn
137 2 2020-01-17 2024-01-01 14 5 +321 / -13 philip.graham.jones@googlem... philip.graham.jones@googlem...
tcp_server.py
in src/hypercorn/asyncio
135 2 2020-01-17 2023-12-26 28 5 +258 / -105 philip.graham.jones@googlem... philip.graham.jones@googlem...
run.py
in src/hypercorn
111 3 2020-01-17 2024-01-01 14 5 +217 / -72 philip.graham.jones@googlem... philip.graham.jones@googlem...
config.py
in src/hypercorn
303 22 2020-01-17 2024-01-01 24 6 +448 / -44 philip.graham.jones@googlem... philip.graham.jones@googlem...
h11.py
in src/hypercorn/protocol
275 8 2020-01-17 2024-01-01 26 6 +370 / -53 philip.graham.jones@googlem... philip.graham.jones@googlem...
Correlations

File Size vs. Number of Changes: 42 points

src/hypercorn/middleware/proxy_fix.py x: 62 lines of code y: 2 # changes src/hypercorn/protocol/ws_stream.py x: 335 lines of code y: 21 # changes src/hypercorn/__main__.py x: 137 lines of code y: 14 # changes src/hypercorn/asyncio/run.py x: 190 lines of code y: 23 # changes src/hypercorn/asyncio/worker_context.py x: 34 lines of code y: 3 # changes src/hypercorn/config.py x: 303 lines of code y: 24 # changes src/hypercorn/protocol/h11.py x: 275 lines of code y: 26 # changes src/hypercorn/protocol/h2.py x: 341 lines of code y: 18 # changes src/hypercorn/protocol/h3.py x: 136 lines of code y: 9 # changes src/hypercorn/run.py x: 111 lines of code y: 14 # changes src/hypercorn/trio/run.py x: 107 lines of code y: 13 # changes src/hypercorn/typing.py x: 246 lines of code y: 15 # changes src/hypercorn/utils.py x: 173 lines of code y: 22 # changes src/hypercorn/app_wrappers.py x: 142 lines of code y: 6 # changes src/hypercorn/middleware/__init__.py x: 12 lines of code y: 3 # changes src/hypercorn/asyncio/tcp_server.py x: 135 lines of code y: 28 # changes src/hypercorn/asyncio/__init__.py x: 21 lines of code y: 6 # changes src/hypercorn/asyncio/task_group.py x: 61 lines of code y: 8 # changes src/hypercorn/trio/__init__.py x: 26 lines of code y: 6 # changes src/hypercorn/logging.py x: 172 lines of code y: 12 # changes src/hypercorn/protocol/http_stream.py x: 186 lines of code y: 15 # changes src/hypercorn/trio/tcp_server.py x: 130 lines of code y: 14 # changes src/hypercorn/trio/task_group.py x: 66 lines of code y: 4 # changes .readthedocs.yaml x: 13 lines of code y: 2 # changes src/hypercorn/asyncio/lifespan.py x: 86 lines of code y: 10 # changes src/hypercorn/trio/lifespan.py x: 83 lines of code y: 11 # changes src/hypercorn/middleware/wsgi.py x: 33 lines of code y: 11 # changes compliance/autobahn/server.py x: 18 lines of code y: 8 # changes compliance/h2spec/server.py x: 24 lines of code y: 9 # changes src/hypercorn/asyncio/udp_server.py x: 47 lines of code y: 9 # changes src/hypercorn/middleware/dispatcher.py x: 88 lines of code y: 9 # changes src/hypercorn/middleware/http_to_https.py x: 52 lines of code y: 5 # changes src/hypercorn/protocol/__init__.py x: 84 lines of code y: 9 # changes src/hypercorn/protocol/quic.py x: 118 lines of code y: 9 # changes src/hypercorn/trio/udp_server.py x: 37 lines of code y: 9 # changes src/hypercorn/protocol/events.py x: 38 lines of code y: 3 # changes src/hypercorn/statsd.py x: 74 lines of code y: 4 # changes src/hypercorn/events.py x: 16 lines of code y: 3 # changes src/hypercorn/__init__.py x: 3 lines of code y: 3 # changes src/hypercorn/trio/statsd.py x: 11 lines of code y: 3 # changes src/hypercorn/asyncio/statsd.py x: 18 lines of code y: 2 # changes
28.0
# changes
  min: 2.0
  average: 10.19
  25th percentile: 3.75
  median: 9.0
  75th percentile: 14.0
  max: 28.0
0 341.0
lines of code
min: 3.0 | average: 101.86 | 25th percentile: 31.25 | median: 78.5 | 75th percentile: 138.25 | max: 341.0

Number of Contributors vs. Number of Changes: 42 points

src/hypercorn/middleware/proxy_fix.py x: 2 # contributors y: 2 # changes src/hypercorn/protocol/ws_stream.py x: 4 # contributors y: 21 # changes src/hypercorn/__main__.py x: 5 # contributors y: 14 # changes src/hypercorn/asyncio/run.py x: 3 # contributors y: 23 # changes src/hypercorn/asyncio/worker_context.py x: 2 # contributors y: 3 # changes src/hypercorn/config.py x: 6 # contributors y: 24 # changes src/hypercorn/protocol/h11.py x: 6 # contributors y: 26 # changes src/hypercorn/protocol/h2.py x: 2 # contributors y: 18 # changes src/hypercorn/protocol/h3.py x: 2 # contributors y: 9 # changes src/hypercorn/trio/run.py x: 3 # contributors y: 13 # changes src/hypercorn/typing.py x: 3 # contributors y: 15 # changes src/hypercorn/utils.py x: 5 # contributors y: 22 # changes src/hypercorn/app_wrappers.py x: 1 # contributors y: 6 # changes src/hypercorn/middleware/__init__.py x: 1 # contributors y: 3 # changes src/hypercorn/asyncio/tcp_server.py x: 5 # contributors y: 28 # changes src/hypercorn/asyncio/__init__.py x: 2 # contributors y: 6 # changes src/hypercorn/asyncio/task_group.py x: 1 # contributors y: 8 # changes src/hypercorn/logging.py x: 4 # contributors y: 12 # changes src/hypercorn/protocol/http_stream.py x: 1 # contributors y: 15 # changes src/hypercorn/trio/tcp_server.py x: 3 # contributors y: 14 # changes src/hypercorn/trio/task_group.py x: 1 # contributors y: 4 # changes .readthedocs.yaml x: 1 # contributors y: 2 # changes src/hypercorn/asyncio/lifespan.py x: 2 # contributors y: 10 # changes src/hypercorn/trio/lifespan.py x: 2 # contributors y: 11 # changes src/hypercorn/middleware/wsgi.py x: 1 # contributors y: 11 # changes compliance/h2spec/server.py x: 1 # contributors y: 9 # changes src/hypercorn/asyncio/udp_server.py x: 3 # contributors y: 9 # changes src/hypercorn/middleware/http_to_https.py x: 1 # contributors y: 5 # changes
28.0
# changes
  min: 2.0
  average: 10.19
  25th percentile: 3.75
  median: 9.0
  75th percentile: 14.0
  max: 28.0
0 6.0
# contributors
min: 1.0 | average: 2.33 | 25th percentile: 1.0 | median: 2.0 | 75th percentile: 3.0 | max: 6.0

Number of Contributors vs. File Size: 42 points

src/hypercorn/middleware/proxy_fix.py x: 2 # contributors y: 62 lines of code src/hypercorn/protocol/ws_stream.py x: 4 # contributors y: 335 lines of code src/hypercorn/__main__.py x: 5 # contributors y: 137 lines of code src/hypercorn/asyncio/run.py x: 3 # contributors y: 190 lines of code src/hypercorn/asyncio/worker_context.py x: 2 # contributors y: 34 lines of code src/hypercorn/config.py x: 6 # contributors y: 303 lines of code src/hypercorn/protocol/h11.py x: 6 # contributors y: 275 lines of code src/hypercorn/protocol/h2.py x: 2 # contributors y: 341 lines of code src/hypercorn/protocol/h3.py x: 2 # contributors y: 136 lines of code src/hypercorn/run.py x: 5 # contributors y: 111 lines of code src/hypercorn/trio/run.py x: 3 # contributors y: 107 lines of code src/hypercorn/typing.py x: 3 # contributors y: 246 lines of code src/hypercorn/utils.py x: 5 # contributors y: 173 lines of code src/hypercorn/app_wrappers.py x: 1 # contributors y: 142 lines of code src/hypercorn/middleware/__init__.py x: 1 # contributors y: 12 lines of code src/hypercorn/asyncio/tcp_server.py x: 5 # contributors y: 135 lines of code src/hypercorn/asyncio/__init__.py x: 2 # contributors y: 21 lines of code src/hypercorn/asyncio/task_group.py x: 1 # contributors y: 61 lines of code src/hypercorn/trio/__init__.py x: 2 # contributors y: 26 lines of code src/hypercorn/logging.py x: 4 # contributors y: 172 lines of code src/hypercorn/protocol/http_stream.py x: 1 # contributors y: 186 lines of code src/hypercorn/trio/tcp_server.py x: 3 # contributors y: 130 lines of code src/hypercorn/trio/task_group.py x: 1 # contributors y: 66 lines of code .readthedocs.yaml x: 1 # contributors y: 13 lines of code src/hypercorn/asyncio/lifespan.py x: 2 # contributors y: 86 lines of code src/hypercorn/trio/lifespan.py x: 2 # contributors y: 83 lines of code src/hypercorn/middleware/wsgi.py x: 1 # contributors y: 33 lines of code compliance/autobahn/server.py x: 1 # contributors y: 18 lines of code compliance/h2spec/server.py x: 1 # contributors y: 24 lines of code src/hypercorn/asyncio/udp_server.py x: 3 # contributors y: 47 lines of code src/hypercorn/middleware/dispatcher.py x: 1 # contributors y: 88 lines of code src/hypercorn/middleware/http_to_https.py x: 1 # contributors y: 52 lines of code src/hypercorn/protocol/__init__.py x: 1 # contributors y: 84 lines of code src/hypercorn/protocol/quic.py x: 3 # contributors y: 118 lines of code src/hypercorn/trio/udp_server.py x: 3 # contributors y: 37 lines of code src/hypercorn/protocol/events.py x: 1 # contributors y: 38 lines of code src/hypercorn/statsd.py x: 1 # contributors y: 74 lines of code src/hypercorn/events.py x: 1 # contributors y: 16 lines of code src/hypercorn/__init__.py x: 1 # contributors y: 3 lines of code src/hypercorn/trio/statsd.py x: 2 # contributors y: 11 lines of code
341.0
lines of code
  min: 3.0
  average: 101.86
  25th percentile: 31.25
  median: 78.5
  75th percentile: 138.25
  max: 341.0
0 6.0
# contributors
min: 1.0 | average: 2.33 | 25th percentile: 1.0 | median: 2.0 | 75th percentile: 3.0 | max: 6.0

Number of Changes vs. Line Churn: 225 points

src/hypercorn/middleware/proxy_fix.py x: 2 # changes y: 91 line churn tests/middleware/test_proxy_fix.py x: 2 # changes y: 81 line churn docs/how_to_guides/configuring.rst x: 8 # changes y: 243 line churn CHANGELOG.rst x: 50 # changes y: 603 line churn pyproject.toml x: 24 # changes y: 183 line churn src/hypercorn/protocol/ws_stream.py x: 21 # changes y: 537 line churn src/hypercorn/__main__.py x: 14 # changes y: 334 line churn src/hypercorn/asyncio/run.py x: 23 # changes y: 561 line churn src/hypercorn/asyncio/worker_context.py x: 3 # changes y: 55 line churn src/hypercorn/config.py x: 24 # changes y: 492 line churn src/hypercorn/protocol/h11.py x: 26 # changes y: 423 line churn src/hypercorn/protocol/h2.py x: 18 # changes y: 443 line churn src/hypercorn/protocol/h3.py x: 9 # changes y: 171 line churn src/hypercorn/run.py x: 14 # changes y: 289 line churn src/hypercorn/trio/run.py x: 13 # changes y: 229 line churn src/hypercorn/typing.py x: 15 # changes y: 428 line churn src/hypercorn/utils.py x: 22 # changes y: 573 line churn tests/asyncio/test_keep_alive.py x: 11 # changes y: 148 line churn tests/asyncio/test_sanity.py x: 16 # changes y: 313 line churn tests/asyncio/test_tcp_server.py x: 13 # changes y: 223 line churn tests/protocol/test_h11.py x: 32 # changes y: 549 line churn tests/protocol/test_h2.py x: 14 # changes y: 259 line churn tests/protocol/test_http_stream.py x: 26 # changes y: 508 line churn tests/protocol/test_ws_stream.py x: 26 # changes y: 747 line churn tests/trio/test_keep_alive.py x: 8 # changes y: 126 line churn tests/trio/test_sanity.py x: 14 # changes y: 267 line churn docs/how_to_guides/wsgi_apps.rst x: 3 # changes y: 91 line churn src/hypercorn/app_wrappers.py x: 6 # changes y: 207 line churn docs/how_to_guides/index.rst x: 5 # changes y: 17 line churn docs/how_to_guides/proxy_fix.rst x: 1 # changes y: 33 line churn src/hypercorn/middleware/__init__.py x: 3 # changes y: 14 line churn tests/test_app_wrappers.py x: 3 # changes y: 275 line churn .gitignore x: 3 # changes y: 7 line churn src/hypercorn/asyncio/tcp_server.py x: 28 # changes y: 363 line churn docs/discussion/dos_mitigations.rst x: 2 # changes y: 182 line churn tests/middleware/test_dispatcher.py x: 8 # changes y: 143 line churn docs/tutorials/installation.rst x: 3 # changes y: 49 line churn README.rst x: 13 # changes y: 120 line churn docs/how_to_guides/api_usage.rst x: 7 # changes y: 151 line churn setup.cfg x: 16 # changes y: 131 line churn src/hypercorn/asyncio/__init__.py x: 6 # changes y: 82 line churn tests/asyncio/test_task_group.py x: 4 # changes y: 79 line churn .github/workflows/ci.yml x: 6 # changes y: 157 line churn .github/workflows/publish.yml x: 2 # changes y: 40 line churn src/hypercorn/trio/__init__.py x: 6 # changes y: 80 line churn tox.ini x: 30 # changes y: 186 line churn docs/conf.py x: 11 # changes y: 71 line churn docs/discussion/flow.rst x: 1 # changes y: 49 line churn docs/discussion/index.rst x: 2 # changes y: 14 line churn src/hypercorn/logging.py x: 12 # changes y: 456 line churn src/hypercorn/protocol/http_stream.py x: 15 # changes y: 342 line churn src/hypercorn/trio/task_group.py x: 4 # changes y: 104 line churn tests/helpers.py x: 21 # changes y: 782 line churn .readthedocs.yaml x: 2 # changes y: 18 line churn src/hypercorn/asyncio/lifespan.py x: 10 # changes y: 158 line churn src/hypercorn/trio/lifespan.py x: 11 # changes y: 155 line churn src/hypercorn/middleware/wsgi.py x: 11 # changes y: 335 line churn compliance/autobahn/server.py x: 8 # changes y: 59 line churn docs/how_to_guides/logging.rst x: 5 # changes y: 97 line churn compliance/h2spec/server.py x: 9 # changes y: 56 line churn docs/tutorials/usage.rst x: 6 # changes y: 187 line churn src/hypercorn/asyncio/udp_server.py x: 9 # changes y: 158 line churn src/hypercorn/middleware/dispatcher.py x: 9 # changes y: 154 line churn src/hypercorn/middleware/http_to_https.py x: 5 # changes y: 99 line churn src/hypercorn/protocol/__init__.py x: 9 # changes y: 194 line churn src/hypercorn/trio/udp_server.py x: 9 # changes y: 116 line churn tests/asyncio/test_lifespan.py x: 11 # changes y: 126 line churn tests/middleware/test_wsgi.py x: 7 # changes y: 368 line churn tests/test_utils.py x: 13 # changes y: 293 line churn tests/trio/test_lifespan.py x: 7 # changes y: 56 line churn .gitlab-ci.yml x: 20 # changes y: 283 line churn docs/index.rst x: 14 # changes y: 113 line churn src/hypercorn/protocol/events.py x: 3 # changes y: 58 line churn docs/discussion/http2.rst x: 2 # changes y: 51 line churn src/hypercorn/asyncio/context.py x: 4 # changes y: 170 line churn src/hypercorn/trio/context.py x: 4 # changes y: 186 line churn tests/asyncio/test_context.py x: 4 # changes y: 138 line churn docs/discussion/closing.rst x: 3 # changes y: 66 line churn src/hypercorn/events.py x: 3 # changes y: 31 line churn tests/asyncio/helpers.py x: 13 # changes y: 415 line churn MANIFEST.in x: 7 # changes y: 26 line churn setup.py x: 33 # changes y: 234 line churn src/hypercorn/__about__.py x: 14 # changes y: 50 line churn src/hypercorn/trio/statsd.py x: 3 # changes y: 18 line churn src/hypercorn/asyncio/statsd.py x: 2 # changes y: 26 line churn tests/assets/config.py x: 4 # changes y: 9 line churn tests/assets/config_ssl.py x: 4 # changes y: 16 line churn tests/conftest.py x: 3 # changes y: 35 line churn tests/middleware/test_http_to_https.py x: 4 # changes y: 184 line churn tests/test___main__.py x: 14 # changes y: 169 line churn tests/test_config.py x: 16 # changes y: 242 line churn tests/test_logging.py x: 14 # changes y: 263 line churn src/hypercorn/trio/spawn_app.py x: 3 # changes y: 84 line churn src/hypercorn/middleware.py x: 3 # changes y: 154 line churn tests/test_middleware.py x: 8 # changes y: 342 line churn docs/_templates/sidebar.html x: 2 # changes y: 6 line churn docs/api.rst x: 1 # changes y: 8 line churn docs/backpressure.rst x: 3 # changes y: 144 line churn docs/binds.rst x: 3 # changes y: 106 line churn docs/closing.rst x: 2 # changes y: 96 line churn docs/design_choices.rst x: 3 # changes y: 26 line churn docs/discussion/backpressure.rst x: 1 # changes y: 17 line churn docs/discussion/workers.rst x: 1 # changes y: 28 line churn docs/dispatch_apps.rst x: 2 # changes y: 76 line churn docs/dos_mitigations.rst x: 4 # changes y: 342 line churn docs/how_to_guides/binds.rst x: 1 # changes y: 53 line churn docs/how_to_guides/dispatch_apps.rst x: 1 # changes y: 38 line churn docs/http2.rst x: 3 # changes y: 96 line churn docs/http_https_redirect.rst x: 3 # changes y: 118 line churn docs/logging.rst x: 5 # changes y: 128 line churn docs/quickstart.rst x: 6 # changes y: 60 line churn docs/statsd.rst x: 2 # changes y: 68 line churn docs/tutorials/quickstart.rst x: 1 # changes y: 41 line churn docs/usage.rst x: 11 # changes y: 192 line churn docs/workers.rst x: 2 # changes y: 56 line churn hypercorn/__about__.py x: 29 # changes y: 81 line churn hypercorn/__main__.py x: 33 # changes y: 837 line churn hypercorn/asyncio/__init__.py x: 6 # changes y: 90 line churn hypercorn/asyncio/lifespan.py x: 15 # changes y: 252 line churn hypercorn/asyncio/run.py x: 35 # changes y: 1466 line churn hypercorn/asyncio/spawn_app.py x: 2 # changes y: 62 line churn hypercorn/asyncio/tcp_server.py x: 4 # changes y: 254 line churn hypercorn/config.py x: 47 # changes y: 1139 line churn hypercorn/logging.py x: 15 # changes y: 487 line churn hypercorn/middleware.py x: 5 # changes y: 152 line churn hypercorn/protocol/h11.py x: 10 # changes y: 606 line churn hypercorn/protocol/h2.py x: 14 # changes y: 840 line churn hypercorn/protocol/h3.py x: 6 # changes y: 294 line churn hypercorn/protocol/http_stream.py x: 12 # changes y: 354 line churn hypercorn/protocol/ws_stream.py x: 11 # changes y: 690 line churn hypercorn/py.typed x: 2 # changes y: 2 line churn hypercorn/run.py x: 24 # changes y: 774 line churn hypercorn/statsd.py x: 3 # changes y: 182 line churn hypercorn/trio/__init__.py x: 9 # changes y: 102 line churn hypercorn/trio/lifespan.py x: 12 # changes y: 214 line churn hypercorn/trio/run.py x: 30 # changes y: 554 line churn hypercorn/trio/tcp_server.py x: 4 # changes y: 298 line churn hypercorn/typing.py x: 10 # changes y: 219 line churn hypercorn/utils.py x: 22 # changes y: 610 line churn src/hypercorn/py.typed x: 1 # changes y: 1 line churn hypercorn/asyncio/server.py x: 10 # changes y: 310 line churn hypercorn/trio/server.py x: 11 # changes y: 398 line churn tests/asyncio/test_server.py x: 2 # changes y: 158 line churn hypercorn/asgi/h11.py x: 12 # changes y: 518 line churn hypercorn/asgi/h2.py x: 11 # changes y: 1026 line churn hypercorn/asgi/run.py x: 4 # changes y: 40 line churn hypercorn/asgi/utils.py x: 4 # changes y: 144 line churn hypercorn/asgi/wsproto.py x: 12 # changes y: 792 line churn hypercorn/asyncio/base.py x: 7 # changes y: 284 line churn hypercorn/asyncio/h11.py x: 16 # changes y: 714 line churn hypercorn/asyncio/h2.py x: 18 # changes y: 1358 line churn hypercorn/asyncio/wsproto.py x: 13 # changes y: 688 line churn hypercorn/trio/base.py x: 6 # changes y: 108 line churn hypercorn/trio/h11.py x: 12 # changes y: 590 line churn hypercorn/trio/h2.py x: 18 # changes y: 1002 line churn hypercorn/trio/wsproto.py x: 11 # changes y: 430 line churn tests/asgi/test_h11.py x: 7 # changes y: 438 line churn tests/asgi/test_h2.py x: 8 # changes y: 1016 line churn tests/asgi/test_utils.py x: 3 # changes y: 110 line churn tests/asgi/test_wsproto.py x: 10 # changes y: 874 line churn tests/asyncio/test_base.py x: 6 # changes y: 136 line churn tests/asyncio/test_h11.py x: 12 # changes y: 636 line churn tests/asyncio/test_h2.py x: 9 # changes y: 808 line churn tests/asyncio/test_run.py x: 6 # changes y: 198 line churn tests/asyncio/test_wsproto.py x: 9 # changes y: 452 line churn tests/trio/test_h11.py x: 10 # changes y: 450 line churn tests/trio/test_h2.py x: 7 # changes y: 594 line churn tests/trio/test_run.py x: 4 # changes y: 156 line churn hypercorn/common/h11.py x: 5 # changes y: 400 line churn hypercorn/common/h2.py x: 3 # changes y: 596 line churn hypercorn/common/run.py x: 2 # changes y: 30 line churn hypercorn/common/wsproto.py x: 5 # changes y: 544 line churn tests/common/test_h11.py x: 4 # changes y: 368 line churn tests/common/test_h2.py x: 2 # changes y: 410 line churn tests/common/test_wsproto.py x: 4 # changes y: 574 line churn tests/asyncio/tahelpers.py x: 2 # changes y: 322 line churn hypercorn/base.py x: 5 # changes y: 206 line churn hypercorn/h11.py x: 9 # changes y: 496 line churn hypercorn/h2.py x: 11 # changes y: 659 line churn hypercorn/websocket.py x: 10 # changes y: 372 line churn tests/test_h11.py x: 3 # changes y: 290 line churn tests/test_h2.py x: 4 # changes y: 362 line churn tests/test_websocket.py x: 3 # changes y: 217 line churn hypercorn/http.py x: 1 # changes y: 177 line churn tests/test_http.py x: 1 # changes y: 89 line churn
1466.0
line churn
  min: 1.0
  average: 244.32
  25th percentile: 56.0
  median: 155.0
  75th percentile: 342.0
  max: 1466.0
0 50.0
# changes
min: 1.0 | average: 8.35 | 25th percentile: 3.0 | median: 5.0 | 75th percentile: 11.5 | max: 50.0

Number of Contributors vs. Line Churn: 42 points

src/hypercorn/middleware/proxy_fix.py x: 2 # contributors y: 91 line churn src/hypercorn/protocol/ws_stream.py x: 4 # contributors y: 537 line churn src/hypercorn/__main__.py x: 5 # contributors y: 334 line churn src/hypercorn/asyncio/run.py x: 3 # contributors y: 561 line churn src/hypercorn/asyncio/worker_context.py x: 2 # contributors y: 55 line churn src/hypercorn/config.py x: 6 # contributors y: 492 line churn src/hypercorn/protocol/h11.py x: 6 # contributors y: 423 line churn src/hypercorn/protocol/h2.py x: 2 # contributors y: 443 line churn src/hypercorn/protocol/h3.py x: 2 # contributors y: 171 line churn src/hypercorn/run.py x: 5 # contributors y: 289 line churn src/hypercorn/trio/run.py x: 3 # contributors y: 229 line churn src/hypercorn/typing.py x: 3 # contributors y: 428 line churn src/hypercorn/utils.py x: 5 # contributors y: 573 line churn src/hypercorn/app_wrappers.py x: 1 # contributors y: 207 line churn src/hypercorn/middleware/__init__.py x: 1 # contributors y: 14 line churn src/hypercorn/asyncio/tcp_server.py x: 5 # contributors y: 363 line churn src/hypercorn/asyncio/__init__.py x: 2 # contributors y: 82 line churn src/hypercorn/asyncio/task_group.py x: 1 # contributors y: 140 line churn src/hypercorn/trio/__init__.py x: 2 # contributors y: 80 line churn src/hypercorn/logging.py x: 4 # contributors y: 456 line churn src/hypercorn/protocol/http_stream.py x: 1 # contributors y: 342 line churn src/hypercorn/trio/tcp_server.py x: 3 # contributors y: 293 line churn src/hypercorn/trio/task_group.py x: 1 # contributors y: 104 line churn .readthedocs.yaml x: 1 # contributors y: 18 line churn src/hypercorn/asyncio/lifespan.py x: 2 # contributors y: 158 line churn src/hypercorn/trio/lifespan.py x: 2 # contributors y: 155 line churn src/hypercorn/middleware/wsgi.py x: 1 # contributors y: 335 line churn compliance/autobahn/server.py x: 1 # contributors y: 59 line churn compliance/h2spec/server.py x: 1 # contributors y: 56 line churn src/hypercorn/asyncio/udp_server.py x: 3 # contributors y: 158 line churn src/hypercorn/middleware/dispatcher.py x: 1 # contributors y: 154 line churn src/hypercorn/middleware/http_to_https.py x: 1 # contributors y: 99 line churn src/hypercorn/protocol/__init__.py x: 1 # contributors y: 194 line churn src/hypercorn/protocol/quic.py x: 3 # contributors y: 173 line churn src/hypercorn/trio/udp_server.py x: 3 # contributors y: 116 line churn src/hypercorn/protocol/events.py x: 1 # contributors y: 58 line churn src/hypercorn/events.py x: 1 # contributors y: 31 line churn src/hypercorn/__init__.py x: 1 # contributors y: 9 line churn src/hypercorn/trio/statsd.py x: 2 # contributors y: 18 line churn src/hypercorn/asyncio/statsd.py x: 1 # contributors y: 26 line churn
573.0
line churn
  min: 9.0
  average: 206.79
  25th percentile: 58.75
  median: 156.5
  75th percentile: 336.75
  max: 573.0
0 6.0
# contributors
min: 1.0 | average: 2.33 | 25th percentile: 1.0 | median: 2.0 | 75th percentile: 3.0 | max: 6.0

File Size vs. Line Churn: 42 points

src/hypercorn/middleware/proxy_fix.py x: 62 lines of code y: 91 line churn src/hypercorn/protocol/ws_stream.py x: 335 lines of code y: 537 line churn src/hypercorn/__main__.py x: 137 lines of code y: 334 line churn src/hypercorn/asyncio/run.py x: 190 lines of code y: 561 line churn src/hypercorn/asyncio/worker_context.py x: 34 lines of code y: 55 line churn src/hypercorn/config.py x: 303 lines of code y: 492 line churn src/hypercorn/protocol/h11.py x: 275 lines of code y: 423 line churn src/hypercorn/protocol/h2.py x: 341 lines of code y: 443 line churn src/hypercorn/protocol/h3.py x: 136 lines of code y: 171 line churn src/hypercorn/run.py x: 111 lines of code y: 289 line churn src/hypercorn/trio/run.py x: 107 lines of code y: 229 line churn src/hypercorn/typing.py x: 246 lines of code y: 428 line churn src/hypercorn/utils.py x: 173 lines of code y: 573 line churn src/hypercorn/app_wrappers.py x: 142 lines of code y: 207 line churn src/hypercorn/middleware/__init__.py x: 12 lines of code y: 14 line churn src/hypercorn/asyncio/tcp_server.py x: 135 lines of code y: 363 line churn src/hypercorn/asyncio/__init__.py x: 21 lines of code y: 82 line churn src/hypercorn/asyncio/task_group.py x: 61 lines of code y: 140 line churn src/hypercorn/trio/__init__.py x: 26 lines of code y: 80 line churn src/hypercorn/logging.py x: 172 lines of code y: 456 line churn src/hypercorn/protocol/http_stream.py x: 186 lines of code y: 342 line churn src/hypercorn/trio/tcp_server.py x: 130 lines of code y: 293 line churn src/hypercorn/trio/task_group.py x: 66 lines of code y: 104 line churn .readthedocs.yaml x: 13 lines of code y: 18 line churn src/hypercorn/asyncio/lifespan.py x: 86 lines of code y: 158 line churn src/hypercorn/trio/lifespan.py x: 83 lines of code y: 155 line churn src/hypercorn/middleware/wsgi.py x: 33 lines of code y: 335 line churn compliance/autobahn/server.py x: 18 lines of code y: 59 line churn compliance/h2spec/server.py x: 24 lines of code y: 56 line churn src/hypercorn/asyncio/udp_server.py x: 47 lines of code y: 158 line churn src/hypercorn/middleware/dispatcher.py x: 88 lines of code y: 154 line churn src/hypercorn/middleware/http_to_https.py x: 52 lines of code y: 99 line churn src/hypercorn/protocol/__init__.py x: 84 lines of code y: 194 line churn src/hypercorn/protocol/quic.py x: 118 lines of code y: 173 line churn src/hypercorn/trio/udp_server.py x: 37 lines of code y: 116 line churn src/hypercorn/protocol/events.py x: 38 lines of code y: 58 line churn src/hypercorn/statsd.py x: 74 lines of code y: 105 line churn src/hypercorn/events.py x: 16 lines of code y: 31 line churn src/hypercorn/__init__.py x: 3 lines of code y: 9 line churn src/hypercorn/trio/statsd.py x: 11 lines of code y: 18 line churn src/hypercorn/asyncio/statsd.py x: 18 lines of code y: 26 line churn
573.0
line churn
  min: 9.0
  average: 206.79
  25th percentile: 58.75
  median: 156.5
  75th percentile: 336.75
  max: 573.0
0 341.0
lines of code
min: 3.0 | average: 101.86 | 25th percentile: 31.25 | median: 78.5 | 75th percentile: 138.25 | max: 341.0