Skip to main content

Lossless RGB + bit-exact auxiliary signals (depth, object IDs, …) in one WebM (VP9)

Project description

ChromaPakZ

ChromaPakZ — lossless RGBD video encoder

A lossless RGBD video codec (クロマパックZ): one ordinary .webm that carries an 8-bit RGB track alongside bit-exact 16-bit auxiliary signals — depth, object IDs, packed normals, or any other W×H uint16 plane — in sync. It is built so that

  • a legacy player shows plain RGB — the depth rides in extra tracks a normal player ignores;
  • it uses only royalty-free codecs (VP9 / libvpx, BSD) — no GPL encoder, no patent pool;
  • it runs in the browser via WebCodecsno WASM on Chromium, with a small libvpx-WASM fallback for engines whose native path isn't bit-exact; and
  • depth is packed with one reversible map, not the range-slice bookkeeping of older schemes;
  • multiple lossless uint16 signals (depth, object IDs, …) share one container in sync.

It's a clean-room redo of an older MP4/x264 approach (RGB as YUV, plus 16-bit depth sliced into several lossless-10-bit ranges). That design worked but had three thorns: x264 is GPL, the range-slicing was fiddly, and the browser always needed a WASM codec. ChromaPakZ removes the first two outright; for the third, Chromium runs end-to-end on WebCodecs with no WASM, and a small libvpx-WASM build is kept only as a per-operation fallback for engines whose native path isn't bit-exact (Firefox, Safari).

The same format is implemented three times — browser (WebCodecs), C++ (libvpx), and Python — and a file written by any one decodes bit-exactly in the others.

Quickstart

# Browser demo — encode→file→decode→view, entirely in-page (no WASM on Chromium)
python3 -m http.server 8000      # from the repo root, then open http://localhost:8000/demo/

# Python / C++ — the native libvpx core is compiled from source, so install the build
# prerequisites first: libvpx (dev headers), pkg-config, CMake, and a C++17 compiler.
#   macOS:   brew install libvpx pkg-config cmake ninja
#   Debian:  sudo apt-get install libvpx-dev pkg-config cmake ninja-build g++
pip install .                    # pip compiles the native core via CMake and bundles it
python -c "import chromapakz as cz; print(cz.inverse_depth_spec(0.3, 9.0))"
#   cz.encode({"depth": u16}, specs={"depth": cz.inverse_depth_spec(near, far)}, rgb=rgba)

# Browser JS API — streaming encode/decode (see docs/API.md)
#   createEncoder({ signals: [{ id:'depth', near, far }, { id:'objectId' }] })
#   createDecoder(bytes).readFrame() -> { rgb, signals: { depth: { u16 }, objectId: { u16 } } }

# C++ / CLI
cmake -S . -B build && cmake --build build -j     # or: native/build.sh
./build/dccli selftest
./build/dccli decodesignal clip.webm depth depth.u16

How it works

Layer Choice
Container WebM / Matroska, multi-track. RGB is track 1, so any player shows it; depth tracks are ignored by players that don't know them. A Duration, a Cues index, and ~1 s RGB keyframes make it seekable in <video> (depth stays single-keyframe — it isn't what <video> plays).
RGB track 8-bit VP9, YUV 4:2:0, BT.709 full-range — a normal, viewable video stream.
Lossless signals Each signal: optional quant (e.g. inverse-depth for float depth) → uint16triangle-fold 8+8 → two VP9 lossless tracks. Add object IDs, labels, etc. as additional signal pairs.
Metadata v2 signals[] only — each signal (id, tracks, scheme, quant).

Inverse-depth quantization spends precision where it matters (near surfaces), matching how stereo/ToF sensors behave. Float can't be stored losslessly in 16 bits, so this quantization is the format's defined precision boundary; everything below it is bit-exact.

Triangle-fold is the key trick. The naive low byte d & 0xFF is a sawtooth — a hard 255→0 cliff every 256 levels — and those manufactured edges wreck any spatial predictor (this is exactly why the old design needed range slices). Reflecting every other segment (lo = (high&1) ? 255-lo : lo) turns it into a continuous triangle wave with no cliffs, so VP9's own predictor works. It's range-slicing collapsed into one reversible map, with nothing to manage.

Full color range is signaled in the bitstream (VP9E_SET_COLOR_RANGE), so a range-honouring decoder returns the packed luma unscaled instead of applying a limited-range conversion that would corrupt depth.

Why these choices (measured, not assumed — Chromium 148)

WebCodecs has no "lossless" switch, so every claim here is a measurement from experiments/webcodecs-lossless:

  • VP9 at QP 0 is bit-exact through WebCodecs; AV1 is not (AV1 quantizer:0 drifts by up to ~257). So VP9 carries depth; AV1 is fine only for the lossy RGB track.
  • Triangle-fold beats a naive byte-split by ~13%, and inter-coding cuts another ~52% (and stays bit-exact across the GOP) — most of what looks like incompressible LSB noise is actually static fold structure that temporal prediction removes.
  • 8+8 beats high-bit-depth. 10-bit VP9 encode is available in browsers, but a 10+6 split is ~4% worse than 8+8 and narrows browser reach, so 8+8 wins on both counts.

docs/EVALUATION.md is the full due-diligence record: every codec/container/packing alternative considered, the constraint that eliminates each, a head-to-head benchmark (ChromaPakZ beats FFV1, PNG-16 and x264 on the same 16-bit depth, beats x265/HEVC at matched 11-bit precision, and lands within 1–2% of LZMA), cited licensing/browser facts, and a sensitivity analysis of when a different choice would win.

What it costs

Lossless 16-bit depth of a real sensor is noise-bound: the low bits are largely sensor noise, and lossless coding must preserve every bit of it. On real Kinect data (TUM RGB-D fr1/desk, 30 frames at 640×480, 78% valid):

track bits / pixel
RGB 0.19
depth (hi + lo) 0.50 + 4.35
total 5.04

— depth round-tripped bit-exact. Reproduce with examples/tum_fr1desk.py (see its header for the one-line dataset fetch).

The one knob that moves this is the quantization precision vs the sensor's noise floor. Spreading depth over all 65,535 codes makes one step far finer than the noise, so the codec faithfully archives randomness. Coarsening the grid to match the noise collapses the cost — without losing real signal. The sweep below is measured on the synthetic benchmark clip (make_synthetic_rgbd.py, range ≈0.9–7.8 m) — a separate clip from the TUM numbers above:

effective bits depth precision at 7.8 m depth bpp
16 (default) 0.9 mm per step 13.2
12 14 mm per step 9.7
11 28 mm per step 8.1
10 56 mm per step 6.9

(Reproduce the bpp column with python python/benchmark_codecs.py.) levels is a first-class, metadata-stored parameter (default 65536 = full 16-bit) shared by all three implementations, so reduced-precision files reconstruct identically everywhere. Set it with ingest.py --depth-bits N or the levels= argument.

Codec rate-distortion

This is a separate axis from precision: how faithfully the codec carries whatever quantized depth you give it. PSNR here is the encode→decode path measured against the source codes.

ChromaPakZ codec rate-distortion

The lossless codecs all sit on the ∞-dB band — they reproduce depth exactly and differ only in size, where ChromaPakZ (VP9) is smallest, just under FFV1, with PNG-16 well behind. The blue curve is ChromaPakZ's own near-lossless option (sweeping the VP9 quantizer trades fidelity for size), but the default operating point is QP 0, bit-exact. Regenerate with python python/plot_rd.py.

A note on ffmpeg. Decoding ChromaPakZ files with ffmpeg (or any conformant VP9 decoder) is bit-exact. But encode with ChromaPakZ, not the ffmpeg CLI: ffmpeg -c:v libvpx-vp9 -lossless 1 is lossless yet ~3× larger (≈39 vs ≈13 bpp) — same library, far worse coding decisions, and no flag tested closes the gap. python/plot_rd.py therefore uses the real WebCodecs encoder for the VP9 numbers.

Cross-language implementations

All three read and write the identical .webm, verified bit-exact in every direction (browser ⇄ C++ ⇄ Python), and produce standard files — ffprobe reports matroska,webm with one RGB stream plus two VP9 streams per lossless signal, and ffmpeg decodes track 0 as plain RGB when present.

Format schema: docs/FORMAT.md. API: docs/API.md.

Surface Codec Build
Browser WebCodecs VP9 none — src/chromapakz.js, src/signals.js, src/webm.js. Multi-signal streaming API.
C++ libvpx VP9 CMake → build/_core + dccli (dc_encode_multi, dc_decode_signal)
Python ctypes → C++ pip install .encode(), decode(), parse_metadata()
./build/dccli encodergbd rgb.rgba depth.u16 W H N fps near far kbps out.webm
./build/dccli decodesignal clip.webm objectId ids.u16
./build/dccli decodergb  clip.webm rgb.rgba

Real-data ingestion (python/)

  • ingest.py — load depth (.exr / .npy / .npz / 16-bit PNG·TIFF / raw) and optional RGB (image sequence, video via ffmpeg, or array), auto-derive inverse-depth near/far from percentiles, encode, and report real per-track bpp. Invalid pixels (<=0/NaN) map to code 0. python ingest.py --depth 'd_*.exr' --rgb 'rgb_*.png' -o clip.webm --report --verify
  • make_synthetic_rgbd.py — a realistic RGBD generator (smooth surfaces, depth edges, disparity-domain noise, occlusion shadows, dropout holes) for when you don't have a sensor handy.
  • webm_inspect.py — pure-Python EBML parser for the per-track byte breakdown.

How it relates to RealSense / Kinect

Depth-camera ecosystems already split into two camps; ChromaPakZ takes the best of both.

  • Intel RealSense colorizes 16-bit depth into an RGB image (Hue, ~10.5 effective bits) and encodes that with a stock H.264/H.265 codec. Great for streaming and reuse of hardware codecs, but lossy — unfit for ground-truth or archival depth.
  • Kinect / RGBD datasets store depth raw or as 16-bit PNG. Azure Kinect even records to Matroska with a 16-bit depth track (lossless via per-frame PNG); TUM RGB-D, NYU and ScanNet use 16-bit PNG sequences. Bit-exact, but intra-only and large — no temporal compression.
RealSense colorize Kinect / PNG ChromaPakZ
bit-exact 16-bit depth ✗ (lossy)
RGB plays in any legacy player
inter-frame (temporal) compression ✓ (lossy) ✓ (lossless)
royalty-free, browser-native (no WASM on Chromium)

That Azure Kinect already chose Matroska — WebM's basis — is telling. ChromaPakZ differs by compressing depth losslessly (VP9 + triangle-fold, inter-coded) rather than storing raw or intra PNG, and by running in the browser. Sources: RealSense colorized depth, Azure Kinect record format.

Repository layout

src/          chromapakz.js, signals.js, webm.js, chromapakz-core.js
native/       chromapakz.{h,cpp}, dccli.cpp
python/       chromapakz/ (pip package), ingest.py, make_synthetic_rgbd.py
demo/         index.html                     in-browser encode→decode→view
examples/     tum_fr1desk.py
experiments/  webcodecs-lossless/            run.mjs, smoke-demo.mjs, headless tests
docs/         FORMAT.md, API.md, EVALUATION.md, RELEASING.md
tests/        roundtrip.py, cross_interop.py, stream_interop.py, ffmpeg_interop.py, js_*.mjs

CI builds and tests on Linux + macOS and runs the in-browser VP9-lossless probe in headless Chromium; docs/RELEASING.md covers wheels and PyPI publishing. The full design rationale and benchmarks are in docs/EVALUATION.md.

Status & limitations

Working end-to-end and verified across all three implementations. Honest caveats:

  • Browser support is engine-specific (measured, EVALUATION.md §11): native WebCodecs lossless encode is Chromium-only today (WebKit lacks WebCodecs' quantizer mode; Firefox's QP 0 isn't lossless); native lossless decode works on Chromium and WebKit/Safari, while Firefox decodes VP9 to color-converted BGRX. Where native can't be trusted, the library transparently falls back to a bundled libvpx-WASM codec, chosen per operation by a cached runtime probe — so a decode-only browser (e.g. Safari) downloads only vp9-decode.wasm and never the larger encoder, and vice-versa. Force it with backend: 'webcodecs' | 'wasm' (default 'auto'); see docs/API.md. These are Playwright engine builds — reconfirm on shipping browsers before hard claims.
  • "Royalty-free" reflects the AOMedia/Google position on VP9; Sisvel operates pools that dispute it.
  • An auto precision picker (estimate the sensor noise floor to choose --depth-bits) is future work.
  • Network byte streaming is supported via onChunk on encode and createDecoder() + push()/finish() on decode. See docs/API.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

chromapakz-0.2.0.tar.gz (2.1 MB view details)

Uploaded Source

Built Distributions

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

chromapakz-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

chromapakz-0.2.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl (1.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686

chromapakz-0.2.0-cp313-cp313-macosx_15_0_arm64.whl (869.8 kB view details)

Uploaded CPython 3.13macOS 15.0+ ARM64

chromapakz-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

chromapakz-0.2.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (1.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686

chromapakz-0.2.0-cp312-cp312-macosx_15_0_arm64.whl (869.8 kB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

chromapakz-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

chromapakz-0.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (1.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686

chromapakz-0.2.0-cp311-cp311-macosx_15_0_arm64.whl (869.8 kB view details)

Uploaded CPython 3.11macOS 15.0+ ARM64

chromapakz-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

chromapakz-0.2.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (1.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ i686

chromapakz-0.2.0-cp310-cp310-macosx_15_0_arm64.whl (869.8 kB view details)

Uploaded CPython 3.10macOS 15.0+ ARM64

chromapakz-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

chromapakz-0.2.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (1.1 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ i686

chromapakz-0.2.0-cp39-cp39-macosx_15_0_arm64.whl (869.8 kB view details)

Uploaded CPython 3.9macOS 15.0+ ARM64

File details

Details for the file chromapakz-0.2.0.tar.gz.

File metadata

  • Download URL: chromapakz-0.2.0.tar.gz
  • Upload date:
  • Size: 2.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for chromapakz-0.2.0.tar.gz
Algorithm Hash digest
SHA256 1042390ada200bc2ff58513578eecf628911325c1233b5b6d7f77a87678f278f
MD5 858b9c34c681d19828e2b306dc9a494e
BLAKE2b-256 088a441c9d2d02bab2d6d290186be198453ce81bf64fbbf09f152fc57b9ed438

See more details on using hashes here.

Provenance

The following attestation bundles were made for chromapakz-0.2.0.tar.gz:

Publisher: release.yml on kmatzen/ChromaPakZ

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

File details

Details for the file chromapakz-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for chromapakz-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 71fde28d3da20611829e259fb18abaf33e09dce50f41cf447df611fda022c825
MD5 4d93027338eea3ab4c52c40bf248091c
BLAKE2b-256 0a10f4871870f1aaf181a80adfdc9d17055f2943554fccb239cf76302a221ac8

See more details on using hashes here.

Provenance

The following attestation bundles were made for chromapakz-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on kmatzen/ChromaPakZ

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

File details

Details for the file chromapakz-0.2.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for chromapakz-0.2.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 d775a07a13294c846c2ca6608cb068a5aa8b149a58198d2960f356534a3ecfa2
MD5 0c1268182dff669a2c9bd77b971e2907
BLAKE2b-256 1bed11db71a4c5f83865fc9ed4a98c1d5b086b2d4382fd9122dd2bcb86f8bbca

See more details on using hashes here.

Provenance

The following attestation bundles were made for chromapakz-0.2.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: release.yml on kmatzen/ChromaPakZ

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

File details

Details for the file chromapakz-0.2.0-cp313-cp313-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for chromapakz-0.2.0-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 c87ae5a2b9cea565ed017a3bb9429df804a786d8fe976832521b6ea935ebae6c
MD5 ad9f4bc775bf543a96428a45cb372a7c
BLAKE2b-256 c7f05d6767d3b14c4e371be1be5ead9781debf0f723d1a1c5328447544ef7499

See more details on using hashes here.

Provenance

The following attestation bundles were made for chromapakz-0.2.0-cp313-cp313-macosx_15_0_arm64.whl:

Publisher: release.yml on kmatzen/ChromaPakZ

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

File details

Details for the file chromapakz-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for chromapakz-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 22fc8042ff48bddc6b0c36008728d8de793ce5385ddc4564e73d586aeb4a6f05
MD5 a1041159d7ed8d64a6b0d481a689a657
BLAKE2b-256 747f03c0a34a22497a91561c3f7a3fd945af0fab87d9972f5868233156386a6b

See more details on using hashes here.

Provenance

The following attestation bundles were made for chromapakz-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on kmatzen/ChromaPakZ

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

File details

Details for the file chromapakz-0.2.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for chromapakz-0.2.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 d480e76f847cc15d5a210c6b1117bf3e3deee4db6fa71aebd7d374e7743e1029
MD5 7cdd923fc256086ec0c901f7fcb03a5b
BLAKE2b-256 b523cb5b33dee77dd04656308706a1c6357c8a46fa7adf7b54934a7b30124eed

See more details on using hashes here.

Provenance

The following attestation bundles were made for chromapakz-0.2.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: release.yml on kmatzen/ChromaPakZ

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

File details

Details for the file chromapakz-0.2.0-cp312-cp312-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for chromapakz-0.2.0-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 c0c1dec6138dfe0f5ca7362a69495c1f51e96c2de197af515eb3be6d06564045
MD5 89dba454c4c83b01bcb18ec5a25ee076
BLAKE2b-256 b4ee61ac3125dba2e5e9bbc51f14cfbf3f01d217cd7d02840761d8c295c0fe98

See more details on using hashes here.

Provenance

The following attestation bundles were made for chromapakz-0.2.0-cp312-cp312-macosx_15_0_arm64.whl:

Publisher: release.yml on kmatzen/ChromaPakZ

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

File details

Details for the file chromapakz-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for chromapakz-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 948c68d0d1f9388a2b7a36a9cf00b6c662c1282a4e716d71f07939b07e0f30ad
MD5 2c7ad393c4b654ec77e884f94736d1ee
BLAKE2b-256 d4bdd54fff85addab6eb27beda77e029aa0bcb9589244f41192643250f67d367

See more details on using hashes here.

Provenance

The following attestation bundles were made for chromapakz-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on kmatzen/ChromaPakZ

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

File details

Details for the file chromapakz-0.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for chromapakz-0.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 af2ff816c84d3e7d53ea947c6c07981f22176080da19b0ce724ea63eeccaa00a
MD5 7984e19f3ef97d933f055433f9125ab7
BLAKE2b-256 3737f068207d1f730d94e5e5c6076e21ed5c2113aae55ca71cdb3dc9ae559fa6

See more details on using hashes here.

Provenance

The following attestation bundles were made for chromapakz-0.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: release.yml on kmatzen/ChromaPakZ

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

File details

Details for the file chromapakz-0.2.0-cp311-cp311-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for chromapakz-0.2.0-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 d474af70a18e39be3313cecac0231ab45e1cdd4816d8b97c21b52801f1b36fc3
MD5 3eb214a5014740ef4948236b8538e5e4
BLAKE2b-256 9cad36ca7606e9111cd9018348e83a4532e3188689d476cc9d5694b0330be6ff

See more details on using hashes here.

Provenance

The following attestation bundles were made for chromapakz-0.2.0-cp311-cp311-macosx_15_0_arm64.whl:

Publisher: release.yml on kmatzen/ChromaPakZ

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

File details

Details for the file chromapakz-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for chromapakz-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f1546d62193c18fc2d1ce10dfe219bd107fa6b468c7fdff6e62f64b2caefa3d3
MD5 f3bf823def3a8a1b9b847284cba3499d
BLAKE2b-256 6da81a995298251345d2eefeab74d3d45cf852f38dace1f856258879bfc7d007

See more details on using hashes here.

Provenance

The following attestation bundles were made for chromapakz-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on kmatzen/ChromaPakZ

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

File details

Details for the file chromapakz-0.2.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for chromapakz-0.2.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 fe982507dd57c1b047ecfbe96e3a87b266e6fe4a2aa4babee56f1dbfbeb775eb
MD5 cbcc4672a13a1512f24d2bbdfdac18f7
BLAKE2b-256 a5aabd1031085267839b90be700f17910c8a8c8debc25e8f367f214e41dc7a36

See more details on using hashes here.

Provenance

The following attestation bundles were made for chromapakz-0.2.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: release.yml on kmatzen/ChromaPakZ

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

File details

Details for the file chromapakz-0.2.0-cp310-cp310-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for chromapakz-0.2.0-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 efb735f462fb6b944582c4a6bc06b49e806729b018cf970e267c1c16e9cf2c1d
MD5 06de60b7f15c910e2a351b702d2817df
BLAKE2b-256 be6f51a3725cfe48ba30f48608c09eb549737c6660cf703f246b49efc4568456

See more details on using hashes here.

Provenance

The following attestation bundles were made for chromapakz-0.2.0-cp310-cp310-macosx_15_0_arm64.whl:

Publisher: release.yml on kmatzen/ChromaPakZ

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

File details

Details for the file chromapakz-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for chromapakz-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0421159967421f11c3b1feb283fd424abd4b79ff1d2a76fdc6e1dce56fc153bb
MD5 eadc79ac7e85985f90670f348de41143
BLAKE2b-256 2267631d758b56beecfbf7138b24fc0a5e35edee0feb10b887aa9a5e649d946a

See more details on using hashes here.

Provenance

The following attestation bundles were made for chromapakz-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on kmatzen/ChromaPakZ

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

File details

Details for the file chromapakz-0.2.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for chromapakz-0.2.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 ad556c5e09148c18f8394346c7ab65d26627ca8b9a0369bad93afbb7d3adfc48
MD5 3672a44ebc3d7cdafd8133a79d9b535a
BLAKE2b-256 5e9d674221651c37d0b2e4d6a41f36aa2cb6cdc9bf340bd7a9c9219db7e5e8b1

See more details on using hashes here.

Provenance

The following attestation bundles were made for chromapakz-0.2.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: release.yml on kmatzen/ChromaPakZ

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

File details

Details for the file chromapakz-0.2.0-cp39-cp39-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for chromapakz-0.2.0-cp39-cp39-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 7b6bb88d8e026eec7fc5555623867140cdfdbbb67683a6b526716d16843efc23
MD5 420a27f56d22d1b700c43e917143ec62
BLAKE2b-256 646c4a8e040e10296871089f1a10fa248c6c135440da98248da02af0c338effd

See more details on using hashes here.

Provenance

The following attestation bundles were made for chromapakz-0.2.0-cp39-cp39-macosx_15_0_arm64.whl:

Publisher: release.yml on kmatzen/ChromaPakZ

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