Skip to main content

Pure-Rust NHTSA vPIC VIN decoder — CLI + library, with spVinDecode parity.

Project description

ultravin

CI Status PyPI Version License

A fast, pure-Rust NHTSA vPIC VIN decoder shipped as a Python library. It's a faithful port of vPIC's spVinDecode — byte-for-byte parity with the reference Postgres procedure, verified across every decodable VIN. The vehicle database is baked into the binary, so decoding is fully offline: no network, no database, no data files.

Install

pip install ultravin

Prebuilt wheels require Python 3.10+; nothing else (the data ships inside the wheel). From source you'll also need a Rust toolchain:

pip install .          # or: make build-dev  (maturin develop into a venv)

Use it from Python

import ultravin

r = ultravin.decode("1HGCM82633A004352")

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

# `elements` is the full decoded attribute list; index it by variable name:
attrs = {e["variable"]: e["value"] for e in r["elements"]}
attrs["Make"]           # 'HONDA'
attrs["Model"]          # 'Accord'

decode(vin) returns a dict with keys vin, wmi, descriptor, model_year, error_codes, check_digit_valid, corrected_vin, and elements — a list of per-attribute dicts (group_name, variable, value, element_id, source, …).

Decode many at once:

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

Use it from the command line

ultravin decode 1HGCM82633A004352          # human-readable table
ultravin decode 1HGCM82633A004352 --json   # full JSON
ultravin decode-batch vins.txt --json      # one VIN per line
ultravin version

Benchmarks

Warm decode of the same VIN (1HGCM82633A004352), lower is faster:

Warm decode latency: ultravin 0.20 ms vs corgi v3 12 ms, corgi v2 30 ms, Postgres 62 ms

Decoding on Apple Silicon. ultravin runs in-process with the database embedded; the others are listed for reference.

engine warm decode VIN/s (single stream) vs ultravin notes
ultravin (Rust, in-process) ~0.20 ms (203 µs) ~4,900 data embedded; ~1.3 ms cold start; ~31k VIN/s batched on 10 cores
corgi v3 — @cardog/corgi (binary index) ~12 ms ~83 ~59× slower project's published figure
corgi v2 — @cardog/corgi 2.0.1 (SQLite) ~30 ms ~33 ~148× slower project's published figure
NHTSA spVinDecode (Postgres) ~62 ms ~16 ~300× slower full SQL round-trip over localhost

ultravin decodes a VIN ~60× faster than corgi v3, ~150× faster than corgi v2, and ~300× faster than the reference Postgres procedure — with the whole vehicle database embedded (≈19 MB compressed in the wheel) and no DB or network at runtime.

VIN/s above is single-stream (one sequential caller, ≈ 1 ÷ warm decode); ultravin additionally batches in parallel to ~31,000 VIN/s on 10 cores.

The corgi figures are its project's own published numbers (not re-measured here); ultravin and Postgres were measured locally. Full methodology, baselines, and reproduction steps are in BENCHMARKS.md.

Project details


Download files

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

Source Distribution

ultravin-0.0.2.tar.gz (20.9 MB view details)

Uploaded Source

Built Distributions

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

ultravin-0.0.2-cp310-abi3-win_arm64.whl (21.6 MB view details)

Uploaded CPython 3.10+Windows ARM64

ultravin-0.0.2-cp310-abi3-win_amd64.whl (21.7 MB view details)

Uploaded CPython 3.10+Windows x86-64

ultravin-0.0.2-cp310-abi3-win32.whl (21.6 MB view details)

Uploaded CPython 3.10+Windows x86

ultravin-0.0.2-cp310-abi3-musllinux_1_2_x86_64.whl (22.1 MB view details)

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

ultravin-0.0.2-cp310-abi3-musllinux_1_2_i686.whl (22.0 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ i686

ultravin-0.0.2-cp310-abi3-musllinux_1_2_armv7l.whl (22.0 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARMv7l

ultravin-0.0.2-cp310-abi3-musllinux_1_2_aarch64.whl (22.0 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

ultravin-0.0.2-cp310-abi3-manylinux_2_31_riscv64.whl (21.8 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.31+ riscv64

ultravin-0.0.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (21.8 MB view details)

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

ultravin-0.0.2-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl (21.9 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ s390x

ultravin-0.0.2-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (21.9 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ppc64le

ultravin-0.0.2-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (21.8 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARMv7l

ultravin-0.0.2-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (21.8 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64

ultravin-0.0.2-cp310-abi3-manylinux_2_12_i686.manylinux2010_i686.whl (21.8 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.12+ i686

ultravin-0.0.2-cp310-abi3-macosx_11_0_arm64.whl (22.4 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

ultravin-0.0.2-cp310-abi3-macosx_10_12_x86_64.whl (21.8 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for ultravin-0.0.2.tar.gz
Algorithm Hash digest
SHA256 fb93aa198f34301b53b508d950c8008c62820de45e819a4da9c5f1abd78fc178
MD5 40e33e36c1ee1adb17c920528a607c01
BLAKE2b-256 e5aae24b4ceb437bb587353959b61079a150f8b7ddb9ec94d0e10e7e0c284a53

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ultravin-0.0.2-cp310-abi3-win_arm64.whl
  • Upload date:
  • Size: 21.6 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-0.0.2-cp310-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 de0a9549bbd2d0335f4cece3dba404c1e2abab50f1d61c59764a4d3e845d8276
MD5 3826e70a01dc256e905e6e7c1d4db30d
BLAKE2b-256 b7d91d5608a92de19b306237b7fc3f36983250a1e51cf6b950e5f4e26727e17a

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ultravin-0.0.2-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 21.7 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-0.0.2-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 a78be1768bfb1bb9b683b7b7ed306877411581f0bf53edcf8beabdcbe6ee1754
MD5 cc169501e58eef485843615a58de5788
BLAKE2b-256 4b8536dc36519007afe6af64908360975d943d1b9892513e441d9e41ba617413

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ultravin-0.0.2-cp310-abi3-win32.whl
  • Upload date:
  • Size: 21.6 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-0.0.2-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 0071bade43dca42fc21f90acc1c9b360f13dbdf6fb7939da105f33bd9c4b9705
MD5 00a218e3077a566579fd4c2b72573e95
BLAKE2b-256 0c7b1bbf4f73e14937ad8628465f2458d711f2b2d38bff0a2ff9a54f97e1d066

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ultravin-0.0.2-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 bea46efa806770f6e6f72bb25baeb8f9339dc0ced33f176b45147f3dddb72416
MD5 0fe98dbf342e90052e6f956eaf1c2c1e
BLAKE2b-256 aee96bc96d04a5c01344062436b180794a3481b613fd7a3a48b04bb3ab6a2e78

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ultravin-0.0.2-cp310-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 7b18b9c4c3748207f0b7bea5ee4c3daf40dbd51e8364f5f2ef3b5e00b348bb58
MD5 8fa4b3fe21b5ee8bfd76c88c9945b280
BLAKE2b-256 abf01333ed63dd6bffbd3668a777779207a62206b0b76665b6b97c36597974f4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ultravin-0.0.2-cp310-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 270740a93dab4fb8890ea544814a09ea3de05aece6309bad68d02f246db0cde7
MD5 a9fd664a9455fa19e1682d4014e35b1c
BLAKE2b-256 af901ade7666982a1104f2faced9524440c5fd245b4735e670b298fad9930fb2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ultravin-0.0.2-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 b5d46ea02840c22738f0e94440e72132cee5abdaf00b635fa97c00f1e481b054
MD5 6eb28057567341a3e3787e73bca2f9ab
BLAKE2b-256 977463d6f8918605ebe252788305cd37d236ee61d5553fd99b97c28af245d5d8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ultravin-0.0.2-cp310-abi3-manylinux_2_31_riscv64.whl
Algorithm Hash digest
SHA256 78c6aebfa2e2b14050e1df4c4c2b24b7a0e9cfbffd0c36b70185af5a54a48861
MD5 b8eeb8a5994076cace7f0afc53dca4bd
BLAKE2b-256 010b687c10306f43c828145dd8d4d1c0fe3247fac103b1ab123c426663d48ab4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ultravin-0.0.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c23ca5ec018c6ef5bedf5939fdf9e1c4d931fb4b1dcb38d69757bc13975f7b3d
MD5 e504e845538b472abcbfaf223f8c0177
BLAKE2b-256 4bcc7de8c62519b3594a8989a7bade4f320e87bdfd4685843e103dd2b90201fe

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ultravin-0.0.2-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 23ab0b7400f22b5314f179c027d017d57d4e1f7de710286ce0514c11930f92b7
MD5 f7044dffba65518e2a28ef578707cd5b
BLAKE2b-256 bc8e480fb837aa79f44cafd2ca382dca9658e813fafbd154c739665945d31257

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ultravin-0.0.2-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 0ffdbe4ae32f64ac4a88c324b9e4de0f5111c1098646142c62b8d9b271456cbd
MD5 6278bccd4f698a61d2e57161f7404593
BLAKE2b-256 b2aa2d304776ea73f16a462f972291406a910a72f511019f9f1869b9d29cc1bc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ultravin-0.0.2-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 dd6bb306723884856dc1f00861b800b3919eefa8ec95726fd9eb5fd4501bcd75
MD5 9cfacd2218fa77a1650f67358d620e69
BLAKE2b-256 7454e249b4fcf942cff4b9025a9cb6662e2ffff772de159e84ce40c133ec6c01

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-0.0.2-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-0.0.2-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ultravin-0.0.2-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ee802d175c37b0cdaf3e2d74146eb3c3c51811ecccf9b29e25423583afc11540
MD5 700633287957b662c17b6c56aa884377
BLAKE2b-256 5394d1b891e7469757e3b4bb2abed577f247deeef293c21b73b42995fc0a7166

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ultravin-0.0.2-cp310-abi3-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 d9ecb8de5dc36bd05d5c58376be7112439be2f7d0c0c26d86dfb9adf3f8fcaad
MD5 eee01c60c16fdfaaf44478db07f41ab3
BLAKE2b-256 c6fb32746a555aab8061362192633e63f89e73d1551cba36d38ddb7e090fba3a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ultravin-0.0.2-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9b8f92babd34cd37b8a57a2bed9edbd353bbfa798b11d0263bca1b54dd3395f8
MD5 5724c3f2c8a9eb861f431478ce1e92b4
BLAKE2b-256 e5cca76c34e18f7f3fac7f888ddbd2e7e41f61e26499c8cd7d90480f73a05441

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ultravin-0.0.2-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d5aa7e4daf4a86cc303448f418c28f42d5028cb80369140b6ac93051ddba3542
MD5 e117d363989a07dde1c0045808bf0a3f
BLAKE2b-256 cb2fe5772ce012882a6f2a0768853f246a04c35d40e248eb9d2464cf02cf34b5

See more details on using hashes here.

Provenance

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

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page