Skip to main content

ultravin

CI Status PyPI Version License

The complete NHTSA VIN decoder, thousands of times faster. Fully offline.

VINs decoded per second: ultravin 1,853,346 with automatic batching on 12 cores / 935,066 on 4 cores / 257,709 on 1 core vs corgi v3 83, corgi v2 33, NHTSA MSSQL 22.5, NHTSA Postgres 19.5
VINs decoded per second — ultravin uses automatic batching over twenty million unique VINs.

  • ⚡️ ~258,000 VIN/s on one core with automatic batching — ~11,450× the NHTSA SQL Server baseline (22.5 VIN/s)
  • 🦀 Pure Rust core, shipped as a Python library and a Rust crate
  • 📦 The entire vPIC vehicle database baked into the wheel
  • 🔌 Fully offline — no network, no database, no data files at runtime
  • 🎯 Full-field vPIC parity, tested across decoding rules and their interactions — with documented upstream defects corrected (accuracy policy, evidence)
  • 🐍 Installable via pip, with a CLI and a library API
  • 🧵 Batches in parallel to ~935,000 VIN/s on 4 cores and ~1.85 million VIN/s on all 12 — ~41,558× and ~82,371× that same baseline
  • 🗃️ Parquet in, parquet out — decodes a dataset of any size in the memory of one chunk

ultravin brings the complete spVinDecode algorithm into your process: vehicle attributes, model-year resolution, VIN correction, errors, and provenance. It checks every output field against NHTSA's unmodified Postgres procedure and corrects documented defects in the upstream data and procedures. You get vPIC fidelity with better answers on those defective cases, at over 11,400× the NHTSA SQL Server baseline on one core. Benchmarks and reproduction.

The complete vehicle database ships inside the binary. No network, no database server, no runtime data files. Install it and decode.

Getting Started

Installation

uv add ultravin

Prebuilt wheels require Python 3.10+ and nothing else — the data ships inside the wheel.

Usage

From Python:

import ultravin

r = ultravin.decode("1HGCM82633A004352")

r["model_year"]  # 2003
r["wmi"]  # '1HG'
r["check_digit_valid"]  # True
r["error_codes"]  # [0]

# `attributes` is the decoded vehicle, one entry per vPIC variable:
r["attributes"]["Make"]  # 'HONDA'
r["attributes"]["Model"]  # 'Accord'

decode(vin) returns a dict with keys vin, wmi, descriptor, model_year, error_codes, check_digit_valid, corrected_vin, and attributes — a single variable -> value mapping. Values are str, except the free-text note fields listed in ultravin.MULTI_VALUED, which are always list[str]: those are the only vPIC elements allowed to repeat within one decode, and each row is a separate note rather than a competing value.

Decode many at once with decode_batch:

results = ultravin.decode_batch(["1HGCM82633A004352", "5YJ3E1EA7JF000000"])

If you already know a vehicle's model year, pass it — the same optional hint the vPIC API calls modelyear. It matters for pre-2010 vehicles, where the VIN's year character is ambiguous (A means 1980 or 2010): the hinted year gets its own decode pass that competes against the VIN-derived one, and a hint that contradicts the decoded year adds error code 12.

ultravin.decode("1HGCM82633A004352", year=1995)  # decodes as a 1995
ultravin.decode_batch(vins, years=[2011, None, 1987])  # one entry per VIN

Provenance: full=True

The default keeps the value and drops the provenance. If you need to know where a value came from — source, over half of all rows being vehicle-type defaults rather than something the VIN encodes — or the raw vPIC attribute_id, pass full=True:

r = ultravin.decode("1HGCM82633A004352", full=True)

next(e for e in r["elements"] if e["variable"] == "Make")
# {'group_name': 'General', 'variable': 'Make', 'value': 'HONDA', 'source': 'pattern - model', …}

full=True replaces attributes with elements, a list of per-attribute dicts (group_name, variable, value, element_id, attribute_id, source, pattern_id, …), and works the same on decode_batch, decode_json and decode_batch_json. It is ~2× slower end to end: decoding is not the expensive part, and elements costs ~615 dict entries per VIN against the default's ~41.

ultravin.ELEMENTS maps each variable name to its static metadata (element_id, group_name, data_type, …). Pin to element_id if you need a key that survives NHTSA renaming a variable between data releases.

From the command line:

ultravin decode 1HGCM82633A004352             # JSON object
ultravin decode 1HGCM82633A004352 --year 1995 # with a caller model-year hint
ultravin decode 1HGCM82633A004352 --full      # with per-element provenance
ultravin decode-batch vins.txt                # one VIN per line -> JSON array
ultravin decode-batch - --jsonl < vins.txt    # stdin -> streaming JSON Lines
ultravin decode-batch vins.txt --jsonl --batch-size 1000
ultravin info                                # decoder version + data identity as JSON
ultravin version

decode-batch accepts VIN,year on each input line. JSONL mode processes bounded chunks and emits complete JSON objects in input order, ready for shell pipelines. Its automatic default adapts under an 8 MiB working-buffer target; pass --batch-size N to pin a measured size or --batch-memory-mb N to change the automatic target. If a later input line is malformed, the command exits with an error; already-emitted lines remain valid results.

Reproducible results

Every batch automatically captures one clock for the whole job. That includes Python and Rust batches, CLI input loading, every JSONL chunk, and every file in a Parquet stream. A job that spans a date or year boundary keeps using its starting instant.

Pin the package version and freeze the decode clock when a job needs to produce the same answers on a later date:

from datetime import datetime, timezone

as_of = datetime(2026, 9, 1, tzinfo=timezone.utc)
r = ultravin.decode("1HGCM82633A004352", now=as_of)
results = ultravin.decode_batch(vins, now=as_of)
identity = ultravin.provenance()
# data_month, artifact_blake3, decoder_version

now= also works on the JSON APIs and decode_stream. It controls publication dates and year resolution; year= remains the vehicle's model-year hint. Naive datetimes mean UTC. Each stream captures one clock reading for the whole job, and its Arrow/Parquet metadata records the data identity and decode clock: ultravin.data_month, ultravin.artifact_blake3, ultravin.decoder_version, and ultravin.now_micros (Unix epoch microseconds).

Rust

The engine is its own crate, ultravin: cargo add ultravin, then

let r = ultravin::decode("1HGCM82633A004352", None);
assert_eq!(r.model_year, Some(2003));

The 83 MB vPIC database is too big for crates.io, so the first build fetches it from the matching GitHub release, verifies it, caches it per machine and bakes it into your binary — runtime stays fully offline. Offline builds and runtime loading: crates/ultravin/README.md.

Datasets

For bulk work there is decode_stream — a stream of decoded Arrow batches, without a single row ever becoming a Python object:

import ultravin

rows = ultravin.decode_stream("registrations.parquet").to_parquet("decoded.parquet")

rows  # 4812004 — the rows written, not the rows themselves

Parquet output replaces its destination only after every batch and the footer have been written successfully. A failed decode leaves an existing output intact.

The source is a parquet file, a directory of *.parquet read in sorted order, or anything speaking the Arrow C data interface — so the same call takes a pandas DataFrame (pandas ≥ 2.2, with pyarrow installed), a pyarrow Table, a polars DataFrame, a duckdb result, or a RecordBatchReader. A DecodeStream is itself an Arrow source, which is what lets it hand the decode straight to whatever you already use:

import pandas as pd, polars as pl, pyarrow as pa, duckdb

df = pd.DataFrame({"vin": ["1HGCM82633A004352", "5YJ3E1EA7KF328931"]})

pl.DataFrame(ultravin.decode_stream(df))  # -> polars
pa.table(ultravin.decode_stream(df))  # -> pyarrow
ultravin.decode_stream(df).to_pandas()  # -> pandas (needs pandas + pyarrow)

stream = ultravin.decode_stream(df)  # duckdb resolves the name from scope
duckdb.sql("select Make, count(*) from stream group by 1")

Each stream is single-use — note the fresh decode_stream(...) on every line above. It pulls from a source that has already moved on, so a second consumer would get a silently truncated result; consuming one twice raises RuntimeError rather than handing back a short answer. Call decode_stream again to re-read.

Picking columns

columns= takes vPIC variable names, element_ids, or both together; omit it for every publicly decodable element:

ultravin.decode_stream("registrations.parquet", columns=["Make", "Model", 13])

Pin to element_id for anything long-lived. The id is the one key NHTSA does not rename between monthly data releases.

Column naming and schema drift

Naming output columns after vPIC variables means a data refresh can silently change your table's shape — NHTSA renames variables, and Displacement (L) becoming something else takes every downstream query with it. column_names="id" labels each projected column attr_<element_id> instead, which never moves:

ultravin.decode_stream(src, columns=[26, 13], column_names="id")
# -> vin, decoded_model_year, attr_26, attr_13

Passthrough columns (the source VIN column, the source year column, and decoded_model_year) keep their own names in both modes; only the projection is renamed. The default is "variable" — reach for "id" when the output feeds a persisted schema rather than a human.

You never lose the other name. Every projected column carries both keys as Arrow field metadata, in both modes, and they survive the parquet round-trip:

table = pa.table(ultravin.decode_stream(src, columns=[26, 13], column_names="id"))
{f.name: dict(f.metadata) for f in table.schema if f.metadata}
# {'attr_26': {b'element_id': b'26', b'variable': b'Make'},
#  'attr_13': {b'element_id': b'13', b'variable': b'Displacement (L)'}}

Columns and layout

The VIN column is found by name (vin, case-insensitively) and then, for a parquet source, by sniffing the leading rows — as is the optional caller-year column (year, model_year, …); pass vin_column=/year_column= to name them outright. Any text encoding works: Utf8, LargeUtf8, Utf8View, or the dictionary a pandas categorical arrives as.

The output holds the VIN and caller year passed through, then decoded_model_year (named so it cannot collide with an input column called model_year), then one column per projected element — string, int64 or float64 following vPIC's own data_type, with an empty value written as null. Row order and row count always equal the input's: an undecodable VIN is a row of nulls, never a raise and never a dropped row.

By default, batch_size="auto" adapts Parquet and Arrow work chunks to measured throughput under a 64 MiB working-buffer budget. A shipped predictor uses the worker count and a short single-core measurement on real input rows to choose the starting size; runtime feedback then refines it. See the predictor and heatmaps, or call ultravin.predict_batch_size(workers=12, single_core_rows_per_second=100_000) to inspect an estimate. Change the working-buffer target with batch_memory_mb=. It is a budget for buffers ultravin builds for the current batch, not a process-RSS limit, and it does not include buffers retained by an upstream Arrow producer. Adaptation respects RAYON_NUM_THREADS; it never changes the process-global worker pool.

Pass an integer for fixed-size Parquet chunks. With an Arrow source an explicit integer preserves the producer's batches and only sets the parquet row-group size of to_parquet. In either mode the GIL is released while Rust decodes, and memory stays bounded independently of total source rows. Reading and writing parquet is the same Rust as the decoding, so this path needs no pyarrow and no other install; only the pyarrow/polars/pandas hand-offs need those libraries.

From the command line:

ultravin decode-parquet registrations.parquet decoded.parquet --columns Make,Model
ultravin decode-parquet parts/ decoded.parquet --columns 26,28 --vin-column chassis_no
ultravin decode-parquet registrations.parquet decoded.parquet --column-names id

Benchmarks

How many VINs each engine decodes per second, measured against the NHTSA MSSQL spVinDecode baseline of 22.5 VIN/s.

engine VIN/s vs NHTSA MSSQL
ultravin — automatic batches, 12 cores 1,853,346 ~82,371× faster
ultravin — automatic batches, 4 cores 935,066 ~41,558× faster
ultravin — automatic batches, 1 core 257,709 ~11,454× faster
corgi v3 — @cardog/corgi (binary index) ~83 ~3.7× faster
corgi v2 — @cardog/corgi 2.0.1 (SQLite) ~33 ~1.5× faster
NHTSA MSSQL — spVinDecode (SQL Server) 22.5 1× (baseline)
NHTSA Postgres — spvindecode 19.5 ~1.2× slower
NHTSA vPIC web API — public rate limit ~10 ~2.3× slower

Commit 5750746, September 23, 2026, Apple M2 Max (eight performance and four efficiency cores), 20,000,000 unique synthetic VINs, automatic batching on one, four, or twelve workers, medians of two fresh-process trials. Across worker counts ultravin scales to ~3.6× and ~7.2× its own single-core rate.

ultravin runs in-process with the database embedded — no server, no round-trip. The corgi rows are derived from that project's published per-VIN latency, and the vPIC web API row is its published request rate limit rather than a decode time; neither was re-measured here. Methodology, inputs, caveats, reproduction, and prior sessions.

Documentation

  • Vision — what this is, and what it deliberately is not
  • Benchmarks — the numbers, the methodology, how to reproduce them
  • End-to-end performance — throughput, startup, and memory across all output paths
  • Performance improvements — the optimization history, measured gains, tradeoffs, and rejected experiments
  • Acceptance — the parity policy: what counts as passing, how a divergence is adjudicated
  • Known deviations — the vPIC defects ultravin does not reproduce, with evidence
  • Corpora — generate, cover_vins, sweep: hitting every decode behaviour with the fewest VINs
  • Data refresh — how the monthly NHTSA dump is integrated behind parity gates
  • Release — tags, wheels, the embedded artifact, crates.io

License

MIT. The embedded NHTSA vPIC data has its own provenance — see NOTICE.

Metadata

Release files for ultravin 3.0.1

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

Source distribution (sdist)

Source distribution for ultravin 3.0.1
File Size Uploaded Provenance
ultravin-3.0.1.tar.gz 21.5 MB With provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for ultravin 3.0.1
File
ultravin-3.0.1-cp310-abi3-win_arm64.whl CPython 3.10 abi3 Windows ARM64 Details
ultravin-3.0.1-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details
ultravin-3.0.1-cp310-abi3-win32.whl CPython 3.10 abi3 Windows x86-32 Details
ultravin-3.0.1-cp310-abi3-musllinux_1_2_x86_64.whl CPython 3.10 abi3 Linux musl 1.2+ x86-64 Details
ultravin-3.0.1-cp310-abi3-musllinux_1_2_i686.whl CPython 3.10 abi3 Linux musl 1.2+ x86-32 Details
ultravin-3.0.1-cp310-abi3-musllinux_1_2_armv7l.whl CPython 3.10 abi3 Linux musl 1.2+ ARMv7l Details
ultravin-3.0.1-cp310-abi3-musllinux_1_2_aarch64.whl CPython 3.10 abi3 Linux musl 1.2+ ARM64 Details
ultravin-3.0.1-cp310-abi3-manylinux_2_31_riscv64.whl CPython 3.10 abi3 Linux glibc 2.31+ RISC-V 64 Details
ultravin-3.0.1-cp310-abi3-manylinux_2_28_aarch64.whl CPython 3.10 abi3 Linux glibc 2.28+ ARM64 Details
ultravin-3.0.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 abi3 Linux glibc 2.17+ x86-64 Details
ultravin-3.0.1-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl CPython 3.10 abi3 Linux glibc 2.17+ IBM System/390x Details
ultravin-3.0.1-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl CPython 3.10 abi3 Linux glibc 2.17+ PowerPC 64-le Details
ultravin-3.0.1-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl CPython 3.10 abi3 Linux glibc 2.17+ x86-32 Details
ultravin-3.0.1-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl CPython 3.10 abi3 Linux glibc 2.17+ ARMv7l Details
ultravin-3.0.1-cp310-abi3-macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64 Details
ultravin-3.0.1-cp310-abi3-macosx_10_12_x86_64.whl CPython 3.10 abi3 macOS 10.12+ x86-64 Details

Total release size: 439.5 MB

Release files / ultravin-3.0.1.tar.gz

Download URL ultravin-3.0.1.tar.gz
Size 21.5 MB
Tags Source
SHA-256 checksum
How to use checksums
f915465f4cc59d054c095fa1662d098d3a7c7fa1dd2c15b651a6764dcbee0b15
BLAKE2b-256 checksum
How to use checksums
c88b71981ad3f359a63f4c0bb1a4e6f43d2399634a6848a747ef07902664bb07
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 Sep 23, 2026.

Transparency log

Release files / ultravin-3.0.1-cp310-abi3-win_arm64.whl

Download URL ultravin-3.0.1-cp310-abi3-win_arm64.whl
Size 25.6 MB
Tags CPython 3.10 Windows ARM64 abi3
SHA-256 checksum
How to use checksums
a5996157c0ea0073fa23f087788f967a74dcc843f23544da82d7c0bdd89fc1d1
BLAKE2b-256 checksum
How to use checksums
887f2ed31df24c2685df37940bacf924665a1cd50e4ee02709081f9c0bdf2e43
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 Sep 23, 2026.

Transparency log

Release files / ultravin-3.0.1-cp310-abi3-win_amd64.whl

Download URL ultravin-3.0.1-cp310-abi3-win_amd64.whl
Size 26.0 MB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
b7379190bd1f161a80c003b4432fc0cf8b4e27fb5ce6079e23436266b9886226
BLAKE2b-256 checksum
How to use checksums
2082059232bd77f1ed7127a33320163921cc3a2bbccf77ee2fc94c7aa21decf8
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 Sep 23, 2026.

Transparency log

Release files / ultravin-3.0.1-cp310-abi3-win32.whl

Download URL ultravin-3.0.1-cp310-abi3-win32.whl
Size 25.5 MB
Tags CPython 3.10 Windows x86-32 abi3
SHA-256 checksum
How to use checksums
84ab711d6b07bb7d0432c3d4121aed0252c3688363702e045f49a58b104e096a
BLAKE2b-256 checksum
How to use checksums
9a34dc20e2662cb79d942c9c8162b543b5cc1be61edb9cf1dbcae12c42e5a0cf
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 Sep 23, 2026.

Transparency log

Release files / ultravin-3.0.1-cp310-abi3-musllinux_1_2_x86_64.whl

Download URL ultravin-3.0.1-cp310-abi3-musllinux_1_2_x86_64.whl
Size 26.2 MB
Tags CPython 3.10 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
71b50cd06ab46c8bfce77b657446b7d12f95c3350103a2426e4d3889f9f8a06f
BLAKE2b-256 checksum
How to use checksums
8ac468bd8f3de6fb25346ff772038e425227f3cc1ec70343055d6a33ba6124f0
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 Sep 23, 2026.

Transparency log

Release files / ultravin-3.0.1-cp310-abi3-musllinux_1_2_i686.whl

Download URL ultravin-3.0.1-cp310-abi3-musllinux_1_2_i686.whl
Size 26.3 MB
Tags CPython 3.10 Linux musl 1.2+ x86-32 abi3
SHA-256 checksum
How to use checksums
5060aee4154cf3e0f7bf10a9f22af8f9404b54518a3b844fa694a1fb6b7e1274
BLAKE2b-256 checksum
How to use checksums
6fd12ae4ae0d9d5cfcf17e436b93602ca4dc9097caff255d67daa7508f59a404
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 Sep 23, 2026.

Transparency log

Release files / ultravin-3.0.1-cp310-abi3-musllinux_1_2_armv7l.whl

Download URL ultravin-3.0.1-cp310-abi3-musllinux_1_2_armv7l.whl
Size 26.5 MB
Tags CPython 3.10 Linux musl 1.2+ ARMv7l abi3
SHA-256 checksum
How to use checksums
7835f6c2033989541aad5373023eb68918c748997aa312e6660e7b199e8caf74
BLAKE2b-256 checksum
How to use checksums
aa9d2e0b2dd3e7095e2718c71cf4ed427e692f447d8c73e98af6297a5b182879
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 Sep 23, 2026.

Transparency log

Release files / ultravin-3.0.1-cp310-abi3-musllinux_1_2_aarch64.whl

Download URL ultravin-3.0.1-cp310-abi3-musllinux_1_2_aarch64.whl
Size 25.9 MB
Tags CPython 3.10 Linux musl 1.2+ ARM64 abi3
SHA-256 checksum
How to use checksums
1504cf888e428aac654cd98cc766f4d99af7ad1a7a69315cac598c968bdae337
BLAKE2b-256 checksum
How to use checksums
200bb6041adc48aad501b65a492921ee755f11bfb679a57f547da8505955ed24
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 Sep 23, 2026.

Transparency log

Release files / ultravin-3.0.1-cp310-abi3-manylinux_2_31_riscv64.whl

Download URL ultravin-3.0.1-cp310-abi3-manylinux_2_31_riscv64.whl
Size 26.1 MB
Tags CPython 3.10 Linux glibc 2.31+ RISC-V 64 abi3
SHA-256 checksum
How to use checksums
6035cbe59469738049dd4a80171c9652f589643fb8235ccf5fa83a2e67734b7e
BLAKE2b-256 checksum
How to use checksums
dcdd9e53cfa25ea4d7f18d52873f988dfd9b9372159860ec7d0187df66dec25e
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 Sep 23, 2026.

Transparency log

Release files / ultravin-3.0.1-cp310-abi3-manylinux_2_28_aarch64.whl

Download URL ultravin-3.0.1-cp310-abi3-manylinux_2_28_aarch64.whl
Size 25.7 MB
Tags CPython 3.10 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
4afb210a9ac8e0481b8cbc085bd9284a77a516fa4ac28c813e14ad0a432b3050
BLAKE2b-256 checksum
How to use checksums
9ccaa51bf11325b6361ef9de23852e02c34b49f6b94330fc6a461e0fb33e3d50
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 Sep 23, 2026.

Transparency log

Release files / ultravin-3.0.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL ultravin-3.0.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 26.0 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
149e1106198359b597eb9b8d8378237ba84fc016fb23cc2e59cde89ed27acfa8
BLAKE2b-256 checksum
How to use checksums
f98425990b16bb0a3355c29876a6dc3d468a30a6e14ec6ecc503ebb948f9156d
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 Sep 23, 2026.

Transparency log

Release files / ultravin-3.0.1-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl

Download URL ultravin-3.0.1-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
Size 26.5 MB
Tags CPython 3.10 Linux glibc 2.17+ IBM System/390x abi3
SHA-256 checksum
How to use checksums
65dce1ea961ca19d35b1c7cdb8f8de5107638f47249cc9efae7ec6b312e471f4
BLAKE2b-256 checksum
How to use checksums
648a4b6d7a10d7d335ea4e42974b99e27b40c2a443eafab50a2e1b22202cb4a3
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 Sep 23, 2026.

Transparency log

Release files / ultravin-3.0.1-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl

Download URL ultravin-3.0.1-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Size 26.2 MB
Tags CPython 3.10 Linux glibc 2.17+ PowerPC 64-le abi3
SHA-256 checksum
How to use checksums
066cd2ccab07e031158b6d619aca34085aef2dab559b0e7cb8c3d982301ec473
BLAKE2b-256 checksum
How to use checksums
a2acaa618c9311e35db71fa32bc51f68cda861744f8c7b5022b3c10d4f072f72
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 Sep 23, 2026.

Transparency log

Release files / ultravin-3.0.1-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl

Download URL ultravin-3.0.1-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Size 27.4 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-32 abi3
SHA-256 checksum
How to use checksums
554c2dab15438c76108677d396fed5b503d7ce3f3b42e0cb1661f62d49b2c09d
BLAKE2b-256 checksum
How to use checksums
96bdbc7f0330b80a8b6810c9d390b8b28e36bd00973a478f4a1d4f0062a90475
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 Sep 23, 2026.

Transparency log

Release files / ultravin-3.0.1-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl

Download URL ultravin-3.0.1-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Size 26.2 MB
Tags CPython 3.10 Linux glibc 2.17+ ARMv7l abi3
SHA-256 checksum
How to use checksums
80b5be8d4c80d748ab00b220d5c04f800e07de5917a3de56dbb7ab31b1232685
BLAKE2b-256 checksum
How to use checksums
97385acf16181fb5ac8d441219543507a98fff19343a546fdbd6564cf2b5529e
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 Sep 23, 2026.

Transparency log

Release files / ultravin-3.0.1-cp310-abi3-macosx_11_0_arm64.whl

Download URL ultravin-3.0.1-cp310-abi3-macosx_11_0_arm64.whl
Size 26.1 MB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
05da55c207df8e2de825f1e4a2337c2a868ca47a75ea82476420a1cce368b04d
BLAKE2b-256 checksum
How to use checksums
411f0301621d52e0a1ee969cd871d7f2c7869301815d109fac988f3702c38595
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 Sep 23, 2026.

Transparency log

Release files / ultravin-3.0.1-cp310-abi3-macosx_10_12_x86_64.whl

Download URL ultravin-3.0.1-cp310-abi3-macosx_10_12_x86_64.whl
Size 25.8 MB
Tags CPython 3.10 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
ed096bbe32c61dc6a4973dc45231002e5ba280d2dcee64757136c646fa8ad7fb
BLAKE2b-256 checksum
How to use checksums
5c5c59e3bb04164ac3ce8dd1826a295e1427fbbd7c4e352f2a49d5c6fe7ec07c
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 Sep 23, 2026.

Transparency log

Security for ultravin 3.0.1

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.

Full provenance

All 17 files in this release have been uploaded with provenance metadata.

Select from 17 files

Attestation for ultravin-3.0.1.tar.gz

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 Sep 23, 2026.

Transparency log

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.

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