Python Ecosystem Tool and Build Backend Statistics
Last refreshed: 2026-04-16
Aggregating data on the usage of tools and build backends over time, using the grep.app search, the source distributions of the top PyPI packages, and the PyPI Linehaul BigQuery data.
Datasets
Linehaul: Each PyPI simple API access and
file download is logged to
BigQuery through
linehaul. The metadata includes package name/version, installer info,
subcommand, and CI status. The data is reliably available since 2019,
with CI tracking being added in 2024 (via CI=1). Poetry
doesn't report CI info. We use 7-day and 90-day rolling averages to
smooth daily fluctuations.
Build backends: Analysis of the
top 15k PyPI packages
by downloads. Build backend info is extracted from
pyproject.toml and setup.py in source
distributions. The setup.py category tracks packages
without a [build-system] table. 1 of 15,000 packages
failed to analyze and was excluded.
grep.app: Uses search hits for different tools on grep.app, which indexes public code repositories. While smaller than GitHub, it accurately reports hit counts. According to a Vercel blog post, grep.app includes "1M+ pre-indexed repos". Search hits are captured daily.
Minimum Python Version
Build System Distribution
Code Search Statistics
PyPI Downloads
Astral Static Tools
uv subcommands
Figures not shown
Two figures were excluded from this page for lack of signal.
(Intermediate) Data
The intermediate data aggregated data used to generate plots.
- top_packages.csv Build backend, Requires-Python, and wheel data for the top 15k PyPI packages
- uv_subcommand_downloads.csv File downloads by uv subcommand and CI status (last 7 days)
- uv_simple_api_requests.csv Simple API requests by uv subcommand and CI status (last 7 days)
- tool_version_downloads.csv Downloads by tool version and CI status for uv, pip, and poetry (last 7 days)