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 81,948 batched on 4 cores / 25,175 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.

  • ⚡️ ~0.042 ms per decode — orders of magnitude faster than the NHTSA SQL procedures (corgi, Postgres, MSSQL)
  • 🦀 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 ~82,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 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, single sequential caller, over an identical random corpus of 5,000 valid VINs (measured over 60 s; Apple Silicon, batched across 4 cores):

engine VIN/s vs ultravin (1 core)
ultravin — batched, 4 cores 81,948 ~3.3× faster
ultravin — 1 core 25,175
corgi v3 — @cardog/corgi (binary index) ~83 ~303× slower
corgi v2 — @cardog/corgi 2.0.1 (SQLite) ~33 ~763× slower
NHTSA MSSQL — spVinDecode (SQL Server) 22.5 ~1,119× slower
NHTSA Postgres — spvindecode 19.5 ~1,291× slower
NHTSA vPIC web API — public rate limit ~10 ~2,518× slower

ultravin runs in-process with the database embedded — no server, no round-trip. 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 ~1,119× 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.

License

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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ultravin-2.0.0.tar.gz (21.2 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

ultravin-2.0.0-cp310-abi3-win_arm64.whl (25.3 MB view details)

Uploaded CPython 3.10+Windows ARM64

ultravin-2.0.0-cp310-abi3-win_amd64.whl (25.8 MB view details)

Uploaded CPython 3.10+Windows x86-64

ultravin-2.0.0-cp310-abi3-win32.whl (25.3 MB view details)

Uploaded CPython 3.10+Windows x86

ultravin-2.0.0-cp310-abi3-musllinux_1_2_x86_64.whl (26.0 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ x86-64

ultravin-2.0.0-cp310-abi3-musllinux_1_2_i686.whl (26.0 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ i686

ultravin-2.0.0-cp310-abi3-musllinux_1_2_armv7l.whl (26.2 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARMv7l

ultravin-2.0.0-cp310-abi3-musllinux_1_2_aarch64.whl (25.7 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

ultravin-2.0.0-cp310-abi3-manylinux_2_31_riscv64.whl (25.8 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.31+ riscv64

ultravin-2.0.0-cp310-abi3-manylinux_2_28_aarch64.whl (25.5 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ ARM64

ultravin-2.0.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (25.7 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ x86-64

ultravin-2.0.0-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl (26.2 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ s390x

ultravin-2.0.0-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (25.9 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ppc64le

ultravin-2.0.0-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (25.9 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARMv7l

ultravin-2.0.0-cp310-abi3-manylinux_2_12_i686.manylinux2010_i686.whl (25.9 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.12+ i686

ultravin-2.0.0-cp310-abi3-macosx_11_0_arm64.whl (26.0 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

ultravin-2.0.0-cp310-abi3-macosx_10_12_x86_64.whl (25.6 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

Details for the file ultravin-2.0.0.tar.gz.

File metadata

  • Download URL: ultravin-2.0.0.tar.gz
  • Upload date:
  • Size: 21.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for ultravin-2.0.0.tar.gz
Algorithm Hash digest
SHA256 6d2c03b0920f386734affae9b9e52579e92eea765be596e3527a986a07061b13
MD5 6e6dde69a9ed3cedccc480cfd7b33804
BLAKE2b-256 1a76d58723ca8578030a52a8e850642873d11daa463d8f622d55d06c172bd0d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-2.0.0.tar.gz:

Publisher: release.yaml on blackthorn-interstellar/ultravin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultravin-2.0.0-cp310-abi3-win_arm64.whl.

File metadata

  • Download URL: ultravin-2.0.0-cp310-abi3-win_arm64.whl
  • Upload date:
  • Size: 25.3 MB
  • Tags: CPython 3.10+, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for ultravin-2.0.0-cp310-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 be36768ded6e3be0504034f7b28230ee78e033ed02675a8604a9767309e150a2
MD5 ad91fe5a38320049bbea2e4ec6b0f0eb
BLAKE2b-256 bddfe78d6b8a51aaaa7d533a02ea4875d29a23717a438b3bc1d5b33fdd258f62

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-2.0.0-cp310-abi3-win_arm64.whl:

Publisher: release.yaml on blackthorn-interstellar/ultravin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultravin-2.0.0-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: ultravin-2.0.0-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 25.8 MB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for ultravin-2.0.0-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 edb4ac6cb0d6628ece553af276090e22c207910a5fd363052457b995e7f936aa
MD5 b8b1e1e9a17b1edd7967333b9a59585a
BLAKE2b-256 6c69bfacaa0682967367b338e2fb37ab4a707dd7aee23638954bf74a0bdb225b

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-2.0.0-cp310-abi3-win_amd64.whl:

Publisher: release.yaml on blackthorn-interstellar/ultravin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultravin-2.0.0-cp310-abi3-win32.whl.

File metadata

  • Download URL: ultravin-2.0.0-cp310-abi3-win32.whl
  • Upload date:
  • Size: 25.3 MB
  • Tags: CPython 3.10+, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for ultravin-2.0.0-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 e4bb31b34f0e76afa7c94bb2bcdf4fe35ad97b1171e02e7296d2fe96a4ef39a3
MD5 eb3a67548c44495b9c78f39f44a4470d
BLAKE2b-256 d6742693b90f1e3d614af84339e627cb99f1ad3d6dd9ccd5e8762364a97bc98e

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-2.0.0-cp310-abi3-win32.whl:

Publisher: release.yaml on blackthorn-interstellar/ultravin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultravin-2.0.0-cp310-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for ultravin-2.0.0-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d1930305c80740ff3af743b85fa6b788adda70b03f8de680e2836c791183c0fe
MD5 c64166efbcd4677beef8b8a2da5c8c72
BLAKE2b-256 6d821bc67f897fa1964301e8476fc009f682d5137b80609f9e11d8b25d02d605

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-2.0.0-cp310-abi3-musllinux_1_2_x86_64.whl:

Publisher: release.yaml on blackthorn-interstellar/ultravin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultravin-2.0.0-cp310-abi3-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for ultravin-2.0.0-cp310-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 dd58839b1c9287c29291f158526f788d193e1ae71dbc2e994f6e4786e73f3d29
MD5 b7a2337df5f7c2bb672aa9a6d9b77d79
BLAKE2b-256 05614dbe01072b4cd8e0aaa261171c21f27542e4d99b7a63dee395866975d348

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-2.0.0-cp310-abi3-musllinux_1_2_i686.whl:

Publisher: release.yaml on blackthorn-interstellar/ultravin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultravin-2.0.0-cp310-abi3-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for ultravin-2.0.0-cp310-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 c07eb5064581827d6f73e46922c58d7723b3cf6b9277882370453914656d72de
MD5 427a51911d47eb6e902ea2943215582d
BLAKE2b-256 7bce3c3f1076ecf7484f107a6a9a9aad4be98939c44a99ea511174dec0a1ed56

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-2.0.0-cp310-abi3-musllinux_1_2_armv7l.whl:

Publisher: release.yaml on blackthorn-interstellar/ultravin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultravin-2.0.0-cp310-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for ultravin-2.0.0-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e1d79ecd7846a95776ce3115f9a0bfa73c1bb455c7b67e2ccd4462d44d6a9c3d
MD5 1241cf99b1cd4a0478c01b192f6caca0
BLAKE2b-256 af5dd55afd709b025fbcb503d75fc6935d0eea205bb702d98784fc7584f4209e

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-2.0.0-cp310-abi3-musllinux_1_2_aarch64.whl:

Publisher: release.yaml on blackthorn-interstellar/ultravin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultravin-2.0.0-cp310-abi3-manylinux_2_31_riscv64.whl.

File metadata

File hashes

Hashes for ultravin-2.0.0-cp310-abi3-manylinux_2_31_riscv64.whl
Algorithm Hash digest
SHA256 29d1bd88325f82d1eacd385e56b6daa8a4b700b3cc7e5ab3ce9f19dc999e11fb
MD5 55d922ecd04629c5c1b472fa4909ee27
BLAKE2b-256 23670cb27944f2695b9c5c287561a7b9c4d16d806b1faf7a5eca954556090606

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-2.0.0-cp310-abi3-manylinux_2_31_riscv64.whl:

Publisher: release.yaml on blackthorn-interstellar/ultravin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultravin-2.0.0-cp310-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for ultravin-2.0.0-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 30bd8345029f27298a768a3dba127f7556e885acef0126ba3c7befeb40eb9211
MD5 649dee2ba1f58ab464decf4e42f67abc
BLAKE2b-256 028aba29df7c6ad3cbd2aa3ab65c32826c7cc625a8091aa506c41c041b842af0

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-2.0.0-cp310-abi3-manylinux_2_28_aarch64.whl:

Publisher: release.yaml on blackthorn-interstellar/ultravin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultravin-2.0.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ultravin-2.0.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 774925f4048b2ae353f0376b23cbe07a1882275c67f58a077cfc83414a455006
MD5 e4215aa6a93931dddb839a98e8eb03e4
BLAKE2b-256 7eee74e29b3069ddfacdd6ccd56bd8f326cb9ee6a3cea67946a564d4f9d829ee

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-2.0.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yaml on blackthorn-interstellar/ultravin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultravin-2.0.0-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for ultravin-2.0.0-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 dfc350878c68dd63e809b02cec258ec2b2b40ddd8c6129ed99543991d3317fe7
MD5 cb1eb8d6308342a7d85eba842bad7e03
BLAKE2b-256 9121b8d43c490e26e0cdaacb52d727feba507db25a47da06431903de8cf5bb80

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-2.0.0-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl:

Publisher: release.yaml on blackthorn-interstellar/ultravin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultravin-2.0.0-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for ultravin-2.0.0-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 0d3250ee1d2bf5bb7e96b53ae7e1761b06904969ce7d30c5a9976c6a9098d86a
MD5 9a7df3afa504ffbd28cbd0134ea38aee
BLAKE2b-256 b8ef3ecef81f4899bed5b95670ed8733ceac8a250027598f4703c79f447d9e02

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-2.0.0-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl:

Publisher: release.yaml on blackthorn-interstellar/ultravin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultravin-2.0.0-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for ultravin-2.0.0-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 a7e36891659dd5a501670a812660c58c1c0167df089e17380b0a6c9de56a2889
MD5 e8df503d7c3d47e64b86aa44f9973640
BLAKE2b-256 a88a9e55366c05cdcab667f448d0b5cd8c05e9097d178484bd2193b6d5b35c18

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-2.0.0-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl:

Publisher: release.yaml on blackthorn-interstellar/ultravin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultravin-2.0.0-cp310-abi3-manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for ultravin-2.0.0-cp310-abi3-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 1d70a61b0cc3181aefcbcb673b6cba9e8e01dc1c3946c5e54d75adedb7b128ad
MD5 5120427231a7a34bc7c56c3d7153f1d8
BLAKE2b-256 96e525aa4f62773fcb4689c4207359ec71d7abe2f5b57b299bd7d677384b70e5

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-2.0.0-cp310-abi3-manylinux_2_12_i686.manylinux2010_i686.whl:

Publisher: release.yaml on blackthorn-interstellar/ultravin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultravin-2.0.0-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ultravin-2.0.0-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2bdc3c74adb1cd540ba5f340166b0a1fbfe5b417637595797454aa47e4f4c1a8
MD5 f99250d5b13f79bc96d768de3f48cbbf
BLAKE2b-256 2ae8b909b3713ccb58b3c3d0027ae241acd02a51c0f3207057ace9c639bf828f

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-2.0.0-cp310-abi3-macosx_11_0_arm64.whl:

Publisher: release.yaml on blackthorn-interstellar/ultravin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ultravin-2.0.0-cp310-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for ultravin-2.0.0-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 83c1bdf270c8f4759af35d52993390d3e71d2f7f062270dc61a9b3e43e18cb3e
MD5 77a2d3fb6345520be6bed99fb55aeea0
BLAKE2b-256 057cc6547e285783ce654e349d903dce0a975a35675da62525c71079ad7d9729

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-2.0.0-cp310-abi3-macosx_10_12_x86_64.whl:

Publisher: release.yaml on blackthorn-interstellar/ultravin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

2.1.1

17 files

2.1.0

17 files

2.0.1

17 files

This release

2.0.0 This release

17 files

1.2.0

17 files

1.1.0

17 files

1.0.4

17 files

1.0.3

17 files

1.0.2

17 files

0.0.7

17 files

0.0.6

17 files

0.0.5

17 files

0.0.4

17 files

0.0.3

17 files

0.0.2

17 files

0.0.1

17 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