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.10.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.10-cp313-cp313-win_amd64.whl (27.8 MB view details)

Uploaded CPython 3.13Windows x86-64

opencodecs-0.1.10-cp313-cp313-manylinux_2_28_x86_64.whl (37.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

opencodecs-0.1.10-cp313-cp313-manylinux_2_28_aarch64.whl (35.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

opencodecs-0.1.10-cp313-cp313-macosx_15_0_arm64.whl (20.8 MB view details)

Uploaded CPython 3.13macOS 15.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

opencodecs-0.1.10-cp312-cp312-manylinux_2_28_x86_64.whl (37.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

opencodecs-0.1.10-cp312-cp312-manylinux_2_28_aarch64.whl (35.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

opencodecs-0.1.10-cp312-cp312-macosx_15_0_arm64.whl (20.8 MB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

opencodecs-0.1.10-cp311-cp311-manylinux_2_28_x86_64.whl (37.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

opencodecs-0.1.10-cp311-cp311-manylinux_2_28_aarch64.whl (36.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

opencodecs-0.1.10-cp311-cp311-macosx_15_0_arm64.whl (20.8 MB view details)

Uploaded CPython 3.11macOS 15.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

opencodecs-0.1.10-cp310-cp310-manylinux_2_28_x86_64.whl (36.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

opencodecs-0.1.10-cp310-cp310-manylinux_2_28_aarch64.whl (35.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

opencodecs-0.1.10-cp310-cp310-macosx_15_0_arm64.whl (20.8 MB view details)

Uploaded CPython 3.10macOS 15.0+ ARM64

File details

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

File metadata

  • Download URL: opencodecs-0.1.10.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.10.tar.gz
Algorithm Hash digest
SHA256 2039e0a820f8742547cb203b5bed8b56ea96f710f1aa1a7a9be052426656c54c
MD5 df5474c1282d62e9d62ed50238dbf5c5
BLAKE2b-256 9cfcc7260251e022158be4b2f855755a4b85a81d75123e42c4aeafa99ff5f1d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for opencodecs-0.1.10.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.10-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for opencodecs-0.1.10-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 b38a3a3b1f5397ece00138ca0cf7634ff94a92e3de33193a0f08bede87540023
MD5 a7dc48b48acbcc244e248d3dcd3b2247
BLAKE2b-256 204684f3118a60b262f52ad0ce8dafbb30873b00fc944497ed5a660ce3d282b6

See more details on using hashes here.

Provenance

The following attestation bundles were made for opencodecs-0.1.10-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.10-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for opencodecs-0.1.10-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 656ac6fe3a80322f545aa740e7a6adb6043c914ccb102690a710a00cbd8dfd00
MD5 7a613682989fa7b747db841c803865a6
BLAKE2b-256 05dab99bd98ef7ed587122ce23d57b99d37847ac7304c107bb8a83a49dc55aea

See more details on using hashes here.

Provenance

The following attestation bundles were made for opencodecs-0.1.10-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.10-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for opencodecs-0.1.10-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 27f77c6246c89554fb3b8619e40df3d76d3200e80f41ec2290d995f4555a087e
MD5 20fa846739d460d80411eb8643001077
BLAKE2b-256 564ab764408fc6fc1eb369185759e4f6338e0bab670ab6f078c432a2b8d24366

See more details on using hashes here.

Provenance

The following attestation bundles were made for opencodecs-0.1.10-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.10-cp313-cp313-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for opencodecs-0.1.10-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 77fa8a65338844424786f74b9d9821905595e297c278787e970417d8ef6f971c
MD5 460d123848af5dadb3c96afd0b373b3e
BLAKE2b-256 984d09c4a8337e53c5be08109b2ba52011b08fdfa939514f193107e4002b70d3

See more details on using hashes here.

Provenance

The following attestation bundles were made for opencodecs-0.1.10-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.10-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for opencodecs-0.1.10-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 125511a1817afc7d44e4958245842bfe4f9c422e0f86bc5bc18444375f788a00
MD5 5a0f712700e10042052cc1b6da6c1c6e
BLAKE2b-256 b88543fef0d169f63f8c2602439fa32ca052615ce8777d47e173cdf5355040cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for opencodecs-0.1.10-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.10-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for opencodecs-0.1.10-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c63481e2e79f5d4bded1ab602afcc959986577335c517d00034ff6f34557d153
MD5 3b05df15171dfab25565716fb3607189
BLAKE2b-256 e6b3cfb76edfcee1ba487a431fe295f0f5f07505bb27ab7a2a2c0840fe096918

See more details on using hashes here.

Provenance

The following attestation bundles were made for opencodecs-0.1.10-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.10-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for opencodecs-0.1.10-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2fd44c86ec3dc3cbc024cdf4e5d45b4b5388b39608c0f0147648d761134748ac
MD5 3e020c73e4529ce5e2e4b84b915aab9f
BLAKE2b-256 e7ba3b948868b83b1f094278e0a12c681214be148c6bac218b4623aa7f2b4426

See more details on using hashes here.

Provenance

The following attestation bundles were made for opencodecs-0.1.10-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.10-cp312-cp312-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for opencodecs-0.1.10-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 c3bfdaebe9e85cd2b1c18f6b3302446cc8338669cc2d2cd61870ecea467100e5
MD5 36dbd7ed6e83a6e3c411b52772372d49
BLAKE2b-256 f2cb26202f530b0d9fcd952604831b6665ee56c5456a97594293ccc95f349efe

See more details on using hashes here.

Provenance

The following attestation bundles were made for opencodecs-0.1.10-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.10-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for opencodecs-0.1.10-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 7249d754ee4c29a28b1f38d73177add9da7c117f70e61593ffcede68b399c8bf
MD5 acd51dafb94e15c789acfc1eb8be9ab1
BLAKE2b-256 4d4289949cdd04cfbcc22466dc17c44916cd4a3d3a7ac32c39d98b769f36f348

See more details on using hashes here.

Provenance

The following attestation bundles were made for opencodecs-0.1.10-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.10-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for opencodecs-0.1.10-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2499f790b45b2d564e2c8de317e46c3c6a901bbc46576469d8beb0d987ad14ab
MD5 3bc39c4f7ba298914e91f6f5797dd268
BLAKE2b-256 faa2698551c573eb3048014c6034cbe1f1c841ddf36793c20282dae31202b73e

See more details on using hashes here.

Provenance

The following attestation bundles were made for opencodecs-0.1.10-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.10-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for opencodecs-0.1.10-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b2a27728fd4a3eed5b47621a3d03530835803073f59cbfce036519c1dd3f71fb
MD5 2cd6e717b56351ec259ef0e75d109e4c
BLAKE2b-256 3dda880ebadb2e80fe216bc3d7759dab599c5f332e276fd2fed176e52fc0c345

See more details on using hashes here.

Provenance

The following attestation bundles were made for opencodecs-0.1.10-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.10-cp311-cp311-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for opencodecs-0.1.10-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 662aea55e20c0ba2d8a7168a34626b41a627adabe7c0ca9538143ef67910aeb9
MD5 c0c55eb41ede301043ba64c8929f950c
BLAKE2b-256 e4e4d7b18bfb3e98f1bee52db5598b4f7bba5b281bf5aa9e68d21503e8f444f4

See more details on using hashes here.

Provenance

The following attestation bundles were made for opencodecs-0.1.10-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.10-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for opencodecs-0.1.10-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 4dd4a7020389b2ad955d37bc03d29b1724d5d939346e3fed1d58d8b136408222
MD5 ee8cb2881da9961232a894ea3cf734e2
BLAKE2b-256 6c41abac2dcd31bdea44894b1e6a8bc3ddf44740dc3602d8ab69bbd50bf4bbd7

See more details on using hashes here.

Provenance

The following attestation bundles were made for opencodecs-0.1.10-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.10-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for opencodecs-0.1.10-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7c315c4ba77c840a9bdc793c45feab6b16386b1cca6d71f647219a0947b009ec
MD5 769427fb71a4113122de510626bfcf6d
BLAKE2b-256 3fcf1b886a5c508fb38e787d9e1e7fbe68e89847757fc98fdabe403acad37c7a

See more details on using hashes here.

Provenance

The following attestation bundles were made for opencodecs-0.1.10-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.10-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for opencodecs-0.1.10-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6558da676d733bb9a36581af42d517873f38129f3b1a21e8fe78ba2f492f0d2d
MD5 99d89f4dbeb54b64b83452ca467629a0
BLAKE2b-256 6dbb6a16706fc7eabb60df84feabc853f2858496da5e797c33e9435d729837d4

See more details on using hashes here.

Provenance

The following attestation bundles were made for opencodecs-0.1.10-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.10-cp310-cp310-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for opencodecs-0.1.10-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 aa0adabfc84fdbb7b98aab63add90fb8ebfd23510af7e5894210e0de9ce9d5e6
MD5 730e11ec6c5cd7a64b6c38971bf65216
BLAKE2b-256 1eb19412509b7c0d51d426b9777845e80fc2f308615a487afc245fb522e171b1

See more details on using hashes here.

Provenance

The following attestation bundles were made for opencodecs-0.1.10-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