downstat
Downloads and latest version for your published packages across crates.io, PyPI, npm and GitHub releases - in one view, instead of curling five APIs by hand.
Why
If you publish to several registries, "is this tool getting used, and what's
live where?" means visiting crates.io, PyPI, npm, and a GitHub releases page
one at a time. downstat <name> answers it in one shot; downstat --all does
your whole portfolio. JSON when piped, a table in a terminal.
Install
cargo install downstat
Quickstart
# One package across every registry it's on
downstat dotpick
# PACKAGE REGISTRY VERSION DOWNLOADS
# dotpick crates.io 0.1.0 1,234 total · 56 (90d)
# dotpick pypi 0.1.0 42 (30d)
# dotpick github v0.1.0 7 (releases)
# JSON for scripting
downstat dotpick | jq '.packages[0].registries[] | {registry, downloads}'
# Just one registry
downstat dotpick --only crates
# Your whole portfolio (from ./downstat.toml)
downstat --all
downstat.toml:
packages = ["dotpick", "whatport", "onym", "vership"]
What it reads
| registry | downloads | latest version |
|---|---|---|
| crates.io | total + 90-day | ✓ |
| PyPI | 30-day (via pypistats.org) | ✓ |
| npm | 30-day | ✓ |
| GitHub releases | summed release-asset downloads | ✓ (latest tag) |
The GitHub repo is discovered from crates.io's repository field. A
GITHUB_TOKEN/GH_TOKEN env var (optional) lifts GitHub's unauthenticated
rate limit for large --all runs.
Counts are normalized but not directly comparable across registries (the
windows differ - that's why each recent value is labelled). ghcr and Homebrew
taps expose no public download counts, so they are omitted rather than faked.
Exit codes
| code | meaning |
|---|---|
0 |
success |
1 |
the queried name was found on no registry |
2 |
a network or parse failure |
3 |
usage error (bad arguments / config) |
For agents (clispec)
downstat follows The CLI Spec: structured output on
stdout, structured error envelopes on the last line of stderr, and a schema
subcommand whose development-branch output validates against the candidate
clispec.dev/schema/v0.3.json (checked by the test suite). Every command
declares effects: read_only; the published release remains on frozen v0.2
until v0.3 freezes.
License
MIT
Releasing
Vership owns versioning, changelog generation, release commits, and tags. See the release runbook for the verified workflow and recovery policy.
Metadata
Release files for downstat 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| downstat-0.1.2.tar.gz | 44.6 kB | Without provenance | Details for downstat-0.1.2.tar.gz |
Built distributions (wheels)
| File | Actions Reset | |||
|---|---|---|---|---|
| downstat-0.1.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | Python 3 | none | Linux glibc 2.17+ x86-64 | Details for downstat-0.1.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
| downstat-0.1.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | Python 3 | none | Linux glibc 2.17+ ARM64 | Details for downstat-0.1.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
| downstat-0.1.2-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details for downstat-0.1.2-py3-none-macosx_11_0_arm64.whl |
| downstat-0.1.2-py3-none-macosx_10_12_x86_64.whl | Python 3 | none | macOS 10.12+ x86-64 | Details for downstat-0.1.2-py3-none-macosx_10_12_x86_64.whl |
Total release size: 7.1 MB
Release files / downstat-0.1.2.tar.gz
| Download URL | downstat-0.1.2.tar.gz |
|---|---|
| Size | 44.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
94e0ab85dcc18916ae3e314f2829b16055c116470a92994be8df45233d1f6f43
|
|
BLAKE2b-256 checksum How to use checksums |
9a30e0f3f1f4fb470e14bb3124b972d0e057dce9e90a095287fbb3f5e6ba8020
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / downstat-0.1.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | downstat-0.1.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.8 MB |
| Tags | Linux glibc 2.17+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
ca58bc37be16cd11737188f4802cc9417ade11f85dd6c129f4c98d7bf3876d81
|
|
BLAKE2b-256 checksum How to use checksums |
4e7dbcc93efaaf14bfb8045ebfea0560d8222ef0e22d6149b14b8a7ac7a79b3f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / downstat-0.1.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | downstat-0.1.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 1.8 MB |
| Tags | Linux glibc 2.17+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
b058d20cfdd02210cd33f227b2d29530d02270caa58524bbc6fc49e814cb582a
|
|
BLAKE2b-256 checksum How to use checksums |
cd2e37fd217c39f87be308d9d358c145365e2a10dae83ecfb8cef52a29ee666b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / downstat-0.1.2-py3-none-macosx_11_0_arm64.whl
| Download URL | downstat-0.1.2-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
ba6486353b7b8dd3abf02b88777d49387045cdda38b2222b8764a048ec2c7d0a
|
|
BLAKE2b-256 checksum How to use checksums |
b5a43797e044c3afa6133a5e01973ec92296a38dab578c0ab73549481c9c310a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / downstat-0.1.2-py3-none-macosx_10_12_x86_64.whl
| Download URL | downstat-0.1.2-py3-none-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.8 MB |
| Tags | Python 3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
d3976fc5494cd1a76fd66d28f933a2a479bbaab544df26d2030a708b7f85de91
|
|
BLAKE2b-256 checksum How to use checksums |
2d9c7d90964ee01c69bdcf2da2033fa60bbd282343427ede513d533a0051674c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for downstat 0.1.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.