Record in aggregate · metrics 1.13.0

The state of PyPI.

Aggregate statistics across every inspected repository publishing to PyPI — how health distributes, where the download volume sits, and which practices are common or rare, measured against the whole record.

Inspected repositories
5,280 of 5,280 indexed
Monthly downloads under inspection
51.6B registry-reported
Median health index
62 Moderate
Good or better
32% index 70 and above

Health-index distribution

Latest health index of every inspected repository, in five-point intervals over the 1–100 scale.

Where the download volume sits

Combined monthly downloads by band, against repository counts.

35% of the monthly download volume under inspection flows through repositories below the good band — and the top 1% most-downloaded repositories carry 64% of the entire volume.

Repositories
28%46%17%
Download volume
27%38%23%
BandRepositoriesDownloads / moVolume share
Excellent21514B27%
Good1,49119.4B38%
Moderate2,42912B23%
At risk9164.9B9.5%
Critical2291.3B2.5%

Score shapes

The distribution behind each category median, in ten-point bins — where the record clusters, and where a category separates repositories or saturates.

Vitality75
1100
Community & Adoption58
1100
Sustainability & Governance63
1100
Engineering Quality75
1100
Security48
1100
AI Readiness47
1100

Category profile

Median category score across the scope. Ticks mark the whole-record median. Categories are documented in the methodology wiki.

Vitality
75
Community & Adoption
58
Sustainability & Governance
63
Engineering Quality
75
Security
48
AI Readinessunweighted
47

The state of practice

Share of inspected repositories where the practice is publicly evident. Reports that predate a signal are excluded from its basis, never counted as missing.

Engineering & community practice

README
97% of 5,280
License detected
96% of 5,280
Automated tests
94% of 5,280
CI workflows
90% of 5,280
Documentation directory
67% of 5,280
Linter configuration
57% of 5,280
Contributing guide
48% of 5,280
Code of conduct
27% of 5,280
Security policy
23% of 5,280

Agent-era signals

One-command bootstrap
51% of 5,280
AI agent instructions
27% of 5,280
llms.txt
2.5% of 5,280

Signals read by the unweighted AI Readiness category.

Does popularity mean health?

Median health index (dot) and the middle half of repositories (band) per popularity bracket, on the shared 1–100 scale.

By GitHub stars

Under 100 stars 2,490
57 · 47–64
100 – 999 1,461
65 · 53–73
1,000 – 9,999 956
72 · 62–79
10,000 and more 373
81 · 74–86

By monthly downloads

Under 10K / month 1,206
59 · 50–67
10K – 1M 661
66 · 57–73
1M – 100M 797
67 · 53–77
100M and more 93
78 · 62–84

Security under the microscope

Average OpenSSF Scorecard result per check across the scope, weakest first, on Scorecard's 0–10 scale. Check results are mostly all-or-nothing, so the average tracks how much of the record passes. Checks Scorecard reports inconclusive are excluded from scoring, never counted as zero; each row's tooltip carries its basis.

CII-Best-Practices
0.1
Fuzzing
0.7
Signed-Releases
1.1
Branch-Protection
1.5
Pinned-Dependencies
1.6
SAST
1.8
Token-Permissions
1.9
Code-Review
2.7
Security-Policy
3.0
Dependency-Update-Tool
4.7
Maintained
6.0
Vulnerabilities
6.5
CI-Tests
6.7
Contributors
7.1
License
9.5
Binary-Artifacts
9.7
Dangerous-Workflow
9.7
Packaging
10.0

Red flags

Findings that adjust a rating downward rather than scoring into it. Each is reported as a count, as a share of the whole record, and as a rate among the repositories where it could be determined at all.

High-risk jurisdiction exposure
1793.4% of the record · 3.7% of 4,842 assessed
Abandonment
1342.5% of the record · 2.5% of 5,280 assessed
Inorganic growth
1<0.1% of the record · 0.2% of 516 assessed
Malicious dependencies
00% of the record · 0% of 1,176 assessed

A red flag needs its own evidence, so its basis is smaller than the record. Growth authenticity is assessed only where day-by-day history was collected; dependency findings only where a dependency graph resolved. Repositories the evidence cannot answer for are left out of the basis rather than counted as passing.

The pulse

How recently each inspected repository last saw a push, at inspection time.

Half of the inspected repositories saw a push within 2 days of inspection.

Push recency
76%
Last pushRepositoriesShare
Pushed within 30 days4,02976%
31 – 90 days2835.4%
91 – 365 days4518.5%
Over a year5179.8%

Stewardship & resilience

Who stands behind the inspected repositories, and how many people the code depends on. Both are read by the governance category.

3,284Organization-stewarded median 67
1,996Personal accounts median 56

Maintainer bus factor

68% of inspected repositories depend on a single maintainer for the majority of their commits — including 506 with over a million monthly downloads.

1 maintainer
3,570
2 maintainers
944
3–5 maintainers
587
6+ maintainers
164

The dependency iceberg

Declared direct dependencies against the full resolved graph (direct plus transitive), across the 4,052 reports with a collected dependency graph.

The median repository declares 2 direct dependencies — and resolves to 23 packages in total.

Resolved packages per repository

0
343
1 – 5
741
6 – 20
884
21 – 50
538
51 – 200
724
201 – 500
355
501 – 1,000
198
Over 1,000
269

License landscape

The most common detected licenses across the scope (SPDX identifiers).

MIT
2,089
Apache-2.0
1,222
Custom license
761
BSD-3-Clause
385
No license detected
201
GPL-3.0
180
AGPL-3.0
128
BSD-2-Clause
89
MPL-2.0
52
LGPL-3.0
46

Most relied upon

The most-downloaded repositories under inspection publishing to PyPI — the records the figures above weigh heaviest. The rest is covered by the full catalogue · tag index.

PyPI
89Excellenthealth index
pypa/packaging
Core utilities for Python packages
Python★ 745↓ 2.1B/moJul 16, 2026
Custom licenseJul 16, 2026 · metrics 1.13.0
PyPI
89Excellenthealth index
psf/requests
A simple, yet elegant, HTTP library.
Python★ 54.1K↓ 1.7B/moJul 16, 2026
Apache-2.0Jul 16, 2026 · metrics 1.13.0
PyPI
71Goodhealth index
kjd/idna
Internationalized Domain Names for Python (IDNA 2008 and UTS #46)
Python★ 287↓ 1.6B/moJul 16, 2026
BSD-3-ClauseJul 16, 2026 · metrics 1.13.0
PyPI · crates.io
84Goodhealth index
pyca/cryptography
cryptography is a package designed to expose cryptographic primitives and recipes to Python developers.
Python · Rust★ 7,664↓ 1.4B/moJul 16, 2026
Custom licenseJul 16, 2026 · metrics 1.13.0
PyPI
88Excellenthealth index
aio-libs/aiobotocore
asyncio support for botocore library using aiohttp
Python★ 1,418↓ 1.2B/moJul 17, 2026
Apache-2.0Jul 17, 2026 · metrics 1.13.0
PyPI
91Excellenthealth index
numpy/numpy
The fundamental package for scientific computing with Python.
Python · C★ 32.4K↓ 1.1B/moJul 22, 2026
Custom licenseJul 22, 2026 · metrics 1.13.0

Reading these figures

  • Every figure is computed from the latest published inspection of each repository, under the versioned methodology (currently metrics 1.13.0). See the methodology · band scale.
  • Statistics describe the inspected record — software admitted for inspection, not a random sample of all open source. Admission follows the public-interest criteria.
  • Download figures come from package registries; registries that publish no monthly number (Maven Central, Go, NuGet, RubyGems) contribute no volume rather than zero. Coverage per ecosystem is documented in supported ecosystems.
  • Where a signal is unavailable in a report — an uncollected dependency graph, an inconclusive Scorecard check, a report predating a signal — the repository is excluded from that figure's basis, never counted against it.
  • Health indices are signals of publicly visible practice, not audits or warranties — how to read them is covered by the health index.
  • Figures computed 2026-07-23 08:02 UTC; the aggregate is recomputed hourly. The underlying data is available as JSON.