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 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.

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

Uploaded CPython 3.10+Windows ARM64

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

Uploaded CPython 3.10+Windows x86-64

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

Uploaded CPython 3.10+Windows x86

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

Uploaded CPython 3.10+musllinux: musl 1.2+ i686

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

Uploaded CPython 3.10+musllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.10+manylinux: glibc 2.31+ riscv64

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

Uploaded CPython 3.10+manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.10+macOS 11.0+ ARM64

ultravin-2.1.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.1.0.tar.gz.

File metadata

  • Download URL: ultravin-2.1.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.1.0.tar.gz
Algorithm Hash digest
SHA256 a0daa21b7809e1a845e820d78cf185e1d18aa98e7a114ba558bafea1799d959f
MD5 cfe5e3f34cfe714ed8dbab44ed562f00
BLAKE2b-256 eba34945d0a82883f243c1a06b82c7f86dd2212d00bc7b9e013691dd88999fea

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ultravin-2.1.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.1.0-cp310-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 84fecaf19e604d63e3bc896f762c5502852fb32862ae049a4a60535304fe1544
MD5 cf7bd7c08be2efe3f82871db9e5e1428
BLAKE2b-256 72310224439eb1bf72f4ccd5dff67ccb9efe9ef465bf69404d5838130172596d

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ultravin-2.1.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.1.0-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 167cfd6c80edec5f76a0408ac669eb3d7b1379160277ca98dcbbc6a63fc0263d
MD5 1320ec59f03cba3df1e03c7daeb82279
BLAKE2b-256 068ae42af44498c37eaa8fabf71bacbe835d09df1f5cc394d2d2da9c79047206

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ultravin-2.1.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.1.0-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 415fac7cb6cd8269ac3e5960c1bb910139c60b068bc95cd241f54a8c8cd59ccf
MD5 4863f1c7e2f7d60e881f69bfa72baa88
BLAKE2b-256 cb31f0b72254a4c800113c668b7df1690f7e86d8b5f11cce8c360037d064c497

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ultravin-2.1.0-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 021093c6d724e6174e52b1b58fd6abbcdc4d610aa74c2045ea13e5289fdd8b83
MD5 f30c5865972d53fb2035ae24eeba5bca
BLAKE2b-256 d230aaea18e1d12449dd0cc51c8ee61607bee21a893a1b2e424049f0ede551c3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ultravin-2.1.0-cp310-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 f00336581cc926dabafff25db404a79c4630cee93439fd4b8d28731bbc7a41d8
MD5 41c820d2e0e18a0ee6c15634bff7152f
BLAKE2b-256 90bba353754758d6538271f9654248bb5a1ebfe7599abf0a012ce0b736b2f76d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ultravin-2.1.0-cp310-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 dc19912278c7c4057a322306e9adae3e025094eb8a290556c31cc00f2bcdc6e2
MD5 4cc89de67287938e0d736b6f0a0affce
BLAKE2b-256 d3cf90e2bcc531a0b2fac61554db908bdc9b0b20c1dc4c3661efd702e86b07bb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ultravin-2.1.0-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f3e9a3bff2c32959a7204f8b586f6424ba19c3cfb104be19d4c109ed76126917
MD5 23b3f803e7f186601154de69415f78d9
BLAKE2b-256 f14a8a375fab9cacb6d4aa5b5404395c4d82c91c9a05bd98a555c12aa357ea52

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ultravin-2.1.0-cp310-abi3-manylinux_2_31_riscv64.whl
Algorithm Hash digest
SHA256 cb433c27464847763661e1912dac83cf7afa6a44ae16c911f837fe95392795f0
MD5 2517294e08fa9a853cec8a8a9cf7a36d
BLAKE2b-256 f7b0e21e6d2bd3cd638e3a53241470e4ef7c70c0e32ac70319820d24b1057b0f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ultravin-2.1.0-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ae64469903dca034b9fcad8da06dcdcbfd15a74999f97f1ea4594e4579411562
MD5 f13ce8272bdb0555f7635a2f87afb3fb
BLAKE2b-256 706b791c61b475b02073c8150082f79e7bc946d8ae83fb4eb8b16f125bd8964f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ultravin-2.1.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cad61189cee09f1105c125e20b41935b91c6e687d9fc63ff7b016e271519a25a
MD5 31761e7734e007ef7bacee5beaff543a
BLAKE2b-256 8b0a11b903939fcf021d8ea0e795e169c7a0abadb0a4d930d69128c2989db711

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ultravin-2.1.0-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 4ec585e4ee359bc5959ac350c5b368ee06b894b875ec86ae582a00d8de3b48f6
MD5 8b03f157ca8e8ab71151d91f142c0f08
BLAKE2b-256 2ef4cf9c225de1e76718123ca205d01299e01e6f67374af8726764e48fe1c376

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ultravin-2.1.0-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 0c0d5c78e3ea6c94d2daf42afbc91e6436c9cb52512ef446a027141bc5e6f47b
MD5 37b7e9b0f5225055441ae85711712850
BLAKE2b-256 91b8145e4b845eed4599a6003f96daa17c2d2984f5af7a2d5114a81619f196c9

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-2.1.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.1.0-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for ultravin-2.1.0-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 e5fdbf119aacae3f727807a42870d7d087d6c673f71d4a710cc854cfdb1b6fc7
MD5 91e3b09393bbcfe3d9b97ab5c8bb8114
BLAKE2b-256 137462e79844ff72b0bce5c7639f21786b2c058ccd969609278996a062499daf

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-2.1.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.1.0-cp310-abi3-manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for ultravin-2.1.0-cp310-abi3-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 2cf3dda1c7f572cd71fb490b7d334fe3a5e1c0b04366b70ba13d9c226b59a8cd
MD5 5a1276c5d03d5e8385447b05317d4afe
BLAKE2b-256 ee4234f78c0343c9ce94c48910b8c62f9ceb2cdb2b16c4d4f5a0c8e26a879bc3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ultravin-2.1.0-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 271cdae456c5b18109b9e9e1cf68afe8614a1254521324d0747e0e0818422571
MD5 d83940ad17c30c402355b5ae71034d80
BLAKE2b-256 fa34a7e13cac411be0f62d24f6af2721bcdcb15288df264f44f9f7cdcf008827

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ultravin-2.1.0-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 acdb6536f4005efc50899bfd472430786d925f0b718d5b27af19df7a8d02f756
MD5 70e772e426d6806c7de152d83d0fd438
BLAKE2b-256 66a81e3c5e8f114275ad8a0932300b196c89e4d2fdf1fee6b0e91952aa81e828

See more details on using hashes here.

Provenance

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

This release

2.1.0 This release

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