Skip to content

Latest commit

Β 

History

51 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

PyPI Download Analytics for compliance-trestle

Recent insights into PyPI package adoption and usage patterns

This repository contains automated BigQuery analytics and reports for PyPI packages.

Report Date: 2026-09-06


πŸ“Š Version Adoption Trends

Quarterly download trends by major version over the last 3 years. Shows version adoption patterns and migration trends across releases.

Quarterly Version Trends


πŸ”‘ Key Metrics Summary

Metric Last 30 Days (Actual) Last 90 Days (Actual)
Total Downloads 88,015 373,465
Countries Reached 57 77
CI/CD Installs 63.0% 70.3%
UV Adoption 34.7% 41.6%
MCP Usage 113 530

🌍 Geographic Distribution

30-Day Analysis

90-Day Analysis

30-Day Geographic Distribution

90-Day Geographic Distribution

Countries:

Country Downloads %
US United States 71,275 81.0%
SG Singapore 7,217 8.2%
DE Germany 2,600 3.0%
HK Hong Kong 2,304 2.6%
CN China 983 1.1%
ES Spain 413 0.5%
GB United Kingdom 354 0.4%
SE Sweden 342 0.4%
RU Russian Federation 328 0.4%
FR France 265 0.3%
IN India 251 0.3%
MX Mexico 238 0.3%
NZ New Zealand 215 0.2%
TW Taiwan, Province of China 214 0.2%
JP Japan 187 0.2%
CA Canada 181 0.2%
AU Australia 132 0.1%
NL Netherlands 93 0.1%
NO Norway 67 0.1%
CL Chile 64 0.1%
IE Ireland 48 0.1%
KR Korea, Republic of 32 0.0%
AT Austria 21 0.0%
PK Pakistan 19 0.0%
CH Switzerland 16 0.0%
VN Viet Nam 15 0.0%
SA Saudi Arabia 15 0.0%
FI Finland 13 0.0%
IT Italy 11 0.0%
DK Denmark 11 0.0%
ID Indonesia 9 0.0%
IL Israel 8 0.0%
AL Albania 7 0.0%
RO Romania 6 0.0%
BE Belgium 6 0.0%
BR Brazil 6 0.0%
EE Estonia 5 0.0%
BD Bangladesh 4 0.0%
LV Latvia 4 0.0%
ZA South Africa 4 0.0%
PT Portugal 4 0.0%
SI Slovenia 3 0.0%
CR Costa Rica 3 0.0%
LT Lithuania 2 0.0%
NG Nigeria 2 0.0%
DO Dominican Republic 2 0.0%
AM Armenia 2 0.0%
EG Egypt 2 0.0%
HU Hungary 2 0.0%
TR TΓΌrkiye 2 0.0%
PL Poland 2 0.0%
AD Andorra 1 0.0%
AE United Arab Emirates 1 0.0%
GL Greenland 1 0.0%
CO Colombia 1 0.0%
LU Luxembourg 1 0.0%
UA Ukraine 1 0.0%

Countries:

Country Downloads %
US United States 337,807 90.5%
SG Singapore 17,578 4.7%
DE Germany 3,658 1.0%
HK Hong Kong 2,658 0.7%
CN China 1,734 0.5%
SE Sweden 1,638 0.4%
GB United Kingdom 1,088 0.3%
ES Spain 938 0.3%
FR France 823 0.2%
RU Russian Federation 791 0.2%
IN India 679 0.2%
AU Australia 459 0.1%
CA Canada 450 0.1%
JP Japan 450 0.1%
MX Mexico 330 0.1%
AE United Arab Emirates 300 0.1%
KR Korea, Republic of 230 0.1%
TW Taiwan, Province of China 216 0.1%
NZ New Zealand 215 0.1%
NL Netherlands 199 0.1%
CL Chile 163 0.0%
IE Ireland 163 0.0%
VN Viet Nam 94 0.0%
IT Italy 83 0.0%
NO Norway 81 0.0%
IL Israel 78 0.0%
SA Saudi Arabia 62 0.0%
FI Finland 46 0.0%
AR Argentina 45 0.0%
CZ Czechia 43 0.0%
AT Austria 38 0.0%
DK Denmark 37 0.0%
PK Pakistan 30 0.0%
PT Portugal 28 0.0%
CH Switzerland 25 0.0%
UA Ukraine 18 0.0%
BR Brazil 13 0.0%
EE Estonia 12 0.0%
GR Greece 12 0.0%
BE Belgium 11 0.0%
RO Romania 9 0.0%
ID Indonesia 9 0.0%
ZA South Africa 9 0.0%
MD Moldova, Republic of 9 0.0%
TR TΓΌrkiye 9 0.0%
AL Albania 8 0.0%
CR Costa Rica 7 0.0%
LV Latvia 6 0.0%
PL Poland 5 0.0%
DZ Algeria 5 0.0%
LU Luxembourg 5 0.0%
LT Lithuania 5 0.0%
BD Bangladesh 4 0.0%
TN Tunisia 4 0.0%
EG Egypt 4 0.0%
MA Morocco 4 0.0%
NP Nepal 4 0.0%
SK Slovakia 3 0.0%
SI Slovenia 3 0.0%
PY Paraguay 3 0.0%
SC Seychelles 3 0.0%
NG Nigeria 2 0.0%
BG Bulgaria 2 0.0%
AM Armenia 2 0.0%
AF Afghanistan 2 0.0%
EC Ecuador 2 0.0%
MY Malaysia 2 0.0%
DO Dominican Republic 2 0.0%
HU Hungary 2 0.0%
AD Andorra 1 0.0%
IR Iran, Islamic Republic of 1 0.0%
JO Jordan 1 0.0%
GE Georgia 1 0.0%
GL Greenland 1 0.0%
CO Colombia 1 0.0%
IQ Iraq 1 0.0%
KZ Kazakhstan 1 0.0%

Key Insights:

  • US United States dominance (81.0% in 30d, 90.5% in 90d) consistent across periods
  • 57 countries (30d), 77 countries (90d) demonstrates global reach

πŸ€– MCP (Model Context Protocol) Usage Analysis

What is MCP?

MCP (Model Context Protocol) is Anthropic's protocol for connecting AI assistants like Claude to external tools and data sources. When developers use Claude Desktop with MCP servers, they often install Python packages via uvx (uv's tool runner).

Detection Methodology

Since MCP servers don't explicitly identify themselves in PyPI logs, we use proxy signals with significant limitations:

  1. HIGH Confidence: uvx subcommand usage (MCP's recommended pattern, but also used for other tools)
  2. Contextual: UV vs pip adoption trends (UV is MCP's recommended installer)
  3. Observational: CI vs non-CI patterns (shows usage context, not MCP specifically)

Important Limitations:

  • Install vs Usage: PyPI data shows package downloads, not actual execution - packages may be installed but never run
  • uvx Ambiguity: The uvx command is used for many tools beyond MCP servers (any Python CLI tool can be run via uvx)
  • Non-CI Context: Non-CI downloads don't isolate MCP usage - most PyPI downloads are non-CI regardless of use case
  • CI Detection Issues: The details.ci field in BigQuery is heuristically derived from user-agent strings (checking for patterns like "github", "travis", "jenkins") and is unreliable - many CI systems don't identify themselves, and some non-CI tools may match the patterns
  • User-Agent Limitations: Cannot distinguish MCP from other UV usage without access to raw user-agent strings, which are not available in the public BigQuery dataset
  • Proxy Signals Only: All MCP detection relies on indirect signals (installer choice, subcommand usage) rather than explicit MCP identification

MCP Analysis Charts

1. Installer Utilized

Shows which installer tool was used to download the package (pip, uv, or poetry). UV is a proxy for MCP since MCP clients use UV.

30 Days

Installer Share 30d

UV: 34.7% of downloads (30,552)

90 Days

Installer Share 90d

UV: 41.6% of downloads (155,178)

2. UV Subcommands (uvx = MCP Pattern)

Breaks down all UV downloads by which UV subcommand was used. The uvx command is the standard pattern MCP clients use to run MCP servers (e.g., Claude Desktop, Cline, etc.).

30 Days

UV Subcommands 30d

113 uvx downloads = HIGH confidence MCP

90 Days

UV Subcommands 90d

530 uvx downloads = HIGH confidence MCP

UV Subcommand Meanings:

  • sync - Synchronize project dependencies β†’ CI/CD pipelines, developers syncing environments
  • pip install - UV's pip-compatible install command β†’ CI/CD, automated builds, legacy workflows
  • no subcommand - UV downloads without subcommand data β†’ Older UV versions or incomplete logging
  • run - Run a script in a virtual environment β†’ Developers, test runners, automation scripts
  • tool install - Install a tool globally β†’ Developers setting up their environment
  • uvx - Run a tool without installing it β†’ MCP clients (Claude Desktop, Cline), developers trying tools
  • lock - Generate a lockfile for dependencies β†’ Developers, CI/CD for reproducible builds
  • pip compile - Compile requirements files β†’ CI/CD, dependency management workflows
  • add - Add a dependency to the project β†’ Developers adding new packages
  • tool run - Run an installed tool β†’ Developers, automation scripts
  • tool upgrade - Upgrade an installed tool β†’ Developers maintaining tools

3. CI vs Non-CI Usage

Separates automated CI/CD installs from other downloads for pip, uv, poetry, and other installers.

30 Days

CI vs Non-CI 30d

UV: 43.4% non-CI (13,247 downloads)

90 Days

CI vs Non-CI 90d

UV: 23.9% non-CI (37,067 downloads)

4. Daily UV Trend

Time series showing daily UV download trends. Highlights confirmed uvx subcommand usage (MCP pattern) alongside total UV downloads to visualize MCP adoption patterns over time.

30 Days

Daily Trend 30d

113 uvx downloads over 30 days

90 Days

Daily Trend 90d

530 uvx downloads over 90 days

Key Findings:

30-Day Analysis:

  1. Confirmed MCP Usage: 113 downloads using uvx subcommand
  2. UV Adoption: 34.7% of downloads
  3. Interactive Usage: 43.4% of UV downloads are non-CI

MCP usage is detectable but small. The broader story is UV's growth as a modern Python installer.

90-Day Analysis:

  1. Confirmed MCP Usage: 530 downloads using uvx subcommand
  2. UV Adoption: 41.6% of downloads
  3. Interactive Usage: 23.9% of UV downloads are non-CI

MCP usage is detectable but small. The broader story is UV's growth as a modern Python installer.


πŸš€ Deployment Environment Analysis

Platform Distribution

Categorizes downloads by platform based on OS and distribution detection. Identifies AWS (Amazon Linux), Containers (Alpine), Enterprise (RHEL), Ubuntu, Debian, macOS, Windows, and other platforms. Shows the overall platform mix of package users.

30 Days

Platform Distribution 30d

90 Days

Platform Distribution 90d

Deployment Types

Shows the distribution of downloads across different deployment environments, automatically categorized based on OS, distribution, libc type, and CI detection. Categories may include containers, cloud VMs, CI/CD pipelines, and developer workstations.

30 Days

Deployment Types 30d

90 Days

Deployment Types 90d

Architecture Distribution

Shows CPU architecture breakdown (x86_64, ARM64, etc.) detected from download metadata. Tracks adoption of ARM-based systems like AWS Graviton and Apple Silicon.

30 Days

Architecture Distribution 30d

90 Days

Architecture Distribution 90d

Enterprise vs Cloud-Native

Compares traditional enterprise Linux distributions (RHEL, CentOS) against cloud-native platforms (Amazon Linux, Alpine). Indicates adoption patterns in regulated vs cloud-first environments.

30 Days

Enterprise vs Cloud-Native 30d

90 Days

Enterprise vs Cloud-Native 90d

libc Distribution (Container Signal)

Shows the distribution of C library implementations (glibc vs musl). musl libc is a strong indicator of containerized deployments, particularly Alpine Linux in Docker/Kubernetes.

30 Days

libc Distribution 30d

90 Days

libc Distribution 90d

Deployment Context

Categorizes downloads by deployment scenario based on OS type, Linux distribution, and CI detection. Shows patterns like containerized pipelines (Alpine+CI), cloud automation (Amazon Linux+CI), enterprise Linux (RHEL), CI environments, developer workstations (macOS/Windows), and other contexts.

30 Days

Use Cases 30d

90 Days

Use Cases 90d

Deployment Summary

Key deployment metrics at a glance: container adoption, cloud provider usage, enterprise deployment, CI/CD percentage, ARM architecture adoption, and musl libc usage.

30 Days

Deployment Summary 30d

90 Days

Deployment Summary 90d



πŸ”„ Automated Updates

This repository is automatically updated weekly by GitHub Actions:

  • Schedule: Weekly on Mondays at 6 AM UTC (2 AM ET)
  • Authentication: Service account JSON key stored in GitHub secrets
  • Manual trigger: Available via GitHub Actions UI
  • Setup guide: See SETUP.md

πŸ” Data Sources & Methodology

Data Source: Google BigQuery public dataset bigquery-public-data.pypi.file_downloads

Analysis Period:

  • 30-day reports: Last 30 days from data fetch date
  • 90-day reports: Last 90 days from data fetch date

Update Frequency:

  • Automated: Daily via GitHub Actions
  • Caching: Data fetched once per day, cached locally to minimize BigQuery costs
  • Cache Management: Old cache files automatically removed after successful new fetch
  • Manual trigger: Available for on-demand updates

Privacy: All data comes from PyPI's public dataset. No personal information is collected or stored.


Analytics powered by Google BigQuery and GitHub Actions

About

big-query

Resources

Code of conduct

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages