Skip to main content

ultravin

CI Status PyPI Version License

An extremely fast, fully offline NHTSA vPIC VIN decoder, written in Rust.

VINs decoded per second: ultravin 130,381 batched on 4 cores / 45,376 single-core vs corgi v3 83, corgi v2 33, NHTSA MSSQL 22.5, NHTSA Postgres 19.5
VINs decoded per second over a random corpus, single sequential caller — ultravin also batches across cores.

  • ⚡️ ~45,400 VIN/s on one core — orders of magnitude faster than the NHTSA SQL procedures
  • 🦀 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
  • 🎯 Byte-for-byte parity with vPIC's spVinDecode, verified across every decodable VIN — except documented vPIC defects, which ultravin deliberately does not reproduce (the registry, evidence)
  • 🐍 Installable via pip, with a CLI and a library API
  • 🧵 Batches in parallel to ~130,000 VIN/s on 4 cores
  • 🗃️ Parquet in, parquet out — decodes a dataset of any size in the memory of one chunk

ultravin is a faithful port of NHTSA's spVinDecode — the SQL procedure behind vPIC — reimplemented in Rust and verified against the reference Postgres implementation. Because the vehicle database ships inside the binary, decoding needs no network, no database server, and no 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)

r["elements"][0]  # {'variable': 'Make', 'value': 'HONDA', 'source': 'Manu. Name', …}

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 — every command emits JSON:

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 version

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

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.

For a parquet source, rows stream through in batch_size-row chunks with the GIL released, so peak memory is one chunk no matter how large the source is. For an Arrow source the producer decides the input chunking, and batch_size only sets the parquet row-group size of to_parquet. Reading and writing parquet is the same Rust as the decoding, so the parquet 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. ultravin was measured on September 8, 2026, over a random corpus of 5,000 valid VINs on an Apple M1 Max: medians of three 60-second runs after warming the full corpus, with batches capped at four cores. The other engines retain their earlier comparison figures:

engine VIN/s vs ultravin (1 core)
ultravin — batched, 4 cores 130,381 ~2.9× faster
ultravin — 1 core 45,376 1×
corgi v3 — @cardog/corgi (binary index) ~83 ~547× slower
corgi v2 — @cardog/corgi 2.0.1 (SQLite) ~33 ~1,375× slower
NHTSA MSSQL — spVinDecode (SQL Server) 22.5 ~2,017× slower
NHTSA Postgres — spvindecode 19.5 ~2,327× slower
NHTSA vPIC web API — public rate limit ~10 ~4,538× slower

ultravin runs in-process with the database embedded — no server, no round-trip. These measure the Rust engine on a shared host. Python output construction and parquet I/O have separate costs. The paired benchmark report records a 1.55× single-core and 1.43× batch improvement, with startup and memory tradeoffs. The corgi figures are derived from its project's published per-VIN latency (~12 ms v3 / ~30 ms v2, not re-measured here). The NHTSA Postgres and MSSQL oracles run the unmodified spVinDecode over localhost; MSSQL is SQL Server under amd64 emulation on Apple Silicon, so its number understates native hardware — ultravin is still ~2,017× faster. The NHTSA vPIC web API row is its published ~10 req/s rate limit, not a decode time — a hard ceiling regardless of hardware. Methodology and reproduction: docs/BENCHMARKS.md.

Documentation

  • Vision — what this is, and what it deliberately is not
  • Benchmarks — the numbers, the methodology, how to reproduce them
  • 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 2.1.2

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 2.1.2
File Size Uploaded Provenance
ultravin-2.1.2.tar.gz 21.2 MB With provenance Details

Built distributions (wheels)

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

Total release size: 435.1 MB

Release files / ultravin-2.1.2.tar.gz

Download URL ultravin-2.1.2.tar.gz
Size 21.2 MB
Tags Source
SHA-256 checksum
How to use checksums
88b5391a9d22e7edbb68a5f899e29942803d2b8436350b179f33b745958a9ef0
BLAKE2b-256 checksum
How to use checksums
cacab1def8a672e5cf787b10adcd8f2cd93eca6945f59297b14f7f6c69da187a
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 8, 2026.

Transparency log

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

Download URL ultravin-2.1.2-cp310-abi3-win_arm64.whl
Size 25.3 MB
Tags CPython 3.10 Windows ARM64 abi3
SHA-256 checksum
How to use checksums
72ae38b1b0fb65d61ad52e2367db3f0fd62097ef6477fa0732b6826dc1696774
BLAKE2b-256 checksum
How to use checksums
b534594a127e91c26778f0cc14037931b9945bae086b0a801dc332ca11918dc9
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 8, 2026.

Transparency log

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

Download URL ultravin-2.1.2-cp310-abi3-win_amd64.whl
Size 25.8 MB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
13e31b03a47b38bc484a62970df5bc72c71b459a909dde1b3a5e08ffc9e44781
BLAKE2b-256 checksum
How to use checksums
e872725d5239ab7ddef232d9f80cc1374c1548d503c11cda3e20b65514e19a9e
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 8, 2026.

Transparency log

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

Download URL ultravin-2.1.2-cp310-abi3-win32.whl
Size 25.2 MB
Tags CPython 3.10 Windows x86-32 abi3
SHA-256 checksum
How to use checksums
c02e8040f1142a2e6263a8503f40d9ee2b8b426ac0d7215f90b75de13fa09384
BLAKE2b-256 checksum
How to use checksums
180e65bd75fc7de1c37f78d9070b4234c41d59830b548d3c2d95e0fb259f7589
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 8, 2026.

Transparency log

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

Download URL ultravin-2.1.2-cp310-abi3-musllinux_1_2_x86_64.whl
Size 26.0 MB
Tags CPython 3.10 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
a369e957886aedcd67ff310b261b6c9c8d1c3cf950cab70735d18ef6a9c0a529
BLAKE2b-256 checksum
How to use checksums
a481240189845032ff9f0b22b5550851e5c0a8eac9dcf0376a48686d63a8ac08
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 8, 2026.

Transparency log

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

Download URL ultravin-2.1.2-cp310-abi3-musllinux_1_2_i686.whl
Size 26.0 MB
Tags CPython 3.10 Linux musl 1.2+ x86-32 abi3
SHA-256 checksum
How to use checksums
87c3e97878406bdf0b7de289ccacb1cd992c72ea22ae18b1903612fdeb78026c
BLAKE2b-256 checksum
How to use checksums
96fed821e03e7c332f93bb882a429d6d30d6c90414f820f599a07390ea2cf9d2
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 8, 2026.

Transparency log

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

Download URL ultravin-2.1.2-cp310-abi3-musllinux_1_2_armv7l.whl
Size 26.2 MB
Tags CPython 3.10 Linux musl 1.2+ ARMv7l abi3
SHA-256 checksum
How to use checksums
be4243120347a8f4cee6750075e4b434ca31212550ee121bc77d194af7e03a5d
BLAKE2b-256 checksum
How to use checksums
936c91a0561b184fff2ee5d5a3dc115b931c25e6ddb54a6d7bd2e9980ea32422
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 8, 2026.

Transparency log

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

Download URL ultravin-2.1.2-cp310-abi3-musllinux_1_2_aarch64.whl
Size 25.7 MB
Tags CPython 3.10 Linux musl 1.2+ ARM64 abi3
SHA-256 checksum
How to use checksums
3c52f427e39dcfe99e10723588bb873981516ce5c6a4d890d5c6666181e727cc
BLAKE2b-256 checksum
How to use checksums
9a0145479dbf01167e0691e45649e842a96962b7e5e8b635343ea3ceba21cf25
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 8, 2026.

Transparency log

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

Download URL ultravin-2.1.2-cp310-abi3-manylinux_2_31_riscv64.whl
Size 25.8 MB
Tags CPython 3.10 Linux glibc 2.31+ RISC-V 64 abi3
SHA-256 checksum
How to use checksums
359ca2d5b854be48b6cff5a491e36da0a6a23c4247d7d343153133617206cda2
BLAKE2b-256 checksum
How to use checksums
8e22052c56c4289ed1a105441e688afce595daa8813de31b0308b599d0d02586
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 8, 2026.

Transparency log

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

Download URL ultravin-2.1.2-cp310-abi3-manylinux_2_28_aarch64.whl
Size 25.5 MB
Tags CPython 3.10 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
438182e7f209561e5575bc5372a6fd6901eca6290235242cdf2a0acb10ba1f4c
BLAKE2b-256 checksum
How to use checksums
6703e7ba02d35385ed5b6adf5f9b66c573200ee3347dad93e6ac1a1f28f9d278
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 8, 2026.

Transparency log

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

Download URL ultravin-2.1.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 25.7 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
8d9d05072adbd76e5d74539559d0f11c7e4c6ca42eebe6dad63e1ab0c4709bd4
BLAKE2b-256 checksum
How to use checksums
eebf4224bcfb24a1ba0ef47e00600315322c1f641f05249256cc832a08b0e8ed
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 8, 2026.

Transparency log

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

Download URL ultravin-2.1.2-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
Size 26.3 MB
Tags CPython 3.10 Linux glibc 2.17+ IBM System/390x abi3
SHA-256 checksum
How to use checksums
3ae8ac8f1447815947f35f68d97fae355cef2ad5fb54ba6ce6f19ac5dc669043
BLAKE2b-256 checksum
How to use checksums
e836d1e9bef2537bbff3e426d3b431eaf2093cc2df15b61a13b5c8590a8c34e6
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 8, 2026.

Transparency log

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

Download URL ultravin-2.1.2-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Size 25.9 MB
Tags CPython 3.10 Linux glibc 2.17+ PowerPC 64-le abi3
SHA-256 checksum
How to use checksums
991b36cf1bb1ee015c00bdb7bcb4e48b65d7df2555f85997bbea972368866572
BLAKE2b-256 checksum
How to use checksums
2dfa8aba5731fe5a95c2b5ee29836eb6cde9659ce9f40f9976602c463711c1f2
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 8, 2026.

Transparency log

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

Download URL ultravin-2.1.2-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Size 27.1 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-32 abi3
SHA-256 checksum
How to use checksums
ce73640cff2cd9ab0a57bc4a901646b804cc82654381b3692fbfd37e065b32fc
BLAKE2b-256 checksum
How to use checksums
084d76de5e3a300edfa19a54e20ce982ea25ac80ad689cfe6427ba83e1f5886f
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 8, 2026.

Transparency log

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

Download URL ultravin-2.1.2-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Size 25.9 MB
Tags CPython 3.10 Linux glibc 2.17+ ARMv7l abi3
SHA-256 checksum
How to use checksums
6cebfd9d32192f069179ef6f76e603e161e0fea1531365461f4cf8c567d62e98
BLAKE2b-256 checksum
How to use checksums
b0475932042bed77c911438ca341faa32319ee3ab03ed3607c0cb857acf2c4d7
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 8, 2026.

Transparency log

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

Download URL ultravin-2.1.2-cp310-abi3-macosx_11_0_arm64.whl
Size 25.9 MB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
79fe33f988b9ffa03ee7ed4f6100a9aa054de4e8e69545d04d60c3cc85079376
BLAKE2b-256 checksum
How to use checksums
b62c5554c103db29468f13d5516357da534a4dcd06ff0245202abc557c419039
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 8, 2026.

Transparency log

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

Download URL ultravin-2.1.2-cp310-abi3-macosx_10_12_x86_64.whl
Size 25.6 MB
Tags CPython 3.10 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
e04137a815bc3a897e7283c92c0509ec2c165ea1f27af03a2e94d61a336848c8
BLAKE2b-256 checksum
How to use checksums
02ed62862e95601fe01c16ec2136aff616e461303e0aad7f5a40efdc83c3a5a9
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 8, 2026.

Transparency log

Security for ultravin 2.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.

Full provenance

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

Select from 17 files

Attestation for ultravin-2.1.2.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 8, 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