Skip to main content

Streaming, network-aware image codecs for scientific imaging (prototype: JPEG XL)

Project description

opencodecs

PyPI Tests Build wheels

Native, parallel, cloud-aware codecs for scientific imaging. One unified Codec / Reader / Writer API across compression streams, single images, multi-frame stacks, and chunked containers — with HTTP range-fetch and per-chunk parallelism wired in at the bottom of the stack, not bolted on.

Built for fast modern storage (NVMe, 10 G NAS, S3) where the bottleneck is codec dispatch and per-tile parallelism, not raw I/O bandwidth. Native implementations of every codec — no runtime delegation to imagecodecs — though we use its excellent test suite as a parity reference.

pip install opencodecs
import opencodecs as oc

# 1. Look at any scientific image file
arr = oc.read("scan.czi")              # auto-detect by extension
arr = oc.read("photo.jxl")
arr = oc.read(blob)                    # auto-detect by magic bytes

# 2. Write with the right codec for the data
oc.write("out.jxl", arr, lossless=True)
oc.write("out.zst", b"...payload...", level=10)

# 3. Stream multi-frame / chunked formats
with oc.get_codec("czi").open(path) as r:
    print(r.shape, r.dtype, r.n_frames)
    for tile in r:                     # iter_frames
        ...
    tile5 = r[5]                       # random access

# 4. Fetch tiles of a remote pyramidal TIFF over HTTPS by range request
with oc.open_pyramid("https://example.com/slide.svs") as p:
    region = p.read_region(level=2, y=(1024, 2048), x=(1024, 2048))
    # → 2-3 HTTP Range requests, not a full slide download

# Discovery
oc.list_codecs()                       # capability table
oc.has_codec("avif")

Why opencodecs

Need What you get
Decode regions of cloud-hosted TIFF/Zarr/HDF5 without downloading the whole file Native HTTPDataSource with range-coalescing + adaptive read-ahead, wired into the TIFF/NDTiff/HDF5/Zarr/FITS pyramid readers
Per-chunk parallel decode of CZI/OME-TIFF/NDTiff stacks Built-in ThreadPoolExecutor orchestration with nogil-released codec calls; 3–10× over single-threaded reference readers on large stacks
Modern codec coverage (JPEG XL, AVIF, HEIF, JPEG-LS, Brunsli, Ultra HDR, OME-Zarr v3 sharded) All shipped, all with native bindings — no pip install ten-other-packages
Tier-1 scientific compressors (LERC, ZFP, SZ3, SPERR, pcodec, bitshuffle, blosc2, libaec) All shipped, source-built with -O3 + LTO + hidden-visibility for Pareto wins over distro builds
Lossless drop-in replacement for imagecodecs tifffile_patch opt-in shim reroutes tifffile's codec dispatch through opencodecs without changing your tifffile code

Codec capability matrix

All codecs below are native implementations linking against system or vendored C libraries. Build skips cleanly when an optional system library is missing — see INSTALL.md.

Compression (bytes → bytes)

Codec Encode Decode Backing library Extension
zstd system libzstd .zst
lz4 system liblz4 (frame) .lz4
brotli system libbrotli .br
blosc2 source-built c-blosc2 2.23 .b2
deflate libdeflate / zlib-ng / zlib (auto-selected at build time) .zlib
gzip stdlib gzip .gz
none identity (filter-chain placeholder)
bz2 stdlib bz2 .bz2
lzma stdlib lzma .xz
snappy system snappy .sz
bitshuffle vendored bitshuffle (filter)

bitshuffle is a filter, not a stand-alone compressor: bit-level transpose that radically improves LZ77 ratios on typed numerical data. Output size equals input size; pair with zstd / lz4. Aliases: bshuf.

deflate aliases: zlib, zlibng. Pass backend="isal" to opt into Intel ISA-L's igzip (~4× faster encode on x86_64; opt-in because output is ~19% bigger). The default backend is auto-selected at build time: libdeflate when present (fastest at default level), else zlib-ng-compat, else the stdlib zlib.

Scientific / numerical-array codecs (ndarray ↔ bytes, self-describing)

These four codecs target typed multidimensional arrays rather than images or raw bytes. The encoded blob carries shape and dtype in its header, so decode(blob) reconstructs the full ndarray without out-of-band metadata.

Codec Encode Decode Lossless Lossy modes Backing library Extension
b2nd system c-blosc2 (NDim API) .b2nd
aec system libaec (CCSDS 121.0-B-2) .aec
lerc max_z_error system liblerc (Esri) .lerc
zfp ✓ (reversible) rate / precision / accuracy system libzfp .zfp
sz3 abs / rel / psnr / norm source-built SZ3 .sz3
pcodec source-built pcodec (Rust) .pco

Quick guidance:

  • pcodec — modern lossless numerical compressor; often beats zstd by 1.5–3× on float / int arrays without a pre-filter.
  • b2nd — c-blosc2's multidim layer with shuffle/bitshuffle filters built in; great when you already use blosc2 elsewhere.
  • aec — entropy coder used by NetCDF-4 SZIP; lossless integers.
  • lerc — fast (lossy or lossless) raster codec used in Cloud-Optimized GeoTIFF, Esri MRF.
  • zfp — fast 1D-4D float / int compression with multiple lossy modes (predictable size, accuracy, or precision).
  • sz3 — error-bounded prediction-based scientific compressor; often beats zfp at the same error budget on simulation snapshots. Float only (the SZ3 v3 C API doesn't dispatch integer types).

Single-image codecs

Codec Encode Decode Color Backing library Extension
qoi RGB / RGBA vendored qoi.h .qoi
bmp gray / RGB / RGBA pure Python+numpy .bmp, .dib
png gray / RGB / RGBA, 8/16-bit vendored libspng + libdeflate .png
jpeg gray / RGB libjpeg-turbo (TJ v3) .jpg, .jpeg
mozjpeg gray / RGB, 8/12-bit system mozjpeg (TJ v2) .jpg
webp RGB / RGBA, lossy + lossless system libwebp .webp
jpeg2k gray / RGB / RGBA, 8/16-bit, lossless + lossy OpenJPEG .jp2, .j2k, .jpx, .jpc
htj2k gray / RGB / RGBA, 8/16-bit, lossless + lossy system OpenJPH .j2c
jpegls gray / RGB / RGBA, 2-16 bit, lossless + near-lossless system CharLS .jls
avif RGB / RGBA, lossy + lossless (YUV444+identity) libavif .avif
heif RGB / RGBA, lossy (HEVC) libheif (+ aomenc) .heif, .heic
jxl gray / RGB / RGBA, P3, HDR, multi-frame vendored libjxl 0.11.2 .jxl
bcdec BC1-7 / DXT / BPTC GPU textures vendored bcdec.h .dds
rgbe float32 RGB HDR (Radiance) vendored rgbe.c .hdr
ultrahdr float16 / uint8 / uint16 RGBA HDR + SDR system libultrahdr 1.4.x .jpg (gainmap)

htj2k is JPEG-2000 Part 15 (High-Throughput) — same DWT front end as classic JPEG-2000 but ~10-20× faster entropy coding. Used by modern DICOM and remote-sensing pipelines.

jpegls (CharLS) is the lossless / near-lossless predictive JPEG variant standardized as ISO/IEC 14495-1 — the dominant codec in medical-imaging DICOM workflows.

mozjpeg is Mozilla's libjpeg-turbo fork; ~10-15% smaller files than libjpeg-turbo at the same quality. Built only when MozJPEG is on the system (keg-only on Homebrew so it doesn't collide with plain libjpeg-turbo).

rgbe is the canonical Radiance HDR format — float32 RGB shared- exponent encoding for high-dynamic-range photography and physically- based rendering output. ultrahdr is the ISO 21496 gainmap-JPEG format — Android Camera's default since A14 and what iOS 18+ reads natively. Decode dtype controls the output: float16 returns linear BT.2100 HDR; uint8 returns the SDR-tonemapped base JPEG.

Multi-frame / chunked formats

Codec Read Write Container Notes
jxl ISO BMFF (frame index) Streaming + parallel multi-frame decode
czi Zeiss ZISRAW mmap + parallel zstd; metadata accessor; parallel bulk HTTP fetch via CziReader.from_http(max_workers=N)
tiff TIFF 6.0 + BigTIFF Native reader + writer; tiled or strip; parallel encode; LZW encode; streaming write to unseekable sinks; EER cryo-EM dispatch
ndtiff Micro-Manager / Pycro-Manager NDTiff Streaming writer; os.writev hot path; cross-platform (POSIX + Windows-NTFS-safe pre-allocation)
hdf5 HDF5 Wraps h5py.Dataset. Remote HDF5 via open_remote_hdf5(url) — slices stream chunks over HTTP Range with one-shot parallel prefetch
eer Thermo Fisher EER (cryo-EM event-list) Native bitstream decoder + TIFF compression-tag dispatch (codes 65000-65002)
dicomweb WADO-RS HTTP frame retrieval Multipart/related parser; transfer-syntax dispatch through opencodecs's codec layer (JPEG-LS / HTJ2K / JPEG-2000 / RLE / raw)
fits FITS (astronomy) Multi-HDU walk; BITPIX 8/16/32/64/-32/-64; BZERO unsigned-int trick; compressed images (RICE_1, GZIP_1, GZIP_2, HCOMPRESS_1, NOCOMPRESS) with per-tile ZSCALE/ZZERO quantization. HTTP-range friendly — opening a 50 GB cube reads kilobytes.

TIFF writer specifics

from opencodecs._tiff_writer import TiffWriter

# Classic TIFF (<4 GiB)
with TiffWriter("out.tif") as w:
    w.write_page(arr, tile=(256, 256), compression="zstd")

# BigTIFF (>4 GiB; magic=43, 64-bit offsets)
with TiffWriter("huge.tif", bigtiff=True) as w:
    w.write_pyramid(levels, compression="zstd", subifds=True)

# COG-style streaming to an unseekable sink (pipe, S3 multipart, HTTP body)
with TiffWriter(sink, streaming=True) as w:
    w.write_stream(pages, total_pages=N, tile=(256, 256), compression="zstd")

Supported encode-side compressions: none, deflate (libdeflate / zlib-ng / zlib auto-detect), zstd, LZW, JPEG, JPEG2000, WebP, JXL, LERC. Horizontal predictor on byte-stream codecs.

OME-TIFF metadata

from opencodecs._ome_xml import write_ome_tiff, Channel

write_ome_tiff(
    "scan.ome.tif", arr_5d, axes="TCZYX",
    physical_size_um=(0.108, 0.108, 0.5),
    channels=[Channel(name="DAPI", emission_wavelength_nm=460),
              Channel(name="GFP",  emission_wavelength_nm=520)],
)

Round-trips through tifffile / Bio-Formats / QuPath. For schema elements outside the 80%-case subset, hand-author OME-XML and pass via TiffWriter's metadata= kwarg.

Remote HDF5

from opencodecs._hdf5_http import open_remote_hdf5, prefetch_hdf5_chunks

with open_remote_hdf5("https://bucket.s3.amazonaws.com/big.h5") as f:
    prefetch_hdf5_chunks(f["img"], np.s_[:1024, :1024])  # 1 syscall, N HTTP
    arr = f["img"][:1024, :1024]                          # all from cache

czi decodes types 0 (uncompressed) and 6 (ZSTDHDR) — the entire modern Zen archive. JPEG-XR sub-blocks (rare in 2022+ output) raise NotImplementedError. The reader exposes metadata_bytes and metadata_xml as lazy zero-copy accessors.

zarr v3 codecs

opencodecs._zarr_codecs registers our compressors as zarr v3 BytesBytesCodecs:

import zarr
from opencodecs._zarr_codecs import OcZstd, OcLz4, OcBlosc2, OcBrotli, OcDeflate

z = zarr.create_array(
    store=..., shape=..., dtype=..., chunks=...,
    compressors=[OcZstd(level=10)],
    zarr_format=3,
)

Performance

Headline numbers from the latest bench run (bench/run_benchmarks.py --fast, macOS M1 Ultra, vs imagecodecs / tifffile / ndstorage):

Workload opencodecs reference ratio
tiff_random_tile_read 0.70 ms 7.71 ms (tifffile) 11×
tiff_pyramid_crop_from_fullres 0.47 ms 8.60 ms 18×
ndtiff_index_parse_synthetic_10k 4.61 ms 28.0 ms (ndstorage) 6.1×
h2h_jxl_4mp_rgb (encode) 130 ms 3153 ms (imagecodecs) 24×
h2h_blosc2_10mb 4.63 ms 54.8 ms 12×
h2h_deflate_10mb (encode) 109 ms 296 ms 2.7×
h2h_png_4mp_rgb (encode) 142 ms 281 ms 2.0×
h2h_png_kodak_photo (encode) 19 ms 58 ms 3.1×
h2h_png_filterbound_u16 (encode) 2.0 ms 3.7 ms 1.8×
tiff_write_1gb 89 ms 91 ms parity, +14% on Windows
ndtiff_write_1gb (raw 800 MB) 159 ms 154 ms parity (1.04× on macOS, 2.4× on Windows after NTFS-friendly pre-alloc)

The PNG encode wins above stack two independent improvements: the libdeflate IDAT accumulator (already shipped) collapses zlib's per-scanline deflate() loop into a single one-shot call, and a per-filter split of libspng's filter_sum hot path lets the compiler autovectorize each branch into NEON/SSE — together they make every PNG-encode workload 1.5–3.1× faster than imagecodecs.

Remote-fetch workloads benefit from read_many (one batched HTTP fan-out + Range coalescing) — on a loopback Range-supporting server, 1024-chunk HDF5 slices land in 7 HTTP requests instead of 1010 (a ~50× request-count reduction; on real-network RTT this translates to 8× wall-clock).

Scientific microscopy CZI (66 MB, 14 sub-blocks of 2000×2000 uint16, ZSTDHDR), single-file warm cache:

Reader Mac M3 Threadripper x86_64
czifile (Python ref) 148 ms 414 ms
aicspylibczi (C++) 17 ms 140 ms
opencodecs 15 ms 46 ms

See docs/io_patterns.md for the lessons learned about coalesced I/O, mmap vs pread, persistent thread pools, and where parallelism actually pays off. The deflate path is libdeflate when available → zlib-ng-compat → stdlib zlib, auto-detected at build time.

Public API

Top-level dispatch

oc.read(src, *, format=None, **opts) -> ndarray | bytes
oc.write(dest, data, *, format=None, **opts) -> bytes | None
oc.codec_for_path(path) -> Codec | None
oc.codec_for_bytes(head) -> Codec | None

src and dest accept paths, file-like objects, bytes, and memoryview / mmap slices (zero-copy through the codec).

Codec registry

oc.list_codecs() -> list[Codec]
oc.has_codec(name_or_alias) -> bool
oc.get_codec(name_or_alias) -> Codec

Codec interface

Each codec exposes:

codec.name            # "czi"
codec.file_extensions # (".czi",)
codec.has_native      # True for everything we ship
codec.can_encode / codec.can_decode
codec.multi_frame / codec.chunked / codec.streaming_decode / codec.parallel_decode
codec.supported_dtypes / codec.supports_color

codec.signature(head_bytes) -> bool
codec.encode(data, *, dest=None, **opts) -> bytes | None
codec.decode(src, **opts) -> ndarray | bytes
codec.open(src, **opts) -> Reader        # multi-frame / chunked

Reader interface (multi-frame / chunked)

reader.shape       # (n_frames, *frame_shape)
reader.dtype
reader.n_frames
reader.is_chunked  # True if [idx] random access works
reader.iter_frames()
reader.read()      # full eager decode
reader[idx]        # random access (chunked formats only)

CZI reader additionally exposes:

reader.entries                  # list[CziSubBlockEntry] — sub-block metadata
reader.metadata_bytes           # raw UTF-8 bytes (lazy + cached)
reader.metadata_xml             # decoded str (lazy + cached)
reader.subblock_metadata_bytes(i)

HDF5 reader additionally exposes:

reader.dataset_names            # all numeric datasets in the file
reader.select(name)             # switch to a different dataset

Streaming-reader examples

1. Fetch a region of a remote Aperio whole-slide TIFF

import opencodecs as oc

# Pyramidal SVS (Aperio) hosted on S3 / any HTTPS endpoint with Range support.
with oc.open_pyramid("https://example.com/slide.svs") as p:
    print(p.levels)               # [(80000, 60000, 3), (40000, 30000, 3), ...]
    region = p.read_region(level=2, y=(1024, 3072), x=(2048, 4096))
    # Total HTTP traffic: ~6 Range requests covering only the tiles
    # that intersect this 2048×2048 bbox — typically 200 KB–2 MB,
    # not the 4 GB whole slide.

The pyramid reader auto-detects the best level for the requested region, fetches only the intersecting TIFF tiles via HTTP Range, and assembles the output in-memory. Works the same on local files, NFS, SMB, S3, or any range-capable HTTP server.

2. Convert a multi-level pyramid to OME-Zarr v3 sharded

import opencodecs as oc

with oc.open_pyramid("input.ome.tiff") as p:
    levels = [p.read_region(level=i) for i in range(len(p.levels))]

oc.write_omezarr_pyramid(
    "output.zarr",
    levels,
    chunks=(512, 512),
    shards=(2048, 2048),         # 16 chunks per shard, one file each
    compressor="zstd",
    zarr_format=3,
)
# 1 file per shard on disk instead of 1 file per chunk; per-chunk
# random access still works via Range fetches into the shard.

For data going to S3, sharded Zarr v3 cuts your PUT and LIST costs by 1–2 orders of magnitude vs unsharded chunks while preserving per-chunk random-access via HTTP Range — the reader above understands the shard index automatically.

3. Fast JPEG XL thumbnails (native progressive decode)

import opencodecs.jxl as jxl

# downsample=8 uses libjxl's native progressive decoder — stops at
# the DC pass without reconstructing full-resolution pixels.
thumb = jxl.read("scan.jxl", downsample=8, subsample="center")
# 4Kx4K input → 512x512 ndarray in ~28 ms on macOS arm64
# (vs ~40 ms for a full decode), positionally centroid-correct
# so SVG / GL renderers don't get a ½-block shift.

# For a partial JXL bitstream usable as a tiny browser-direct
# thumbnail (works in Safari + modern Chrome):
prefix = jxl.thumbnail_bytes("scan.jxl")
# → ~85 KB out of a 3.5 MB source for a 4Kx4K image

Install

pip install opencodecs

Wheels are published for CPython 3.10–3.13 on macOS (arm64), Linux (x86_64 + aarch64), and Windows (amd64). Each wheel bundles libjxl, libavif, libheif, libwebp, libdeflate, c-blosc2, and friends — no system dependencies needed.

For a source install, system development headers, or to build a tuned local libjxl, see INSTALL.md. Wheel publishing runs through docs/publishing.md.

# Source install — auto-detects system libs, source-builds libjxl
git clone https://github.com/kevinjohncutler/opencodecs.git
cd opencodecs
pip install -e .

The build skips cleanly for any system library that's missing — useful extensions still build, missing ones print a one-line notice. libjxl 0.11.2 is auto-built from source via bench/build_libjxl.sh and cached under ~/Library/Caches/opencodecs/ (macOS) / ~/.cache/opencodecs/ (Linux). See INSTALL.md for the rationale (Homebrew/apt builds are 0.5-0.7× slower than a tuned -O3 + LTO build).

Status

  • v0.1.1 on PyPI (May 2026). Core API stable; 1066 tests passing on Mac M1 Ultra + Linux x86_64/aarch64 + Windows VM
  • Native readers + writers for the common scientific containers (TIFF, BigTIFF, OME-TIFF, CZI, NDTiff, HDF5, JXL, FITS, OME-Zarr v2 + v3 sharded)
  • Cross-platform bench coverage: Mac arm64 (canonical), Windows 11 LTSC (libvirt VM), Linux x86_64 (Threadripper-class)
  • Compression backend auto-detect (libdeflate → zlib-ng-compat → stdlib)
  • Cloud I/O primitives (HTTPDataSource with covering-cache + adaptive read-ahead) wired into TIFF / HDF5 / DICOMweb / CZI / FITS / Zarr v3 readers
  • tifffile_patch opt-in shim reroutes tifffile's codec dispatch through opencodecs for users who want only a partial swap

Deferred work (see docs/TODO_DEFERRED.md):

  • Windows wheels currently miss _sz3, _pcodec, _sperr, _brunsli — toolchain mismatch (conda's bash picks GCC over MSVC for CMake); v0.1.2 will restore them. macOS + Linux wheels have the full set.
  • CCITT Fax3/Fax4 encode — legacy fax; zero scientific users
  • JPEG-XR — abandoned format outside niche DICOM
  • libspng filter_sum SIMD — off the bench-tracked workload (h2h_png_4mp_rgb is at 1.14× already); filter-bound PNG-encode users could see another 2-3×

License

BSD-3-Clause. Vendored components retain their original licenses (see 3rdparty/).

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

opencodecs-0.1.13.tar.gz (3.3 MB view details)

Uploaded Source

Built Distributions

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

opencodecs-0.1.13-cp313-cp313-win_amd64.whl (27.8 MB view details)

Uploaded CPython 3.13Windows x86-64

opencodecs-0.1.13-cp313-cp313-manylinux_2_28_x86_64.whl (37.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

opencodecs-0.1.13-cp313-cp313-manylinux_2_28_aarch64.whl (35.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

opencodecs-0.1.13-cp313-cp313-macosx_15_0_arm64.whl (20.9 MB view details)

Uploaded CPython 3.13macOS 15.0+ ARM64

opencodecs-0.1.13-cp312-cp312-win_amd64.whl (27.8 MB view details)

Uploaded CPython 3.12Windows x86-64

opencodecs-0.1.13-cp312-cp312-manylinux_2_28_x86_64.whl (37.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

opencodecs-0.1.13-cp312-cp312-manylinux_2_28_aarch64.whl (36.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

opencodecs-0.1.13-cp312-cp312-macosx_15_0_arm64.whl (20.9 MB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

opencodecs-0.1.13-cp311-cp311-win_amd64.whl (27.8 MB view details)

Uploaded CPython 3.11Windows x86-64

opencodecs-0.1.13-cp311-cp311-manylinux_2_28_x86_64.whl (37.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

opencodecs-0.1.13-cp311-cp311-manylinux_2_28_aarch64.whl (36.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

opencodecs-0.1.13-cp311-cp311-macosx_15_0_arm64.whl (20.9 MB view details)

Uploaded CPython 3.11macOS 15.0+ ARM64

opencodecs-0.1.13-cp310-cp310-win_amd64.whl (27.8 MB view details)

Uploaded CPython 3.10Windows x86-64

opencodecs-0.1.13-cp310-cp310-manylinux_2_28_x86_64.whl (36.6 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

opencodecs-0.1.13-cp310-cp310-manylinux_2_28_aarch64.whl (35.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

opencodecs-0.1.13-cp310-cp310-macosx_15_0_arm64.whl (20.9 MB view details)

Uploaded CPython 3.10macOS 15.0+ ARM64

File details

Details for the file opencodecs-0.1.13.tar.gz.

File metadata

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

File hashes

Hashes for opencodecs-0.1.13.tar.gz
Algorithm Hash digest
SHA256 b4979121130d0aa1d15d8da33873d668c4d176c72d522fcc2ea1e7128e9328dc
MD5 51ea3929cf23b6b2fb902414e2aa8c2a
BLAKE2b-256 b2b7ed8cf2f5787b28d08448090d206ab8f0b6875f6a81e838aef503dea5b7e3

See more details on using hashes here.

Provenance

The following attestation bundles were made for opencodecs-0.1.13.tar.gz:

Publisher: build_wheels.yml on kevinjohncutler/opencodecs

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

File details

Details for the file opencodecs-0.1.13-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for opencodecs-0.1.13-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 6e755a8d027c2de00d65a0f83cbfa2d467b95c7da216dec76f3d53e9a4048660
MD5 7a3ece9e6b5d6afae72eb0ee23c4ea84
BLAKE2b-256 d9fa51e13275e9aaeb3756da6612f666c92dd5b0f822300b6db1f8de77a61723

See more details on using hashes here.

Provenance

The following attestation bundles were made for opencodecs-0.1.13-cp313-cp313-win_amd64.whl:

Publisher: build_wheels.yml on kevinjohncutler/opencodecs

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

File details

Details for the file opencodecs-0.1.13-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for opencodecs-0.1.13-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5705475f45ba858b60e2647005720c19ae44867c296aa0b891ac9f7a1df6a91e
MD5 d845016cf8614188d0f4537fcbd230de
BLAKE2b-256 2b8012cd13d66b8e7cdb4081b9e70c4f75fd8fba776fb08badd4dab7243d75f6

See more details on using hashes here.

Provenance

The following attestation bundles were made for opencodecs-0.1.13-cp313-cp313-manylinux_2_28_x86_64.whl:

Publisher: build_wheels.yml on kevinjohncutler/opencodecs

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

File details

Details for the file opencodecs-0.1.13-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for opencodecs-0.1.13-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 653a4fa3d48aba699c7bdd9a1fe40d1329e8624719ee548bb65119df1cc84a26
MD5 06c67c3a10526bb2cf54093708a17d42
BLAKE2b-256 e4596b5db97674516fcb38fa06e96f557fe8cc47e19e1c39c94607d7fd10044a

See more details on using hashes here.

Provenance

The following attestation bundles were made for opencodecs-0.1.13-cp313-cp313-manylinux_2_28_aarch64.whl:

Publisher: build_wheels.yml on kevinjohncutler/opencodecs

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

File details

Details for the file opencodecs-0.1.13-cp313-cp313-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for opencodecs-0.1.13-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 d4b7f55616350b2b569d30f83a00875ae69dd93bd41090c305475b40372c39eb
MD5 463732ad3fa60edd66f5a7164ea05221
BLAKE2b-256 33f79d396acaa53c98c5eadbeb0e5e4726f0df7aaf011f4d9915d7ca4657b89a

See more details on using hashes here.

Provenance

The following attestation bundles were made for opencodecs-0.1.13-cp313-cp313-macosx_15_0_arm64.whl:

Publisher: build_wheels.yml on kevinjohncutler/opencodecs

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

File details

Details for the file opencodecs-0.1.13-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for opencodecs-0.1.13-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 267f5b5f9d72302356c9ede04cba223cf8d801ddb7a8135a89948980f34dc091
MD5 2556fc7ccdab09cc77577bc1c6f61c98
BLAKE2b-256 f0a7c4127bec84e53c0591cd5d67852bb35a4b2e8733b76bbbba5fc650fac640

See more details on using hashes here.

Provenance

The following attestation bundles were made for opencodecs-0.1.13-cp312-cp312-win_amd64.whl:

Publisher: build_wheels.yml on kevinjohncutler/opencodecs

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

File details

Details for the file opencodecs-0.1.13-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for opencodecs-0.1.13-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0e3bb87258114039bd6a555107d8edfcea781569c80d72bb5fa8b702360d0762
MD5 21ac6a11755beae1e547055b9539683d
BLAKE2b-256 5742dd5731190cf6f7a409b2e5562e0683c37691747f0265b94163cb946f2e6b

See more details on using hashes here.

Provenance

The following attestation bundles were made for opencodecs-0.1.13-cp312-cp312-manylinux_2_28_x86_64.whl:

Publisher: build_wheels.yml on kevinjohncutler/opencodecs

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

File details

Details for the file opencodecs-0.1.13-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for opencodecs-0.1.13-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7af6e4ef17fc561a0d6c0c0f9aacc7e08ff9b529b815f0fafaa5fcffa7178340
MD5 fa64a3b1925a6c6056055ff2e1ce64c1
BLAKE2b-256 5d43fe078898b04261bdb2aa3c2386472f9117aa4899537782b5f2799c4aed77

See more details on using hashes here.

Provenance

The following attestation bundles were made for opencodecs-0.1.13-cp312-cp312-manylinux_2_28_aarch64.whl:

Publisher: build_wheels.yml on kevinjohncutler/opencodecs

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

File details

Details for the file opencodecs-0.1.13-cp312-cp312-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for opencodecs-0.1.13-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 3494686a00b6d977aaaaa01e380628a5700f069b99e72e1403dc1bbe8f891967
MD5 73ceb3ac88ea6fb3625e3334219f36ec
BLAKE2b-256 ff1656c9587620d2d217b85d7dfae0f20f8757867ae09013dfa018015065dc63

See more details on using hashes here.

Provenance

The following attestation bundles were made for opencodecs-0.1.13-cp312-cp312-macosx_15_0_arm64.whl:

Publisher: build_wheels.yml on kevinjohncutler/opencodecs

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

File details

Details for the file opencodecs-0.1.13-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for opencodecs-0.1.13-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 c184206b5f284e8c515a9e110914aa41086105027ea7015264940dc045bd8dcc
MD5 398018349c504dfa3ba9fc5fa524d589
BLAKE2b-256 72239fc5c8258b4705731efcdb612991243ac1129fb364fb35477a1be6dd4cfc

See more details on using hashes here.

Provenance

The following attestation bundles were made for opencodecs-0.1.13-cp311-cp311-win_amd64.whl:

Publisher: build_wheels.yml on kevinjohncutler/opencodecs

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

File details

Details for the file opencodecs-0.1.13-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for opencodecs-0.1.13-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ce3694baefbe8f3e253b1a138648eed6cf493920571476665b0281981dcd0607
MD5 8692029652ac352f2f296cdfcad6a2aa
BLAKE2b-256 4fb1bb68650653f7cd2ecf08f512e722d2fc25e1bf6e7e1da2394c09802fc1fc

See more details on using hashes here.

Provenance

The following attestation bundles were made for opencodecs-0.1.13-cp311-cp311-manylinux_2_28_x86_64.whl:

Publisher: build_wheels.yml on kevinjohncutler/opencodecs

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

File details

Details for the file opencodecs-0.1.13-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for opencodecs-0.1.13-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 fe7999014477e9985a729bda17810a1b4afff08c170c2e3427e057a1f151ca34
MD5 12746025821d0ce1a8c0793322805238
BLAKE2b-256 a473f2e5b84e47d382943f8207e03b843daa9ecc45e1357c22869d69732a20e7

See more details on using hashes here.

Provenance

The following attestation bundles were made for opencodecs-0.1.13-cp311-cp311-manylinux_2_28_aarch64.whl:

Publisher: build_wheels.yml on kevinjohncutler/opencodecs

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

File details

Details for the file opencodecs-0.1.13-cp311-cp311-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for opencodecs-0.1.13-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 6ac8686cf2f76c62cc72bef2128d7fdf09ed212f1a00c9594cbd2e9e04d77a50
MD5 47e99c05c11db1a7f5cf8534d50d2191
BLAKE2b-256 3152824574949f4f89fc7bcdda755cd316ba04799c6ca131ac0f2ab026bdab58

See more details on using hashes here.

Provenance

The following attestation bundles were made for opencodecs-0.1.13-cp311-cp311-macosx_15_0_arm64.whl:

Publisher: build_wheels.yml on kevinjohncutler/opencodecs

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

File details

Details for the file opencodecs-0.1.13-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for opencodecs-0.1.13-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 db32bdd5c9279d45e557f8c81f79b03e93ac7a6cbd6813bc2202fd998becadb5
MD5 e03fbd0ac999d2bcc6e72df2c8ab51d0
BLAKE2b-256 5fc60901e0721ec02cb98b7eb0c063d9bf58faa80acbd1cf1e60a0b6dacaf9e5

See more details on using hashes here.

Provenance

The following attestation bundles were made for opencodecs-0.1.13-cp310-cp310-win_amd64.whl:

Publisher: build_wheels.yml on kevinjohncutler/opencodecs

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

File details

Details for the file opencodecs-0.1.13-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for opencodecs-0.1.13-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d59aa0ffa5df8597f50bdba7be05e884506a4ff2ce35e99fc3527e082d589225
MD5 5feac756687a0bf1ba1a36fdd383cb53
BLAKE2b-256 267470b7627d49959ddcbc69dbfecb716020952ea00f3156a2ded786e82316e7

See more details on using hashes here.

Provenance

The following attestation bundles were made for opencodecs-0.1.13-cp310-cp310-manylinux_2_28_x86_64.whl:

Publisher: build_wheels.yml on kevinjohncutler/opencodecs

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

File details

Details for the file opencodecs-0.1.13-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for opencodecs-0.1.13-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8f55593b9e654db0f97d23c8a5e137ba46d7b3b0ea9db2311f985554a5a1b8c8
MD5 6d55e987f9ce8fd89fb042523c338da5
BLAKE2b-256 2a384b189ee282384ddf2c9e374b4e2b22d8235dfe7bc55ef3e4596d6a23a65c

See more details on using hashes here.

Provenance

The following attestation bundles were made for opencodecs-0.1.13-cp310-cp310-manylinux_2_28_aarch64.whl:

Publisher: build_wheels.yml on kevinjohncutler/opencodecs

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

File details

Details for the file opencodecs-0.1.13-cp310-cp310-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for opencodecs-0.1.13-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 16bea360c0ed68218fce9a40e5871c595d7503dbe12e48c2263f3f56f53668f2
MD5 d7f4ef782678ce80538b60395ef9e619
BLAKE2b-256 dbc2f06e7388f7d44685f8104cdfd3a12d5a6e2fdabe4067e4f169a84c40e7b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for opencodecs-0.1.13-cp310-cp310-macosx_15_0_arm64.whl:

Publisher: build_wheels.yml on kevinjohncutler/opencodecs

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