opencodecs 0.1.7__tar.gz → 0.1.8__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.
Files changed (207) hide show
  1. {opencodecs-0.1.7 → opencodecs-0.1.8}/CHANGES.rst +35 -0
  2. {opencodecs-0.1.7/src/opencodecs.egg-info → opencodecs-0.1.8}/PKG-INFO +1 -1
  3. {opencodecs-0.1.7 → opencodecs-0.1.8}/pyproject.toml +1 -1
  4. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/__init__.py +1 -1
  5. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/codecs/_bcdec.c +152 -152
  6. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/codecs/_bmp.c +152 -152
  7. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/codecs/_eer.c +152 -152
  8. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/codecs/_hcomp.c +152 -152
  9. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/codecs/_plio.c +152 -152
  10. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/codecs/_png.c +152 -152
  11. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/codecs/_qoi.c +152 -152
  12. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/codecs/_rcomp.c +152 -152
  13. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/codecs/_rgbe.c +152 -152
  14. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/uhdr.py +31 -6
  15. {opencodecs-0.1.7 → opencodecs-0.1.8/src/opencodecs.egg-info}/PKG-INFO +1 -1
  16. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_uhdr.py +40 -0
  17. {opencodecs-0.1.7 → opencodecs-0.1.8}/3rdparty/bcdec/bcdec.h +0 -0
  18. {opencodecs-0.1.7 → opencodecs-0.1.8}/3rdparty/bitshuffle/bitshuffle_core.c +0 -0
  19. {opencodecs-0.1.7 → opencodecs-0.1.8}/3rdparty/bitshuffle/iochain.c +0 -0
  20. {opencodecs-0.1.7 → opencodecs-0.1.8}/3rdparty/cfitsio/fits_hdecompress.c +0 -0
  21. {opencodecs-0.1.7 → opencodecs-0.1.8}/3rdparty/cfitsio/pliocomp.c +0 -0
  22. {opencodecs-0.1.7 → opencodecs-0.1.8}/3rdparty/cfitsio/ricecomp.c +0 -0
  23. {opencodecs-0.1.7 → opencodecs-0.1.8}/3rdparty/imcd_eer/eer.c +0 -0
  24. {opencodecs-0.1.7 → opencodecs-0.1.8}/3rdparty/imcd_eer/eer.h +0 -0
  25. {opencodecs-0.1.7 → opencodecs-0.1.8}/3rdparty/imcd_lzw/lzw.c +0 -0
  26. {opencodecs-0.1.7 → opencodecs-0.1.8}/3rdparty/imcd_lzw/lzw.h +0 -0
  27. {opencodecs-0.1.7 → opencodecs-0.1.8}/3rdparty/libspng/spng.c +0 -0
  28. {opencodecs-0.1.7 → opencodecs-0.1.8}/3rdparty/oc_tifflzw/oc_tifflzw.c +0 -0
  29. {opencodecs-0.1.7 → opencodecs-0.1.8}/3rdparty/oc_tifflzw/oc_tifflzw.h +0 -0
  30. {opencodecs-0.1.7 → opencodecs-0.1.8}/3rdparty/rgbe/rgbe.c +0 -0
  31. {opencodecs-0.1.7 → opencodecs-0.1.8}/MANIFEST.in +0 -0
  32. {opencodecs-0.1.7 → opencodecs-0.1.8}/README.md +0 -0
  33. {opencodecs-0.1.7 → opencodecs-0.1.8}/bench/build_libjxl.sh +0 -0
  34. {opencodecs-0.1.7 → opencodecs-0.1.8}/patches/libjxl/README.md +0 -0
  35. {opencodecs-0.1.7 → opencodecs-0.1.8}/setup.cfg +0 -0
  36. {opencodecs-0.1.7 → opencodecs-0.1.8}/setup.py +0 -0
  37. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_aec_codec.py +0 -0
  38. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_avif_codec.py +0 -0
  39. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_b2nd_codec.py +0 -0
  40. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_bcn_codec.py +0 -0
  41. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_bitshuffle_codec.py +0 -0
  42. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_blosc2_codec.py +0 -0
  43. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_bmp_codec.py +0 -0
  44. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_brotli_codec.py +0 -0
  45. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_brunsli_codec.py +0 -0
  46. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_byteshuffle_codec.py +0 -0
  47. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_bz2_codec.py +0 -0
  48. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_cms_codec.py +0 -0
  49. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_czi_codec.py +0 -0
  50. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_czi_reader.py +0 -0
  51. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_czi_writer.py +0 -0
  52. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_deflate_codec.py +0 -0
  53. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_dicomrle_codec.py +0 -0
  54. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_dicomweb.py +0 -0
  55. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_eer_reader.py +0 -0
  56. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_ets.py +0 -0
  57. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_fits.py +0 -0
  58. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_fits_codec.py +0 -0
  59. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_fits_compressed.py +0 -0
  60. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_gif_codec.py +0 -0
  61. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_gzip_codec.py +0 -0
  62. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_hdf5_codec.py +0 -0
  63. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_hdf5_http.py +0 -0
  64. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_heif_codec.py +0 -0
  65. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_htj2k_codec.py +0 -0
  66. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_jpeg2k_codec.py +0 -0
  67. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_jpeg_codec.py +0 -0
  68. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_jpegls_codec.py +0 -0
  69. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_jxl_codec.py +0 -0
  70. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_lerc_codec.py +0 -0
  71. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_lif_codec.py +0 -0
  72. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_lif_native.py +0 -0
  73. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_lz4_codec.py +0 -0
  74. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_lzma_codec.py +0 -0
  75. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_mozjpeg_codec.py +0 -0
  76. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_nd2_codec.py +0 -0
  77. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_nd2_native.py +0 -0
  78. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_ndtiff.py +0 -0
  79. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_ndtiff_pyramid.py +0 -0
  80. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_ndtiff_writer.py +0 -0
  81. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_none_codec.py +0 -0
  82. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_numpy_codec.py +0 -0
  83. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_oib_codec.py +0 -0
  84. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_oib_native.py +0 -0
  85. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_oir_codec.py +0 -0
  86. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_ole2.py +0 -0
  87. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_ome_xml.py +0 -0
  88. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_omezarr.py +0 -0
  89. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_omezarr_writer.py +0 -0
  90. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_packints_codec.py +0 -0
  91. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_pcodec_codec.py +0 -0
  92. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_png_codec.py +0 -0
  93. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_predictor_codec.py +0 -0
  94. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_pyramid_build.py +0 -0
  95. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_qoi_codec.py +0 -0
  96. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_quantize_codec.py +0 -0
  97. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_rcomp_codec.py +0 -0
  98. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_rgbe.py +0 -0
  99. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_rgbe_codec.py +0 -0
  100. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_snappy_codec.py +0 -0
  101. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_sperr_codec.py +0 -0
  102. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_sz3_codec.py +0 -0
  103. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_tiff_codec.py +0 -0
  104. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_tiff_http.py +0 -0
  105. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_tiff_pyramid.py +0 -0
  106. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_tiff_writer.py +0 -0
  107. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_ultrahdr_codec.py +0 -0
  108. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_vsi_codec.py +0 -0
  109. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_webp_codec.py +0 -0
  110. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_zarr_codecs.py +0 -0
  111. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_zfp_codec.py +0 -0
  112. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/_zstd_codec.py +0 -0
  113. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/codecs/__init__.py +0 -0
  114. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/codecs/_bitshuffle.c +0 -0
  115. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/codecs/_bytetools.c +0 -0
  116. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/codecs/_deflate.c +0 -0
  117. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/codecs/_lz4.c +0 -0
  118. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/codecs/_ndtiff.c +0 -0
  119. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/codecs/_registry.py +0 -0
  120. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/codecs/_tiff.c +0 -0
  121. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/codecs/_zstd.c +0 -0
  122. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/core/__init__.py +0 -0
  123. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/core/_io_helpers.py +0 -0
  124. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/core/_optional_backend.py +0 -0
  125. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/core/codec.py +0 -0
  126. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/core/color.py +0 -0
  127. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/core/errors.py +0 -0
  128. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/core/io.py +0 -0
  129. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/core/pyramid.py +0 -0
  130. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/core/segment_compression.py +0 -0
  131. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/jxl.py +0 -0
  132. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/parallel.py +0 -0
  133. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/tiff_reader.py +0 -0
  134. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/tifffile_patch.py +0 -0
  135. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs/zarr.py +0 -0
  136. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs.egg-info/SOURCES.txt +0 -0
  137. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs.egg-info/dependency_links.txt +0 -0
  138. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs.egg-info/requires.txt +0 -0
  139. {opencodecs-0.1.7 → opencodecs-0.1.8}/src/opencodecs.egg-info/top_level.txt +0 -0
  140. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_auto_pyramid.py +0 -0
  141. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_bcdec.py +0 -0
  142. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_brunsli.py +0 -0
  143. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_charls.py +0 -0
  144. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_core_codec_api.py +0 -0
  145. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_corpus.py +0 -0
  146. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_corpus_codec_decode.py +0 -0
  147. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_corpus_other.py +0 -0
  148. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_corpus_png.py +0 -0
  149. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_corpus_tiff.py +0 -0
  150. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_corpus_vendors.py +0 -0
  151. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_coverage_final.py +0 -0
  152. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_coverage_finishing.py +0 -0
  153. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_coverage_last.py +0 -0
  154. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_coverage_more.py +0 -0
  155. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_coverage_push.py +0 -0
  156. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_czi_fixture.py +0 -0
  157. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_czi_pyramid.py +0 -0
  158. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_czi_writer.py +0 -0
  159. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_data_source.py +0 -0
  160. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_deflate.py +0 -0
  161. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_dicomweb.py +0 -0
  162. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_edge_cases.py +0 -0
  163. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_eer.py +0 -0
  164. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_encode_comprehensive.py +0 -0
  165. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_error_handling.py +0 -0
  166. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_fits.py +0 -0
  167. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_gif.py +0 -0
  168. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_hdf5_http.py +0 -0
  169. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_hdf5_local.py +0 -0
  170. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_heif_avif_features.py +0 -0
  171. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_http_byte_savings.py +0 -0
  172. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_http_prefetch.py +0 -0
  173. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_http_unified.py +0 -0
  174. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_io_chunked.py +0 -0
  175. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_isal.py +0 -0
  176. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_jxl.py +0 -0
  177. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_lif_native.py +0 -0
  178. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_live_archives.py +0 -0
  179. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_mozjpeg.py +0 -0
  180. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_native_parity.py +0 -0
  181. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_nd2_native.py +0 -0
  182. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_ndtiff.py +0 -0
  183. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_oib_native.py +0 -0
  184. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_ome_xml.py +0 -0
  185. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_omezarr.py +0 -0
  186. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_omezarr_sharded_range.py +0 -0
  187. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_open_pyramid.py +0 -0
  188. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_openjph.py +0 -0
  189. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_optional_backend.py +0 -0
  190. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_parallel_jxl.py +0 -0
  191. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_phase4_filters.py +0 -0
  192. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_phase5_icc.py +0 -0
  193. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_phase6_codecs.py +0 -0
  194. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_phase7_cms.py +0 -0
  195. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_rgbe.py +0 -0
  196. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_snappy.py +0 -0
  197. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_tier1_scientific.py +0 -0
  198. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_tiff_codec_encode.py +0 -0
  199. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_tiff_http.py +0 -0
  200. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_tiff_native.py +0 -0
  201. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_tiff_pyramid.py +0 -0
  202. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_tiff_reader.py +0 -0
  203. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_tiff_writer.py +0 -0
  204. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_tifffile_patch.py +0 -0
  205. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_unified_api.py +0 -0
  206. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_vsi_oir.py +0 -0
  207. {opencodecs-0.1.7 → opencodecs-0.1.8}/tests/test_zarr_adapters.py +0 -0
@@ -10,6 +10,41 @@ 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.8 (2026-06-02)
14
+ ------------------
15
+
16
+ **DCT-domain decode-time scale on JPEG + decode_native**
17
+
18
+ ``opencodecs.codecs._jpeg.decode`` now exposes libjpeg-turbo's
19
+ ``tj3SetScalingFactor`` knob via a new ``scale=`` kwarg (plus
20
+ explicit ``scale_num`` / ``scale_denom`` for advanced callers). The
21
+ decoder skips the inverse-DCT work for high-frequency coefficients
22
+ when the caller requests a downsampled output, so a 1/8 decode runs
23
+ ~2× faster than a full decode and produces a 64× smaller raster.
24
+
25
+ Supported factors are libjpeg-turbo's full set of 16 ratios N/8 for
26
+ N ∈ {1, 2, …, 16} — i.e. anywhere between 1/8 and 2/1. The new
27
+ ``opencodecs.codecs._jpeg.supported_scaling_factors()`` returns them
28
+ as ``(num, denom)`` pairs. ``scale=`` accepts:
29
+
30
+ * an integer N (interpreted as ``1/N``)
31
+ * a float (snapped to the closest supported ratio)
32
+ * a tuple ``(num, denom)`` verbatim
33
+
34
+ ``opencodecs.uhdr.decode_native(..., scale=...)`` threads the same
35
+ knob through both the SDR base and the gain-map JPEG decodes. The
36
+ gain-application kernel runs on the smaller rasters, so the whole
37
+ pipeline scales — a 2k² Ultra-HDR decode at ``scale=8`` returns a
38
+ ``(250, 250, 3)`` fp16 raster in ~25 ms vs ~53 ms for the full
39
+ decode. Useful for thumbnail / preview pipelines that want real
40
+ HDR pixels off cloud-stored Ultra-HDR without paying the megapixel
41
+ JPEG decode cost. Lossless source not required — the JPEG file is
42
+ unchanged on disk; the savings come from skipping IDCT work.
43
+
44
+ (libuhdr lossless support is unchanged: ISO 21496-1's SDR base layer
45
+ is required to be baseline DCT JPEG, so lossless-mode JPEG would
46
+ not be a conforming Ultra-HDR file.)
47
+
13
48
  0.1.7 (2026-06-02)
14
49
  ------------------
15
50
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: opencodecs
3
- Version: 0.1.7
3
+ Version: 0.1.8
4
4
  Summary: Streaming, network-aware image codecs for scientific imaging (prototype: JPEG XL)
5
5
  Author: Kevin Cutler
6
6
  License: BSD-3-Clause
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "opencodecs"
7
- version = "0.1.7"
7
+ version = "0.1.8"
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"
@@ -191,4 +191,4 @@ __all__ = [
191
191
  "CziWriter", "CziPyramidWriter",
192
192
  ]
193
193
 
194
- __version__ = "0.1.7"
194
+ __version__ = "0.1.8"