opencodecs 0.1.6__tar.gz → 0.1.7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {opencodecs-0.1.6 → opencodecs-0.1.7}/CHANGES.rst +73 -6
- {opencodecs-0.1.6/src/opencodecs.egg-info → opencodecs-0.1.7}/PKG-INFO +1 -1
- {opencodecs-0.1.6 → opencodecs-0.1.7}/pyproject.toml +1 -1
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/__init__.py +1 -1
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/codecs/_bcdec.c +152 -152
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/codecs/_bmp.c +152 -152
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/codecs/_eer.c +152 -152
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/codecs/_hcomp.c +152 -152
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/codecs/_plio.c +152 -152
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/codecs/_png.c +152 -152
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/codecs/_qoi.c +152 -152
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/codecs/_rcomp.c +152 -152
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/codecs/_rgbe.c +152 -152
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/uhdr.py +66 -20
- {opencodecs-0.1.6 → opencodecs-0.1.7/src/opencodecs.egg-info}/PKG-INFO +1 -1
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_uhdr.py +55 -5
- {opencodecs-0.1.6 → opencodecs-0.1.7}/3rdparty/bcdec/bcdec.h +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/3rdparty/bitshuffle/bitshuffle_core.c +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/3rdparty/bitshuffle/iochain.c +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/3rdparty/cfitsio/fits_hdecompress.c +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/3rdparty/cfitsio/pliocomp.c +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/3rdparty/cfitsio/ricecomp.c +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/3rdparty/imcd_eer/eer.c +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/3rdparty/imcd_eer/eer.h +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/3rdparty/imcd_lzw/lzw.c +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/3rdparty/imcd_lzw/lzw.h +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/3rdparty/libspng/spng.c +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/3rdparty/oc_tifflzw/oc_tifflzw.c +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/3rdparty/oc_tifflzw/oc_tifflzw.h +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/3rdparty/rgbe/rgbe.c +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/MANIFEST.in +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/README.md +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/bench/build_libjxl.sh +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/patches/libjxl/README.md +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/setup.cfg +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/setup.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_aec_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_avif_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_b2nd_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_bcn_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_bitshuffle_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_blosc2_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_bmp_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_brotli_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_brunsli_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_byteshuffle_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_bz2_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_cms_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_czi_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_czi_reader.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_czi_writer.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_deflate_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_dicomrle_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_dicomweb.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_eer_reader.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_ets.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_fits.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_fits_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_fits_compressed.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_gif_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_gzip_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_hdf5_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_hdf5_http.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_heif_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_htj2k_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_jpeg2k_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_jpeg_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_jpegls_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_jxl_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_lerc_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_lif_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_lif_native.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_lz4_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_lzma_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_mozjpeg_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_nd2_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_nd2_native.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_ndtiff.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_ndtiff_pyramid.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_ndtiff_writer.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_none_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_numpy_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_oib_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_oib_native.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_oir_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_ole2.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_ome_xml.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_omezarr.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_omezarr_writer.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_packints_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_pcodec_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_png_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_predictor_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_pyramid_build.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_qoi_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_quantize_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_rcomp_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_rgbe.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_rgbe_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_snappy_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_sperr_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_sz3_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_tiff_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_tiff_http.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_tiff_pyramid.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_tiff_writer.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_ultrahdr_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_vsi_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_webp_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_zarr_codecs.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_zfp_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/_zstd_codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/codecs/__init__.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/codecs/_bitshuffle.c +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/codecs/_bytetools.c +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/codecs/_deflate.c +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/codecs/_lz4.c +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/codecs/_ndtiff.c +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/codecs/_registry.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/codecs/_tiff.c +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/codecs/_zstd.c +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/core/__init__.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/core/_io_helpers.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/core/_optional_backend.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/core/codec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/core/color.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/core/errors.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/core/io.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/core/pyramid.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/core/segment_compression.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/jxl.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/parallel.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/tiff_reader.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/tifffile_patch.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs/zarr.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs.egg-info/SOURCES.txt +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs.egg-info/dependency_links.txt +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs.egg-info/requires.txt +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/src/opencodecs.egg-info/top_level.txt +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_auto_pyramid.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_bcdec.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_brunsli.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_charls.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_core_codec_api.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_corpus.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_corpus_codec_decode.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_corpus_other.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_corpus_png.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_corpus_tiff.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_corpus_vendors.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_coverage_final.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_coverage_finishing.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_coverage_last.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_coverage_more.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_coverage_push.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_czi_fixture.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_czi_pyramid.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_czi_writer.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_data_source.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_deflate.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_dicomweb.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_edge_cases.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_eer.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_encode_comprehensive.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_error_handling.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_fits.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_gif.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_hdf5_http.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_hdf5_local.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_heif_avif_features.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_http_byte_savings.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_http_prefetch.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_http_unified.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_io_chunked.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_isal.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_jxl.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_lif_native.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_live_archives.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_mozjpeg.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_native_parity.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_nd2_native.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_ndtiff.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_oib_native.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_ome_xml.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_omezarr.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_omezarr_sharded_range.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_open_pyramid.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_openjph.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_optional_backend.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_parallel_jxl.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_phase4_filters.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_phase5_icc.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_phase6_codecs.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_phase7_cms.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_rgbe.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_snappy.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_tier1_scientific.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_tiff_codec_encode.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_tiff_http.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_tiff_native.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_tiff_pyramid.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_tiff_reader.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_tiff_writer.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_tifffile_patch.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_unified_api.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_vsi_oir.py +0 -0
- {opencodecs-0.1.6 → opencodecs-0.1.7}/tests/test_zarr_adapters.py +0 -0
|
@@ -10,6 +10,69 @@ Versions follow the same ``YYYY.M.D`` cadence as upstream when we
|
|
|
10
10
|
publish; the entries below cluster work by date rather than by
|
|
11
11
|
release because most of it has shipped continuously to ``main``.
|
|
12
12
|
|
|
13
|
+
0.1.7 (2026-06-02)
|
|
14
|
+
------------------
|
|
15
|
+
|
|
16
|
+
**Patched libultrahdr bundle**
|
|
17
|
+
|
|
18
|
+
Since v0.1.6 we build libuhdr ourselves; v0.1.7 starts carrying
|
|
19
|
+
local patches via ``patches/libultrahdr/*.patch``, applied by
|
|
20
|
+
``bench/build_codec_libs.sh::build_libultrahdr`` after the source
|
|
21
|
+
fetch. Five upstream post-v1.4.0 cherry-picks land first:
|
|
22
|
+
|
|
23
|
+
* ``5ed39d6`` — fix ``CLIP3`` parameter order in libuhdr's own
|
|
24
|
+
``applyGainMap``. The bug clamped a constant ``0.0f`` instead of
|
|
25
|
+
the gainmap weight whenever ``display_boost ≠ hdr_capacity_max``,
|
|
26
|
+
silently producing wrong HDR output on libuhdr's wrapped
|
|
27
|
+
``decode()`` path. ``opencodecs.uhdr.decode_native`` is unaffected
|
|
28
|
+
(it uses our own Cython gain-application kernel).
|
|
29
|
+
* ``7088ca7`` — error-message typo in ``jpegr.cpp``.
|
|
30
|
+
* ``13a058f`` — ``icc.h`` Endian_Swap macros now respect actual
|
|
31
|
+
host endianness instead of an unconditionally-true ``USE_BIG_ENDIAN_IN_ICC``.
|
|
32
|
+
No effect on x86_64/aarch64 (little-endian); fixes PowerPC/s390x.
|
|
33
|
+
* ``5fa99b5`` — add missing ``<cstdint>`` include for GCC 15.
|
|
34
|
+
* ``8cbc983`` — same ``CLIP3`` fix as ``5ed39d6`` in the GPU path
|
|
35
|
+
(we don't link the GPU path; carried for hygiene).
|
|
36
|
+
|
|
37
|
+
**New API: ``opencodecs.uhdr.probe(data) -> dict``**
|
|
38
|
+
|
|
39
|
+
Parse an Ultra-HDR container's MPF metadata without any pixel
|
|
40
|
+
decode. Returns base + gainmap dimensions plus the gainmap
|
|
41
|
+
metadata block (``max_content_boost`` / ``min_content_boost`` /
|
|
42
|
+
``gamma`` / capacity). Wraps libuhdr's existing ``uhdr_dec_probe``
|
|
43
|
+
+ accessors. ~180× faster than ``decode()`` for any HDR-aware
|
|
44
|
+
flow that only needs dimensions or capacity — image indexing,
|
|
45
|
+
thumbnail generation, HTTP HEAD-style inspection, routing batches
|
|
46
|
+
by content-boost.
|
|
47
|
+
|
|
48
|
+
**Gain-map tunables on ``encode_native``: ``gain_quality`` + ``gain_scale``**
|
|
49
|
+
|
|
50
|
+
Two new kwargs let callers shrink the gain-map layer
|
|
51
|
+
independently of the SDR base:
|
|
52
|
+
|
|
53
|
+
* ``gain_quality`` — JPEG quality for the gain-map layer only
|
|
54
|
+
(defaults to track ``quality``). The gain map is heavily
|
|
55
|
+
band-limited so ``gain_quality=70`` is visually equivalent to
|
|
56
|
+
``q95`` and cuts ~30% off the gain-map bytes.
|
|
57
|
+
* ``gain_scale`` — integer power-of-2 downsample factor for the
|
|
58
|
+
gain-map raster (``1`` keeps full resolution, ``2`` halves both
|
|
59
|
+
axes for quarter-area, etc.). Stride decimation; ~5 ms on a 2k²
|
|
60
|
+
uint8 gain map. Round-trips through ``probe`` / ``decode_native``
|
|
61
|
+
cleanly — the container records the actual gain-map dimensions
|
|
62
|
+
and the decoder upscales on apply.
|
|
63
|
+
|
|
64
|
+
**True streaming encode: ``encode_native(..., out=fp)``**
|
|
65
|
+
|
|
66
|
+
The old ``encode_to(fp, hdr, ...)`` was a forward-compatible
|
|
67
|
+
``fp.write(encode_native(hdr, **kw))`` wrapper. v0.1.7 makes both
|
|
68
|
+
genuinely streaming: ``encode_assembled`` (and by extension
|
|
69
|
+
``encode_native`` / ``encode_to``) now accept an ``out=`` file-
|
|
70
|
+
like, and when given they hand a zero-copy ``memoryview`` over
|
|
71
|
+
libuhdr's internal output buffer to ``out.write()``. Skips the
|
|
72
|
+
final ``PyBytes_FromStringAndSize`` allocation + memcpy. Saves
|
|
73
|
+
~1× output-size peak memory and ~3 ms wall-clock on a 5 MB encode.
|
|
74
|
+
``encode_to`` now returns ``None`` instead of the byte count.
|
|
75
|
+
|
|
13
76
|
0.1.6 (2026-06-01)
|
|
14
77
|
------------------
|
|
15
78
|
|
|
@@ -69,12 +132,16 @@ streaming write-out without changing their code.
|
|
|
69
132
|
|
|
70
133
|
**CI / build robustness**
|
|
71
134
|
|
|
72
|
-
* ``_uhdr`` extension
|
|
73
|
-
``-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
135
|
+
* ``_uhdr`` extension's ``-ffast-math`` is now narrowed to
|
|
136
|
+
``-ffast-math -fno-finite-math-only
|
|
137
|
+
-fno-unsafe-math-optimizations -fno-math-errno
|
|
138
|
+
-fno-trapping-math``. The ``-funsafe-math-optimizations``
|
|
139
|
+
sub-flag is what tells GCC to replace libm calls with libmvec's
|
|
140
|
+
vectorised ``_ZGV*`` variants, which link-fail on Ubuntu (Ubuntu's
|
|
141
|
+
default gcc doesn't auto-link libmvec like manylinux_2_28 does)
|
|
142
|
+
and aren't available at all on aarch64. Same flag set the edt
|
|
143
|
+
extension uses for the same reason. Keeps FMA + reordering
|
|
144
|
+
perf; eliminates the libmvec dependency entirely.
|
|
78
145
|
* The libaec source URL moved from ``gitlab.dkrz.de`` (now
|
|
79
146
|
auth-gated; anonymous requests redirect to ``/users/sign_in``)
|
|
80
147
|
to DKRZ's GitHub mirror at
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "opencodecs"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.7"
|
|
8
8
|
description = "Streaming, network-aware image codecs for scientific imaging (prototype: JPEG XL)"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|