anthropics / httpcore
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 32 files with 5,246 lines of code.
    • 0 files changed more than 100 times (0 lines of code)
    • 3 files changed 51-100 times (663 lines of code)
    • 10 files changed 21-50 times (2,673 lines of code)
    • 12 files changed 6-20 times (1,610 lines of code)
    • 7 files changed 1-5 times (300 lines of code)
0% | 12% | 50% | 30% | 5%
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 32 files with 5,246 lines of code.
    • 0 files changed by more than 25 contributors (0 lines of code)
    • 9 files changed by 11-25 contributors (2,447 lines of code)
    • 12 files changed by 6-10 contributors (2,218 lines of code)
    • 7 files changed by 2-5 contributors (438 lines of code)
    • 4 files changed by 1 contributor (143 lines of code)
0% | 46% | 42% | 8% | 2%
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, md, yaml, txt, gitignore, toml
File Change Frequency per Extension
The number of recorded file updates
101+
51-100
21-50
6-20
1-5
py0% | 12% | 50% | 30% | 5%
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
httpcore0% | 12% | 51% | 31% | 4%
scripts0% | 0% | 0% | 0% | 100%
Most Frequently Changed Files (Top 32)

See data for all files...

File# lines# unitscreatedlast modified# changes
(days)
# contributorsline
churn
first
contributor
latest
contributor
__init__.py
in httpcore
119 2 2020-01-30 2025-04-24 63 13 +278 / -137 tom@tomchristie.com tom@tomchristie.com
connection_pool.py
in httpcore/_async
272 10 2020-02-06 2026-06-08 62 19 +1402 / -984 tom@tomchristie.com md@anthropic.com
connection_pool.py
in httpcore/_sync
272 18 2020-02-06 2026-06-08 59 17 +1392 / -972 tom@tomchristie.com md@anthropic.com
http2.py
in httpcore/_async
436 11 2020-02-24 2026-06-08 49 16 +1438 / -718 tom@tomchristie.com md@anthropic.com
http2.py
in httpcore/_sync
436 31 2020-02-24 2026-06-08 45 14 +1426 / -706 tom@tomchristie.com md@anthropic.com
http11.py
in httpcore/_async
276 11 2020-02-06 2024-10-16 43 10 +798 / -419 tom@tomchristie.com 33086594+zrquan@users.norep...
http11.py
in httpcore/_sync
276 28 2020-02-06 2024-10-16 42 9 +793 / -414 tom@tomchristie.com 33086594+zrquan@users.norep...
http_proxy.py
in httpcore/_async
277 19 2020-02-10 2024-11-15 41 11 +890 / -523 tom@tomchristie.com tom@tomchristie.com
http_proxy.py
in httpcore/_sync
277 23 2020-02-10 2024-11-15 40 11 +886 / -519 tom@tomchristie.com tom@tomchristie.com
connection.py
in httpcore/_sync
179 14 2020-02-25 2024-10-16 37 11 +612 / -390 tom@tomchristie.com 33086594+zrquan@users.norep...
connection.py
in httpcore/_async
179 9 2020-02-25 2024-10-16 37 11 +614 / -392 tom@tomchristie.com 33086594+zrquan@users.norep...
trio.py
in httpcore/_backends
139 3 2020-02-06 2024-10-16 23 7 +425 / -266 tom@tomchristie.com 33086594+zrquan@users.norep...
sync.py
in httpcore/_backends
198 15 2020-02-06 2024-10-16 23 7 +475 / -234 tom@tomchristie.com 33086594+zrquan@users.norep...
anyio.py
in httpcore/_backends
130 2 2020-09-16 2024-10-16 18 7 +438 / -292 alex.gronholm@nextday.fi 33086594+zrquan@users.norep...
base.py
in httpcore/_backends
79 9 2020-02-06 2024-10-10 17 7 +278 / -177 tom@tomchristie.com 33086594+zrquan@users.norep...
auto.py
in httpcore/_backends
43 - 2020-02-06 2024-10-16 16 6 +145 / -93 tom@tomchristie.com 33086594+zrquan@users.norep...
199 27 2021-11-11 2025-03-31 15 7 +470 / -152 tom@tomchristie.com tom@tomchristie.com
_models.py
in httpcore
326 25 2021-11-11 2024-11-15 14 8 +612 / -96 tom@tomchristie.com tom@tomchristie.com
socks_proxy.py
in httpcore/_async
255 10 2022-01-14 2024-11-15 12 7 +396 / -55 tom@tomchristie.com tom@tomchristie.com
socks_proxy.py
in httpcore/_sync
255 13 2022-01-14 2024-11-15 11 6 +394 / -53 tom@tomchristie.com tom@tomchristie.com
_utils.py
in httpcore
16 1 2020-05-11 2024-10-10 10 5 +117 / -80 yeraydiazdiaz@gmail.com 33086594+zrquan@users.norep...
_exceptions.py
in httpcore
42 1 2020-02-06 2024-10-16 10 6 +106 / -25 tom@tomchristie.com 33086594+zrquan@users.norep...
_trace.py
in httpcore
95 4 2021-11-11 2024-10-16 8 5 +158 / -51 tom@tomchristie.com 33086594+zrquan@users.norep...
interfaces.py
in httpcore/_sync
85 10 2021-11-11 2024-10-16 6 5 +164 / -27 tom@tomchristie.com 33086594+zrquan@users.norep...
interfaces.py
in httpcore/_async
85 6 2021-11-11 2024-10-16 6 5 +164 / -27 tom@tomchristie.com 33086594+zrquan@users.norep...
_api.py
in httpcore
39 2 2021-11-11 2024-10-16 5 4 +121 / -27 tom@tomchristie.com 33086594+zrquan@users.norep...
__init__.py
in httpcore/_sync
32 2 2020-01-30 2022-01-14 4 1 +40 / -1 tom@tomchristie.com tom@tomchristie.com
__init__.py
in httpcore/_async
32 2 2020-01-30 2022-01-14 4 1 +40 / -1 tom@tomchristie.com tom@tomchristie.com
__init__.py
in httpcore/_backends
1 - 2020-02-06 2023-06-07 3 1 - tom@tomchristie.com tom@tomchristie.com
_ssl.py
in httpcore
6 1 2021-11-11 2022-11-17 3 2 +11 / -2 tom@tomchristie.com michael@michaeloliver.dev
mock.py
in httpcore/_backends
112 17 2023-06-07 2024-10-16 3 2 +176 / -33 tom@tomchristie.com 33086594+zrquan@users.norep...
unasync.py
in scripts
78 5 2024-02-23 2024-02-23 1 1 +94 / -0 132141463+t-256@users.norep... 132141463+t-256@users.norep...
Files With Most Churn (Top 32)
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
connection_pool.py
in httpcore/_async
272 10 2020-02-06 2026-06-08 62 19 +1402 / -984 tom@tomchristie.com md@anthropic.com
connection_pool.py
in httpcore/_sync
272 18 2020-02-06 2026-06-08 59 17 +1392 / -972 tom@tomchristie.com md@anthropic.com
http2.py
in httpcore/_async
436 11 2020-02-24 2026-06-08 49 16 +1438 / -718 tom@tomchristie.com md@anthropic.com
http2.py
in httpcore/_sync
436 31 2020-02-24 2026-06-08 45 14 +1426 / -706 tom@tomchristie.com md@anthropic.com
http_proxy.py
in httpcore/_async
277 19 2020-02-10 2024-11-15 41 11 +890 / -523 tom@tomchristie.com tom@tomchristie.com
http_proxy.py
in httpcore/_sync
277 23 2020-02-10 2024-11-15 40 11 +886 / -519 tom@tomchristie.com tom@tomchristie.com
http11.py
in httpcore/_async
276 11 2020-02-06 2024-10-16 43 10 +798 / -419 tom@tomchristie.com 33086594+zrquan@users.norep...
http11.py
in httpcore/_sync
276 28 2020-02-06 2024-10-16 42 9 +793 / -414 tom@tomchristie.com 33086594+zrquan@users.norep...
connection.py
in httpcore/_async
179 9 2020-02-25 2024-10-16 37 11 +614 / -392 tom@tomchristie.com 33086594+zrquan@users.norep...
connection.py
in httpcore/_sync
179 14 2020-02-25 2024-10-16 37 11 +612 / -390 tom@tomchristie.com 33086594+zrquan@users.norep...
anyio.py
in httpcore/_backends
130 2 2020-09-16 2024-10-16 18 7 +438 / -292 alex.gronholm@nextday.fi 33086594+zrquan@users.norep...
sync.py
in httpcore/_backends
198 15 2020-02-06 2024-10-16 23 7 +475 / -234 tom@tomchristie.com 33086594+zrquan@users.norep...
_models.py
in httpcore
326 25 2021-11-11 2024-11-15 14 8 +612 / -96 tom@tomchristie.com tom@tomchristie.com
trio.py
in httpcore/_backends
139 3 2020-02-06 2024-10-16 23 7 +425 / -266 tom@tomchristie.com 33086594+zrquan@users.norep...
199 27 2021-11-11 2025-03-31 15 7 +470 / -152 tom@tomchristie.com tom@tomchristie.com
base.py
in httpcore/_backends
79 9 2020-02-06 2024-10-10 17 7 +278 / -177 tom@tomchristie.com 33086594+zrquan@users.norep...
socks_proxy.py
in httpcore/_async
255 10 2022-01-14 2024-11-15 12 7 +396 / -55 tom@tomchristie.com tom@tomchristie.com
socks_proxy.py
in httpcore/_sync
255 13 2022-01-14 2024-11-15 11 6 +394 / -53 tom@tomchristie.com tom@tomchristie.com
__init__.py
in httpcore
119 2 2020-01-30 2025-04-24 63 13 +278 / -137 tom@tomchristie.com tom@tomchristie.com
auto.py
in httpcore/_backends
43 - 2020-02-06 2024-10-16 16 6 +145 / -93 tom@tomchristie.com 33086594+zrquan@users.norep...
_trace.py
in httpcore
95 4 2021-11-11 2024-10-16 8 5 +158 / -51 tom@tomchristie.com 33086594+zrquan@users.norep...
mock.py
in httpcore/_backends
112 17 2023-06-07 2024-10-16 3 2 +176 / -33 tom@tomchristie.com 33086594+zrquan@users.norep...
_utils.py
in httpcore
16 1 2020-05-11 2024-10-10 10 5 +117 / -80 yeraydiazdiaz@gmail.com 33086594+zrquan@users.norep...
interfaces.py
in httpcore/_sync
85 10 2021-11-11 2024-10-16 6 5 +164 / -27 tom@tomchristie.com 33086594+zrquan@users.norep...
interfaces.py
in httpcore/_async
85 6 2021-11-11 2024-10-16 6 5 +164 / -27 tom@tomchristie.com 33086594+zrquan@users.norep...
_api.py
in httpcore
39 2 2021-11-11 2024-10-16 5 4 +121 / -27 tom@tomchristie.com 33086594+zrquan@users.norep...
_exceptions.py
in httpcore
42 1 2020-02-06 2024-10-16 10 6 +106 / -25 tom@tomchristie.com 33086594+zrquan@users.norep...
unasync.py
in scripts
78 5 2024-02-23 2024-02-23 1 1 +94 / -0 132141463+t-256@users.norep... 132141463+t-256@users.norep...
__init__.py
in httpcore/_sync
32 2 2020-01-30 2022-01-14 4 1 +40 / -1 tom@tomchristie.com tom@tomchristie.com
__init__.py
in httpcore/_async
32 2 2020-01-30 2022-01-14 4 1 +40 / -1 tom@tomchristie.com tom@tomchristie.com
_ssl.py
in httpcore
6 1 2021-11-11 2022-11-17 3 2 +11 / -2 tom@tomchristie.com michael@michaeloliver.dev
__init__.py
in httpcore/_backends
1 - 2020-02-06 2023-06-07 3 1 - tom@tomchristie.com tom@tomchristie.com
Files With Most Contributors (Top 32)
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
connection_pool.py
in httpcore/_async
272 10 2020-02-06 2026-06-08 62 19 +1402 / -984 tom@tomchristie.com md@anthropic.com
connection_pool.py
in httpcore/_sync
272 18 2020-02-06 2026-06-08 59 17 +1392 / -972 tom@tomchristie.com md@anthropic.com
http2.py
in httpcore/_async
436 11 2020-02-24 2026-06-08 49 16 +1438 / -718 tom@tomchristie.com md@anthropic.com
http2.py
in httpcore/_sync
436 31 2020-02-24 2026-06-08 45 14 +1426 / -706 tom@tomchristie.com md@anthropic.com
__init__.py
in httpcore
119 2 2020-01-30 2025-04-24 63 13 +278 / -137 tom@tomchristie.com tom@tomchristie.com
http_proxy.py
in httpcore/_async
277 19 2020-02-10 2024-11-15 41 11 +890 / -523 tom@tomchristie.com tom@tomchristie.com
http_proxy.py
in httpcore/_sync
277 23 2020-02-10 2024-11-15 40 11 +886 / -519 tom@tomchristie.com tom@tomchristie.com
connection.py
in httpcore/_async
179 9 2020-02-25 2024-10-16 37 11 +614 / -392 tom@tomchristie.com 33086594+zrquan@users.norep...
connection.py
in httpcore/_sync
179 14 2020-02-25 2024-10-16 37 11 +612 / -390 tom@tomchristie.com 33086594+zrquan@users.norep...
http11.py
in httpcore/_async
276 11 2020-02-06 2024-10-16 43 10 +798 / -419 tom@tomchristie.com 33086594+zrquan@users.norep...
http11.py
in httpcore/_sync
276 28 2020-02-06 2024-10-16 42 9 +793 / -414 tom@tomchristie.com 33086594+zrquan@users.norep...
_models.py
in httpcore
326 25 2021-11-11 2024-11-15 14 8 +612 / -96 tom@tomchristie.com tom@tomchristie.com
sync.py
in httpcore/_backends
198 15 2020-02-06 2024-10-16 23 7 +475 / -234 tom@tomchristie.com 33086594+zrquan@users.norep...
trio.py
in httpcore/_backends
139 3 2020-02-06 2024-10-16 23 7 +425 / -266 tom@tomchristie.com 33086594+zrquan@users.norep...
anyio.py
in httpcore/_backends
130 2 2020-09-16 2024-10-16 18 7 +438 / -292 alex.gronholm@nextday.fi 33086594+zrquan@users.norep...
base.py
in httpcore/_backends
79 9 2020-02-06 2024-10-10 17 7 +278 / -177 tom@tomchristie.com 33086594+zrquan@users.norep...
199 27 2021-11-11 2025-03-31 15 7 +470 / -152 tom@tomchristie.com tom@tomchristie.com
socks_proxy.py
in httpcore/_async
255 10 2022-01-14 2024-11-15 12 7 +396 / -55 tom@tomchristie.com tom@tomchristie.com
auto.py
in httpcore/_backends
43 - 2020-02-06 2024-10-16 16 6 +145 / -93 tom@tomchristie.com 33086594+zrquan@users.norep...
socks_proxy.py
in httpcore/_sync
255 13 2022-01-14 2024-11-15 11 6 +394 / -53 tom@tomchristie.com tom@tomchristie.com
_exceptions.py
in httpcore
42 1 2020-02-06 2024-10-16 10 6 +106 / -25 tom@tomchristie.com 33086594+zrquan@users.norep...
_utils.py
in httpcore
16 1 2020-05-11 2024-10-10 10 5 +117 / -80 yeraydiazdiaz@gmail.com 33086594+zrquan@users.norep...
_trace.py
in httpcore
95 4 2021-11-11 2024-10-16 8 5 +158 / -51 tom@tomchristie.com 33086594+zrquan@users.norep...
interfaces.py
in httpcore/_async
85 6 2021-11-11 2024-10-16 6 5 +164 / -27 tom@tomchristie.com 33086594+zrquan@users.norep...
interfaces.py
in httpcore/_sync
85 10 2021-11-11 2024-10-16 6 5 +164 / -27 tom@tomchristie.com 33086594+zrquan@users.norep...
_api.py
in httpcore
39 2 2021-11-11 2024-10-16 5 4 +121 / -27 tom@tomchristie.com 33086594+zrquan@users.norep...
mock.py
in httpcore/_backends
112 17 2023-06-07 2024-10-16 3 2 +176 / -33 tom@tomchristie.com 33086594+zrquan@users.norep...
_ssl.py
in httpcore
6 1 2021-11-11 2022-11-17 3 2 +11 / -2 tom@tomchristie.com michael@michaeloliver.dev
__init__.py
in httpcore/_async
32 2 2020-01-30 2022-01-14 4 1 +40 / -1 tom@tomchristie.com tom@tomchristie.com
__init__.py
in httpcore/_sync
32 2 2020-01-30 2022-01-14 4 1 +40 / -1 tom@tomchristie.com tom@tomchristie.com
__init__.py
in httpcore/_backends
1 - 2020-02-06 2023-06-07 3 1 - tom@tomchristie.com tom@tomchristie.com
unasync.py
in scripts
78 5 2024-02-23 2024-02-23 1 1 +94 / -0 132141463+t-256@users.norep... 132141463+t-256@users.norep...
Files With Least Contributors (Top 32)
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
unasync.py
in scripts
78 5 2024-02-23 2024-02-23 1 1 +94 / -0 132141463+t-256@users.norep... 132141463+t-256@users.norep...
__init__.py
in httpcore/_async
32 2 2020-01-30 2022-01-14 4 1 +40 / -1 tom@tomchristie.com tom@tomchristie.com
__init__.py
in httpcore/_sync
32 2 2020-01-30 2022-01-14 4 1 +40 / -1 tom@tomchristie.com tom@tomchristie.com
__init__.py
in httpcore/_backends
1 - 2020-02-06 2023-06-07 3 1 - tom@tomchristie.com tom@tomchristie.com
mock.py
in httpcore/_backends
112 17 2023-06-07 2024-10-16 3 2 +176 / -33 tom@tomchristie.com 33086594+zrquan@users.norep...
_ssl.py
in httpcore
6 1 2021-11-11 2022-11-17 3 2 +11 / -2 tom@tomchristie.com michael@michaeloliver.dev
_api.py
in httpcore
39 2 2021-11-11 2024-10-16 5 4 +121 / -27 tom@tomchristie.com 33086594+zrquan@users.norep...
_trace.py
in httpcore
95 4 2021-11-11 2024-10-16 8 5 +158 / -51 tom@tomchristie.com 33086594+zrquan@users.norep...
interfaces.py
in httpcore/_async
85 6 2021-11-11 2024-10-16 6 5 +164 / -27 tom@tomchristie.com 33086594+zrquan@users.norep...
interfaces.py
in httpcore/_sync
85 10 2021-11-11 2024-10-16 6 5 +164 / -27 tom@tomchristie.com 33086594+zrquan@users.norep...
_utils.py
in httpcore
16 1 2020-05-11 2024-10-10 10 5 +117 / -80 yeraydiazdiaz@gmail.com 33086594+zrquan@users.norep...
socks_proxy.py
in httpcore/_sync
255 13 2022-01-14 2024-11-15 11 6 +394 / -53 tom@tomchristie.com tom@tomchristie.com
auto.py
in httpcore/_backends
43 - 2020-02-06 2024-10-16 16 6 +145 / -93 tom@tomchristie.com 33086594+zrquan@users.norep...
_exceptions.py
in httpcore
42 1 2020-02-06 2024-10-16 10 6 +106 / -25 tom@tomchristie.com 33086594+zrquan@users.norep...
socks_proxy.py
in httpcore/_async
255 10 2022-01-14 2024-11-15 12 7 +396 / -55 tom@tomchristie.com tom@tomchristie.com
199 27 2021-11-11 2025-03-31 15 7 +470 / -152 tom@tomchristie.com tom@tomchristie.com
sync.py
in httpcore/_backends
198 15 2020-02-06 2024-10-16 23 7 +475 / -234 tom@tomchristie.com 33086594+zrquan@users.norep...
trio.py
in httpcore/_backends
139 3 2020-02-06 2024-10-16 23 7 +425 / -266 tom@tomchristie.com 33086594+zrquan@users.norep...
anyio.py
in httpcore/_backends
130 2 2020-09-16 2024-10-16 18 7 +438 / -292 alex.gronholm@nextday.fi 33086594+zrquan@users.norep...
base.py
in httpcore/_backends
79 9 2020-02-06 2024-10-10 17 7 +278 / -177 tom@tomchristie.com 33086594+zrquan@users.norep...
_models.py
in httpcore
326 25 2021-11-11 2024-11-15 14 8 +612 / -96 tom@tomchristie.com tom@tomchristie.com
http11.py
in httpcore/_sync
276 28 2020-02-06 2024-10-16 42 9 +793 / -414 tom@tomchristie.com 33086594+zrquan@users.norep...
http11.py
in httpcore/_async
276 11 2020-02-06 2024-10-16 43 10 +798 / -419 tom@tomchristie.com 33086594+zrquan@users.norep...
http_proxy.py
in httpcore/_async
277 19 2020-02-10 2024-11-15 41 11 +890 / -523 tom@tomchristie.com tom@tomchristie.com
http_proxy.py
in httpcore/_sync
277 23 2020-02-10 2024-11-15 40 11 +886 / -519 tom@tomchristie.com tom@tomchristie.com
connection.py
in httpcore/_async
179 9 2020-02-25 2024-10-16 37 11 +614 / -392 tom@tomchristie.com 33086594+zrquan@users.norep...
connection.py
in httpcore/_sync
179 14 2020-02-25 2024-10-16 37 11 +612 / -390 tom@tomchristie.com 33086594+zrquan@users.norep...
__init__.py
in httpcore
119 2 2020-01-30 2025-04-24 63 13 +278 / -137 tom@tomchristie.com tom@tomchristie.com
http2.py
in httpcore/_sync
436 31 2020-02-24 2026-06-08 45 14 +1426 / -706 tom@tomchristie.com md@anthropic.com
http2.py
in httpcore/_async
436 11 2020-02-24 2026-06-08 49 16 +1438 / -718 tom@tomchristie.com md@anthropic.com
connection_pool.py
in httpcore/_sync
272 18 2020-02-06 2026-06-08 59 17 +1392 / -972 tom@tomchristie.com md@anthropic.com
connection_pool.py
in httpcore/_async
272 10 2020-02-06 2026-06-08 62 19 +1402 / -984 tom@tomchristie.com md@anthropic.com
Correlations

File Size vs. Number of Changes: 32 points

httpcore/_async/connection_pool.py x: 272 lines of code y: 62 # changes httpcore/_async/http2.py x: 436 lines of code y: 49 # changes httpcore/_sync/connection_pool.py x: 272 lines of code y: 59 # changes httpcore/_sync/http2.py x: 436 lines of code y: 45 # changes httpcore/__init__.py x: 119 lines of code y: 63 # changes httpcore/_synchronization.py x: 199 lines of code y: 15 # changes httpcore/_async/http_proxy.py x: 277 lines of code y: 41 # changes httpcore/_async/socks_proxy.py x: 255 lines of code y: 12 # changes httpcore/_models.py x: 326 lines of code y: 14 # changes httpcore/_sync/http_proxy.py x: 277 lines of code y: 40 # changes httpcore/_sync/socks_proxy.py x: 255 lines of code y: 11 # changes httpcore/_api.py x: 39 lines of code y: 5 # changes httpcore/_async/connection.py x: 179 lines of code y: 37 # changes httpcore/_async/http11.py x: 276 lines of code y: 43 # changes httpcore/_async/interfaces.py x: 85 lines of code y: 6 # changes httpcore/_backends/anyio.py x: 130 lines of code y: 18 # changes httpcore/_backends/auto.py x: 43 lines of code y: 16 # changes httpcore/_backends/mock.py x: 112 lines of code y: 3 # changes httpcore/_backends/sync.py x: 198 lines of code y: 23 # changes httpcore/_backends/trio.py x: 139 lines of code y: 23 # changes httpcore/_exceptions.py x: 42 lines of code y: 10 # changes httpcore/_sync/http11.py x: 276 lines of code y: 42 # changes httpcore/_trace.py x: 95 lines of code y: 8 # changes httpcore/_backends/base.py x: 79 lines of code y: 17 # changes httpcore/_utils.py x: 16 lines of code y: 10 # changes scripts/unasync.py x: 78 lines of code y: 1 # changes httpcore/_backends/__init__.py x: 1 lines of code y: 3 # changes httpcore/_ssl.py x: 6 lines of code y: 3 # changes httpcore/_async/__init__.py x: 32 lines of code y: 4 # changes
63.0
# changes
  min: 1.0
  average: 22.81
  25th percentile: 6.0
  median: 15.5
  75th percentile: 40.75
  max: 63.0
0 436.0
lines of code
min: 1.0 | average: 163.94 | 25th percentile: 51.75 | median: 134.5 | 75th percentile: 272.0 | max: 436.0

Number of Contributors vs. Number of Changes: 32 points

httpcore/_async/connection_pool.py x: 19 # contributors y: 62 # changes httpcore/_async/http2.py x: 16 # contributors y: 49 # changes httpcore/_sync/connection_pool.py x: 17 # contributors y: 59 # changes httpcore/_sync/http2.py x: 14 # contributors y: 45 # changes httpcore/__init__.py x: 13 # contributors y: 63 # changes httpcore/_synchronization.py x: 7 # contributors y: 15 # changes httpcore/_async/http_proxy.py x: 11 # contributors y: 41 # changes httpcore/_async/socks_proxy.py x: 7 # contributors y: 12 # changes httpcore/_models.py x: 8 # contributors y: 14 # changes httpcore/_sync/http_proxy.py x: 11 # contributors y: 40 # changes httpcore/_sync/socks_proxy.py x: 6 # contributors y: 11 # changes httpcore/_api.py x: 4 # contributors y: 5 # changes httpcore/_async/connection.py x: 11 # contributors y: 37 # changes httpcore/_async/http11.py x: 10 # contributors y: 43 # changes httpcore/_async/interfaces.py x: 5 # contributors y: 6 # changes httpcore/_backends/anyio.py x: 7 # contributors y: 18 # changes httpcore/_backends/auto.py x: 6 # contributors y: 16 # changes httpcore/_backends/mock.py x: 2 # contributors y: 3 # changes httpcore/_backends/sync.py x: 7 # contributors y: 23 # changes httpcore/_exceptions.py x: 6 # contributors y: 10 # changes httpcore/_sync/http11.py x: 9 # contributors y: 42 # changes httpcore/_trace.py x: 5 # contributors y: 8 # changes httpcore/_backends/base.py x: 7 # contributors y: 17 # changes httpcore/_utils.py x: 5 # contributors y: 10 # changes scripts/unasync.py x: 1 # contributors y: 1 # changes httpcore/_backends/__init__.py x: 1 # contributors y: 3 # changes httpcore/_async/__init__.py x: 1 # contributors y: 4 # changes
63.0
# changes
  min: 1.0
  average: 22.81
  25th percentile: 6.0
  median: 15.5
  75th percentile: 40.75
  max: 63.0
0 19.0
# contributors
min: 1.0 | average: 7.56 | 25th percentile: 5.0 | median: 7.0 | 75th percentile: 11.0 | max: 19.0

Number of Contributors vs. File Size: 32 points

httpcore/_async/connection_pool.py x: 19 # contributors y: 272 lines of code httpcore/_async/http2.py x: 16 # contributors y: 436 lines of code httpcore/_sync/connection_pool.py x: 17 # contributors y: 272 lines of code httpcore/_sync/http2.py x: 14 # contributors y: 436 lines of code httpcore/__init__.py x: 13 # contributors y: 119 lines of code httpcore/_synchronization.py x: 7 # contributors y: 199 lines of code httpcore/_async/http_proxy.py x: 11 # contributors y: 277 lines of code httpcore/_async/socks_proxy.py x: 7 # contributors y: 255 lines of code httpcore/_models.py x: 8 # contributors y: 326 lines of code httpcore/_sync/socks_proxy.py x: 6 # contributors y: 255 lines of code httpcore/_api.py x: 4 # contributors y: 39 lines of code httpcore/_async/connection.py x: 11 # contributors y: 179 lines of code httpcore/_async/http11.py x: 10 # contributors y: 276 lines of code httpcore/_async/interfaces.py x: 5 # contributors y: 85 lines of code httpcore/_backends/anyio.py x: 7 # contributors y: 130 lines of code httpcore/_backends/auto.py x: 6 # contributors y: 43 lines of code httpcore/_backends/mock.py x: 2 # contributors y: 112 lines of code httpcore/_backends/trio.py x: 7 # contributors y: 139 lines of code httpcore/_exceptions.py x: 6 # contributors y: 42 lines of code httpcore/_sync/http11.py x: 9 # contributors y: 276 lines of code httpcore/_trace.py x: 5 # contributors y: 95 lines of code httpcore/_backends/base.py x: 7 # contributors y: 79 lines of code httpcore/_utils.py x: 5 # contributors y: 16 lines of code scripts/unasync.py x: 1 # contributors y: 78 lines of code httpcore/_backends/__init__.py x: 1 # contributors y: 1 lines of code httpcore/_ssl.py x: 2 # contributors y: 6 lines of code httpcore/_async/__init__.py x: 1 # contributors y: 32 lines of code
436.0
lines of code
  min: 1.0
  average: 163.94
  25th percentile: 51.75
  median: 134.5
  75th percentile: 272.0
  max: 436.0
0 19.0
# contributors
min: 1.0 | average: 7.56 | 25th percentile: 5.0 | median: 7.0 | 75th percentile: 11.0 | max: 19.0

Number of Changes vs. Line Churn: 134 points

httpcore/_async/connection_pool.py x: 62 # changes y: 2386 line churn httpcore/_async/http2.py x: 49 # changes y: 2156 line churn httpcore/_sync/connection_pool.py x: 59 # changes y: 2364 line churn httpcore/_sync/http2.py x: 45 # changes y: 2132 line churn tests/_async/test_http2.py x: 9 # changes y: 798 line churn tests/_async/test_http_proxy.py x: 10 # changes y: 350 line churn tests/test_cancellations.py x: 4 # changes y: 251 line churn README.md x: 24 # changes y: 281 line churn CHANGELOG.md x: 81 # changes y: 574 line churn tests/_async/test_connection_pool.py x: 18 # changes y: 1069 line churn .github/workflows/test-suite.yml x: 15 # changes y: 68 line churn httpcore/__init__.py x: 63 # changes y: 415 line churn pyproject.toml x: 15 # changes y: 171 line churn httpcore/_synchronization.py x: 15 # changes y: 622 line churn requirements.txt x: 45 # changes y: 229 line churn scripts/lint x: 13 # changes y: 40 line churn docs/async.md x: 3 # changes y: 245 line churn docs/proxies.md x: 5 # changes y: 196 line churn docs/table-of-contents.md x: 2 # changes y: 53 line churn httpcore/_async/http_proxy.py x: 41 # changes y: 1413 line churn httpcore/_async/socks_proxy.py x: 12 # changes y: 451 line churn httpcore/_models.py x: 14 # changes y: 708 line churn httpcore/_sync/http_proxy.py x: 40 # changes y: 1405 line churn httpcore/_sync/socks_proxy.py x: 11 # changes y: 447 line churn tests/_async/test_socks_proxy.py x: 3 # changes y: 261 line churn tests/test_models.py x: 5 # changes y: 201 line churn httpcore/_api.py x: 5 # changes y: 148 line churn httpcore/_async/connection.py x: 37 # changes y: 1006 line churn httpcore/_async/http11.py x: 43 # changes y: 1217 line churn httpcore/_async/interfaces.py x: 6 # changes y: 191 line churn httpcore/_backends/anyio.py x: 18 # changes y: 730 line churn httpcore/_backends/auto.py x: 16 # changes y: 238 line churn httpcore/_backends/mock.py x: 3 # changes y: 209 line churn httpcore/_backends/sync.py x: 23 # changes y: 709 line churn httpcore/_backends/trio.py x: 23 # changes y: 691 line churn httpcore/_exceptions.py x: 10 # changes y: 131 line churn httpcore/_sync/connection.py x: 37 # changes y: 1002 line churn httpcore/_sync/http11.py x: 42 # changes y: 1207 line churn httpcore/_trace.py x: 8 # changes y: 209 line churn httpcore/_backends/base.py x: 17 # changes y: 455 line churn httpcore/_utils.py x: 10 # changes y: 197 line churn scripts/benchmark x: 1 # changes y: 17 line churn tests/benchmark/client.py x: 1 # changes y: 190 line churn tests/benchmark/server.py x: 1 # changes y: 39 line churn scripts/check x: 10 # changes y: 36 line churn tests/concurrency.py x: 5 # changes y: 55 line churn scripts/unasync x: 2 # changes y: 18 line churn scripts/unasync.py x: 1 # changes y: 94 line churn unasync.py x: 19 # changes y: 254 line churn docs/extensions.md x: 7 # changes y: 332 line churn tests/_async/test_http11.py x: 8 # changes y: 486 line churn .github/dependabot.yml x: 3 # changes y: 16 line churn docs/http2.md x: 2 # changes y: 168 line churn .github/workflows/publish.yml x: 5 # changes y: 41 line churn docs/index.md x: 16 # changes y: 321 line churn setup.cfg x: 18 # changes y: 130 line churn MANIFEST.in x: 2 # changes y: 8 line churn scripts/build x: 4 # changes y: 21 line churn setup.py x: 17 # changes y: 206 line churn tests/_async/test_connection.py x: 7 # changes y: 415 line churn tests/_async/test_integration.py x: 2 # changes y: 59 line churn docs/network-backends.md x: 2 # changes y: 281 line churn httpcore/backends/asyncio.py x: 6 # changes y: 306 line churn httpcore/backends/auto.py x: 4 # changes y: 116 line churn httpcore/backends/base.py x: 4 # changes y: 234 line churn httpcore/backends/mock.py x: 7 # changes y: 328 line churn httpcore/backends/sync.py x: 8 # changes y: 306 line churn httpcore/backends/trio.py x: 11 # changes y: 366 line churn mkdocs.yml x: 7 # changes y: 84 line churn docs/connection-pools.md x: 2 # changes y: 131 line churn docs/logging.md x: 2 # changes y: 73 line churn scripts/install x: 6 # changes y: 47 line churn httpcore/_async/__init__.py x: 4 # changes y: 41 line churn scripts/publish x: 5 # changes y: 79 line churn docs/api.md x: 10 # changes y: 266 line churn docs/conf.py x: 2 # changes y: 120 line churn docs/connections.md x: 1 # changes y: 28 line churn docs/contributing.md x: 4 # changes y: 420 line churn docs/quickstart.md x: 1 # changes y: 163 line churn docs/requests-responses-urls.md x: 1 # changes y: 62 line churn httpcore/_async/http.py x: 4 # changes y: 106 line churn httpcore/_backends/asyncio.py x: 23 # changes y: 724 line churn httpcore/_backends/curio.py x: 6 # changes y: 432 line churn httpcore/_bytestreams.py x: 5 # changes y: 216 line churn httpcore/_sync/base.py x: 15 # changes y: 434 line churn httpcore/_sync/http.py x: 5 # changes y: 108 line churn httpcore/_threadlock.py x: 3 # changes y: 72 line churn httpcore/_types.py x: 6 # changes y: 34 line churn scripts/docs x: 3 # changes y: 50 line churn tests/async_tests/test_connection_pool.py x: 6 # changes y: 454 line churn tests/async_tests/test_http11.py x: 3 # changes y: 634 line churn tests/async_tests/test_http2.py x: 2 # changes y: 820 line churn tests/async_tests/test_interfaces.py x: 38 # changes y: 2214 line churn tests/async_tests/test_retries.py x: 4 # changes y: 442 line churn tests/conftest.py x: 20 # changes y: 768 line churn tests/sync_tests/test_http11.py x: 4 # changes y: 634 line churn tests/sync_tests/test_http2.py x: 3 # changes y: 820 line churn tests/sync_tests/test_interfaces.py x: 37 # changes y: 2142 line churn tests/test_threadsafety.py x: 3 # changes y: 106 line churn tests/test_utils.py x: 2 # changes y: 38 line churn tests/utils.py x: 7 # changes y: 424 line churn docs/css/custom.css x: 2 # changes y: 20 line churn tests/marks/curio.py x: 2 # changes y: 84 line churn httpcore/_async/dispatch.py x: 3 # changes y: 462 line churn
2386.0
line churn
  min: 8.0
  average: 389.08
  25th percentile: 55.75
  median: 212.5
  75th percentile: 455.25
  max: 2386.0
0 81.0
# changes
min: 1.0 | average: 11.31 | 25th percentile: 2.75 | median: 5.0 | 75th percentile: 15.0 | max: 81.0

Number of Contributors vs. Line Churn: 31 points

httpcore/_async/connection_pool.py x: 19 # contributors y: 2386 line churn httpcore/_async/http2.py x: 16 # contributors y: 2156 line churn httpcore/_sync/connection_pool.py x: 17 # contributors y: 2364 line churn httpcore/_sync/http2.py x: 14 # contributors y: 2132 line churn httpcore/__init__.py x: 13 # contributors y: 415 line churn httpcore/_synchronization.py x: 7 # contributors y: 622 line churn httpcore/_async/http_proxy.py x: 11 # contributors y: 1413 line churn httpcore/_async/socks_proxy.py x: 7 # contributors y: 451 line churn httpcore/_models.py x: 8 # contributors y: 708 line churn httpcore/_sync/http_proxy.py x: 11 # contributors y: 1405 line churn httpcore/_sync/socks_proxy.py x: 6 # contributors y: 447 line churn httpcore/_api.py x: 4 # contributors y: 148 line churn httpcore/_async/connection.py x: 11 # contributors y: 1006 line churn httpcore/_async/http11.py x: 10 # contributors y: 1217 line churn httpcore/_async/interfaces.py x: 5 # contributors y: 191 line churn httpcore/_backends/anyio.py x: 7 # contributors y: 730 line churn httpcore/_backends/auto.py x: 6 # contributors y: 238 line churn httpcore/_backends/mock.py x: 2 # contributors y: 209 line churn httpcore/_backends/sync.py x: 7 # contributors y: 709 line churn httpcore/_backends/trio.py x: 7 # contributors y: 691 line churn httpcore/_exceptions.py x: 6 # contributors y: 131 line churn httpcore/_sync/connection.py x: 11 # contributors y: 1002 line churn httpcore/_sync/http11.py x: 9 # contributors y: 1207 line churn httpcore/_trace.py x: 5 # contributors y: 209 line churn scripts/unasync.py x: 1 # contributors y: 94 line churn httpcore/_ssl.py x: 2 # contributors y: 13 line churn httpcore/_async/__init__.py x: 1 # contributors y: 41 line churn
2386.0
line churn
  min: 13.0
  average: 749.0
  25th percentile: 191.0
  median: 455.0
  75th percentile: 1207.0
  max: 2386.0
0 19.0
# contributors
min: 1.0 | average: 7.77 | 25th percentile: 5.0 | median: 7.0 | 75th percentile: 11.0 | max: 19.0

File Size vs. Line Churn: 31 points

httpcore/_async/connection_pool.py x: 272 lines of code y: 2386 line churn httpcore/_async/http2.py x: 436 lines of code y: 2156 line churn httpcore/_sync/connection_pool.py x: 272 lines of code y: 2364 line churn httpcore/_sync/http2.py x: 436 lines of code y: 2132 line churn httpcore/__init__.py x: 119 lines of code y: 415 line churn httpcore/_synchronization.py x: 199 lines of code y: 622 line churn httpcore/_async/http_proxy.py x: 277 lines of code y: 1413 line churn httpcore/_async/socks_proxy.py x: 255 lines of code y: 451 line churn httpcore/_models.py x: 326 lines of code y: 708 line churn httpcore/_sync/http_proxy.py x: 277 lines of code y: 1405 line churn httpcore/_sync/socks_proxy.py x: 255 lines of code y: 447 line churn httpcore/_api.py x: 39 lines of code y: 148 line churn httpcore/_async/connection.py x: 179 lines of code y: 1006 line churn httpcore/_async/http11.py x: 276 lines of code y: 1217 line churn httpcore/_async/interfaces.py x: 85 lines of code y: 191 line churn httpcore/_backends/anyio.py x: 130 lines of code y: 730 line churn httpcore/_backends/auto.py x: 43 lines of code y: 238 line churn httpcore/_backends/mock.py x: 112 lines of code y: 209 line churn httpcore/_backends/sync.py x: 198 lines of code y: 709 line churn httpcore/_backends/trio.py x: 139 lines of code y: 691 line churn httpcore/_exceptions.py x: 42 lines of code y: 131 line churn httpcore/_sync/connection.py x: 179 lines of code y: 1002 line churn httpcore/_sync/http11.py x: 276 lines of code y: 1207 line churn httpcore/_trace.py x: 95 lines of code y: 209 line churn httpcore/_backends/base.py x: 79 lines of code y: 455 line churn httpcore/_utils.py x: 16 lines of code y: 197 line churn scripts/unasync.py x: 78 lines of code y: 94 line churn httpcore/_ssl.py x: 6 lines of code y: 13 line churn httpcore/_async/__init__.py x: 32 lines of code y: 41 line churn
2386.0
line churn
  min: 13.0
  average: 749.0
  25th percentile: 191.0
  median: 455.0
  75th percentile: 1207.0
  max: 2386.0
0 436.0
lines of code
min: 6.0 | average: 169.19 | 25th percentile: 78.0 | median: 139.0 | 75th percentile: 272.0 | max: 436.0