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.12+; 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

Decoding the same VIN (1HGCM82633A004352), warm, 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.1.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.1-cp312-abi3-win_arm64.whl (21.6 MB view details)

Uploaded CPython 3.12+Windows ARM64

ultravin-0.0.1-cp312-abi3-win_amd64.whl (21.7 MB view details)

Uploaded CPython 3.12+Windows x86-64

ultravin-0.0.1-cp312-abi3-win32.whl (21.6 MB view details)

Uploaded CPython 3.12+Windows x86

ultravin-0.0.1-cp312-abi3-musllinux_1_2_x86_64.whl (22.1 MB view details)

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

ultravin-0.0.1-cp312-abi3-musllinux_1_2_i686.whl (22.0 MB view details)

Uploaded CPython 3.12+musllinux: musl 1.2+ i686

ultravin-0.0.1-cp312-abi3-musllinux_1_2_armv7l.whl (22.0 MB view details)

Uploaded CPython 3.12+musllinux: musl 1.2+ ARMv7l

ultravin-0.0.1-cp312-abi3-musllinux_1_2_aarch64.whl (22.0 MB view details)

Uploaded CPython 3.12+musllinux: musl 1.2+ ARM64

ultravin-0.0.1-cp312-abi3-manylinux_2_31_riscv64.whl (21.8 MB view details)

Uploaded CPython 3.12+manylinux: glibc 2.31+ riscv64

ultravin-0.0.1-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (21.8 MB view details)

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

ultravin-0.0.1-cp312-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl (21.9 MB view details)

Uploaded CPython 3.12+manylinux: glibc 2.17+ s390x

ultravin-0.0.1-cp312-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (21.9 MB view details)

Uploaded CPython 3.12+manylinux: glibc 2.17+ ppc64le

ultravin-0.0.1-cp312-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (21.8 MB view details)

Uploaded CPython 3.12+manylinux: glibc 2.17+ ARMv7l

ultravin-0.0.1-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (21.8 MB view details)

Uploaded CPython 3.12+manylinux: glibc 2.17+ ARM64

ultravin-0.0.1-cp312-abi3-manylinux_2_12_i686.manylinux2010_i686.whl (21.8 MB view details)

Uploaded CPython 3.12+manylinux: glibc 2.12+ i686

ultravin-0.0.1-cp312-abi3-macosx_11_0_arm64.whl (22.4 MB view details)

Uploaded CPython 3.12+macOS 11.0+ ARM64

ultravin-0.0.1-cp312-abi3-macosx_10_12_x86_64.whl (21.8 MB view details)

Uploaded CPython 3.12+macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: ultravin-0.0.1.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.1.tar.gz
Algorithm Hash digest
SHA256 c4d04df6934db0c2e57d89573f02dae1b196896270f9b64ba22c3de6fdd0877d
MD5 6563a2a0980a9c581fdb6f1fcedceb64
BLAKE2b-256 d7f58eeadbe0629dabab17db4dffc43362eea933732b1f5e814a411dfc5a80bc

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ultravin-0.0.1-cp312-abi3-win_arm64.whl
  • Upload date:
  • Size: 21.6 MB
  • Tags: CPython 3.12+, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for ultravin-0.0.1-cp312-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 2e1918cb4cc86391db2fba3d634273fb0fc4f6fce866f619a89bb07876383434
MD5 38f411618f87fac073239ee0fb449382
BLAKE2b-256 999eacf1f292974e1ac820039321797775e5c8bfa3841992f151b925ee01670e

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ultravin-0.0.1-cp312-abi3-win_amd64.whl
  • Upload date:
  • Size: 21.7 MB
  • Tags: CPython 3.12+, 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.1-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 86129acbf9d934278efa8675b1d3e1a60ef1cee8ed10ed38e44153acd61a6d35
MD5 c03e6d67cc702c1c8875fc11cf95fd5a
BLAKE2b-256 0f3f75805a7f7fdd6b86690baf531f5e8ce312eb6bcf2f68e5c6f95ff85a01a6

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ultravin-0.0.1-cp312-abi3-win32.whl
  • Upload date:
  • Size: 21.6 MB
  • Tags: CPython 3.12+, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for ultravin-0.0.1-cp312-abi3-win32.whl
Algorithm Hash digest
SHA256 cc4ee9f9fbf05cfcae2b8266c11aa0c0f8249c61d7335bddccde2376c8a00be8
MD5 a06bc6d00a4a1d47410421d19b51c190
BLAKE2b-256 77dab6204427756a5f46f746fa7f55a0e10879275b1e83d79fa23843cdc87b3d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ultravin-0.0.1-cp312-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6640b15c1866046eba6550bd52fa730e9900925b3177d7dcc88c75f5bdbb7dc9
MD5 62b2f23efd3de6586be04bef1d55e581
BLAKE2b-256 837bd80d9993a8dd6fac61462d8bddff158e4a5672ebca3f9e8652e0a8a8a6b8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ultravin-0.0.1-cp312-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 7ab662dd869e6850075105458f477e560028d7dfb9bcfcf022bdba6428a8ddd6
MD5 80101ea11b48483c681f52e58c40f2f2
BLAKE2b-256 0b8c9d61d6539a2c2bd7594d283b57412018feb274424ff3f581d7310eb84b0f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ultravin-0.0.1-cp312-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 41920971a36e91d24d1a0a23190036c781d77958717b0a5bb364a604f9a403d1
MD5 d5b6eb0fcd1cdb81a2c584523e14c3bd
BLAKE2b-256 b0b77a3e4ada2b58abd6f834f09ad3fee68c69c932119d04b0bffdb7b210a3a7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ultravin-0.0.1-cp312-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 397c75628a10dabf91752f02fa2f0e8a570b380c72b1a751e4e57e1c95aa181e
MD5 d8948de5cb08b3c6e66516f79bbbfcae
BLAKE2b-256 28cb4b355de84ea67412f40999a4718a538d7fbb57877976eaf6182ef0d850ea

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ultravin-0.0.1-cp312-abi3-manylinux_2_31_riscv64.whl
Algorithm Hash digest
SHA256 32efe3d57d00bd6eefd5dc9d81da43f003ca369f3dca0c9259d272d313696fd0
MD5 e6ca51d02ecdac6f49c34cba934bb774
BLAKE2b-256 1d394fa9b708293bb457eb6932f609922311c28472d523f950e968a36aad7581

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ultravin-0.0.1-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 61c2bcada4e1b4563d8ed22d4ea819f4abf7290973442efe8b508cdc2683e4ee
MD5 0bf03b1b487001f9c8f8ad1c3efd6213
BLAKE2b-256 c7d993d4827c907d36f8d41b117ca94a2563bde94572cca07492ccbaa4f08490

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ultravin-0.0.1-cp312-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 b91363186c56af656e1e90984cc8d349e7aa32abc994ebb12f7fa9488d1b472d
MD5 7ebed5faf3d1ed4fe8ae6dea8780d783
BLAKE2b-256 aa2e380e3b80c6ab80b43322f36dc058ab302f03e230c29344a367e9d2825d5d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ultravin-0.0.1-cp312-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 647a6cf60cb5e43eac9fce8b94508b877e453488959c30171b84bdfe7d3c3f38
MD5 f9eac5a3a0a53bae9dbdff1cc3249302
BLAKE2b-256 aaeb92c6ce660dec0d755d4e6b24e346de019a98ac77edb7de985a297675fce9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ultravin-0.0.1-cp312-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 99f0c520013f010b07a863d53e41db0dc9b80e6e448f13878838839d67b152f9
MD5 570adf38e6c450520bf0beacf9a541f5
BLAKE2b-256 aea019da43599c161c9119d3c6d4d955476d3e41f6d924471ea5efba7ee43754

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ultravin-0.0.1-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3c8e46aaa89821f36f3ac6dd80a8467505260afa41ea721038bc0dfef3ef6b7e
MD5 51affefca247e0812b7208b107fb21ca
BLAKE2b-256 5d165d2908335e33188b1d3a8f132b436eb2dc6267c4585edc7b83a45fbc17ca

See more details on using hashes here.

Provenance

The following attestation bundles were made for ultravin-0.0.1-cp312-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.1-cp312-abi3-manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for ultravin-0.0.1-cp312-abi3-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 67095c51f03d66f3206aa3c232eb73e459d1845e5a28d37248acd27b7be5d28d
MD5 b58bf97cc3bbd1b1618c27bfde4f83c6
BLAKE2b-256 3859aa8e80cebb65d3dc3d2a58afe5317aa797b68afa6598be9f1cd2af5b46e5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ultravin-0.0.1-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a7cb23bf0b31939bed82d1ad57e315398d5ee005caca695781f0dba7f419f9f0
MD5 7fbe1089ba4a8802fb0f4378cc55571f
BLAKE2b-256 b62af86a5a634d6ecbc0b0e684e9e34751a7ea81bf8fb34875bac3a3b191188c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ultravin-0.0.1-cp312-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 23acef34919c6698252216ac7904d417b52fdd62ea96eb35d06a44790918d3c3
MD5 7ba6c7799e867e188ce0bdbca4fba605
BLAKE2b-256 f46ba257bcf93b1b8b10ef8c482c865b01ad51dbed96507a65eb0845c330a038

See more details on using hashes here.

Provenance

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