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 94,030 batched on 4 cores / 29,568 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.038 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 ~94,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, 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 94,030 ~3.2× faster
ultravin — 1 core 29,568
corgi v3 — @cardog/corgi (binary index) ~83 ~356× slower
corgi v2 — @cardog/corgi 2.0.1 (SQLite) ~33 ~896× slower
NHTSA MSSQL — spVinDecode (SQL Server) 22.5 ~1,314× slower
NHTSA Postgres — spvindecode 19.5 ~1,516× slower
NHTSA vPIC web API — public rate limit ~10 ~2,957× 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,314× 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
  • Corporagenerate, 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.

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.1.1.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.1.1-cp310-abi3-win_arm64.whl (25.3 MB view details)

Uploaded CPython 3.10+Windows ARM64

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

Uploaded CPython 3.10+Windows x86-64

ultravin-2.1.1-cp310-abi3-win32.whl (25.2 MB view details)

Uploaded CPython 3.10+Windows x86

ultravin-2.1.1-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.1.1-cp310-abi3-musllinux_1_2_i686.whl (26.0 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ i686

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

Uploaded CPython 3.10+musllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.10+manylinux: glibc 2.31+ riscv64

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

Uploaded CPython 3.10+manylinux: glibc 2.28+ ARM64

ultravin-2.1.1-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.1.1-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.1.1-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.1.1-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl (27.1 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ i686

ultravin-2.1.1-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.1.1-cp310-abi3-macosx_11_0_arm64.whl (26.0 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

ultravin-2.1.1-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.1.1.tar.gz.

File metadata

  • Download URL: ultravin-2.1.1.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.1.1.tar.gz
Algorithm Hash digest
SHA256 39e2a9927ba868cafa18882f472a6d92427f254251149192e07a0a40ccaae4e3
MD5 9b73c00cbaebdedb618d0bd7092ef72b
BLAKE2b-256 92c8bb60815d40d5d01b5b2135b21d05726fccfcded1e67d103ab760de533d73

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-2.1.1.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.1.1-cp310-abi3-win_arm64.whl.

File metadata

  • Download URL: ultravin-2.1.1-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.1.1-cp310-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 b8c6275337633eeddb7cbb8b1c740c46a33d91a45647dd494c995e2badc9602f
MD5 a6f6521cbc9574b8b06240d309eb0ae4
BLAKE2b-256 a35d9870159e3bdc0b8d6b4c18c980253ab7c80e76c7d7277f7f51609de35040

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-2.1.1-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.1.1-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: ultravin-2.1.1-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.1.1-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 fc9f7d8fa0077267f89045a1532a4d5dfba88c5e59c3ba345c5cb88669062f8f
MD5 a5275a389871e9528272ceb4a59bfcbe
BLAKE2b-256 4c57d7db07f411a7756af4291e1ed5f5e010814a0c690c8b7983fce28a65922f

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-2.1.1-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.1.1-cp310-abi3-win32.whl.

File metadata

  • Download URL: ultravin-2.1.1-cp310-abi3-win32.whl
  • Upload date:
  • Size: 25.2 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.1.1-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 e97dc70b9e668c5b177127c20fbf38a4a31e54a0b0df601e8d49e9a37b66baa7
MD5 2405925f298917bd349ab62a3ff2a128
BLAKE2b-256 87546af66490ddb90e275e225be86073ac7e5c5c55b4a067acf74e3a9aa0ec72

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-2.1.1-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.1.1-cp310-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for ultravin-2.1.1-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3f803069757f8f0391910a1db4234d6c9caacd268e4ba14f30c316c87c385a7f
MD5 e094def9ccb7e473671c0ba9dd1e2b54
BLAKE2b-256 dd062c4d79a09fb81da7bd3932e8aead56c8ece6965bb12c891eedd6b276dd3d

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-2.1.1-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.1.1-cp310-abi3-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for ultravin-2.1.1-cp310-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 892a6de064b90b78456626f50a52e30857950bb9ac049cc9751467af2aedf42e
MD5 6ae9343798d55996032418257ae9f572
BLAKE2b-256 729c2fe5d9f611b48eb66ceed9a662ee15f6da4777f93c065406c5f74372e2bf

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-2.1.1-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.1.1-cp310-abi3-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for ultravin-2.1.1-cp310-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 e67f0ea773f3dcaefd8194fb3b0eace608ba0355ee95822fdf90655a109ba22c
MD5 4aab569c85f0ffaaa37a59277036a1bf
BLAKE2b-256 56ab94261f9c387e659dd451fbe6665ae4224f387be3eb7213553f7d046e7ec8

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-2.1.1-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.1.1-cp310-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for ultravin-2.1.1-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 8cc36debb553f30bca098e7d7756e6065cd5701cf900c46614ecace4c2980158
MD5 2b2cdad8c451ed689f114f6f64ad19c3
BLAKE2b-256 e74fca015e78dde69f3ef553537d46fdff8ea04d1997e02778d1685c8269bbfa

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-2.1.1-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.1.1-cp310-abi3-manylinux_2_31_riscv64.whl.

File metadata

File hashes

Hashes for ultravin-2.1.1-cp310-abi3-manylinux_2_31_riscv64.whl
Algorithm Hash digest
SHA256 c4abcc46106f4d414375fb6b78bc766c9a78b58ef0ece6c35220464f979e9ad1
MD5 5ae6e6756b227c02eb707a5eba9a2c93
BLAKE2b-256 af1cc748e9af6a1b30ec4f35b4fad1de84450559bda27dd295ae85c89feeeb7f

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-2.1.1-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.1.1-cp310-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for ultravin-2.1.1-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 10893c952345006b8c80a9c3b93f23ed7c24bd2bfe0e0d0a4f5dd4152267ff76
MD5 d376c7ba45e28d125d9573b6081c22cb
BLAKE2b-256 15db3b938e30bedf97e13e5741248cf364ede182f7cde8568a8de3ec89a430dd

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-2.1.1-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.1.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ultravin-2.1.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ced6a24ea9cfe8807b693bafb4f9a1148fddd88b0c3790a725e79cb175b8f378
MD5 161699a08713a9f05f59c8ea2503943f
BLAKE2b-256 a4858fb3b7b94282ff2934e53235b93f7ce32ba2b12a8e1cfc6274d973bd1cfa

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-2.1.1-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.1.1-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for ultravin-2.1.1-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 858ed79c4f30ea288cae937fed9dac6252f640d8d677684bc85c8d62e98c2913
MD5 6f76e79922c0e53952aee49b4e9c3b8b
BLAKE2b-256 a1bf1917d8a1ab6cebc838b0104e0de859ce10b1ae3c0e3f284a9c72cc02ad3d

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-2.1.1-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.1.1-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for ultravin-2.1.1-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 b6c4bc89f70b888f70e3f7df8fe7485499659d1b889928d0fe06fbccd329a357
MD5 dc31db14b36615421ce37e430efa5be4
BLAKE2b-256 0153fc9f2bafc3cbfc0273fbe173caccc3528e7c1267358b38d7e8df261cafea

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-2.1.1-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.1.1-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for ultravin-2.1.1-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a81d426ef5f08c8515a49e4dd66af88009d4f0d06fd8b6bfab1e9b5c9a87bd92
MD5 4cfa0d974087f1830c02490b82dbc435
BLAKE2b-256 aeecc5e212e06bc47cc252bc78f2d0c03cf311a92fffe568eded701a8187c1ce

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-2.1.1-cp310-abi3-manylinux_2_17_i686.manylinux2014_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.1.1-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for ultravin-2.1.1-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 4313a57e06a7ef9fd20b5649ae99c8fb048aa7e5944ef72df5fca2ad50632de5
MD5 40a3741d6896611b8b41857cd2440c16
BLAKE2b-256 a9c61ac6acb68a8de5ccbc2c56e28a60a4e0da3a7c664baca09a9c5c38a0e77a

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-2.1.1-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.1.1-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ultravin-2.1.1-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5c5d6ca4fa231decdc6d654b5490c7f9a0a2a54fb2feedb665afd3cd781874a3
MD5 45c39809b2b19489d0d95f257f3b3b5e
BLAKE2b-256 f1cd3a471b9559416da6ed64abb42d978a35cea92a118158d7ae748dc640eeaf

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-2.1.1-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.1.1-cp310-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for ultravin-2.1.1-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9db277bbebcfd630a194977bae67cde2f1704bcfe7fe7c2eb1dd558887e59826
MD5 a3f3d384a75a9c8f9b101bd453fd7bef
BLAKE2b-256 2c525a1b240dc1ed9d696143d76ee2e78a370eb07076155841cc99838076b31d

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-2.1.1-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

This release

2.1.1 This release

17 files

2.1.0

17 files

2.0.1

17 files

2.0.0

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