Glymur 0.14.1.post1__tar.gz → 0.14.2__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 (180) hide show
  1. {glymur-0.14.1.post1 → glymur-0.14.2}/.circleci/config.yml +2 -0
  2. {glymur-0.14.1.post1 → glymur-0.14.2}/CHANGES.txt +6 -2
  3. {glymur-0.14.1.post1 → glymur-0.14.2}/Glymur.egg-info/PKG-INFO +1 -1
  4. {glymur-0.14.1.post1 → glymur-0.14.2}/Glymur.egg-info/SOURCES.txt +1 -0
  5. {glymur-0.14.1.post1 → glymur-0.14.2}/PKG-INFO +1 -1
  6. {glymur-0.14.1.post1 → glymur-0.14.2}/docs/source/conf.py +1 -1
  7. {glymur-0.14.1.post1 → glymur-0.14.2}/docs/source/how_do_i.rst +1 -1
  8. {glymur-0.14.1.post1 → glymur-0.14.2}/docs/source/whatsnew/0.14.rst +8 -4
  9. {glymur-0.14.1.post1 → glymur-0.14.2}/glymur/jp2k.py +3 -3
  10. {glymur-0.14.1.post1 → glymur-0.14.2}/glymur/jp2kr.py +12 -22
  11. glymur-0.14.2/glymur/lib/tiff.py +10 -0
  12. {glymur-0.14.1.post1 → glymur-0.14.2}/glymur/tiff.py +2 -2
  13. {glymur-0.14.1.post1 → glymur-0.14.2}/glymur/version.py +1 -1
  14. {glymur-0.14.1.post1 → glymur-0.14.2}/pyproject.toml +1 -1
  15. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/test_callbacks.py +1 -1
  16. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/test_jp2k.py +2 -2
  17. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/test_jp2k_writes.py +4 -2
  18. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/test_jp2kr.py +2 -2
  19. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/test_libtiff.py +1 -1
  20. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/test_printing.py +31 -28
  21. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/test_warnings.py +0 -6
  22. {glymur-0.14.1.post1 → glymur-0.14.2}/.gitignore +0 -0
  23. {glymur-0.14.1.post1 → glymur-0.14.2}/.readthedocs.yaml +0 -0
  24. {glymur-0.14.1.post1 → glymur-0.14.2}/.travis.yml +0 -0
  25. {glymur-0.14.1.post1 → glymur-0.14.2}/Glymur.egg-info/dependency_links.txt +0 -0
  26. {glymur-0.14.1.post1 → glymur-0.14.2}/Glymur.egg-info/entry_points.txt +0 -0
  27. {glymur-0.14.1.post1 → glymur-0.14.2}/Glymur.egg-info/requires.txt +0 -0
  28. {glymur-0.14.1.post1 → glymur-0.14.2}/Glymur.egg-info/top_level.txt +0 -0
  29. {glymur-0.14.1.post1 → glymur-0.14.2}/LICENSE.txt +0 -0
  30. {glymur-0.14.1.post1 → glymur-0.14.2}/MANIFEST.in +0 -0
  31. {glymur-0.14.1.post1 → glymur-0.14.2}/README.md +0 -0
  32. {glymur-0.14.1.post1 → glymur-0.14.2}/appveyor.yml +0 -0
  33. {glymur-0.14.1.post1 → glymur-0.14.2}/azure-pipelines.yml +0 -0
  34. {glymur-0.14.1.post1 → glymur-0.14.2}/ci/doc.yml +0 -0
  35. {glymur-0.14.1.post1 → glymur-0.14.2}/ci/install.ps1 +0 -0
  36. {glymur-0.14.1.post1 → glymur-0.14.2}/ci/run_script.sh +0 -0
  37. {glymur-0.14.1.post1 → glymur-0.14.2}/ci/run_with_env.cmd +0 -0
  38. {glymur-0.14.1.post1 → glymur-0.14.2}/ci/setup_env.sh +0 -0
  39. {glymur-0.14.1.post1 → glymur-0.14.2}/ci/travis-311-no-gdal.yaml +0 -0
  40. {glymur-0.14.1.post1 → glymur-0.14.2}/ci/travis-311-no-opj.yaml +0 -0
  41. {glymur-0.14.1.post1 → glymur-0.14.2}/ci/travis-311.yaml +0 -0
  42. {glymur-0.14.1.post1 → glymur-0.14.2}/ci/travis-312.yaml +0 -0
  43. {glymur-0.14.1.post1 → glymur-0.14.2}/ci/travis-313.yaml +0 -0
  44. {glymur-0.14.1.post1 → glymur-0.14.2}/conftest.py +0 -0
  45. {glymur-0.14.1.post1 → glymur-0.14.2}/docs/Makefile +0 -0
  46. {glymur-0.14.1.post1 → glymur-0.14.2}/docs/make.bat +0 -0
  47. {glymur-0.14.1.post1 → glymur-0.14.2}/docs/requirements.txt +0 -0
  48. {glymur-0.14.1.post1 → glymur-0.14.2}/docs/source/api.rst +0 -0
  49. {glymur-0.14.1.post1 → glymur-0.14.2}/docs/source/detailed_installation.rst +0 -0
  50. {glymur-0.14.1.post1 → glymur-0.14.2}/docs/source/goodstuff_alpha.png +0 -0
  51. {glymur-0.14.1.post1 → glymur-0.14.2}/docs/source/index.rst +0 -0
  52. {glymur-0.14.1.post1 → glymur-0.14.2}/docs/source/introduction.rst +0 -0
  53. {glymur-0.14.1.post1 → glymur-0.14.2}/docs/source/roadmap.rst +0 -0
  54. {glymur-0.14.1.post1 → glymur-0.14.2}/docs/source/whatsnew/0.10.rst +0 -0
  55. {glymur-0.14.1.post1 → glymur-0.14.2}/docs/source/whatsnew/0.11.rst +0 -0
  56. {glymur-0.14.1.post1 → glymur-0.14.2}/docs/source/whatsnew/0.12.rst +0 -0
  57. {glymur-0.14.1.post1 → glymur-0.14.2}/docs/source/whatsnew/0.13.rst +0 -0
  58. {glymur-0.14.1.post1 → glymur-0.14.2}/docs/source/whatsnew/0.5.rst +0 -0
  59. {glymur-0.14.1.post1 → glymur-0.14.2}/docs/source/whatsnew/0.6.rst +0 -0
  60. {glymur-0.14.1.post1 → glymur-0.14.2}/docs/source/whatsnew/0.7.rst +0 -0
  61. {glymur-0.14.1.post1 → glymur-0.14.2}/docs/source/whatsnew/0.8.rst +0 -0
  62. {glymur-0.14.1.post1 → glymur-0.14.2}/docs/source/whatsnew/0.9.rst +0 -0
  63. {glymur-0.14.1.post1 → glymur-0.14.2}/docs/source/whatsnew/index.rst +0 -0
  64. {glymur-0.14.1.post1 → glymur-0.14.2}/glymur/__init__.py +0 -0
  65. {glymur-0.14.1.post1 → glymur-0.14.2}/glymur/_core_converter.py +0 -0
  66. {glymur-0.14.1.post1 → glymur-0.14.2}/glymur/_iccprofile.py +0 -0
  67. {glymur-0.14.1.post1 → glymur-0.14.2}/glymur/codestream.py +0 -0
  68. {glymur-0.14.1.post1 → glymur-0.14.2}/glymur/command_line.py +0 -0
  69. {glymur-0.14.1.post1 → glymur-0.14.2}/glymur/config.py +0 -0
  70. {glymur-0.14.1.post1 → glymur-0.14.2}/glymur/core.py +0 -0
  71. {glymur-0.14.1.post1 → glymur-0.14.2}/glymur/data/__init__.py +0 -0
  72. {glymur-0.14.1.post1 → glymur-0.14.2}/glymur/data/goodstuff.j2k +0 -0
  73. {glymur-0.14.1.post1 → glymur-0.14.2}/glymur/data/heliov.jpx +0 -0
  74. {glymur-0.14.1.post1 → glymur-0.14.2}/glymur/data/nemo.jp2 +0 -0
  75. {glymur-0.14.1.post1 → glymur-0.14.2}/glymur/jp2box.py +0 -0
  76. {glymur-0.14.1.post1 → glymur-0.14.2}/glymur/jpeg.py +0 -0
  77. {glymur-0.14.1.post1 → glymur-0.14.2}/glymur/lib/__init__.py +0 -0
  78. /glymur-0.14.1.post1/glymur/lib/tiff.py → /glymur-0.14.2/glymur/lib/_tiff.py +0 -0
  79. {glymur-0.14.1.post1 → glymur-0.14.2}/glymur/lib/openjp2.py +0 -0
  80. {glymur-0.14.1.post1 → glymur-0.14.2}/glymur/options.py +0 -0
  81. {glymur-0.14.1.post1 → glymur-0.14.2}/setup.cfg +0 -0
  82. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/__init__.py +0 -0
  83. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/__init__.py +0 -0
  84. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/conformance/__init__.py +0 -0
  85. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/conformance/file1_xml.txt +0 -0
  86. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/conformance/file1_xml_box.txt +0 -0
  87. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/conformance/p0_02.j2k +0 -0
  88. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/conformance/p0_03.j2k +0 -0
  89. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/conformance/p0_06.j2k +0 -0
  90. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/conformance/p1_06.j2k +0 -0
  91. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/conformance/p1_07.j2k +0 -0
  92. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/conformance/p1_07.txt +0 -0
  93. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/from-openjpeg/__init__.py +0 -0
  94. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/from-openjpeg/edf_c2_1178956.jp2 +0 -0
  95. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/from-openjpeg/issue142.j2k +0 -0
  96. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/from-openjpeg/issue392.jp2 +0 -0
  97. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/from-openjpeg/issue396.jp2 +0 -0
  98. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/from-openjpeg/issue438.jp2 +0 -0
  99. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/from-openjpeg/issue626.j2k +0 -0
  100. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/from-openjpeg/jph_siz.txt +0 -0
  101. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/from-openjpeg/oj-ht-byte.jph +0 -0
  102. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/from-openjpeg/text_GBR.jp2 +0 -0
  103. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/from-openjpeg/text_GBR_rreq.txt +0 -0
  104. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/geo/0220000800_uuid.dat +0 -0
  105. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/geo/__init__.py +0 -0
  106. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/geo/gml.xml +0 -0
  107. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/misc/appended_xml_box.txt +0 -0
  108. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/misc/countries.xml +0 -0
  109. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/misc/decompression_parameters_type.txt +0 -0
  110. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/misc/default_compression_parameters_type.txt +0 -0
  111. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/misc/default_progression_order_changes_type.txt +0 -0
  112. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/misc/encoding_declaration.xml +0 -0
  113. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/misc/goodstuff_codestream_header.txt +0 -0
  114. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/misc/goodstuff_with_full_header.txt +0 -0
  115. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/misc/issue186_progression_order.txt +0 -0
  116. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/misc/issue398.dat +0 -0
  117. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/misc/issue405.dat +0 -0
  118. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/misc/issue549.dat +0 -0
  119. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/misc/issue555.xmp +0 -0
  120. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/misc/issue982.j2k +0 -0
  121. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/misc/multiple_precinct_size.txt +0 -0
  122. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/misc/nemo.txt +0 -0
  123. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/misc/nemo_dump_no_codestream.txt +0 -0
  124. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/misc/nemo_dump_no_codestream_no_xml.txt +0 -0
  125. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/misc/nemo_dump_no_xml.txt +0 -0
  126. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/misc/nemo_dump_short.txt +0 -0
  127. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/misc/nemo_with_codestream_header.txt +0 -0
  128. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/misc/nemo_xmp_box.txt +0 -0
  129. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/misc/no_jp2c.jp2 +0 -0
  130. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/misc/sgray.icc +0 -0
  131. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/misc/simple_rdf.txt +0 -0
  132. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/misc/simple_rdf.uuid-box.txt +0 -0
  133. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/misc/uint16.j2k +0 -0
  134. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/skimage/__init__.py +0 -0
  135. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/skimage/astronaut8.tif +0 -0
  136. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/skimage/astronaut8_stripped.tif +0 -0
  137. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/skimage/astronaut_s_uint16.tif +0 -0
  138. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/skimage/astronaut_uint16.tif +0 -0
  139. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/skimage/astronaut_ycbcr_jpeg_tiled.tif +0 -0
  140. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/skimage/goodstuff_32s.tif +0 -0
  141. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/skimage/moon.tif +0 -0
  142. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/skimage/moon3_partial_last_strip.tif +0 -0
  143. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/skimage/moon3_stripped.tif +0 -0
  144. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/skimage/moon63.tif +0 -0
  145. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/skimage/moon_2x2.tif +0 -0
  146. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/skimage/moon_3x3.tif +0 -0
  147. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/skimage/stripped.tif +0 -0
  148. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/skimage/ycbcr_bg.tif +0 -0
  149. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/skimage/ycbcr_stripped.tif +0 -0
  150. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/tiff/__init__.py +0 -0
  151. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/tiff/albers27-8.tif +0 -0
  152. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/tiff/albers27.tif +0 -0
  153. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/tiff/basn6a08.tif +0 -0
  154. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/tiff/cmyk.tif +0 -0
  155. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/tiff/degenerate_geotiff.tif +0 -0
  156. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/tiff/flower-separated-planar-08.tif +0 -0
  157. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/tiff/ieeefp32.tif +0 -0
  158. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/tiff/issue572.tif +0 -0
  159. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/tiff/issue678.tif +0 -0
  160. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/tiff/uint32.tif +0 -0
  161. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/data/tiff/warning.tif +0 -0
  162. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/fixtures.py +0 -0
  163. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/test_cinema.py +0 -0
  164. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/test_codestream.py +0 -0
  165. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/test_colour_specification_box.py +0 -0
  166. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/test_commandline_jp2dump.py +0 -0
  167. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/test_commandline_jpeg2jp2.py +0 -0
  168. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/test_commandline_tiff2jp2.py +0 -0
  169. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/test_config.py +0 -0
  170. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/test_geo.py +0 -0
  171. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/test_jp2box.py +0 -0
  172. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/test_jp2box_jpx.py +0 -0
  173. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/test_jp2box_uuid.py +0 -0
  174. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/test_jp2box_xml.py +0 -0
  175. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/test_jpeg2jp2.py +0 -0
  176. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/test_openjp2.py +0 -0
  177. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/test_set_decoded_components.py +0 -0
  178. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/test_slicing.py +0 -0
  179. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/test_threading.py +0 -0
  180. {glymur-0.14.1.post1 → glymur-0.14.2}/tests/test_tiff2jp2.py +0 -0
@@ -42,6 +42,8 @@ test-template: &test-template
42
42
  export PATH=$HOME/miniconda/bin:$PATH
43
43
  source activate glymur
44
44
  pytest -n 4 -x
45
+ pytest --doctest-glob='*.rst' docs/source/how_do_i.rst
46
+ pytest --doctest-modules glymur
45
47
 
46
48
  jobs:
47
49
  travis-311-no-gdal:
@@ -1,5 +1,9 @@
1
- Apr 06, 2025 - v0.14.1post1
2
- Fix pyproject.toml for pillow, not PIL
1
+ Jun 12, 2025 - v0.14.2
2
+ Fix test suite for python 3.14 regular expressions
3
+ Remove long-since-deprecated Jp2kr.read method
4
+ Make Jp2kr.parse method private
5
+ Make glymur.lib.tiff module private
6
+ Add doctests into circleci config
3
7
 
4
8
  Apr 06, 2025 - v0.14.1
5
9
  Fix doc builds for API
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Glymur
3
- Version: 0.14.1.post1
3
+ Version: 0.14.2
4
4
  Summary: Read and write JPEG 2000 files
5
5
  Author-email: John Evans <jevans667cc@proton.me>
6
6
  License-Expression: MIT
@@ -67,6 +67,7 @@ glymur/data/goodstuff.j2k
67
67
  glymur/data/heliov.jpx
68
68
  glymur/data/nemo.jp2
69
69
  glymur/lib/__init__.py
70
+ glymur/lib/_tiff.py
70
71
  glymur/lib/openjp2.py
71
72
  glymur/lib/tiff.py
72
73
  tests/__init__.py
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Glymur
3
- Version: 0.14.1.post1
3
+ Version: 0.14.2
4
4
  Summary: Read and write JPEG 2000 files
5
5
  Author-email: John Evans <jevans667cc@proton.me>
6
6
  License-Expression: MIT
@@ -81,7 +81,7 @@ copyright = '2013-2025, John Evans'
81
81
  # The short X.Y version.
82
82
  version = '0.14'
83
83
  # The full version, including alpha/beta/rc tags.
84
- release = '0.14.1post1'
84
+ release = '0.14.2'
85
85
 
86
86
  # The language for content autogenerated by Sphinx. Refer to documentation
87
87
  # for a list of supported languages.
@@ -771,7 +771,7 @@ are wrapped in a BytesIO object, which is fed to the most-excellent Pillow packa
771
771
  >>> from PIL import ImageCms
772
772
  >>> from io import BytesIO
773
773
  >>> # this assumes you have access to the test suite
774
- >>> p = pathlib.Path('tests/data/text_GBR.jp2')
774
+ >>> p = pathlib.Path('tests/data/from-openjpeg/text_GBR.jp2')
775
775
  >>> # This next step may produce a harmless warning that has nothing to do with ICC profiles.
776
776
  >>> j = Jp2k(p)
777
777
  >>> # The 2nd sub box of the 4th box is a ColourSpecification box.
@@ -2,11 +2,15 @@
2
2
  Changes in glymur 0.14
3
3
  ######################
4
4
 
5
- **********************
6
- Changes in 0.14.1post1
7
- **********************
5
+ *****************
6
+ Changes in 0.14.2
7
+ *****************
8
8
 
9
- * Fix pyproject.toml for pillow requirement
9
+ * Fix test suite for python 3.14 regular expressions
10
+ * Remove long-since-deprecated Jp2kr.read method
11
+ * Make Jp2kr.parse method private
12
+ * Make glymur.lib.tiff module private
13
+ * Add doctests into circleci config
10
14
 
11
15
  *****************
12
16
  Changes in 0.14.1
@@ -216,7 +216,7 @@ class Jp2k(Jp2kr):
216
216
  force : bool
217
217
  If true, then run finalize operations
218
218
  """
219
- self.parse(force=force_parse)
219
+ self._parse(force=force_parse)
220
220
 
221
221
  if (
222
222
  self._capture_resolution is None
@@ -256,7 +256,7 @@ class Jp2k(Jp2kr):
256
256
  temp_filename = self.filename + ".tmp"
257
257
  self.wrap(temp_filename, boxes=self.box)
258
258
  shutil.move(temp_filename, self.filename)
259
- self.parse(force=True)
259
+ self._parse(force=True)
260
260
 
261
261
  def _validate_kwargs(self):
262
262
  """Validate keyword parameters passed to the constructor."""
@@ -817,7 +817,7 @@ class Jp2k(Jp2kr):
817
817
  with self.path.open("ab") as ofile:
818
818
  box.write(ofile)
819
819
 
820
- self.parse(force=True)
820
+ self._parse(force=True)
821
821
 
822
822
  def wrap(self, filename, boxes=None):
823
823
  """
@@ -107,7 +107,7 @@ class Jp2kr(Jp2kBox):
107
107
  if not self.path.exists():
108
108
  raise FileNotFoundError(f"{self.filename} does not exist.")
109
109
 
110
- self.parse()
110
+ self._parse()
111
111
  self._initialize_shape()
112
112
 
113
113
  def _initialize_shape(self):
@@ -393,6 +393,15 @@ class Jp2kr(Jp2kBox):
393
393
  return "\n".join(metadata)
394
394
 
395
395
  def parse(self, force=False):
396
+ """
397
+ .. deprecated:: 0.15.0
398
+ """
399
+ breakpoint()
400
+ msg = "Deprecated, do not use."
401
+ warnings.warn(msg, DeprecationWarning)
402
+ self._parse(force=force)
403
+
404
+ def _parse(self, force=False):
396
405
  """Parses the JPEG 2000 file.
397
406
 
398
407
  Parameters
@@ -633,25 +642,6 @@ class Jp2kr(Jp2kBox):
633
642
  # Ok, 3 arguments in pargs.
634
643
  return data[:, :, bands]
635
644
 
636
- def read(self, **kwargs):
637
- """Read a JPEG 2000 image.
638
-
639
- .. deprecated:: 0.13.5
640
- Use numpy-style slicing instead.
641
-
642
- Returns
643
- -------
644
- img_array : ndarray
645
- The image data.
646
- """
647
-
648
- if "ignore_pclr_cmap_cdef" in kwargs:
649
- self.ignore_pclr_cmap_cdef = kwargs["ignore_pclr_cmap_cdef"]
650
- kwargs.pop("ignore_pclr_cmap_cdef")
651
- warnings.warn("Use array-style slicing instead.", DeprecationWarning)
652
- img = self._read(**kwargs)
653
- return img
654
-
655
645
  def _subsampling_sanity_check(self):
656
646
  """Check for differing subsample factors."""
657
647
  if self._decoded_components is None:
@@ -854,7 +844,7 @@ class Jp2kr(Jp2kBox):
854
844
 
855
845
  The only time you should ever use this method is when the image has
856
846
  different subsampling factors across components. Otherwise you should
857
- use the read method.
847
+ use numpy-style slicing.
858
848
 
859
849
  Parameters
860
850
  ----------
@@ -966,7 +956,7 @@ class Jp2kr(Jp2kBox):
966
956
  return image
967
957
 
968
958
  def _component2dtype(self, component):
969
- """Determin the appropriate numpy datatype for an OpenJPEG component.
959
+ """Determine the appropriate numpy datatype for an OpenJPEG component.
970
960
 
971
961
  Parameters
972
962
  ----------
@@ -0,0 +1,10 @@
1
+ """
2
+ This module is deprecated. No external use, please.
3
+ """
4
+ # standard library imports
5
+ import warnings
6
+
7
+ from ._tiff import * # noqa : F401, F403
8
+
9
+ msg = "glymur.lib.tiff is for internal use only. Please do not use it."
10
+ warnings.warn(msg, DeprecationWarning)
@@ -14,7 +14,7 @@ import numpy as np
14
14
  from glymur import Jp2k, set_option
15
15
  from glymur.core import SRGB
16
16
  from ._core_converter import _2JP2Converter
17
- from .lib import tiff as libtiff
17
+ from .lib import _tiff as libtiff
18
18
  from . import jp2box
19
19
 
20
20
  # we need a lower case mapping from the tag name to the tag number
@@ -243,7 +243,7 @@ class Tiff2Jp2k(_2JP2Converter):
243
243
  temp_filename = str(self.jp2_path) + ".tmp"
244
244
  self.jp2.wrap(temp_filename, boxes=self.jp2.box)
245
245
  shutil.move(temp_filename, self.jp2_path)
246
- self.jp2.parse()
246
+ self.jp2._parse()
247
247
 
248
248
  def append_extra_jp2_boxes(self):
249
249
  """Copy over the TIFF IFD. Place it in a UUID box. Append to the JPEG
@@ -20,7 +20,7 @@ from .lib import tiff
20
20
 
21
21
  # Do not change the format of this next line! Doing so risks breaking
22
22
  # setup.py
23
- version = "0.14.1post1"
23
+ version = "0.14.2"
24
24
 
25
25
  version_tuple = parse(version).release
26
26
 
@@ -21,7 +21,7 @@ license = 'MIT'
21
21
  name = 'Glymur'
22
22
  readme = 'README.md'
23
23
  requires-python = '>=3.11'
24
- version = '0.14.1post1'
24
+ version = '0.14.2'
25
25
 
26
26
  [project.scripts]
27
27
  jp2dump = 'glymur.command_line:main'
@@ -33,7 +33,7 @@ class TestSuite(fixtures.TestCommon):
33
33
  with warnings.catch_warnings():
34
34
  # Ignore a library warning.
35
35
  warnings.simplefilter("ignore")
36
- tiledata = j.read(tile=0)
36
+ tiledata = j._read(tile=0)
37
37
 
38
38
  with patch("sys.stdout", new=StringIO()) as fake_out:
39
39
  glymur.Jp2k(self.temp_j2k_filename, data=tiledata, verbose=True)
@@ -368,7 +368,7 @@ class TestJp2k(fixtures.TestCommon):
368
368
  with warnings.catch_warnings():
369
369
  # Suppress the DeprecationWarning
370
370
  warnings.simplefilter("ignore")
371
- thumbnail1 = j.read(rlevel=-1)
371
+ thumbnail1 = j._read(rlevel=-1)
372
372
  thumbnail2 = j[::32, ::32]
373
373
  np.testing.assert_array_equal(thumbnail1, thumbnail2)
374
374
  self.assertEqual(thumbnail1.shape, (25, 15, 3))
@@ -975,7 +975,7 @@ class TestVersion(fixtures.TestCommon):
975
975
  with warnings.catch_warnings():
976
976
  # Suppress a deprecation warning for raw read method.
977
977
  warnings.simplefilter("ignore")
978
- glymur.Jp2k(self.jp2file).read()
978
+ glymur.Jp2k(self.jp2file)._read()
979
979
  with self.assertRaises(RuntimeError):
980
980
  glymur.Jp2k(self.jp2file)[:]
981
981
 
@@ -1546,7 +1546,8 @@ class TestSuite(fixtures.TestCommon):
1546
1546
  def test_ignore_pclr_cmap_cdef_on_old_read(self):
1547
1547
  """
1548
1548
  The old "read" interface allowed for passing ignore_pclr_cmap_cdef
1549
- to read a palette dataset "uninterpolated".
1549
+ to read a palette dataset "uninterpolated", but we have to
1550
+ use properties now.
1550
1551
  """
1551
1552
  jpx = Jp2k(self.jpxfile)
1552
1553
  jpx.ignore_pclr_cmap_cdef = True
@@ -1556,7 +1557,8 @@ class TestSuite(fixtures.TestCommon):
1556
1557
  with warnings.catch_warnings():
1557
1558
  # Ignore a deprecation warning.
1558
1559
  warnings.simplefilter('ignore')
1559
- actual = jpx2.read(ignore_pclr_cmap_cdef=True)
1560
+ jpx2.ignore_pclr_cmap_cdef = True
1561
+ actual = jpx2._read()
1560
1562
 
1561
1563
  np.testing.assert_array_equal(actual, expected)
1562
1564
 
@@ -276,7 +276,7 @@ class TestJp2kr(fixtures.TestCommon):
276
276
  with warnings.catch_warnings():
277
277
  # Suppress the DeprecationWarning
278
278
  warnings.simplefilter("ignore")
279
- thumbnail1 = j.read(rlevel=-1)
279
+ thumbnail1 = j._read(rlevel=-1)
280
280
  thumbnail2 = j[::32, ::32]
281
281
  np.testing.assert_array_equal(thumbnail1, thumbnail2)
282
282
  self.assertEqual(thumbnail1.shape, (25, 15, 3))
@@ -894,7 +894,7 @@ class TestVersion(fixtures.TestCommon):
894
894
  with warnings.catch_warnings():
895
895
  # Suppress a deprecation warning for raw read method.
896
896
  warnings.simplefilter("ignore")
897
- glymur.Jp2kr(self.jp2file).read()
897
+ glymur.Jp2kr(self.jp2file)._read()
898
898
  with self.assertRaises(RuntimeError):
899
899
  glymur.Jp2kr(self.jp2file)[:]
900
900
 
@@ -12,7 +12,7 @@ import skimage
12
12
 
13
13
  # local imports
14
14
  from . import fixtures
15
- from glymur.lib import tiff as libtiff
15
+ from glymur.lib import _tiff as libtiff
16
16
 
17
17
 
18
18
  @unittest.skipIf(
@@ -1673,16 +1673,17 @@ class TestJp2dump(fixtures.TestCommon):
1673
1673
  with patch('sys.stdout', new=StringIO()) as fake_out:
1674
1674
  print(icpt)
1675
1675
  actual = fake_out.getvalue().strip()
1676
- expected = ("<class 'glymur.lib.openjp2.ImageComptParmType'>:\n"
1677
- " dx: 0\n"
1678
- " dy: 0\n"
1679
- " w: 0\n"
1680
- " h: 0\n"
1681
- " x0: 0\n"
1682
- " y0: 0\n"
1683
- " prec: 0\n"
1684
- " bpp: 0\n"
1685
- " sgnd: 0")
1676
+ expected = (
1677
+ "<class 'glymur.lib.openjp2.ImageComptParmType'>:\n"
1678
+ " dx: 0\n"
1679
+ " dy: 0\n"
1680
+ " w: 0\n"
1681
+ " h: 0\n"
1682
+ " x0: 0\n"
1683
+ " y0: 0\n"
1684
+ " prec: 0\n"
1685
+ " bpp: 0\n"
1686
+ " sgnd: 0")
1686
1687
  self.assertEqual(actual, expected)
1687
1688
 
1688
1689
  def test_default_image_type(self):
@@ -1693,14 +1694,16 @@ class TestJp2dump(fixtures.TestCommon):
1693
1694
  actual = fake_out.getvalue().strip()
1694
1695
 
1695
1696
  expected = (
1696
- "<class 'glymur.lib.openjp2.ImageType'>:\n"
1697
+ "<class 'glymur\\.lib\\.openjp2\\.ImageType'>:\n"
1697
1698
  " x0: 0\n"
1698
1699
  " y0: 0\n"
1699
1700
  " x1: 0\n"
1700
1701
  " y1: 0\n"
1701
1702
  " numcomps: 0\n"
1702
1703
  " color_space: 0\n"
1703
- " icc_profile_buf: <(glymur.lib.openjp2|ctypes.wintypes).LP_c_ubyte object at 0x[0-9A-Fa-f]*>\n" # noqa : E501
1704
+ " icc_profile_buf: "
1705
+ "<(glymur\\.lib\\.openjp2|ctypes(\\.wintypes)?)\\.LP_c_ubyte "
1706
+ "object at 0x[0-9A-Fa-f]*>\n"
1704
1707
  " icc_profile_len: 0")
1705
1708
  self.assertRegex(actual, expected)
1706
1709
 
@@ -1709,22 +1712,22 @@ class TestJp2dump(fixtures.TestCommon):
1709
1712
  obj = opj2.ImageCompType()
1710
1713
  actual = str(obj)
1711
1714
  expected = (
1712
- r'''<class 'glymur.lib.openjp2.ImageCompType'>:\n'''
1713
- ''' dx: 0\n'''
1714
- ''' dy: 0\n'''
1715
- ''' w: 0\n'''
1716
- ''' h: 0\n'''
1717
- ''' x0: 0\n'''
1718
- ''' y0: 0\n'''
1719
- ''' prec: 0\n'''
1720
- ''' bpp: 0\n'''
1721
- ''' sgnd: 0\n'''
1722
- ''' resno_decoded: 0\n'''
1723
- ''' factor: 0\n'''
1724
- ''' data: '''
1725
- '''<(glymur.lib.openjp2|ctypes.wintypes).LP_c_(int|long) '''
1726
- '''object at 0x[a-fA-F0-9]+>\n'''
1727
- ''' alpha: 0\n'''
1715
+ "<class 'glymur\\.lib\\.openjp2\\.ImageCompType'>:\n"
1716
+ " dx: 0\n"
1717
+ " dy: 0\n"
1718
+ " w: 0\n"
1719
+ " h: 0\n"
1720
+ " x0: 0\n"
1721
+ " y0: 0\n"
1722
+ " prec: 0\n"
1723
+ " bpp: 0\n"
1724
+ " sgnd: 0\n"
1725
+ " resno_decoded: 0\n"
1726
+ " factor: 0\n"
1727
+ " data: "
1728
+ "<(glymur\\.lib\\.openjp2|ctypes(\\.wintypes)?)\\.LP_c_(int|long) "
1729
+ "object at 0x[a-fA-F0-9]+>\n"
1730
+ " alpha: 0\n"
1728
1731
  )
1729
1732
  self.assertRegex(actual, expected)
1730
1733
 
@@ -601,12 +601,6 @@ class TestSuite(fixtures.TestCommon):
601
601
  with self.assertWarns(UserWarning):
602
602
  glymur.Jp2k(tfile.name)
603
603
 
604
- @unittest.skipIf(OPENJPEG_NOT_AVAILABLE, OPENJPEG_NOT_AVAILABLE_MSG)
605
- def test_warn_if_using_read_method(self):
606
- """Should warn if deprecated read method is called"""
607
- with self.assertWarns(DeprecationWarning):
608
- Jp2k(self.jp2file).read()
609
-
610
604
  def test_bad_rsiz(self):
611
605
  """
612
606
  SCENARIO: The SIZ value parsed from the SIZ segment is invalid.
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes