Skip to main content

vdjtools

vdjtools — immune-repertoire analysis

PyPI CI docs python license

Get started · Guides · Commands · API · Examples · Glossary

Analysis of T- and B-cell receptor repertoire sequencing: read any format, measure diversity and overlap, correct batch effects, score generation probability against a native V(D)J model, and reduce a whole repertoire to one comparable feature vector.

vdjtools reads the output of every common repertoire pipeline into one canonical AIRR table backed by polars, and every analysis takes and returns that same table — so results chain together instead of needing a converter between each step.

A clean-room Python + C++ rewrite of the Groovy/Java vdjtools, built on arda (germline reference and annotation), seqtree (fuzzy search and e-values) and vdjmatch (overlap and TCRnet).

Install

pip install vdjtools

That is the whole installation — every capability below works from it, with no extras to opt into. Wheels are prebuilt for CPython 3.10–3.13 on Linux, macOS (Apple Silicon) and Windows and include the native C++ extension; a source install compiles it. The three engines above are base dependencies, imported lazily so import vdjtools stays light.

Two optional extras exist because each has a working alternative:

pip install "vdjtools[overlap]"   # scikit-learn, for cluster_samples(method="mds")
pip install "vdjtools[sc]"        # single-cell bridges: anndata, awkward, mudata, pyyaml

Quickstart

from vdjtools import io as vio, stats, overlap

sample = vio.read("clones.tsv")          # MiXcr, immunoSEQ, AIRR, Parquet, native — detected
stats.diversity_stats(sample)            # richness, Chao1, Shannon, inverse Simpson, d50
stats.segment_usage(sample, "v")         # V-gene usage

cohort = vio.read_samples(vio.read_metadata("metadata.txt"), base_dir="samples/")
overlap.overlap_matrix(cohort)           # pairwise repertoire overlap

The same thing with no Python:

vdjtools diversity     sampleA.tsv sampleB.tsv -o diversity.tsv
vdjtools segment-usage *.tsv --segment v -o usage.tsv
vdjtools overlap       *.tsv -o overlap.tsv

Every command writes to -o — TSV, or Parquet when the path ends in .parquet / .pq — or to stdout, so commands pipe. Analysis commands also take a metadata table (-m plus --base-dir) and parallelise over samples with -t/--threads.

Getting started walks through this in about ten minutes, with no data to download.

Where to start

You want to Go to
Get a first result from a file you already have Getting started
Clean, filter, downsample or batch-correct a cohort Pre-processing
Measure diversity, overlap, gene usage, spectratype Guides
Score Pgen, or fit a model to your own reads Model workshop
Reduce each sample to one feature vector for a classifier Signatures
Work with 10x data, or hand off to scirpy / dandelion Single cell
Look up a command or a function Commands · API
Check what a term means Glossary

What is in the box

Module What it does
vdjtools.io Readers for native vdjtools, AIRR Rearrangement TSV and Parquet; format-detecting converters for MiXcr, MiGec, Adaptive immunoSEQ, IMGT/HighV-QUEST, Vidjil, RTCR, TRUST4 and arda; metadata-driven batches and hive-partitioned cohorts
vdjtools.stats Diversity (richness, Chao1, Efron-Thisted, Shannon, Simpson, d50), coverage-based Hill-number rarefaction with bootstrap intervals, spectratype, V/D/J/C usage
vdjtools.model Native V(D)J recombination model: Pgen over nucleotides and amino acids, the Hamming-1 ball, sequence generation, EM inference, tandem-D support, and a 13-command model workshop
vdjtools.overlap Exact and similarity-aware repertoire overlap, TCRnet and ALICE neighbourhood enrichment, sample clustering
vdjtools.preprocess Format conversion, the three filtering axes, frequency handling, downsampling, error correction, V/J-usage batch correction, pooling and joining
vdjtools.features Junction physicochemical profiles and k-mer summaries
vdjtools.biomarker Incidence association against binary, per-HLA-allele or stratified conditions; co-occurrence pairing; metaclonotypes
vdjtools.dynamics Longitudinal clonotype tracking: paired within-donor expansion testing, the VDJtrack recapture model, an edgeR NB-exact caller
vdjtools.signature One fixed, named, already-standardised feature vector per repertoire, rotated through a published corpus
vdjtools.sc Single-cell ingestion, chain pairing and QC, paired Pgen, round-trip interop with scirpy, dandelion and scRepertoire

Recombination models, built in

Models for all seven human loci ship in the wheel — no OLGA install and nothing to download:

from vdjtools.model import load_bundled, native

model = load_bundled("TRB", source="olga")            # or source="learned"
native.pgen_aa(model, "CASSLAPGATNEKLFF")             # 3.595e-08
native.pgen_aa(model, "CASSLAPGATNEKLFF", mismatches=1)   # and its whole Hamming-1 ball

Pgen agrees with OLGA to 1e-15 on every locus while being several times faster, and adds tandem-D support that OLGA and IGoR lack. You can also fit a model to your own non-productive reads, audit it against its germline, compare two models parameter by parameter, and render its recombination Bayes net — see the model workshop.

Signatures

One repertoire in, one fixed-width named feature vector out, standardised against a published reference corpus so your matrix and a collaborator's are in the same coordinate system without either of you fitting a scaler:

vdjtools signature --corpus blood samples/*.tsv.gz -o vsig.tsv
mir       signature --corpus blood samples/*.tsv.gz -o rsig.tsv   # the geometry half, from mirpy

Nine corpora are published, all at 256 components per locus. blood (11,117 real samples, 947 study groups), tissue (21,131 / 1,934) and deep-tcr (3,936 amplicon samples, TRA+TRB) are fitted on real repertoires; the synthetic ones need no cohort at all and rebuild byte for byte anywhere. Artifacts are fetched and digest-verified on first use rather than bundled.

--corpus is required: a signature is comparable to another one only if both were rotated through the same corpus, and nothing about the numbers would say otherwise. Signatures · How they were fitted · Channels

Performance

The Pgen, generation, EM and diversity hot paths are a native C++ core reached through pybind11; everything else is polars. Single thread, Apple M3, bundled human TRB model:

Operation Throughput vs OLGA
Nucleotide Pgen, single-D VDJ 0.5 ms/seq 9×
Amino-acid Pgen 0.6–0.9 ms/seq 8.6×
Amino-acid Pgen over the Hamming-1 ball 15 ms/seq 8.7×
Sequence generation, raw draws 32,100 seq/s —
Sequence generation, productive_only=True 8,960 seq/s —

The productive filter costs 3.6× on TRB and 5.1× on IGH (19,900 raw draws/s against 3,930 productive), because out-of-frame and stop-codon draws are discarded and redrawn. Batched Pgen parallelises over sequences (11× on 16 cores, and identical to the serial result); the EM E-step parallelises over reads (6.7× on 8 threads). Memory: 63 MB resident for import vdjtools plus one model, 123 MB with all seven loaded.

Reproduce the in-repo half with RUN_BENCHMARK=1 pytest tests/python -k benchmark.

Development

Uses uv — one repo-local .venv, no conda:

uv venv && source .venv/bin/activate
uv pip install -e ".[dev,test]"       # builds the _core C++ extension
pytest tests/python -q

bash setup.sh --dev-parents --tests does the same and editable-installs sibling checkouts of seqtree, arda and vdjmatch if present. You need a C++ toolchain (Xcode Command Line Tools on macOS, build-essential on Linux). MMseqs2 is needed only for arda's annotation path.

Citing

For the v2 rewrite, cite this repository. For the original tool, cite Shugay et al., PLoS Computational Biology 2015. The VDJtrack recapture model in vdjtools.dynamics is Pavlova, Zvyagin and Shugay (2024).

License

GPL-3.0-or-later. The legacy Groovy/Java v1.x tool lives on the legacy-1.x branch, with its releases under the repository tags v0.0.1 … 1.2.1.

Running signatures across samples

vdjtools signature --corpus blood --jobs 8 samples/*.tsv -o signatures.parquet

--jobs controls worker processes. It defaults to 1; use 0 to request all available cores or a positive count to set the budget explicitly. Each spawned worker uses one thread per numerical kernel. Workers read one sample at a time, retain their fitted resources, and return only a feature row. Output follows input order. No sample-count heuristic changes an explicit worker budget.

For the Python cohort API, pass picklable zero-argument readers to defer file loading into workers. Passing already-loaded frames keeps those frames in the parent too. The CLI sets kernel thread limits before imports, including at --jobs 1. Direct Python calls retain the calling process's Polars and BLAS settings at n_jobs=1.

Model-build resource budgets follow the same rule: build_all(..., workers=8) runs up to eight builds with one kernel thread each. build_model(..., threads=8) and infer_native(..., threads=8) instead assign eight kernel threads to one build.

Metadata

Release files for vdjtools 4.9.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for vdjtools 4.9.0
File Size Uploaded
vdjtools-4.9.0.tar.gz 1.4 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for vdjtools 4.9.0
File
vdjtools-4.9.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
vdjtools-4.9.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
vdjtools-4.9.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
vdjtools-4.9.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
vdjtools-4.9.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
vdjtools-4.9.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
vdjtools-4.9.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
vdjtools-4.9.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
vdjtools-4.9.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
vdjtools-4.9.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
vdjtools-4.9.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
vdjtools-4.9.0-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details

Total release size: 24.0 MB

Release files / vdjtools-4.9.0.tar.gz

Download URL vdjtools-4.9.0.tar.gz
Size 1.4 MB
Tags Source
SHA-256 checksum
How to use checksums
8322374a9e41ad615c5426846c2b5933e8296dff0bcd9d09001d8603e75cb236
BLAKE2b-256 checksum
How to use checksums
f654f59c6f45f95435b3282e3f9c6d1c753c506b4146245732219b131f2a766d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release files / vdjtools-4.9.0-cp313-cp313-win_amd64.whl

Download URL vdjtools-4.9.0-cp313-cp313-win_amd64.whl
Size 1.9 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
e83371b1aa414e1d6bebf4e0563673b36f1fe79bac83f61c2315ccad1983e670
BLAKE2b-256 checksum
How to use checksums
a2e36eb958ebc2b2dc1212fa68e921df0dd938fac27a6ddf623094bb81ae5656
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release files / vdjtools-4.9.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL vdjtools-4.9.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 1.9 MB
Tags CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
b6c33b2e2480896e6205daacc3318941e1085de1569d11ffe905c665dfbedfff
BLAKE2b-256 checksum
How to use checksums
d272f9b21db4cd178f2a2b452d80c8b3197ba109e98dfe6fbba9da18857c7736
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release files / vdjtools-4.9.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL vdjtools-4.9.0-cp313-cp313-macosx_11_0_arm64.whl
Size 1.9 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
31396b262b32d5cd1625d1acc64de91f58f7ff207dd1be697f07e1c712ac4672
BLAKE2b-256 checksum
How to use checksums
1d5e8736de3c75e16d7991f70ed28a97f11ddc2f2750ba23000eae37719dc207
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release files / vdjtools-4.9.0-cp312-cp312-win_amd64.whl

Download URL vdjtools-4.9.0-cp312-cp312-win_amd64.whl
Size 1.9 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
971c67c9ae57bc78116f750b8424e1030cd909521e5b5ad035bf8dec7081a8a9
BLAKE2b-256 checksum
How to use checksums
7e3f883c224de5d0102d499e35fac1946a0ec9245c850640f99fc0e6e015cd03
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release files / vdjtools-4.9.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL vdjtools-4.9.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 1.9 MB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
b624dcae7011b64b7c7fc692760d08965faef46e9c6e5f1a386c00cc650c0e25
BLAKE2b-256 checksum
How to use checksums
7797bbdc40a9870a0dc62763cd7053b345f35a3c661bb39459713ccacad5ea8b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release files / vdjtools-4.9.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL vdjtools-4.9.0-cp312-cp312-macosx_11_0_arm64.whl
Size 1.9 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
8a7fa1da6a826679c7f7e4095321d2a45bf5fd6b6846c1c38a18f3a4f0810461
BLAKE2b-256 checksum
How to use checksums
555dfe173d609d678658acfc402d1fa0e74295db820e3f92763fddb42dfb5061
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release files / vdjtools-4.9.0-cp311-cp311-win_amd64.whl

Download URL vdjtools-4.9.0-cp311-cp311-win_amd64.whl
Size 1.9 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
779926726a6239e2ff836d46b88fabd53b3257f6286dd5fd761174406451b471
BLAKE2b-256 checksum
How to use checksums
5e82b8d886902925c026764bf628d108a0d484679e0bd51ec49a98222da88a15
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release files / vdjtools-4.9.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL vdjtools-4.9.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 1.9 MB
Tags CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
fc3a4c91c00fa8ba72d5f89b81c5ec8f1b24ca0face7e3f7d5607f512c0d4fbe
BLAKE2b-256 checksum
How to use checksums
76fd11da4423bc3d2cf7c79044ff81b815e8381e2aaff6955ae305f3f80b1ae7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release files / vdjtools-4.9.0-cp311-cp311-macosx_11_0_arm64.whl

Download URL vdjtools-4.9.0-cp311-cp311-macosx_11_0_arm64.whl
Size 1.9 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
18775ff43b67fa85d47d117090f953b65046b9fa430bffe9b95b0371b7fd0aa7
BLAKE2b-256 checksum
How to use checksums
cffb852f91617374da085a2f85e09c479d007ebc36cdc739182f44eec9155d19
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release files / vdjtools-4.9.0-cp310-cp310-win_amd64.whl

Download URL vdjtools-4.9.0-cp310-cp310-win_amd64.whl
Size 1.9 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
fe51946b98deb3528fe6a30665264a77eb509da6b9aa291bda328dc5b9c5ed7b
BLAKE2b-256 checksum
How to use checksums
0567221b7e6d6e92f78548f71ce32b3e8db13de467ea64ca03c30e8b41d711eb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release files / vdjtools-4.9.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL vdjtools-4.9.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 1.9 MB
Tags CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
f58d4f4f3ced511711a1afb9749f6003a0b1a19d04add7c47ad8a0eda37c6f47
BLAKE2b-256 checksum
How to use checksums
dc8171b99376aa0b2af65284e608dcc4d9ecac1db8c1af6574594ce68195a636
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release files / vdjtools-4.9.0-cp310-cp310-macosx_11_0_arm64.whl

Download URL vdjtools-4.9.0-cp310-cp310-macosx_11_0_arm64.whl
Size 1.9 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
68ccffb0ec4d5eab8036a643532a7a7df6c4014ac0eecfe5f4564fd45b2d8331
BLAKE2b-256 checksum
How to use checksums
68560f61369b1fe47be7a420b11d8371ddd82b647880dc45f309b689d2592710
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release history Release notifications | RSS feed

5.1.0

13 release files

5.0.2

13 release files

5.0.1

13 release files

This release

4.9.0 This release

13 release files

4.8.0

13 release files

4.7.0

13 release files

4.6.1

13 release files

4.5.0

13 release files

4.3.0

13 release files

4.2.0

13 release files

4.1.0

13 release files

4.0.1

13 release files

3.9.3

13 release files

3.9.2

13 release files

3.9.1

13 release files

3.9.0

13 release files

3.8.0

13 release files

3.7.3

13 release files

3.7.0

13 release files

3.6.1

13 release files

3.6.0

13 release files

3.4.0

13 release files

3.1.2

13 release files

3.1.1

13 release files

3.1.0

13 release files

3.0.0

13 release files

2.9.0

13 release files

2.8.0

13 release files

2.7.0

13 release files

2.6.0

13 release files

2.5.1

13 release files

2.3.0

13 release files

2.2.1

13 release files

2.2.0

13 release files

2.1.0

13 release files

2.0.0

13 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page