Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-Glymur for openSUSE:Factory checked in at 2026-05-15 23:56:29 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-Glymur (Old) and /work/SRC/openSUSE:Factory/.python-Glymur.new.1966 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-Glymur" Fri May 15 23:56:29 2026 rev:18 rq:1353412 version:0.14.8 Changes: -------- --- /work/SRC/openSUSE:Factory/python-Glymur/python-Glymur.changes 2026-03-16 14:19:50.503543711 +0100 +++ /work/SRC/openSUSE:Factory/.python-Glymur.new.1966/python-Glymur.changes 2026-05-15 23:58:25.549249898 +0200 @@ -1,0 +2,8 @@ +Fri May 15 09:13:26 UTC 2026 - Marius Grossu <[email protected]> + +- update to 0.14.8: + * Fix KeyError on JPH image +- Drop support for Python 3.11: added %global skip_python311 1 in spec file + (bsc#1263906) + +------------------------------------------------------------------- Old: ---- Glymur-0.14.7.tar.gz New: ---- Glymur-0.14.8.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-Glymur.spec ++++++ --- /var/tmp/diff_new_pack.A9E5R3/_old 2026-05-15 23:58:26.177275749 +0200 +++ /var/tmp/diff_new_pack.A9E5R3/_new 2026-05-15 23:58:26.181275915 +0200 @@ -16,8 +16,9 @@ # +%global skip_python311 1 Name: python-Glymur -Version: 0.14.7 +Version: 0.14.8 Release: 0 Summary: Tools for accessing JPEG2000 files License: MIT ++++++ Glymur-0.14.7.tar.gz -> Glymur-0.14.8.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glymur-0.14.7/.circleci/config.yml new/glymur-0.14.8/.circleci/config.yml --- old/glymur-0.14.7/.circleci/config.yml 2026-02-04 00:44:23.000000000 +0100 +++ new/glymur-0.14.8/.circleci/config.yml 2026-05-13 22:21:53.000000000 +0200 @@ -7,7 +7,6 @@ test: jobs: - ci-311-np1 - - ci-311 - ci-312 - ci-313 - ci-314-no-gdal diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glymur-0.14.7/CHANGES.txt new/glymur-0.14.8/CHANGES.txt --- old/glymur-0.14.7/CHANGES.txt 2026-02-04 00:44:23.000000000 +0100 +++ new/glymur-0.14.8/CHANGES.txt 2026-05-13 22:21:53.000000000 +0200 @@ -1,3 +1,6 @@ +May 13, 2026 - v0.14.8 + Fix KeyError on JPH image + Feb 04, 2026 - v0.14.7 Refactor image dimension validation Refactor codestream parsing diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glymur-0.14.7/appveyor.yml new/glymur-0.14.8/appveyor.yml --- old/glymur-0.14.7/appveyor.yml 2026-02-04 00:44:23.000000000 +0100 +++ new/glymur-0.14.8/appveyor.yml 2026-05-13 22:21:53.000000000 +0200 @@ -13,12 +13,6 @@ matrix: - CONDA_ROOT: "C:\\Miniconda3_64" - PYTHON_VERSION: "3.11" - PYTHON_ARCH: "64" - CONDA_PY: "311" - USE_PATH_FOR_GDAL_PYTHON: "YES" - - - CONDA_ROOT: "C:\\Miniconda3_64" PYTHON_VERSION: "3.12" PYTHON_ARCH: "64" CONDA_PY: "312" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glymur-0.14.7/ci/ci-311-np1.yaml new/glymur-0.14.8/ci/ci-311-np1.yaml --- old/glymur-0.14.7/ci/ci-311-np1.yaml 2026-02-04 00:44:23.000000000 +0100 +++ new/glymur-0.14.8/ci/ci-311-np1.yaml 2026-05-13 22:21:53.000000000 +0200 @@ -5,6 +5,7 @@ - python=3.11.* - gdal>=3.8.0,<3.9.0 - pillow + - pip - libtiff>=4.6.0,<4.7.0 - lxml>=5.0 - numpy<2.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glymur-0.14.7/ci/ci-311.yaml new/glymur-0.14.8/ci/ci-311.yaml --- old/glymur-0.14.7/ci/ci-311.yaml 2026-02-04 00:44:23.000000000 +0100 +++ new/glymur-0.14.8/ci/ci-311.yaml 1970-01-01 01:00:00.000000000 +0100 @@ -1,13 +0,0 @@ -name: glymur -channels: - - conda-forge -dependencies: - - python=3.11.* - - gdal>=3.8.0,<3.9.0 - - pillow - - libtiff>=4.6.0,<4.7.0 - - lxml>=5.0 - - numpy>=2.0,<2.1 - - openjpeg>=2.5 - - pytest-xdist - - scikit-image diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glymur-0.14.7/ci/ci-312.yaml new/glymur-0.14.8/ci/ci-312.yaml --- old/glymur-0.14.7/ci/ci-312.yaml 2026-02-04 00:44:23.000000000 +0100 +++ new/glymur-0.14.8/ci/ci-312.yaml 2026-05-13 22:21:53.000000000 +0200 @@ -5,6 +5,7 @@ - python=3.12.* - gdal>=3.8.0,<3.9.0 - pillow + - pip - libtiff>=4.7.0,<4.8.0 - lxml>=5.0.0 - numpy>=2.0,<2.3 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glymur-0.14.7/ci/ci-313.yaml new/glymur-0.14.8/ci/ci-313.yaml --- old/glymur-0.14.7/ci/ci-313.yaml 2026-02-04 00:44:23.000000000 +0100 +++ new/glymur-0.14.8/ci/ci-313.yaml 2026-05-13 22:21:53.000000000 +0200 @@ -6,6 +6,7 @@ - gdal>=3.10.0,<3.11.0 - libgdal-jp2openjpeg - pillow + - pip - libtiff>=4.7.0,<4.8.0 - lxml>=5.3.0,<6.0.0 - numpy>=2.3,<2.4 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glymur-0.14.7/ci/ci-314-no-gdal.yaml new/glymur-0.14.8/ci/ci-314-no-gdal.yaml --- old/glymur-0.14.7/ci/ci-314-no-gdal.yaml 2026-02-04 00:44:23.000000000 +0100 +++ new/glymur-0.14.8/ci/ci-314-no-gdal.yaml 2026-05-13 22:21:53.000000000 +0200 @@ -4,6 +4,7 @@ dependencies: - python>=3.14.0 - pillow + - pip - libtiff>=4.7.1 - lxml>=6.0.2 - numpy>=2.3.3 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glymur-0.14.7/ci/ci-314-no-opj.yaml new/glymur-0.14.8/ci/ci-314-no-opj.yaml --- old/glymur-0.14.7/ci/ci-314-no-opj.yaml 2026-02-04 00:44:23.000000000 +0100 +++ new/glymur-0.14.8/ci/ci-314-no-opj.yaml 2026-05-13 22:21:53.000000000 +0200 @@ -5,6 +5,7 @@ - python>=3.14.0 - gdal>=3.11.0 - pillow + - pip - libtiff>=4.7.1 - lxml>=6.0.2 - numpy>=2.3.3 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glymur-0.14.7/ci/ci-314.yaml new/glymur-0.14.8/ci/ci-314.yaml --- old/glymur-0.14.7/ci/ci-314.yaml 2026-02-04 00:44:23.000000000 +0100 +++ new/glymur-0.14.8/ci/ci-314.yaml 2026-05-13 22:21:53.000000000 +0200 @@ -6,6 +6,7 @@ - gdal>=3.11.0 - libgdal-jp2openjpeg - pillow + - pip - libtiff>=4.7.1 - lxml>=6.0.2 - numpy>=2.3.3 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glymur-0.14.7/docs/source/conf.py new/glymur-0.14.8/docs/source/conf.py --- old/glymur-0.14.7/docs/source/conf.py 2026-02-04 00:44:23.000000000 +0100 +++ new/glymur-0.14.8/docs/source/conf.py 2026-05-13 22:21:53.000000000 +0200 @@ -81,7 +81,7 @@ # The short X.Y version. version = '0.14' # The full version, including alpha/beta/rc tags. -release = '0.14.7' +release = '0.14.8' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glymur-0.14.7/docs/source/whatsnew/0.14.rst new/glymur-0.14.8/docs/source/whatsnew/0.14.rst --- old/glymur-0.14.7/docs/source/whatsnew/0.14.rst 2026-02-04 00:44:23.000000000 +0100 +++ new/glymur-0.14.8/docs/source/whatsnew/0.14.rst 2026-05-13 22:21:53.000000000 +0200 @@ -3,6 +3,13 @@ ###################### ***************** +Changes in 0.14.8 +***************** + + * Fix KeyError on JPH image + * Remove python 3.11 np2.x from CI testing + +***************** Changes in 0.14.7 ***************** diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glymur-0.14.7/glymur/_iccprofile.py new/glymur-0.14.8/glymur/_iccprofile.py --- old/glymur-0.14.7/glymur/_iccprofile.py 2026-02-04 00:44:23.000000000 +0100 +++ new/glymur-0.14.8/glymur/_iccprofile.py 2026-05-13 22:21:53.000000000 +0200 @@ -6,6 +6,9 @@ # Third party library imports ... import numpy as np +# Local imports +from .core import _CustomDict + class _ICCProfile(object): """Container for ICC profile information.""" @@ -48,12 +51,15 @@ b"FCLR": "15colour", } - rendering_intent_dict = { + _items = { 0: "perceptual", 1: "media-relative colorimetric", 2: "saturation", 3: "ICC-absolute colorimetric", } + rendering_intent_dict = _CustomDict( + _msg_fmt="Unknown value (%s)", _items=_items + ) def __init__(self, read_buffer): self._raw_buffer = read_buffer @@ -106,10 +112,7 @@ header["Device Attributes"] = attr (rval,) = struct.unpack(">I", read_buffer[64:68]) - try: - header["Rendering Intent"] = self.rendering_intent_dict[rval] - except KeyError: - header["Rendering Intent"] = "unknown" + header["Rendering Intent"] = self.rendering_intent_dict[rval] data = struct.unpack(">iii", read_buffer[68:80]) header["Illuminant"] = np.array(data, dtype=np.float64) / 65536 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glymur-0.14.7/glymur/codestream.py new/glymur-0.14.8/glymur/codestream.py --- old/glymur-0.14.7/glymur/codestream.py 2026-02-04 00:44:23.000000000 +0100 +++ new/glymur-0.14.8/glymur/codestream.py 2026-05-13 22:21:53.000000000 +0200 @@ -21,22 +21,31 @@ CPRL, WAVELET_XFORM_9X7_IRREVERSIBLE, WAVELET_XFORM_5X3_REVERSIBLE, + _CustomDict ) from .lib import openjp2 as opj2 -_PROGRESSION_ORDER_DISPLAY = { +_items = { LRCP: "LRCP", RLCP: "RLCP", RPCL: "RPCL", PCRL: "PCRL", CPRL: "CPRL", } +_PROGRESSION_ORDER_DISPLAY = _CustomDict( + _msg_fmt="unrecognized progression order value (%s)", + _items=_items +) -_WAVELET_XFORM_DISPLAY = { - WAVELET_XFORM_9X7_IRREVERSIBLE: "9-7 irreversible", - WAVELET_XFORM_5X3_REVERSIBLE: "5-3 reversible", +_items = { + WAVELET_XFORM_9X7_IRREVERSIBLE: '9-7 irreversible', + WAVELET_XFORM_5X3_REVERSIBLE: '5-3 reversible' } +_WAVELET_XFORM_DISPLAY = _CustomDict( + _msg_fmt="unrecognized wavelet transform value (%s)", + _items=_items +) _NO_PROFILE = 0 _PROFILE_0 = 1 @@ -1167,7 +1176,6 @@ self.offset = offset self.mct = mct self.cstyle = cstyle - self.xform = xform self.layers = num_layers self._numresolutions = nr @@ -1187,6 +1195,7 @@ ]: msg = f"Invalid wavelet transform in COD segment: {xform}." warnings.warn(msg, UserWarning) + self.xform = xform self.code_block_size = 4 * 2**ycb, 4 * 2**xcb @@ -1224,14 +1233,9 @@ else: mct_str = "unknown" - try: - progression_order = _PROGRESSION_ORDER_DISPLAY[self.prog_order] - except KeyError: - progression_order = f"{self.prog_order} (invalid)" - try: - xform = _WAVELET_XFORM_DISPLAY[self.xform] - except KeyError: - xform = f"{self.xform} (invalid)" + progression_order = _PROGRESSION_ORDER_DISPLAY[self.prog_order] + xform = _WAVELET_XFORM_DISPLAY[self.xform] + msg = msg.format( with_without="with" if (self.scod & 1) else "without", sop=((self.scod & 2) > 0), @@ -1412,10 +1416,7 @@ ) for j in range(len(self.rspod)): - try: - progorder = _PROGRESSION_ORDER_DISPLAY[self.ppod[j]] - except KeyError: - progorder = f"invalid value: {self.ppod[j]}" + progorder = _PROGRESSION_ORDER_DISPLAY[self.ppod[j]] msg += submsg.format( j, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glymur-0.14.7/glymur/core.py new/glymur-0.14.8/glymur/core.py --- old/glymur-0.14.7/glymur/core.py 2026-02-04 00:44:23.000000000 +0100 +++ new/glymur-0.14.8/glymur/core.py 2026-05-13 22:21:53.000000000 +0200 @@ -1,5 +1,24 @@ """Core definitions to be shared amongst the modules.""" + +class _CustomDict(dict): + """ + Use this instead of a normal dictionary when we need a custom message + printed instead of dealing with a KeyError. + """ + + def __init__(self, *args, _msg_fmt='', _items=None): + dict.__init__(self, *args) + self._msg_fmt = _msg_fmt + + if _items is not None: + for key, value in _items.items(): + self.__setitem__(key, value) + + def __missing__(self, key): + return self._msg_fmt % key + + # Progression order LRCP = 0 RLCP = 1 @@ -101,7 +120,7 @@ ROMM_RGB = 21 -_COLORSPACE_MAP_DISPLAY = { +_items = { CMYK: "CMYK", SRGB: "sRGB", GREYSCALE: "greyscale", @@ -109,6 +128,10 @@ E_SRGB: "e-sRGB", ROMM_RGB: "ROMM-RGB", } +_COLORSPACE_MAP_DISPLAY = _CustomDict( + _msg_fmt="unrecognized value (%s)", + _items=_items +) # enumerated color channel types COLOR = 0 @@ -117,12 +140,16 @@ _UNSPECIFIED = 65535 -_COLOR_TYPE_MAP_DISPLAY = { +_items = { COLOR: "color", OPACITY: "opacity", PRE_MULTIPLIED_OPACITY: "pre-multiplied opacity", _UNSPECIFIED: "unspecified", } +_COLOR_TYPE_MAP_DISPLAY = _CustomDict( + _msg_fmt="unrecognized value (%s)", + _items=_items +) # color channel definitions. RED = 1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glymur-0.14.7/glymur/jp2box.py new/glymur-0.14.8/glymur/jp2box.py --- old/glymur-0.14.7/glymur/jp2box.py 2026-02-04 00:44:23.000000000 +0100 +++ new/glymur-0.14.8/glymur/jp2box.py 2026-05-13 22:21:53.000000000 +0200 @@ -50,27 +50,35 @@ RESTRICTED_ICC_PROFILE, ANY_ICC_PROFILE, VENDOR_COLOR_METHOD, + _CustomDict ) from .lib._tiff import tiff_header, BadTiffTagDatatype from . import get_option from ._iccprofile import _ICCProfile -_COLORSPACE_METHODS = { +_items = { ENUMERATED_COLORSPACE: "enumerated colorspace", RESTRICTED_ICC_PROFILE: "restricted ICC profile", ANY_ICC_PROFILE: "any ICC profile", VENDOR_COLOR_METHOD: "vendor color method", } +_COLORSPACE_METHODS = _CustomDict( + _msg_fmt="unrecognized colorspace value (%s)", + _items=_items +) - -_APPROXIMATION_MEASURES = { +_items = { 0: "JP2 only", 1: "accurately represents correct colorspace definition", 2: "approximates correct colorspace definition, exceptional quality", 3: "approximates correct colorspace definition, reasonable quality", 4: "approximates correct colorspace definition, poor quality", } +_APPROXIMATION_MEASURES = _CustomDict( + _msg_fmt="unrecognized approximation measure value (%s)", + _items=_items +) # Three different UUIDs are given special treatment. _GEOTIFF_UUID = UUID("b14bf8bd-083d-4b43-a5ae-8cd7d5a6ce03") @@ -434,29 +442,19 @@ lst = [] - try: - item = _COLORSPACE_METHODS[self.method] - except KeyError: - item = f"unrecognized value ({self.method})" - text = f"Method: {item}" - + text = f"Method: {_COLORSPACE_METHODS[self.method]}" lst.append(text) + text = f"Precedence: {self.precedence}" lst.append(text) if self.approximation != 0: - try: - dispvalue = _APPROXIMATION_MEASURES[self.approximation] - except KeyError: - dispvalue = f"invalid ({self.approximation})" + dispvalue = _APPROXIMATION_MEASURES[self.approximation] text = f"Approximation: {dispvalue}" lst.append(text) if self.colorspace is not None: - try: - dispvalue = _COLORSPACE_MAP_DISPLAY[self.colorspace] - except KeyError: - dispvalue = f"{self.colorspace} (unrecognized)" + dispvalue = _COLORSPACE_MAP_DISPLAY[self.colorspace] text = f"Colorspace: {dispvalue}" else: if self.icc_profile is None: @@ -631,10 +629,7 @@ for association, channel_type, index in zip( self.association, self.channel_type, self.index ): - try: - color_type_string = _COLOR_TYPE_MAP_DISPLAY[channel_type] - except KeyError: - color_type_string = f"invalid ({channel_type})" + color_type_string = _COLOR_TYPE_MAP_DISPLAY[channel_type] association = str(association) if association else "whole image" text = f"Channel {index} ({color_type_string}) ==> ({association})" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glymur-0.14.7/glymur/tiff.py new/glymur-0.14.8/glymur/tiff.py --- old/glymur-0.14.7/glymur/tiff.py 2026-02-04 00:44:23.000000000 +0100 +++ new/glymur-0.14.8/glymur/tiff.py 2026-05-13 22:21:53.000000000 +0200 @@ -175,8 +175,7 @@ try: tag_num = TAGNAME2NUM[tag] except KeyError: - msg = f"{tag} is not a recognized TIFF tag" - warnings.warn(msg) + warnings.warn(f"{tag} is not a recognized TIFF tag") else: lst.append(tag_num) else: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glymur-0.14.7/glymur/version.py new/glymur-0.14.8/glymur/version.py --- old/glymur-0.14.7/glymur/version.py 2026-02-04 00:44:23.000000000 +0100 +++ new/glymur-0.14.8/glymur/version.py 2026-05-13 22:21:53.000000000 +0200 @@ -20,7 +20,7 @@ # Do not change the format of this next line! Doing so risks breaking # setup.py -version = "0.14.7" +version = "0.14.8" version_tuple = parse(version).release diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glymur-0.14.7/pyproject.toml new/glymur-0.14.8/pyproject.toml --- old/glymur-0.14.7/pyproject.toml 2026-02-04 00:44:23.000000000 +0100 +++ new/glymur-0.14.8/pyproject.toml 2026-05-13 22:21:53.000000000 +0200 @@ -22,7 +22,7 @@ name = 'Glymur' readme = 'README.md' requires-python = '>=3.11' -version = '0.14.7' +version = '0.14.8' [project.scripts] jp2dump = 'glymur.command_line:main' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glymur-0.14.7/tests/data/misc/issue186_progression_order.txt new/glymur-0.14.8/tests/data/misc/issue186_progression_order.txt --- old/glymur-0.14.7/tests/data/misc/issue186_progression_order.txt 2026-02-04 00:44:23.000000000 +0100 +++ new/glymur-0.14.8/tests/data/misc/issue186_progression_order.txt 2026-05-13 22:21:53.000000000 +0200 @@ -4,7 +4,7 @@ SOP marker segments: False EPH marker segments: False Coding style parameters: - Progression order: 33 (invalid) + Progression order: unrecognized progression order value (33) Number of layers: 1 Multiple component transformation usage: reversible Number of decomposition levels: 5 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glymur-0.14.7/tests/test_colour_specification_box.py new/glymur-0.14.8/tests/test_colour_specification_box.py --- old/glymur-0.14.7/tests/test_colour_specification_box.py 2026-02-04 00:44:23.000000000 +0100 +++ new/glymur-0.14.8/tests/test_colour_specification_box.py 2026-05-13 22:21:53.000000000 +0200 @@ -172,7 +172,9 @@ self.buffer = self.buffer[:64] + intent + self.buffer[68:] icc_profile = _ICCProfile(self.buffer) - self.assertEqual(icc_profile.header["Rendering Intent"], "unknown") + self.assertEqual( + icc_profile.header["Rendering Intent"], "Unknown value (10)" + ) def test_version4(self): """ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glymur-0.14.7/tests/test_printing.py new/glymur-0.14.8/tests/test_printing.py --- old/glymur-0.14.7/tests/test_printing.py 2026-02-04 00:44:23.000000000 +0100 +++ new/glymur-0.14.8/tests/test_printing.py 2026-05-13 22:21:53.000000000 +0200 @@ -18,7 +18,7 @@ import lxml.etree as ET import glymur -from glymur.codestream import LRCP, WAVELET_XFORM_5X3_REVERSIBLE +from glymur.codestream import LRCP, WAVELET_XFORM_5X3_REVERSIBLE, COCsegment from glymur.core import COLOR, RED, GREEN, BLUE, RESTRICTED_ICC_PROFILE from glymur.jp2box import BitsPerComponentBox, ColourSpecificationBox from glymur.jp2box import LabelBox, UUIDBox @@ -322,8 +322,9 @@ expected = ("Colour Specification Box (colr) @ (-1, 0)\n" " Method: enumerated colorspace\n" " Precedence: 2\n" - " Approximation: invalid (32)\n" - " Colorspace: 1 (unrecognized)") + " Approximation: " + "unrecognized approximation measure value (32)\n" + " Colorspace: unrecognized value (1)") self.assertEqual(actual, expected) def test_invalid_colorspace(self): @@ -1173,7 +1174,8 @@ ' Layer index end: 1\n' ' Resolution index end: 33\n' ' Component index end: 257\n' - ' Progression order: invalid value: 16' + ' Progression order: ' + 'unrecognized progression order value (16)' ) self.assertEqual(actual, expected) @@ -1654,6 +1656,17 @@ ) self.assertEqual(actual, expected) + def test_coc_segment_with_unrecognized_wavelet_transform(self): + """ + Scenario: Print a COC segment that has an unrecognized wavelet + transform. + + Expected Result: should not error out + """ + spcoc = np.array([129, 6, 1, 72, 2, 45, 45, 45, 45, 61, 77]) + coc = COCsegment(0, 1, spcoc, -1, -1) + str(coc) + class TestJp2dump(fixtures.TestCommon): """Tests for verifying how jp2dump console script works."""
