astral-sh/uv
By the numbers
A quantitative snapshot of the uv repository.
Data collected on 2026-04-30 from the
mainbranch at commit4d4f345cfe0309561bbe115e8e3677c502f6a67b.
Size
uv is a Rust workspace of ~70 crates, all in crates/. The Rust source dominates by line count;
the rest is fixture data, scripts, and Markdown docs.
| Metric | Count |
|---|---|
| Total commits since first commit (Oct 2023) | 9,027 |
| Tags published | 272 |
| Distinct authors (all-time) | 544 |
.rs files under crates/ |
576 |
Total Rust LOC under crates/ (incl. tests/snapshots) |
~473,597 |
*.toml files in the repo (Cargo + pyproject + fixtures) |
130 |
| Workspace members | 70 directories under crates/ (one nightly-only crate excluded from the workspace) |
The largest crates by source size:
| Crate | On-disk size |
|---|---|
uv (the binary, includes tests) |
~13 MB |
uv-python (incl. download metadata JSON) |
~3.3 MB |
uv-resolver |
~1.5 MB |
uv-client |
~536 KB |
uv-distribution-types |
~492 KB |
uv-pep508 |
~436 KB |
uv-requirements-txt |
~420 KB |
uv-cli |
~376 KB |
uv-distribution |
~364 KB |
uv-trampoline-builder |
~328 KB |
uv-pep440 |
~296 KB |
uv-workspace |
~284 KB |
uv-auth |
~276 KB |
xychart-beta horizontal
title "Workspace crates by on-disk size (KB)"
x-axis ["uv-python", "uv-resolver", "uv-client", "uv-distribution-types", "uv-pep508", "uv-requirements-txt", "uv-cli", "uv-distribution", "uv-trampoline-builder", "uv-pep440"]
y-axis "KB" 0 --> 3500
bar [3300, 1500, 536, 492, 436, 420, 376, 364, 328, 296]The single biggest source files in the repo are also in those crates:
| File | Approximate size |
|---|---|
crates/uv-resolver/src/lock/mod.rs |
~273 KB |
crates/uv-python/src/discovery.rs |
~175 KB |
crates/uv-resolver/src/resolver/mod.rs |
~182 KB |
crates/uv-pep440/src/version.rs |
~162 KB |
crates/uv/src/settings.rs |
~157 KB |
crates/uv/src/lib.rs |
~110 KB |
crates/uv-resolver/src/resolver/environment.rs |
~33 KB |
Activity
uv is under continuous heavy development.
| Metric | Value |
|---|---|
| Commits in the last 90 days | 709 |
| Approximate monthly commit volume (2026 Q1–Q2) | 14 (Jan, partial) → 204 (Feb) → 285 (Mar) → 207 (Apr) |
| Releases tagged | 272 |
Bot-attributed activity in the last 90 days (lower bound — does not capture inline AI tools or Co-authored-by lines):
| Author | Commits in last 90 days |
|---|---|
renovate[bot] |
178 |
github-actions[bot] |
11 |
dependabot[bot] |
1 |
That is roughly 27% of the last 90 days' commits attributed to bots, primarily Renovate dependency bumps and GitHub Actions release automation. The remaining 73% are human-authored.
Test infrastructure
| Metric | Value |
|---|---|
| Integration test crate | crates/uv/tests/it/ |
| Test runner | cargo nextest (recommended) |
| Snapshot framework | insta plus the project-defined uv_snapshot! macro |
| CI workflows | 28 GitHub Actions workflows in .github/workflows/ |
| Notable test workflows | ci.yml, test.yml, test-integration.yml, test-system.yml, test-smoke.yml, test-windows-trampolines.yml, test-ecosystem.yml |
CI splits work across check-fmt, check-lint, check-docs, check-generated-files,
check-publish, check-release, check-zizmor, plus the various test-* and build-*
workflows.
Documentation
| Metric | Value |
|---|---|
| Docs source | docs/ (mkdocs) |
| Top-level doc sections | getting-started/, guides/, concepts/, pip/, reference/ |
| Style guide | STYLE.md (writing conventions for messaging and docs) |
| Contributor guide | CONTRIBUTING.md, AGENTS.md, CLAUDE.md |
| Changelog | CHANGELOG.md (746 lines and growing) |
Dependency surface
uv pins workspace dependencies via the [workspace.dependencies] table in the root
Cargo.toml. Notable third-party libraries:
| Area | Crate | Why |
|---|---|---|
| Resolver | astral-pubgrub (uv's fork of pubgrub), astral-version-ranges |
core SAT-style solver |
| HTTP | reqwest, astral-reqwest-middleware, astral-reqwest-retry, hyper (test) |
registry client |
| Async | tokio, futures, tokio-stream, tokio-util, async-channel |
concurrency |
| CPU-bound parallelism | rayon |
wheel install, bytecode compile |
| Hashing / crypto | sha2, blake2, md-5, data-encoding, webpki-root-certs, rustls |
wheel hashes, TLS |
| Serialization | serde, serde_json, toml, toml_edit, rkyv, rmp-serde |
TOML, JSON, cache |
| Compression / archives | flate2 (zlib-rs), xz2, async-compression, zip, astral_async_zip, astral-tokio-tar, tar |
wheel/sdist extraction |
| Tracing | tracing, tracing-subscriber, tracing-tree, tracing-durations-export |
structured logging |
| CLI | clap, clap_complete_command |
argument parsing |
| Errors | thiserror, anyhow, miette |
structured + reportable errors |
| Filesystem | fs-err, tempfile, walkdir, globwalk, globset, ignore |
cross-platform FS |
| Windows | windows, windows-registry, windows-version, embed-manifest |
platform glue |
| Memory allocators | mimalloc (Linux/Windows), jemalloc variants |
startup speed |
Where these numbers live
- The
[workspace]definition is inCargo.toml. - Per-crate descriptions are in
crates/README.md. - Workflow files are in
.github/workflows/. - Author counts derive from
git log. Per-person breakdowns are intentionally aggregated rather than ranked by individual contributor — seemaintainers.mdfor the per-subsystem ownership view.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.