Glymur 0.14.2__tar.gz → 0.14.5__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.
- {glymur-0.14.2 → glymur-0.14.5}/.circleci/config.yml +14 -10
- {glymur-0.14.2 → glymur-0.14.5}/CHANGES.txt +12 -0
- {glymur-0.14.2 → glymur-0.14.5}/Glymur.egg-info/PKG-INFO +2 -1
- {glymur-0.14.2 → glymur-0.14.5}/Glymur.egg-info/SOURCES.txt +6 -6
- {glymur-0.14.2 → glymur-0.14.5}/PKG-INFO +2 -1
- {glymur-0.14.2 → glymur-0.14.5}/appveyor.yml +7 -1
- glymur-0.14.2/ci/travis-311-no-gdal.yaml → glymur-0.14.5/ci/ci-311.yaml +3 -3
- glymur-0.14.2/ci/travis-313.yaml → glymur-0.14.5/ci/ci-313.yaml +4 -3
- glymur-0.14.2/ci/travis-311-no-opj.yaml → glymur-0.14.5/ci/ci-314-no-gdal.yaml +5 -5
- glymur-0.14.5/ci/ci-314-no-opj.yaml +13 -0
- glymur-0.14.5/ci/ci-314.yaml +14 -0
- {glymur-0.14.2 → glymur-0.14.5}/ci/install.ps1 +2 -0
- {glymur-0.14.2 → glymur-0.14.5}/docs/source/conf.py +1 -1
- {glymur-0.14.2 → glymur-0.14.5}/docs/source/introduction.rst +1 -1
- glymur-0.14.5/docs/source/whatsnew/0.14.rst +59 -0
- {glymur-0.14.2 → glymur-0.14.5}/glymur/_core_converter.py +2 -6
- {glymur-0.14.2 → glymur-0.14.5}/glymur/jp2box.py +1 -1
- {glymur-0.14.2 → glymur-0.14.5}/glymur/jp2k.py +7 -6
- {glymur-0.14.2 → glymur-0.14.5}/glymur/jp2kr.py +6 -10
- {glymur-0.14.2 → glymur-0.14.5}/glymur/options.py +3 -4
- {glymur-0.14.2 → glymur-0.14.5}/glymur/version.py +2 -2
- {glymur-0.14.2 → glymur-0.14.5}/pyproject.toml +2 -1
- {glymur-0.14.2 → glymur-0.14.5}/tests/fixtures.py +7 -37
- {glymur-0.14.2 → glymur-0.14.5}/tests/test_commandline_jpeg2jp2.py +1 -6
- {glymur-0.14.2 → glymur-0.14.5}/tests/test_commandline_tiff2jp2.py +1 -1
- {glymur-0.14.2 → glymur-0.14.5}/tests/test_config.py +1 -22
- {glymur-0.14.2 → glymur-0.14.5}/tests/test_jpeg2jp2.py +0 -5
- {glymur-0.14.2 → glymur-0.14.5}/tests/test_threading.py +13 -19
- {glymur-0.14.2 → glymur-0.14.5}/tests/test_tiff2jp2.py +1 -1
- glymur-0.14.2/azure-pipelines.yml +0 -30
- glymur-0.14.2/ci/travis-311.yaml +0 -13
- glymur-0.14.2/docs/source/whatsnew/0.14.rst +0 -30
- {glymur-0.14.2 → glymur-0.14.5}/.gitignore +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/.readthedocs.yaml +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/.travis.yml +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/Glymur.egg-info/dependency_links.txt +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/Glymur.egg-info/entry_points.txt +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/Glymur.egg-info/requires.txt +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/Glymur.egg-info/top_level.txt +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/LICENSE.txt +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/MANIFEST.in +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/README.md +0 -0
- /glymur-0.14.2/ci/travis-312.yaml → /glymur-0.14.5/ci/ci-312.yaml +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/ci/doc.yml +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/ci/run_script.sh +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/ci/run_with_env.cmd +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/ci/setup_env.sh +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/conftest.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/docs/Makefile +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/docs/make.bat +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/docs/requirements.txt +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/docs/source/api.rst +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/docs/source/detailed_installation.rst +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/docs/source/goodstuff_alpha.png +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/docs/source/how_do_i.rst +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/docs/source/index.rst +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/docs/source/roadmap.rst +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/docs/source/whatsnew/0.10.rst +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/docs/source/whatsnew/0.11.rst +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/docs/source/whatsnew/0.12.rst +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/docs/source/whatsnew/0.13.rst +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/docs/source/whatsnew/0.5.rst +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/docs/source/whatsnew/0.6.rst +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/docs/source/whatsnew/0.7.rst +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/docs/source/whatsnew/0.8.rst +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/docs/source/whatsnew/0.9.rst +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/docs/source/whatsnew/index.rst +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/glymur/__init__.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/glymur/_iccprofile.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/glymur/codestream.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/glymur/command_line.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/glymur/config.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/glymur/core.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/glymur/data/__init__.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/glymur/data/goodstuff.j2k +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/glymur/data/heliov.jpx +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/glymur/data/nemo.jp2 +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/glymur/jpeg.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/glymur/lib/__init__.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/glymur/lib/_tiff.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/glymur/lib/openjp2.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/glymur/lib/tiff.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/glymur/tiff.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/setup.cfg +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/__init__.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/__init__.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/conformance/__init__.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/conformance/file1_xml.txt +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/conformance/file1_xml_box.txt +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/conformance/p0_02.j2k +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/conformance/p0_03.j2k +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/conformance/p0_06.j2k +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/conformance/p1_06.j2k +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/conformance/p1_07.j2k +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/conformance/p1_07.txt +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/from-openjpeg/__init__.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/from-openjpeg/edf_c2_1178956.jp2 +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/from-openjpeg/issue142.j2k +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/from-openjpeg/issue392.jp2 +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/from-openjpeg/issue396.jp2 +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/from-openjpeg/issue438.jp2 +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/from-openjpeg/issue626.j2k +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/from-openjpeg/jph_siz.txt +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/from-openjpeg/oj-ht-byte.jph +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/from-openjpeg/text_GBR.jp2 +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/from-openjpeg/text_GBR_rreq.txt +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/geo/0220000800_uuid.dat +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/geo/__init__.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/geo/gml.xml +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/misc/appended_xml_box.txt +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/misc/countries.xml +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/misc/decompression_parameters_type.txt +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/misc/default_compression_parameters_type.txt +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/misc/default_progression_order_changes_type.txt +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/misc/encoding_declaration.xml +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/misc/goodstuff_codestream_header.txt +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/misc/goodstuff_with_full_header.txt +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/misc/issue186_progression_order.txt +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/misc/issue398.dat +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/misc/issue405.dat +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/misc/issue549.dat +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/misc/issue555.xmp +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/misc/issue982.j2k +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/misc/multiple_precinct_size.txt +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/misc/nemo.txt +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/misc/nemo_dump_no_codestream.txt +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/misc/nemo_dump_no_codestream_no_xml.txt +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/misc/nemo_dump_no_xml.txt +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/misc/nemo_dump_short.txt +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/misc/nemo_with_codestream_header.txt +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/misc/nemo_xmp_box.txt +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/misc/no_jp2c.jp2 +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/misc/sgray.icc +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/misc/simple_rdf.txt +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/misc/simple_rdf.uuid-box.txt +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/misc/uint16.j2k +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/skimage/__init__.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/skimage/astronaut8.tif +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/skimage/astronaut8_stripped.tif +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/skimage/astronaut_s_uint16.tif +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/skimage/astronaut_uint16.tif +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/skimage/astronaut_ycbcr_jpeg_tiled.tif +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/skimage/goodstuff_32s.tif +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/skimage/moon.tif +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/skimage/moon3_partial_last_strip.tif +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/skimage/moon3_stripped.tif +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/skimage/moon63.tif +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/skimage/moon_2x2.tif +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/skimage/moon_3x3.tif +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/skimage/stripped.tif +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/skimage/ycbcr_bg.tif +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/skimage/ycbcr_stripped.tif +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/tiff/__init__.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/tiff/albers27-8.tif +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/tiff/albers27.tif +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/tiff/basn6a08.tif +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/tiff/cmyk.tif +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/tiff/degenerate_geotiff.tif +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/tiff/flower-separated-planar-08.tif +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/tiff/ieeefp32.tif +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/tiff/issue572.tif +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/tiff/issue678.tif +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/tiff/uint32.tif +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/data/tiff/warning.tif +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/test_callbacks.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/test_cinema.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/test_codestream.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/test_colour_specification_box.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/test_commandline_jp2dump.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/test_geo.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/test_jp2box.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/test_jp2box_jpx.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/test_jp2box_uuid.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/test_jp2box_xml.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/test_jp2k.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/test_jp2k_writes.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/test_jp2kr.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/test_libtiff.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/test_openjp2.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/test_printing.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/test_set_decoded_components.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/test_slicing.py +0 -0
- {glymur-0.14.2 → glymur-0.14.5}/tests/test_warnings.py +0 -0
|
@@ -6,11 +6,12 @@ workflows:
|
|
|
6
6
|
version: 2
|
|
7
7
|
test:
|
|
8
8
|
jobs:
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
9
|
+
- ci-311
|
|
10
|
+
- ci-312
|
|
11
|
+
- ci-313
|
|
12
|
+
- ci-314-no-gdal
|
|
13
|
+
- ci-314-no-opj
|
|
14
|
+
- ci-314
|
|
14
15
|
|
|
15
16
|
test-template: &test-template
|
|
16
17
|
docker:
|
|
@@ -46,17 +47,20 @@ test-template: &test-template
|
|
|
46
47
|
pytest --doctest-modules glymur
|
|
47
48
|
|
|
48
49
|
jobs:
|
|
49
|
-
|
|
50
|
+
ci-311:
|
|
50
51
|
<<: *test-template
|
|
51
52
|
|
|
52
|
-
|
|
53
|
+
ci-312:
|
|
53
54
|
<<: *test-template
|
|
54
55
|
|
|
55
|
-
|
|
56
|
+
ci-313:
|
|
56
57
|
<<: *test-template
|
|
57
58
|
|
|
58
|
-
|
|
59
|
+
ci-314-no-gdal:
|
|
59
60
|
<<: *test-template
|
|
60
61
|
|
|
61
|
-
|
|
62
|
+
ci-314-no-opj:
|
|
63
|
+
<<: *test-template
|
|
64
|
+
|
|
65
|
+
ci-314:
|
|
62
66
|
<<: *test-template
|
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
Jan 25, 2025 - v0.14.5
|
|
2
|
+
Remove two debugging breakpoints
|
|
3
|
+
|
|
4
|
+
Oct 08, 2025 - v0.14.4
|
|
5
|
+
Qualify on python 3.14
|
|
6
|
+
Add User-Agent header to powershell script for Appveyor
|
|
7
|
+
Remove remaining openjpeg<2.4 artifacts
|
|
8
|
+
Remove explicit testing of numpy 1.26
|
|
9
|
+
|
|
10
|
+
Jun 12, 2025 - v0.14.3
|
|
11
|
+
Fix DeprecationWarning upon import
|
|
12
|
+
|
|
1
13
|
Jun 12, 2025 - v0.14.2
|
|
2
14
|
Fix test suite for python 3.14 regular expressions
|
|
3
15
|
Remove long-since-deprecated Jp2kr.read method
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: Glymur
|
|
3
|
-
Version: 0.14.
|
|
3
|
+
Version: 0.14.5
|
|
4
4
|
Summary: Read and write JPEG 2000 files
|
|
5
5
|
Author-email: John Evans <jevans667cc@proton.me>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -12,6 +12,7 @@ Classifier: Programming Language :: Python
|
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.11
|
|
13
13
|
Classifier: Programming Language :: Python :: 3.12
|
|
14
14
|
Classifier: Programming Language :: Python :: 3.13
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
15
16
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
16
17
|
Classifier: Intended Audience :: Science/Research
|
|
17
18
|
Classifier: Operating System :: OS Independent
|
|
@@ -6,7 +6,6 @@ LICENSE.txt
|
|
|
6
6
|
MANIFEST.in
|
|
7
7
|
README.md
|
|
8
8
|
appveyor.yml
|
|
9
|
-
azure-pipelines.yml
|
|
10
9
|
conftest.py
|
|
11
10
|
pyproject.toml
|
|
12
11
|
.circleci/config.yml
|
|
@@ -16,16 +15,17 @@ Glymur.egg-info/dependency_links.txt
|
|
|
16
15
|
Glymur.egg-info/entry_points.txt
|
|
17
16
|
Glymur.egg-info/requires.txt
|
|
18
17
|
Glymur.egg-info/top_level.txt
|
|
18
|
+
ci/ci-311.yaml
|
|
19
|
+
ci/ci-312.yaml
|
|
20
|
+
ci/ci-313.yaml
|
|
21
|
+
ci/ci-314-no-gdal.yaml
|
|
22
|
+
ci/ci-314-no-opj.yaml
|
|
23
|
+
ci/ci-314.yaml
|
|
19
24
|
ci/doc.yml
|
|
20
25
|
ci/install.ps1
|
|
21
26
|
ci/run_script.sh
|
|
22
27
|
ci/run_with_env.cmd
|
|
23
28
|
ci/setup_env.sh
|
|
24
|
-
ci/travis-311-no-gdal.yaml
|
|
25
|
-
ci/travis-311-no-opj.yaml
|
|
26
|
-
ci/travis-311.yaml
|
|
27
|
-
ci/travis-312.yaml
|
|
28
|
-
ci/travis-313.yaml
|
|
29
29
|
docs/Makefile
|
|
30
30
|
docs/make.bat
|
|
31
31
|
docs/requirements.txt
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: Glymur
|
|
3
|
-
Version: 0.14.
|
|
3
|
+
Version: 0.14.5
|
|
4
4
|
Summary: Read and write JPEG 2000 files
|
|
5
5
|
Author-email: John Evans <jevans667cc@proton.me>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -12,6 +12,7 @@ Classifier: Programming Language :: Python
|
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.11
|
|
13
13
|
Classifier: Programming Language :: Python :: 3.12
|
|
14
14
|
Classifier: Programming Language :: Python :: 3.13
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
15
16
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
16
17
|
Classifier: Intended Audience :: Science/Research
|
|
17
18
|
Classifier: Operating System :: OS Independent
|
|
@@ -30,6 +30,12 @@ environment:
|
|
|
30
30
|
CONDA_PY: "313"
|
|
31
31
|
USE_PATH_FOR_GDAL_PYTHON: "YES"
|
|
32
32
|
|
|
33
|
+
- CONDA_ROOT: "C:\\Miniconda3_64"
|
|
34
|
+
PYTHON_VERSION: "3.14"
|
|
35
|
+
PYTHON_ARCH: "64"
|
|
36
|
+
CONDA_PY: "314"
|
|
37
|
+
USE_PATH_FOR_GDAL_PYTHON: "YES"
|
|
38
|
+
|
|
33
39
|
# We always use a 64-bit machine, but can build x86 distributions
|
|
34
40
|
# with the PYTHON_ARCH variable (which is used by CMD_IN_ENV).
|
|
35
41
|
platform:
|
|
@@ -65,7 +71,7 @@ install:
|
|
|
65
71
|
- cmd: conda info -a
|
|
66
72
|
|
|
67
73
|
# create our env
|
|
68
|
-
- SET REQ=ci\
|
|
74
|
+
- SET REQ=ci\ci-%CONDA_PY%.yaml
|
|
69
75
|
- cmd: echo "installing requirements from %REQ%"
|
|
70
76
|
- cmd: conda env create --file=%REQ%
|
|
71
77
|
- cmd: conda list -n glymur
|
|
@@ -3,11 +3,11 @@ channels:
|
|
|
3
3
|
- conda-forge
|
|
4
4
|
dependencies:
|
|
5
5
|
- python=3.11.*
|
|
6
|
-
- gdal>=3.
|
|
6
|
+
- gdal>=3.8.0,<3.9.0
|
|
7
7
|
- pillow
|
|
8
|
-
- libtiff>=4.
|
|
8
|
+
- libtiff>=4.6.0,<4.7.0
|
|
9
9
|
- lxml>=5.0
|
|
10
|
-
- numpy>=
|
|
10
|
+
- numpy>=2.0,<2.1
|
|
11
11
|
- openjpeg>=2.5
|
|
12
12
|
- pytest-xdist
|
|
13
13
|
- scikit-image
|
|
@@ -4,10 +4,11 @@ channels:
|
|
|
4
4
|
dependencies:
|
|
5
5
|
- python=3.13.*
|
|
6
6
|
- gdal>=3.10.0,<3.11.0
|
|
7
|
+
- libgdal-jp2openjpeg
|
|
7
8
|
- pillow
|
|
8
9
|
- libtiff>=4.7.0,<4.8.0
|
|
9
|
-
- lxml>=5.3.0
|
|
10
|
-
- numpy>=2.1
|
|
11
|
-
- openjpeg>=2.5
|
|
10
|
+
- lxml>=5.3.0,<6.0.0
|
|
11
|
+
- numpy>=2.1,<2.3.3
|
|
12
|
+
- openjpeg>=2.5.3,<2.5.4
|
|
12
13
|
- pytest-xdist
|
|
13
14
|
- scikit-image
|
|
@@ -2,12 +2,12 @@ name: glymur
|
|
|
2
2
|
channels:
|
|
3
3
|
- conda-forge
|
|
4
4
|
dependencies:
|
|
5
|
-
- python
|
|
6
|
-
- gdal>=3.7.0,<3.8.0
|
|
5
|
+
- python>=3.14.0
|
|
7
6
|
- pillow
|
|
8
|
-
- libtiff>=4.
|
|
9
|
-
- lxml>=
|
|
10
|
-
- numpy>=
|
|
7
|
+
- libtiff>=4.7.1
|
|
8
|
+
- lxml>=6.0.2
|
|
9
|
+
- numpy>=2.3.3
|
|
10
|
+
- openjpeg>=2.5.4
|
|
11
11
|
- pip
|
|
12
12
|
- pytest-xdist
|
|
13
13
|
- scikit-image
|
|
@@ -7,6 +7,8 @@ $MINICONDA_URL = "http://repo.continuum.io/miniconda/"
|
|
|
7
7
|
|
|
8
8
|
function DownloadMiniconda ($python_version, $platform_suffix) {
|
|
9
9
|
$webclient = New-Object System.Net.WebClient
|
|
10
|
+
$webclient.Headers.Add("User-Agent", "Abraxis/1.0")
|
|
11
|
+
|
|
10
12
|
$filename = "Miniconda3-latest-Windows-" + $platform_suffix + ".exe"
|
|
11
13
|
$url = $MINICONDA_URL + $filename
|
|
12
14
|
|
|
@@ -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.
|
|
84
|
+
release = '0.14.5'
|
|
85
85
|
|
|
86
86
|
# The language for content autogenerated by Sphinx. Refer to documentation
|
|
87
87
|
# for a list of supported languages.
|
|
@@ -13,7 +13,7 @@ Certain optional JP2 boxes can also be written, including XML boxes and
|
|
|
13
13
|
XMP UUIDs. There is incomplete support for reading JPX metadata.
|
|
14
14
|
|
|
15
15
|
The current version of glymur is supported on Python versions 3.11,
|
|
16
|
-
3.12, and 3.
|
|
16
|
+
3.12, 3.13, and 3.14. You should have at least version 2.4.0 of OpenJPEG.
|
|
17
17
|
|
|
18
18
|
For more information about OpenJPEG, please consult http://www.openjpeg.org.
|
|
19
19
|
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
######################
|
|
2
|
+
Changes in glymur 0.14
|
|
3
|
+
######################
|
|
4
|
+
|
|
5
|
+
*****************
|
|
6
|
+
Changes in 0.14.5
|
|
7
|
+
*****************
|
|
8
|
+
|
|
9
|
+
* Suppress W291 warning from doctests
|
|
10
|
+
* Remove two debugging breakpoints
|
|
11
|
+
* Update CI infrastructure for names
|
|
12
|
+
* Update testing, deprecate python 3.11
|
|
13
|
+
* Use importlib.resources instead of importlib.metadata
|
|
14
|
+
* Remove custom chdir context manager
|
|
15
|
+
* Use sys.version() to determine if anaconda or not on tests
|
|
16
|
+
* Add libgdal-jp2openjpeg to CI
|
|
17
|
+
* Remove broken azure pipelines setup
|
|
18
|
+
|
|
19
|
+
*****************
|
|
20
|
+
Changes in 0.14.4
|
|
21
|
+
*****************
|
|
22
|
+
|
|
23
|
+
* Qualify on python 3.14
|
|
24
|
+
* Add User-Agent header to powershell script for Appveyor
|
|
25
|
+
* Remove remaining openjpeg<2.4 artifacts
|
|
26
|
+
* Remove explicit testing of numpy 1.x
|
|
27
|
+
|
|
28
|
+
*****************
|
|
29
|
+
Changes in 0.14.3
|
|
30
|
+
*****************
|
|
31
|
+
|
|
32
|
+
* Fix import warning
|
|
33
|
+
|
|
34
|
+
*****************
|
|
35
|
+
Changes in 0.14.2
|
|
36
|
+
*****************
|
|
37
|
+
|
|
38
|
+
* Fix test suite for python 3.14 regular expressions
|
|
39
|
+
* Remove long-since-deprecated Jp2kr.read method
|
|
40
|
+
* Make Jp2kr.parse method private
|
|
41
|
+
* Make glymur.lib.tiff module private
|
|
42
|
+
* Add doctests into circleci config
|
|
43
|
+
|
|
44
|
+
*****************
|
|
45
|
+
Changes in 0.14.1
|
|
46
|
+
*****************
|
|
47
|
+
|
|
48
|
+
* Fix doc builds for API
|
|
49
|
+
* Add additional API examples for Jp2k, Jp2kr
|
|
50
|
+
* Fix tilesize reporting
|
|
51
|
+
* Refactor all of setup.cfg into pyproject.toml
|
|
52
|
+
|
|
53
|
+
*****************
|
|
54
|
+
Changes in 0.14.0
|
|
55
|
+
*****************
|
|
56
|
+
|
|
57
|
+
* Add description of raw IFD for geojp2 UUIDs
|
|
58
|
+
* Add feature to convert JPEGs to JP2
|
|
59
|
+
* Remove support for python 3.10
|
|
@@ -9,7 +9,7 @@ from uuid import UUID
|
|
|
9
9
|
|
|
10
10
|
# local imports
|
|
11
11
|
from . import jp2box
|
|
12
|
-
from .lib.
|
|
12
|
+
from .lib._tiff import DATATYPE2FMT
|
|
13
13
|
from .jp2k import Jp2k
|
|
14
14
|
from glymur.core import RESTRICTED_ICC_PROFILE
|
|
15
15
|
|
|
@@ -276,11 +276,7 @@ class _2JP2Converter(object):
|
|
|
276
276
|
|
|
277
277
|
b.seek(tag_offset)
|
|
278
278
|
|
|
279
|
-
|
|
280
|
-
dtype = tags[tag]["dtype"]
|
|
281
|
-
except IndexError:
|
|
282
|
-
breakpoint()
|
|
283
|
-
pass
|
|
279
|
+
dtype = tags[tag]["dtype"]
|
|
284
280
|
|
|
285
281
|
nvalues = tags[tag]["nvalues"]
|
|
286
282
|
payload = tags[tag]["payload"]
|
|
@@ -526,10 +526,10 @@ class Jp2k(Jp2kr):
|
|
|
526
526
|
This method can only be used to create JPEG 2000 images that can fit
|
|
527
527
|
in memory.
|
|
528
528
|
"""
|
|
529
|
-
if version.openjpeg_version < "2.
|
|
529
|
+
if version.openjpeg_version < "2.4.0":
|
|
530
530
|
msg = (
|
|
531
|
-
"
|
|
532
|
-
"
|
|
531
|
+
"The minimum supported version of OpenJPEG is 2.4.0. "
|
|
532
|
+
f"Your version is {version.openjpeg_version}."
|
|
533
533
|
)
|
|
534
534
|
raise RuntimeError(msg)
|
|
535
535
|
|
|
@@ -741,6 +741,7 @@ class Jp2k(Jp2kr):
|
|
|
741
741
|
|
|
742
742
|
Examples
|
|
743
743
|
--------
|
|
744
|
+
# noqa : W291
|
|
744
745
|
>>> import io, shutil, lxml.etree as ET
|
|
745
746
|
>>> _ = shutil.copyfile(glymur.data.nemo(), 'new-nemo.jp2')
|
|
746
747
|
>>> j = glymur.Jp2k('new-nemo.jp2')
|
|
@@ -1463,10 +1464,10 @@ class _TileWriter(object):
|
|
|
1463
1464
|
"""Write image data to a JP2/JPX/J2k file. Intended usage of the
|
|
1464
1465
|
various parameters follows that of OpenJPEG's opj_compress utility.
|
|
1465
1466
|
"""
|
|
1466
|
-
if version.openjpeg_version < "2.
|
|
1467
|
+
if version.openjpeg_version < "2.4.0":
|
|
1467
1468
|
msg = (
|
|
1468
|
-
"
|
|
1469
|
-
"
|
|
1469
|
+
"The minimum supported version of OpenJPEG is 2.4.0. "
|
|
1470
|
+
f"Your version is {version.openjpeg_version}."
|
|
1470
1471
|
)
|
|
1471
1472
|
raise RuntimeError(msg)
|
|
1472
1473
|
|
|
@@ -12,7 +12,6 @@ from __future__ import annotations
|
|
|
12
12
|
from contextlib import ExitStack
|
|
13
13
|
import ctypes
|
|
14
14
|
import pathlib
|
|
15
|
-
import re
|
|
16
15
|
import struct
|
|
17
16
|
import sys
|
|
18
17
|
import warnings
|
|
@@ -396,7 +395,6 @@ class Jp2kr(Jp2kBox):
|
|
|
396
395
|
"""
|
|
397
396
|
.. deprecated:: 0.15.0
|
|
398
397
|
"""
|
|
399
|
-
breakpoint()
|
|
400
398
|
msg = "Deprecated, do not use."
|
|
401
399
|
warnings.warn(msg, DeprecationWarning)
|
|
402
400
|
self._parse(force=force)
|
|
@@ -694,11 +692,10 @@ class Jp2kr(Jp2kBox):
|
|
|
694
692
|
RuntimeError
|
|
695
693
|
If the image has differing subsample factors.
|
|
696
694
|
"""
|
|
697
|
-
if
|
|
695
|
+
if version.openjpeg_version < '2.4.0':
|
|
698
696
|
msg = (
|
|
699
|
-
|
|
700
|
-
f"
|
|
701
|
-
f"Your version is {version.openjpeg_version}"
|
|
697
|
+
"The minimum supported version of OpenJPEG is 2.4.0. "
|
|
698
|
+
f"Your version is {version.openjpeg_version}."
|
|
702
699
|
)
|
|
703
700
|
raise RuntimeError(msg)
|
|
704
701
|
|
|
@@ -878,11 +875,10 @@ class Jp2kr(Jp2kBox):
|
|
|
878
875
|
>>> jp = glymur.Jp2k(jfile)
|
|
879
876
|
>>> components_lst = jp.read_bands(rlevel=1)
|
|
880
877
|
"""
|
|
881
|
-
if version.openjpeg_version < "2.
|
|
878
|
+
if version.openjpeg_version < "2.4.0":
|
|
882
879
|
msg = (
|
|
883
|
-
|
|
884
|
-
f"
|
|
885
|
-
f"{version.openjpeg_version}."
|
|
880
|
+
"The minimum supported version of OpenJPEG is 2.4.0. "
|
|
881
|
+
f"Your version is {version.openjpeg_version}."
|
|
886
882
|
)
|
|
887
883
|
raise RuntimeError(msg)
|
|
888
884
|
|
|
@@ -71,11 +71,10 @@ def set_option(key, value):
|
|
|
71
71
|
raise KeyError(f"{key} not valid.")
|
|
72
72
|
|
|
73
73
|
if key == "lib.num_threads":
|
|
74
|
-
if version.openjpeg_version < "2.
|
|
74
|
+
if version.openjpeg_version < "2.4.0":
|
|
75
75
|
msg = (
|
|
76
|
-
|
|
77
|
-
f"
|
|
78
|
-
f"{version.openjpeg_version}."
|
|
76
|
+
"The minimum supported version of OpenJPEG is 2.4.0. "
|
|
77
|
+
f"Your version is {version.openjpeg_version}."
|
|
79
78
|
)
|
|
80
79
|
raise RuntimeError(msg)
|
|
81
80
|
if not opj2.has_thread_support():
|
|
@@ -16,11 +16,11 @@ import numpy as np
|
|
|
16
16
|
|
|
17
17
|
# Local imports ...
|
|
18
18
|
from .lib import openjp2 as opj2
|
|
19
|
-
from .lib import tiff
|
|
19
|
+
from .lib import _tiff as 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.
|
|
23
|
+
version = "0.14.5"
|
|
24
24
|
|
|
25
25
|
version_tuple = parse(version).release
|
|
26
26
|
|
|
@@ -5,6 +5,7 @@ classifiers = [
|
|
|
5
5
|
'Programming Language :: Python :: 3.11',
|
|
6
6
|
'Programming Language :: Python :: 3.12',
|
|
7
7
|
'Programming Language :: Python :: 3.13',
|
|
8
|
+
'Programming Language :: Python :: 3.14',
|
|
8
9
|
'Programming Language :: Python :: Implementation :: CPython',
|
|
9
10
|
'Intended Audience :: Science/Research',
|
|
10
11
|
'Operating System :: OS Independent',
|
|
@@ -21,7 +22,7 @@ license = 'MIT'
|
|
|
21
22
|
name = 'Glymur'
|
|
22
23
|
readme = 'README.md'
|
|
23
24
|
requires-python = '>=3.11'
|
|
24
|
-
version = '0.14.
|
|
25
|
+
version = '0.14.5'
|
|
25
26
|
|
|
26
27
|
[project.scripts]
|
|
27
28
|
jp2dump = 'glymur.command_line:main'
|
|
@@ -3,21 +3,18 @@ Test fixtures common to more than one test point.
|
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
5
|
# Standard library imports
|
|
6
|
-
import importlib.
|
|
6
|
+
import importlib.resources as ir
|
|
7
7
|
import pathlib
|
|
8
|
-
import platform
|
|
9
8
|
import shutil
|
|
10
9
|
import sys
|
|
11
10
|
import tempfile
|
|
12
11
|
import unittest
|
|
13
12
|
|
|
14
13
|
# are we anaconda?
|
|
15
|
-
|
|
16
|
-
import conda # noqa : F401
|
|
17
|
-
except ImportError:
|
|
18
|
-
ANACONDA = False
|
|
19
|
-
else:
|
|
14
|
+
if 'conda' in sys.version.lower():
|
|
20
15
|
ANACONDA = True
|
|
16
|
+
else:
|
|
17
|
+
ANACONDA = False
|
|
21
18
|
|
|
22
19
|
# are we macports?
|
|
23
20
|
if sys.executable.startswith('/opt/local/Library/Frameworks/Python.framework'):
|
|
@@ -25,20 +22,6 @@ if sys.executable.startswith('/opt/local/Library/Frameworks/Python.framework'):
|
|
|
25
22
|
else:
|
|
26
23
|
MACPORTS = False
|
|
27
24
|
|
|
28
|
-
# are we a linux platform that can use importlib.metadata
|
|
29
|
-
if (
|
|
30
|
-
platform.system() == 'linux'
|
|
31
|
-
and platform.freedesktop_os_release()['id'] == 'opensuse-tumbleweed'
|
|
32
|
-
):
|
|
33
|
-
LINUX_WITH_GOOD_IMPORTLIBMETADATA = True
|
|
34
|
-
else:
|
|
35
|
-
LINUX_WITH_GOOD_IMPORTLIBMETADATA = False
|
|
36
|
-
|
|
37
|
-
if ANACONDA or MACPORTS or LINUX_WITH_GOOD_IMPORTLIBMETADATA:
|
|
38
|
-
CANNOT_USE_IMPORTLIB_METADATA = False
|
|
39
|
-
else:
|
|
40
|
-
CANNOT_USE_IMPORTLIB_METADATA = True
|
|
41
|
-
|
|
42
25
|
# 3rd party library imports
|
|
43
26
|
try:
|
|
44
27
|
from osgeo import gdal # noqa : F401
|
|
@@ -107,22 +90,9 @@ class TestJPEGCommon(TestCommon):
|
|
|
107
90
|
Use some files supplied by scikit-image for our tests.
|
|
108
91
|
"""
|
|
109
92
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
cls.retina = jpeg.locate()
|
|
114
|
-
|
|
115
|
-
jpeg = next(
|
|
116
|
-
filter(lambda x: 'hubble_deep_field' in x.name, files),
|
|
117
|
-
None
|
|
118
|
-
)
|
|
119
|
-
cls.hubble = jpeg.locate()
|
|
120
|
-
|
|
121
|
-
jpeg = next(
|
|
122
|
-
filter(lambda x: 'rocket' in x.name, files),
|
|
123
|
-
None
|
|
124
|
-
)
|
|
125
|
-
cls.rocket = jpeg.locate()
|
|
93
|
+
cls.retina = ir.files('skimage') / 'data' / 'retina.jpg'
|
|
94
|
+
cls.hubble = ir.files('skimage') / 'data' / 'hubble_deep_field.jpg'
|
|
95
|
+
cls.rocket = ir.files('skimage') / 'data' / 'rocket.jpg'
|
|
126
96
|
|
|
127
97
|
def setUp(self):
|
|
128
98
|
super().setUp()
|
|
@@ -13,16 +13,11 @@ from glymur import JPEG2JP2, command_line, reset_option
|
|
|
13
13
|
from . import fixtures
|
|
14
14
|
from .fixtures import (
|
|
15
15
|
OPENJPEG_NOT_AVAILABLE,
|
|
16
|
-
OPENJPEG_NOT_AVAILABLE_MSG
|
|
17
|
-
CANNOT_USE_IMPORTLIB_METADATA
|
|
16
|
+
OPENJPEG_NOT_AVAILABLE_MSG
|
|
18
17
|
)
|
|
19
18
|
|
|
20
19
|
|
|
21
20
|
@unittest.skipIf(OPENJPEG_NOT_AVAILABLE, OPENJPEG_NOT_AVAILABLE_MSG)
|
|
22
|
-
@unittest.skipIf(
|
|
23
|
-
CANNOT_USE_IMPORTLIB_METADATA,
|
|
24
|
-
'missing importlib.metadata.files ?'
|
|
25
|
-
)
|
|
26
21
|
class TestSuite(fixtures.TestJPEGCommon):
|
|
27
22
|
|
|
28
23
|
def test_smoke(self):
|
|
@@ -428,7 +428,7 @@ class TestSuite(fixtures.TestCommon):
|
|
|
428
428
|
"""
|
|
429
429
|
path = ir.files('tests.data.tiff').joinpath('basn6a08.tif')
|
|
430
430
|
buffer = path.read_bytes()
|
|
431
|
-
ifd = glymur.lib.
|
|
431
|
+
ifd = glymur.lib._tiff.tiff_header(buffer)
|
|
432
432
|
icc_profile = bytes(ifd['ICCProfile'])
|
|
433
433
|
|
|
434
434
|
sys.argv = [
|
|
@@ -5,7 +5,6 @@ OPENJP2 may be present in some form or other.
|
|
|
5
5
|
# Standard library imports ...
|
|
6
6
|
import contextlib
|
|
7
7
|
import importlib
|
|
8
|
-
import os
|
|
9
8
|
import pathlib
|
|
10
9
|
import platform
|
|
11
10
|
import unittest
|
|
@@ -18,26 +17,6 @@ from glymur import Jp2k
|
|
|
18
17
|
from .fixtures import TestCommon, OPENJPEG_NOT_AVAILABLE, OPENJPEG_NOT_AVAILABLE_MSG # noqa : E501
|
|
19
18
|
|
|
20
19
|
|
|
21
|
-
@contextlib.contextmanager
|
|
22
|
-
def chdir(dirname=None):
|
|
23
|
-
"""
|
|
24
|
-
This context manager restores the value of the current working directory
|
|
25
|
-
(cwd) after the enclosed code block completes or raises an exception. If a
|
|
26
|
-
directory name is supplied to the context manager then the cwd is changed
|
|
27
|
-
prior to running the code block.
|
|
28
|
-
|
|
29
|
-
Shamelessly lifted from
|
|
30
|
-
http://www.astropython.org/snippet/2009/10/chdir-context-manager
|
|
31
|
-
"""
|
|
32
|
-
curdir = os.getcwd()
|
|
33
|
-
try:
|
|
34
|
-
if dirname is not None:
|
|
35
|
-
os.chdir(dirname)
|
|
36
|
-
yield
|
|
37
|
-
finally:
|
|
38
|
-
os.chdir(curdir)
|
|
39
|
-
|
|
40
|
-
|
|
41
20
|
@patch("glymur.config.glymurrc_fname", lambda: None)
|
|
42
21
|
class TestSuitePathToLibrary(TestCommon):
|
|
43
22
|
"""
|
|
@@ -331,7 +310,7 @@ class TestSuiteConfigFile(TestCommon):
|
|
|
331
310
|
f.write("[library]\n")
|
|
332
311
|
f.write(f"openjp2: {expected}\n")
|
|
333
312
|
|
|
334
|
-
with chdir(self.glymur_configdir):
|
|
313
|
+
with contextlib.chdir(self.glymur_configdir):
|
|
335
314
|
# Should be able to load openjp2 as before.
|
|
336
315
|
actual = glymur.config.read_config_file("openjp2")
|
|
337
316
|
|
|
@@ -17,15 +17,10 @@ from . import fixtures
|
|
|
17
17
|
from .fixtures import (
|
|
18
18
|
OPENJPEG_NOT_AVAILABLE,
|
|
19
19
|
OPENJPEG_NOT_AVAILABLE_MSG,
|
|
20
|
-
CANNOT_USE_IMPORTLIB_METADATA
|
|
21
20
|
)
|
|
22
21
|
|
|
23
22
|
|
|
24
23
|
@unittest.skipIf(OPENJPEG_NOT_AVAILABLE, OPENJPEG_NOT_AVAILABLE_MSG)
|
|
25
|
-
@unittest.skipIf(
|
|
26
|
-
CANNOT_USE_IMPORTLIB_METADATA,
|
|
27
|
-
'missing importlib.metadata.files ?'
|
|
28
|
-
)
|
|
29
24
|
class TestSuite(fixtures.TestJPEGCommon):
|
|
30
25
|
|
|
31
26
|
def test_smoke(self):
|