[Debian-med-packaging] Bug#1136272: trixie-pu: package pydicom/2.4.3-2+deb13u1
Karsten Schöke
karsten.schoeke at geobasis-bb.de
Mon May 11 11:43:11 BST 2026
Package: release.debian.org
Severity: normal
Tags: trixie
X-Debbugs-Cc: pydicom at packages.debian.org
Control: affects -1 + src:pydicom
User: release.debian.org at packages.debian.org
Usertags: pu
Fix CVE-2026-32711 for trixie.
A crafted DICOMDIR could create a path traversal by setting
ReferencedFileID to a path outside the File-set root.
[ Checklist ]
[*] *all* changes are documented in the d/changelog
[*] I reviewed all changes and I approve them
[*] attach debdiff against the package in (old)stable
[*] the issue is verified as fixed in unstable
[ Changes ]
I backported the upstream patch from the 2.4.5 release.
Additionally, the test dependency `python3-pyfakefs`
had to be added to the control file.
-------------- next part --------------
diff --git a/debian/changelog b/debian/changelog
index c47a75b..63dd258 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,12 +1,10 @@
-pydicom (2.4.3-2) unstable; urgency=medium
+pydicom (2.4.3-1+deb13u1) trixie; urgency=high
* Team upload.
- * skip-i386-incapable-tests.patch: new patch.
- This works around test failures on 32-bit platforms. (Closes: #1103137)
- * d/patches/*: normalize Last-Update timestamps.
- * d/control: declare compliance to standards version 4.7.2.
+ * Fix CVE-2026-32711
+ FileSet/DICOMDIR path traversal vulnerability
- -- ?tienne Mollier <emollier at debian.org> Mon, 14 Apr 2025 23:30:28 +0200
+ -- Karsten Sch?ke <karsten.schoeke at geobasis-bb.de> Mon, 11 May 2026 09:40:34 +0200
pydicom (2.4.3-1) unstable; urgency=medium
diff --git a/debian/control b/debian/control
index 675f184..991c132 100644
--- a/debian/control
+++ b/debian/control
@@ -14,6 +14,7 @@ Build-Depends: debhelper-compat (= 13),
python3-numpy,
python3-docutils,
python3-pil,
+ python3-pyfakefs,
python3-sphinx,
python3-sphinx-gallery (>= 0.10.1-4~),
python3-sphinx-rtd-theme,
diff --git a/debian/patches/deb_no_unicode b/debian/patches/deb_no_unicode
index ff86d70..a568ab7 100644
--- a/debian/patches/deb_no_unicode
+++ b/debian/patches/deb_no_unicode
@@ -1,12 +1,32 @@
From: Yaroslav Halchenko <debian at onerussian.com>
-Subject: Disable Unicode filenames handling
- Unicode+Python in a minimal debian env without locales
- configured and code insisting on non-ascii encodable filenames
- is the task for masocists.. thus cheated for today
+Date: Mon, 11 May 2026 10:53:29 +0200
+Subject: Disable Unicode filenames handling Unicode+Python in a minimal
+ debian env without locales configured and code insisting on non-ascii
+ encodable filenames is the task for masocists.. thus cheated for today
+
Bug-Debian: http://bugs.debian.org/
Bug-Ubuntu: https://launchpad.net/bugs/
Last-Update: 2018-06-25
+---
+ pydicom/tests/test_filereader.py | 2 +-
+ pydicom/tests/test_gdcm_pixel_data.py | 4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+diff --git a/pydicom/tests/test_filereader.py b/pydicom/tests/test_filereader.py
+index 5461959..001a507 100644
+--- a/pydicom/tests/test_filereader.py
++++ b/pydicom/tests/test_filereader.py
+@@ -112,7 +112,7 @@ class TestReader:
+ assert empty_number_tags_ds.VectorGridData is None
+
+ def test_UTF8_filename(self):
+- utf8_filename = os.path.join(tempfile.gettempdir(), "?????.dcm")
++ utf8_filename = os.path.join(tempfile.gettempdir(), "DICOM.dcm")
+ shutil.copyfile(rtdose_name, utf8_filename)
+ ds = dcmread(utf8_filename)
+ os.remove(utf8_filename)
+diff --git a/pydicom/tests/test_gdcm_pixel_data.py b/pydicom/tests/test_gdcm_pixel_data.py
+index bc8dd2a..2426753 100644
--- a/pydicom/tests/test_gdcm_pixel_data.py
+++ b/pydicom/tests/test_gdcm_pixel_data.py
@@ -99,7 +99,7 @@ save_dir = os.getcwd()
@@ -27,14 +47,3 @@ Last-Update: 2018-06-25
shutil.copyfile(jpeg_ls_lossless_name, unicode_filename)
yield unicode_filename
os.remove(unicode_filename)
---- a/pydicom/tests/test_filereader.py
-+++ b/pydicom/tests/test_filereader.py
-@@ -112,7 +112,7 @@ class TestReader:
- assert empty_number_tags_ds.VectorGridData is None
-
- def test_UTF8_filename(self):
-- utf8_filename = os.path.join(tempfile.gettempdir(), "?????.dcm")
-+ utf8_filename = os.path.join(tempfile.gettempdir(), "DICOM.dcm")
- shutil.copyfile(rtdose_name, utf8_filename)
- ds = dcmread(utf8_filename)
- os.remove(utf8_filename)
diff --git a/debian/patches/fix-for-FileSet-DICOMDIR-path-traversal-vulnerabilit.patch b/debian/patches/fix-for-FileSet-DICOMDIR-path-traversal-vulnerabilit.patch
new file mode 100644
index 0000000..ed59c22
--- /dev/null
+++ b/debian/patches/fix-for-FileSet-DICOMDIR-path-traversal-vulnerabilit.patch
@@ -0,0 +1,573 @@
+From: =?utf-8?q?Karsten_Sch=C3=B6ke?= <karsten.schoeke at geobasis-bb.de>
+Date: Mon, 11 May 2026 10:55:32 +0200
+Subject: Fix for FileSet/DICOMDIR path traversal vulnerability
+ (CVE-2026-32711)
+
+Forwarded: not-needed
+---
+ pydicom/fileset.py | 152 ++++++++++++++++++++++++++++++------------
+ pydicom/tests/conftest.py | 8 +++
+ pydicom/tests/test_fileset.py | 130 +++++++++++++++++++++++++++++++-----
+ 3 files changed, 232 insertions(+), 58 deletions(-)
+
+diff --git a/pydicom/fileset.py b/pydicom/fileset.py
+index 5549d6d..f4412a4 100644
+--- a/pydicom/fileset.py
++++ b/pydicom/fileset.py
+@@ -344,24 +344,47 @@ class RecordNode(Iterable["RecordNode"]):
+
+ return len(fp.getvalue())
+
+- @property
+- def _file_id(self) -> Optional[Path]:
++ def file_id_path(self, root_path: Path) -> Path | None:
+ """Return the *Referenced File ID* as a :class:`~pathlib.Path`.
+
++ Params
++ ------
++ root_path : Path
++ The root path of the parent file set.
++
+ Returns
+ -------
+ pathlib.Path or None
+ The *Referenced File ID* from the directory record as a
+ :class:`pathlib.Path` or ``None`` if the element value is null.
++
++ Raises
++ ------
++ PermissionError
++ If the file ID points to a path outside the fileset root path.
++
++ AttributeError
++ If the Referenced File ID is missing in the directory record.
++
++ :meta private:
+ """
+ if "ReferencedFileID" in self._record:
+ elem = self._record["ReferencedFileID"]
++ if elem.VM < 1:
++ return None
+ if elem.VM == 1:
+- return Path(cast(str, self._record.ReferencedFileID))
+- if elem.VM > 1:
+- return Path(*cast(List[str], self._record.ReferencedFileID))
+-
+- return None
++ path = Path(cast(str, self._record.ReferencedFileID))
++ else:
++ path = Path(*cast(list[str], self._record.ReferencedFileID))
++
++ if path is not None:
++ if path.anchor or not (
++ (root_path / path).resolve().is_relative_to(root_path)
++ ):
++ raise PermissionError(
++ f"ReferencedFileID ('{path}') must be inside the DICOMDIR root path"
++ )
++ return path
+
+ raise AttributeError("No 'Referenced File ID' in the directory record")
+
+@@ -371,7 +394,7 @@ class RecordNode(Iterable["RecordNode"]):
+ return self.root.file_set
+
+ def __getitem__(self, key: Union[str, "RecordNode"]) -> "RecordNode":
+- """Return the current node's child using it's
++ """Return the current node's child using its
+ :attr:`~pydicom.fileset.RecordNode.key`
+ """
+ if isinstance(key, RecordNode):
+@@ -524,8 +547,8 @@ class RecordNode(Iterable["RecordNode"]):
+ for node in self:
+ indent = indent_char * node.depth
+ if node.children:
+- s.append(f"{indent}{str(node)}")
+- # Summarise any leaves at the next level
++ s.append(f"{indent}{node}")
++ # Summarize any leaves at the next level
+ for child in node.children:
+ if child.has_instance:
+ s.extend(leaf_summary(child, indent_char))
+@@ -931,9 +954,8 @@ class FileInstance:
+ return os.fspath(cast(Path, self._stage_path))
+
+ # If not staged for addition then File Set must exist on file system
+- return os.fspath(
+- cast(Path, self.file_set.path) / cast(Path, self.node._file_id)
+- )
++ root_path = self.file_set.root_path
++ return os.fspath(root_path / cast(Path, self.node.file_id_path(root_path)))
+
+ @property
+ def SOPClassUID(self) -> UID:
+@@ -966,7 +988,7 @@ class FileSet:
+ to the DICOMDIR file.
+ """
+ # The nominal path to the root of the File-set
+- self._path: Optional[Path] = None
++ self._root_path: Path | None = None
+ # The root node of the record tree used to fill out the DICOMDIR's
+ # *Directory Record Sequence*.
+ # The tree for instances currently in the File-set
+@@ -1212,7 +1234,7 @@ class FileSet:
+ """Clear the File-set."""
+ self._tree.children = []
+ self._instances = []
+- self._path = None
++ self._root_path = None
+ self._ds = Dataset()
+ self._id = None
+ self._uid = generate_uid()
+@@ -1661,7 +1683,7 @@ class FileSet:
+ )
+
+ try:
+- path = Path(cast(str, ds.filename)).resolve(strict=True)
++ path = Path(ds.filename).resolve(strict=True)
+ except FileNotFoundError:
+ raise FileNotFoundError(
+ "Unable to load the File-set as the 'filename' attribute "
+@@ -1692,7 +1714,7 @@ class FileSet:
+ Optional[str],
+ ds.get("SpecificCharacterSetOfFileSetDescriptorFile", None)
+ )
+- self._path = path.parent
++ self._root_path = path.parent
+ self._ds = ds
+
+ # Create the record tree
+@@ -1701,20 +1723,17 @@ class FileSet:
+ bad_instances = []
+ for instance in self:
+ # Check that the referenced file exists
+- file_id = instance.node._file_id
+- if file_id is None:
+- bad_instances.append(instance)
+- continue
+-
++ file_id = self._file_id_path(instance.node)
++ assert file_id is not None
+ try:
+ # self.path is already set at this point
+- (cast(Path, self.path) / file_id).resolve(strict=True)
++ (self.root_path / file_id).resolve(strict=True)
+ except FileNotFoundError:
+ bad_instances.append(instance)
+ warnings.warn(
+ "The referenced SOP Instance for the directory record at "
+ f"offset {instance.node._offset} does not exist: "
+- f"{cast(Path, self.path) / file_id}"
++ f"{self.root_path / file_id}"
+ )
+ continue
+
+@@ -1726,6 +1745,31 @@ class FileSet:
+ for instance in bad_instances:
+ self._instances.remove(instance)
+
++ def _file_id_path(self, node: RecordNode) -> Path | None:
++ """Return the *Referenced File ID* from the given node
++ as a :class:`~pathlib.Path`.
++
++ Parameters
++ ----------
++ node: RecordNode
++ The node where the *Referenced File ID* resides.
++
++ Returns
++ -------
++ pathlib.Path or None
++ The *Referenced File ID* from the directory record as a
++ :class:`pathlib.Path` or ``None`` if the element value is null.
++
++ Raises
++ ------
++ PermissionError
++ If the file ID points to a path outside the fileset root path.
++
++ AttributeError
++ If the Referenced File ID is missing in the directory record.
++ """
++ return node.file_id_path(self.root_path)
++
+ def _parse_records(
+ self,
+ ds: Dataset,
+@@ -1782,7 +1826,10 @@ class FileSet:
+ del node.parent[node]
+
+ # The leaf node references the FileInstance
+- if "ReferencedFileID" in node._record:
++ if (
++ "ReferencedFileID" in node._record
++ and self._file_id_path(node) is not None
++ ):
+ node.instance = FileInstance(node)
+ self._instances.append(node.instance)
+
+@@ -1817,12 +1864,11 @@ class FileSet:
+ for node in missing:
+ # Get the path to the orphaned instance
+ original_value = node._record.ReferencedFileID
+- file_id = node._file_id
+- if file_id is None:
++ if (file_id := self._file_id_path(node)) is None:
+ continue
+
+ # self.path is set for an existing File Set
+- path = cast(Path, self.path) / file_id
++ path = self.root_path / file_id
+ if node.record_type == "PRIVATE":
+ instance = self.add_custom(path, node)
+ else:
+@@ -1832,14 +1878,29 @@ class FileSet:
+ instance.node._record.ReferencedFileID = original_value
+
+ @property
+- def path(self) -> Optional[str]:
++ def root_path(self) -> Path:
++ """Return the absolute path to the File-set root directory as
++ :class:`pathlib.Path`.
++
++ Raises
++ ------
++ AttributeError
++ If the root path is not set.
++ """
++ if self._root_path is None:
++ raise AttributeError("No root path set in the File-set")
++
++ return self._root_path
++
++ @property
++ def path(self) -> str | None:
+ """Return the absolute path to the File-set root directory as
+ :class:`str` (if set) or ``None`` otherwise.
+ """
+- if self._path is not None:
+- return os.fspath(self._path)
++ if self._root_path is not None:
++ return os.fspath(self._root_path)
+
+- return self._path
++ return None
+
+ def _recordify(self, ds: Dataset) -> Iterator[Dataset]:
+ """Yield directory records for a SOP Instance.
+@@ -2105,16 +2166,17 @@ class FileSet:
+ )
+
+ if path:
+- self._path = Path(path)
++ self._root_path = Path(path)
+
+ # Don't write unless changed or new
+ if not self.is_staged:
+ return
+
+ # Path to the DICOMDIR file
+- p = cast(Path, self._path) / 'DICOMDIR'
++ root = self.root_path
++ p = root / "DICOMDIR"
+
+- # Re-use the existing directory structure if only moves or removals
++ # Reuse the existing directory structure if only moves or removals
+ # are required and `use_existing` is True
+ major_change = bool(self._stage['+'])
+ if use_existing and major_change:
+@@ -2159,26 +2221,30 @@ class FileSet:
+ # and copy any to the stage
+ fout = {Path(ii.FileID) for ii in self}
+ fin = {
+- ii.node._file_id for ii in self
+- if ii.SOPInstanceUID not in self._stage['+']
++ self._file_id_path(ii.node)
++ for ii in self
++ if ii.SOPInstanceUID not in self._stage["+"]
+ }
+ collisions = fout & fin
+- for instance in [ii for ii in self if ii.node._file_id in collisions]:
+- self._stage['+'][instance.SOPInstanceUID] = instance
+- instance._apply_stage('+')
++ for instance in [
++ ii for ii in self if self._file_id_path(ii.node) in collisions
++ ]:
++ self._stage["+"][instance.SOPInstanceUID] = instance
++ instance._apply_stage("+")
+ shutil.copyfile(
+- self._path / instance.node._file_id, instance.path
++ root / cast(Path, self._file_id_path(instance.node)),
++ instance.path,
+ )
+
+ for instance in self:
+- dst = self._path / instance.FileID
++ dst = root / instance.FileID
+ dst.parent.mkdir(parents=True, exist_ok=True)
+ fn: Callable
+ if instance.SOPInstanceUID in self._stage['+']:
+ src = instance.path
+ fn = shutil.copyfile
+ else:
+- src = self._path / instance.node._file_id
++ src = root / cast(Path, self._file_id_path(instance.node))
+ fn = shutil.move
+
+ fn(os.fspath(src), os.fspath(dst))
+diff --git a/pydicom/tests/conftest.py b/pydicom/tests/conftest.py
+index 10d1dc3..301fd00 100644
+--- a/pydicom/tests/conftest.py
++++ b/pydicom/tests/conftest.py
+@@ -22,6 +22,14 @@ def allow_reading_invalid_values():
+ config.settings.reading_validation_mode = value
+
+
++ at pytest.fixture
++def ignore_reading_invalid_values():
++ value = config.settings.reading_validation_mode
++ config.settings.reading_validation_mode = config.IGNORE
++ yield
++ config.settings.reading_validation_mode = value
++
++
+ @pytest.fixture
+ def enforce_writing_invalid_values():
+ value = config.settings.writing_validation_mode
+diff --git a/pydicom/tests/test_fileset.py b/pydicom/tests/test_fileset.py
+index cff26da..8ded886 100644
+--- a/pydicom/tests/test_fileset.py
++++ b/pydicom/tests/test_fileset.py
+@@ -1,5 +1,6 @@
+
+ import os
++import platform
+ import sys
+ from pathlib import Path
+ import shutil
+@@ -10,7 +11,7 @@ import pytest
+ from pydicom import config, dcmread
+ from pydicom.data import get_testdata_file
+ from pydicom.dataset import Dataset, FileMetaDataset
+-from pydicom.filebase import DicomBytesIO
++from pydicom.filebase import DicomBytesIO, DicomFileLike
+ from pydicom.fileset import (
+ FileSet, FileInstance, RecordNode, is_conformant_file_id,
+ generate_filename, _define_patient, _define_study, _define_series,
+@@ -81,6 +82,56 @@ def tdir():
+ return TemporaryDirectory()
+
+
++FILESET_ROOT = "/path/to/fileset/"
++ABS_FILE_PATH = "/secret.txt"
++SYMLINK_TO_ABS_FILE = "Pat1/St1/Im2"
++SYMLINK_TO_ABS_DIR = "Pat1/St2"
++DOT_DOT_FILE = "../goback.txt"
++ABS_FILE_CONTENTS = "Top Secret file contents"
++COPY_PATH = "/path/to/copied/"
++
++
++ at pytest.fixture(
++ params=[
++ ABS_FILE_PATH,
++ DOT_DOT_FILE,
++ SYMLINK_TO_ABS_FILE,
++ SYMLINK_TO_ABS_DIR + ABS_FILE_PATH,
++ ]
++)
++def fileset_fs(request, fs, ignore_reading_invalid_values):
++ """Create an in-memory file system with pyfakefs and test DICOMDIRs"""
++ # Simplified version of submitted report from JeongAhn Jang, in pyfakefs
++ orig_dicomdir_root = Path(TEST_FILE).parent
++ dicomdir_root = Path(FILESET_ROOT)
++ fs.add_real_file(
++ orig_dicomdir_root / "77654033/CR1/6154",
++ target_path=dicomdir_root / "Pat1/St1/Im1",
++ )
++ fs.create_file(ABS_FILE_PATH, contents=ABS_FILE_CONTENTS)
++ fs.create_dir(COPY_PATH)
++ fs.create_symlink(dicomdir_root / SYMLINK_TO_ABS_FILE, ABS_FILE_PATH)
++ fs.create_symlink(dicomdir_root / SYMLINK_TO_ABS_DIR, "/")
++ # MAKE DICOMDIR for this simplified file-set
++ fset = FileSet()
++ fset.add(dicomdir_root / "Pat1/St1/Im1")
++ fset.write(dicomdir_root)
++
++ # Create bad DICOMDIR2 file from the simplified one
++ # Modify first referenced file
++ fset = FileSet(dicomdir_root / "DICOMDIR")
++ record = next(
++ rec for rec in fset._ds.DirectoryRecordSequence if "ReferencedFileID" in rec
++ )
++ record.ReferencedFileID = request.param
++
++ # Write modified DICOMDIR file
++ with open(dicomdir_root / "DICOMDIR2", "wb") as fp:
++ fset._write_dicomdir(DicomFileLike(fp))
++
++ yield fs
++
++
+ @pytest.fixture
+ def custom_leaf():
+ """Return the leaf node from a custom 4-level record hierarchy"""
+@@ -116,7 +167,7 @@ def custom_leaf():
+
+
+ @pytest.fixture
+-def private(dicomdir):
++def private(dicomdir, request, ignore_reading_invalid_values):
+ """Return a DICOMDIR dataset with PRIVATE records."""
+ def write_record(ds):
+ """Return `ds` as explicit little encoded bytes."""
+@@ -143,9 +194,17 @@ def private(dicomdir):
+ middle = private_record()
+ bottom = private_record()
+ bottom.ReferencedSOPClassUIDInFile = "1.2.3.4"
+- bottom.ReferencedFileID = [
+- "TINY_ALPHA", "PT000000", "ST000000", "SE000000", "IM000000"
+- ]
++ if hasattr(request, "param"):
++ file_ids = request.param
++ else:
++ file_ids = [
++ "TINY_ALPHA",
++ "PT000000",
++ "ST000000",
++ "SE000000",
++ "IM000000",
++ ]
++ bottom.ReferencedFileID = file_ids
+ bottom.ReferencedSOPInstanceUIDInFile = (
+ "1.2.276.0.7230010.3.1.4.0.31906.1359940846.78187"
+ )
+@@ -647,6 +706,15 @@ class TestRecordNode:
+ with pytest.raises(AttributeError, match=msg):
+ instance.node.key
+
++ @pytest.mark.parametrize("private", [["/", "etc", "passwd"]], indirect=True)
++ def test_id_outside_root(self, private):
++ """File ID points to a path outside the root directory."""
++ with pytest.raises(
++ PermissionError,
++ match=r"ReferencedFileID .* must be inside the DICOMDIR root path",
++ ):
++ FileSet(private)
++
+ def test_bad_record(self, private):
+ """Test a bad directory record raises an exception when loading."""
+ del private.DirectoryRecordSequence[0].PatientID
+@@ -709,7 +777,33 @@ class TestRecordNode:
+ item.ReferencedFileID = "01"
+ ds.save_as(p / "DICOMDIR")
+ fs = FileSet(ds)
+- assert fs._instances[0].node._file_id == Path("01")
++ assert fs._instances[0].node.file_id_path(fs.root_path) == Path("01")
++
++ def test_absolute_file_id(self, ct, tdir, ignore_reading_invalid_values):
++ """Test a singleton File ID."""
++ fs = FileSet()
++ p = Path(tdir.name)
++ ct.save_as(p / "01")
++ fs.add(p / "01")
++ fs.write(p)
++ ds = dcmread(p / "DICOMDIR")
++ item = ds.DirectoryRecordSequence[-1]
++ item.ReferencedFileID = "/01"
++ ds.save_as(p / "DICOMDIR")
++ with pytest.raises(
++ PermissionError,
++ match=r"ReferencedFileID .* must be inside the DICOMDIR root path",
++ ):
++ FileSet(ds)
++
++ def test_root_path_missing(self, ct):
++ """Test RecordNode._file_id if no Referenced File ID."""
++ fs = FileSet()
++ instance = fs.add(ct)
++ # del instance.node._record.ReferencedFileID
++ msg = r"No root path set in the File-set"
++ with pytest.raises(AttributeError, match=msg):
++ fs.root_path
+
+ def test_file_id_missing(self, ct):
+ """Test RecordNode._file_id if no Referenced File ID."""
+@@ -718,7 +812,7 @@ class TestRecordNode:
+ del instance.node._record.ReferencedFileID
+ msg = r"No 'Referenced File ID' in the directory record"
+ with pytest.raises(AttributeError, match=msg):
+- instance.node._file_id
++ instance.node.file_id_path(Path("/dicom_data"))
+
+
+ @pytest.mark.filterwarnings("ignore:The 'DicomDir'")
+@@ -1651,7 +1745,7 @@ class TestFileSet:
+ assert "ISO 1" == fs.descriptor_character_set
+ assert [] != fs._instances
+ assert fs._id is not None
+- assert fs._path is not None
++ assert fs.root_path is not None
+ uid = fs._uid
+ assert fs._uid is not None
+ assert fs._ds is not None
+@@ -1662,7 +1756,7 @@ class TestFileSet:
+ fs.clear()
+ assert [] == fs._instances
+ assert fs._id is None
+- assert fs._path is None
++ assert fs._root_path is None
+ assert uid != fs._uid
+ assert fs._uid.is_valid
+ assert fs._ds == Dataset()
+@@ -2246,8 +2340,6 @@ class TestFileSet_Modify:
+
+ FileSet.__len__ = my_len
+ fs = FileSet(ds)
+- if sys.maxsize <= 2 ** 32 + 1:
+- return
+ assert 36**6 + 1 == len(fs)
+ msg = (
+ r"pydicom doesn't support writing File-sets with more than "
+@@ -2323,14 +2415,14 @@ class TestFileSet_Modify:
+ tdir, ds = dicomdir_copy
+ assert 52 == len(ds.DirectoryRecordSequence)
+ fs = FileSet(ds)
+- orig_paths = [p for p in fs._path.glob('**/*') if p.is_file()]
++ orig_paths = [p for p in fs.root_path.glob("**/*") if p.is_file()]
+ instance = fs._instances[0]
+ assert Path(instance.path) in orig_paths
+ fs.remove(instance)
+ orig_file_ids = [ii.ReferencedFileID for ii in fs]
+ fs.write(use_existing=True)
+ assert 50 == len(fs._ds.DirectoryRecordSequence)
+- paths = [p for p in fs._path.glob('**/*') if p.is_file()]
++ paths = [p for p in fs.root_path.glob("**/*") if p.is_file()]
+ assert orig_file_ids == [ii.ReferencedFileID for ii in fs]
+ assert Path(instance.path) not in paths
+ assert sorted(orig_paths)[1:] == sorted(paths)
+@@ -2480,6 +2572,16 @@ class TestFileSet_Copy:
+ def teardown_method(self):
+ FileSet.__len__ = self.orig
+
++ @pytest.mark.skipif(platform.python_implementation() == "PyPy",
++ reason="pyfakefs does not work with generate_uid() in PyPy")
++ def test_constrained_to_fileset_root(self, fileset_fs):
++ """Ensure files cannot be copied outside the FileSet root"""
++ with pytest.raises(
++ PermissionError,
++ match=r"ReferencedFileID .* must be inside the DICOMDIR root path",
++ ):
++ FileSet(Path(FILESET_ROOT) / "DICOMDIR2")
++
+ def test_copy(self, dicomdir, tdir):
+ """Test FileSet.copy()"""
+ orig_root = Path(dicomdir.filename).parent
+@@ -2579,8 +2681,6 @@ class TestFileSet_Copy:
+
+ FileSet.__len__ = my_len
+ fs = FileSet(tiny)
+- if sys.maxsize <= 2 ** 32 + 1:
+- return
+ assert 36**6 + 1 == len(fs)
+ msg = (
+ r"pydicom doesn't support writing File-sets with more than "
diff --git a/debian/patches/ignore_tests_downloading_data.patch b/debian/patches/ignore_tests_downloading_data.patch
index 3e84c77..d7ab4c3 100644
--- a/debian/patches/ignore_tests_downloading_data.patch
+++ b/debian/patches/ignore_tests_downloading_data.patch
@@ -1,8 +1,121 @@
-Author: Andreas Tille <tille at debian.org>
+From: Andreas Tille <tille at debian.org>
+Date: Mon, 11 May 2026 10:53:29 +0200
+Subject: Several data files need to be downloaded which is not possible at
+ package build time
+
Last-Update: 2021-12-08
-Description: Several data files need to be downloaded which is not possible at package build time
- Thus the downloading and the according tests are removed here
+ Thus the downloading and the according tests are removed here
+---
+ pydicom/tests/test_JPEG_LS_transfer_syntax.py | 11 +-
+ pydicom/tests/test_cli.py | 7 +
+ pydicom/tests/test_data_manager.py | 10 +-
+ pydicom/tests/test_dataelem.py | 1 +
+ pydicom/tests/test_dataset.py | 13 +-
+ pydicom/tests/test_encaps.py | 4 +
+ pydicom/tests/test_encoders.py | 1 +
+ pydicom/tests/test_encoders_gdcm.py | 25 +-
+ pydicom/tests/test_encoders_pydicom.py | 44 ++-
+ pydicom/tests/test_filereader.py | 81 ++--
+ pydicom/tests/test_filewriter.py | 3 +
+ pydicom/tests/test_gdcm_pixel_data.py | 219 +++--------
+ pydicom/tests/test_handler_util.py | 92 +++--
+ pydicom/tests/test_jpeg_ls_pixel_data.py | 84 ++--
+ pydicom/tests/test_numpy_pixel_data.py | 217 ++++++----
+ pydicom/tests/test_overlay_np.py | 21 +-
+ pydicom/tests/test_pillow_pixel_data.py | 445 +++++++++++----------
+ pydicom/tests/test_pylibjpeg.py | 545 +++++++++++++-------------
+ pydicom/tests/test_rle_pixel_data.py | 13 +
+ 19 files changed, 975 insertions(+), 861 deletions(-)
+
+diff --git a/pydicom/tests/test_JPEG_LS_transfer_syntax.py b/pydicom/tests/test_JPEG_LS_transfer_syntax.py
+index e65d496..4c16b93 100644
+--- a/pydicom/tests/test_JPEG_LS_transfer_syntax.py
++++ b/pydicom/tests/test_JPEG_LS_transfer_syntax.py
+@@ -49,15 +49,16 @@ except ImportError:
+ gdcm_handler = None
+ HAVE_GDCM = False
+
+-mr_name = get_testdata_file("MR_small.dcm")
+-jpeg_ls_lossless_name = get_testdata_file("MR_small_jpeg_ls_lossless.dcm")
+-emri_name = get_testdata_file("emri_small.dcm")
+-emri_jpeg_ls_lossless = get_testdata_file(
+- "emri_small_jpeg_ls_lossless.dcm")
++#mr_name = get_testdata_file("MR_small.dcm")
++#jpeg_ls_lossless_name = get_testdata_file("MR_small_jpeg_ls_lossless.dcm")
++#emri_name = get_testdata_file("emri_small.dcm")
++#emri_jpeg_ls_lossless = get_testdata_file(
++# "emri_small_jpeg_ls_lossless.dcm")
+ dir_name = os.path.dirname(sys.argv[0])
+ save_dir = os.getcwd()
+
+
++ at pytest.mark.skip("When building a Debian package we can not download anything")
+ class Test_JPEG_LS_Lossless_transfer_syntax():
+ def setup_method(self, method):
+ self.jpeg_ls_lossless = dcmread(jpeg_ls_lossless_name)
+diff --git a/pydicom/tests/test_cli.py b/pydicom/tests/test_cli.py
+index df53388..7c99b0d 100644
+--- a/pydicom/tests/test_cli.py
++++ b/pydicom/tests/test_cli.py
+@@ -31,6 +31,7 @@ bad_indexes = (
+ )
+
+
++ at pytest.mark.skip("When building a Debian package we can not download anything")
+ class TestFilespec:
+ @pytest.mark.parametrize("bad_spec", bad_elem_specs)
+ def test_syntax(self, bad_spec):
+@@ -76,6 +77,7 @@ class TestFilespec:
+ assert expected == filespec_parts(filespec)
+
+
++ at pytest.mark.skip("When building a Debian package we can not download anything")
+ class TestFilespecElementEval:
+ # Load plan once
+ plan, _ = filespec_parser("pydicom::rtplan.dcm")[0]
+@@ -121,6 +123,7 @@ class TestCLIcall:
+ out, _ = capsys.readouterr()
+ assert out.startswith("usage: pydicom [-h] {")
+
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_codify_command(self, capsys):
+ """CLI `codify` command prints correct output"""
+
+@@ -134,6 +137,7 @@ class TestCLIcall:
+ out, _ = capsys.readouterr()
+ assert "add_new((0x0001, 0x0001)" not in out
+
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_codify_data_element(self, capsys):
+ """CLI `codify` command raises error if not a Dataset"""
+ with pytest.raises(NotImplementedError):
+@@ -146,6 +150,7 @@ class TestCLIcall:
+ assert out.startswith("# -*- coding: utf-8 -*-")
+ assert "Buc^J?r?me" in out
+
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_help(self, capsys):
+ """CLI `help` command gives expected output"""
+ # With subcommand
+@@ -164,6 +169,7 @@ class TestCLIcall:
+ out, _ = capsys.readouterr()
+ assert "Available subcommands:" in out
+
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_show_command(self, capsys):
+ """CLI `show` command prints correct output"""
+ main("show pydicom::MR_small_RLE.dcm".split())
+@@ -178,6 +184,7 @@ class TestCLIcall:
+ out, _ = capsys.readouterr()
+ assert "4000" == out.strip()
+
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_show_options(self, capsys):
+ """CLI `show` command with options prints correct output"""
+ # Quiet option, image file
+diff --git a/pydicom/tests/test_data_manager.py b/pydicom/tests/test_data_manager.py
+index d3762af..343cdd6 100644
--- a/pydicom/tests/test_data_manager.py
+++ b/pydicom/tests/test_data_manager.py
@@ -25,7 +25,7 @@ EXT_PYDICOM = False
@@ -55,7 +168,7 @@ Description: Several data files need to be downloaded which is not possible at p
def test_fetch_data_files_download_failure(download_failure):
"""Test fetch_data_files() with download failures."""
msg = r"An error occurred downloading the following files:"
-@@ -306,6 +310,7 @@ def test_fetch_data_files_download_failu
+@@ -306,6 +310,7 @@ def test_fetch_data_files_download_failure(download_failure):
fetch_data_files()
@@ -71,1330 +184,66 @@ Description: Several data files need to be downloaded which is not possible at p
def test_urls():
"""Test for duplicates in urls.json."""
# We can't have case mixes because windows filenames are case insensitive
---- a/pydicom/tests/test_pillow_pixel_data.py
-+++ b/pydicom/tests/test_pillow_pixel_data.py
-@@ -54,52 +54,53 @@ TEST_JPEG2K = TEST_PIL and HAVE_JPEG2K
- # FRAMES: NumberOfFrames
- # PI: PhotometricInterpretation
- # FMT_BA_BV_SPX_PR_FRAMESF_PI
--# JPGB: 1.2.840.10008.1.2.4.50 - JPEG Baseline (8-bit only)
--JPGB_08_08_3_0_1F_YBR_FULL = get_testdata_file("SC_rgb_small_odd_jpeg.dcm")
--JPGB_08_08_3_0_120F_YBR_FULL_422 = get_testdata_file("color3d_jpeg_baseline.dcm") # noqa
--# Different subsampling 411, 422, 444
--JPGB_08_08_3_0_1F_YBR_FULL_422_411 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+np.dcm") # noqa
--JPGB_08_08_3_0_1F_YBR_FULL_422_422 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+s2.dcm") # noqa
--JPGB_08_08_3_0_1F_YBR_FULL_411 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+n1.dcm") # noqa
--JPGB_08_08_3_0_1F_YBR_FULL_422 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+n2.dcm") # noqa
--JPGB_08_08_3_0_1F_YBR_FULL_444 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+s4.dcm") # noqa
--JPGB_08_08_3_0_1F_RGB = get_testdata_file("SC_jpeg_no_color_transform.dcm")
--JPGB_08_08_3_0_1F_RGB_APP14 = get_testdata_file("SC_jpeg_no_color_transform_2.dcm") # noqa
--# JPGE: 1.2.840.10008.1.2.4.51 - JPEG Extended (Process 2 and 4) (8 and 12-bit)
--# No supported datasets available
--
--# JPEG 2000 - ISO/IEC 15444 Standard
--# J2KR: 1.2.840.100008.1.2.4.90 - JPEG 2000 Lossless
--J2KR_08_08_3_0_1F_YBR_ICT = get_testdata_file("US1_J2KR.dcm")
--J2KR_16_10_1_0_1F_M1 = get_testdata_file("RG3_J2KR.dcm")
--J2KR_16_12_1_0_1F_M2 = get_testdata_file("MR2_J2KR.dcm")
--J2KR_16_15_1_0_1F_M1 = get_testdata_file("RG1_J2KR.dcm")
--J2KR_16_16_1_0_10F_M2 = get_testdata_file("emri_small_jpeg_2k_lossless.dcm")
--J2KR_16_14_1_1_1F_M2 = get_testdata_file("693_J2KR.dcm")
--J2KR_16_16_1_1_1F_M2 = get_testdata_file("MR_small_jp2klossless.dcm")
--J2KR_16_13_1_1_1F_M2_MISMATCH = get_testdata_file("J2K_pixelrep_mismatch.dcm")
--# J2KI: 1.2.840.10008.1.2.4.91 - JPEG 2000
--J2KI_08_08_3_0_1F_RGB = get_testdata_file("SC_rgb_gdcm_KY.dcm")
--J2KI_08_08_3_0_1F_YBR_ICT = get_testdata_file("US1_J2KI.dcm")
--J2KI_16_10_1_0_1F_M1 = get_testdata_file("RG3_J2KI.dcm")
--J2KI_16_12_1_0_1F_M2 = get_testdata_file("MR2_J2KI.dcm")
--J2KI_16_15_1_0_1F_M1 = get_testdata_file("RG1_J2KI.dcm")
--J2KI_16_14_1_1_1F_M2 = get_testdata_file("693_J2KI.dcm")
--J2KI_16_16_1_1_1F_M2 = get_testdata_file("JPEG2000.dcm")
--
--# Transfer syntaxes supported by other handlers
--IMPL = get_testdata_file("MR_small_implicit.dcm")
--EXPL = get_testdata_file("OBXXXX1A.dcm")
--EXPB = get_testdata_file("OBXXXX1A_expb.dcm")
--DEFL = get_testdata_file("image_dfl.dcm")
--JPEG_LS_LOSSLESS = get_testdata_file("MR_small_jpeg_ls_lossless.dcm")
--RLE = get_testdata_file("MR_small_RLE.dcm")
--JPGE_16_12_1_0_1F_M2 = get_testdata_file("JPEG-lossy.dcm")
--JPGL_16_16_1_1_1F_M2 = get_testdata_file("JPEG-LL.dcm")
--# JPGL14: 1.2.840.10008.1.2.4.57 - JPEG Lossless P14
--# No datasets available
--# JPGL: 1.2.840.10008.1.2.4.70 - JPEG Lossless, Non-hierarchical, 1st Order
--JPGL_08_08_1_0_1F = get_testdata_file("JPGLosslessP14SV1_1s_1f_8b.dcm")
-+## JPGB: 1.2.840.10008.1.2.4.50 - JPEG Baseline (8-bit only)
-+#JPGB_08_08_3_0_1F_YBR_FULL = get_testdata_file("SC_rgb_small_odd_jpeg.dcm")
-+#JPGB_08_08_3_0_120F_YBR_FULL_422 = get_testdata_file("color3d_jpeg_baseline.dcm") # noqa
-+## Different subsampling 411, 422, 444
-+#JPGB_08_08_3_0_1F_YBR_FULL_422_411 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+np.dcm") # noqa
-+#JPGB_08_08_3_0_1F_YBR_FULL_422_422 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+s2.dcm") # noqa
-+#JPGB_08_08_3_0_1F_YBR_FULL_411 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+n1.dcm") # noqa
-+#JPGB_08_08_3_0_1F_YBR_FULL_422 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+n2.dcm") # noqa
-+#JPGB_08_08_3_0_1F_YBR_FULL_444 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+s4.dcm") # noqa
-+#JPGB_08_08_3_0_1F_RGB = get_testdata_file("SC_jpeg_no_color_transform.dcm")
-+#JPGB_08_08_3_0_1F_RGB_APP14 = get_testdata_file("SC_jpeg_no_color_transform_2.dcm") # noqa
-+## JPGE: 1.2.840.10008.1.2.4.51 - JPEG Extended (Process 2 and 4) (8 and 12-bit)
-+## No supported datasets available
-+#
-+## JPEG 2000 - ISO/IEC 15444 Standard
-+## J2KR: 1.2.840.100008.1.2.4.90 - JPEG 2000 Lossless
-+#J2KR_08_08_3_0_1F_YBR_ICT = get_testdata_file("US1_J2KR.dcm")
-+#J2KR_16_10_1_0_1F_M1 = get_testdata_file("RG3_J2KR.dcm")
-+#J2KR_16_12_1_0_1F_M2 = get_testdata_file("MR2_J2KR.dcm")
-+#J2KR_16_15_1_0_1F_M1 = get_testdata_file("RG1_J2KR.dcm")
-+#J2KR_16_16_1_0_10F_M2 = get_testdata_file("emri_small_jpeg_2k_lossless.dcm")
-+#J2KR_16_14_1_1_1F_M2 = get_testdata_file("693_J2KR.dcm")
-+#J2KR_16_16_1_1_1F_M2 = get_testdata_file("MR_small_jp2klossless.dcm")
-+#J2KR_16_13_1_1_1F_M2_MISMATCH = get_testdata_file("J2K_pixelrep_mismatch.dcm")
-+## J2KI: 1.2.840.10008.1.2.4.91 - JPEG 2000
-+#J2KI_08_08_3_0_1F_RGB = get_testdata_file("SC_rgb_gdcm_KY.dcm")
-+#J2KI_08_08_3_0_1F_YBR_ICT = get_testdata_file("US1_J2KI.dcm")
-+#J2KI_16_10_1_0_1F_M1 = get_testdata_file("RG3_J2KI.dcm")
-+#J2KI_16_12_1_0_1F_M2 = get_testdata_file("MR2_J2KI.dcm")
-+#J2KI_16_15_1_0_1F_M1 = get_testdata_file("RG1_J2KI.dcm")
-+#J2KI_16_14_1_1_1F_M2 = get_testdata_file("693_J2KI.dcm")
-+#J2KI_16_16_1_1_1F_M2 = get_testdata_file("JPEG2000.dcm")
-+#
-+## Transfer syntaxes supported by other handlers
-+#IMPL = get_testdata_file("MR_small_implicit.dcm")
-+#EXPL = get_testdata_file("OBXXXX1A.dcm")
-+EXPL = None
-+#EXPB = get_testdata_file("OBXXXX1A_expb.dcm")
-+#DEFL = get_testdata_file("image_dfl.dcm")
-+#JPEG_LS_LOSSLESS = get_testdata_file("MR_small_jpeg_ls_lossless.dcm")
-+#RLE = get_testdata_file("MR_small_RLE.dcm")
-+#JPGE_16_12_1_0_1F_M2 = get_testdata_file("JPEG-lossy.dcm")
-+#JPGL_16_16_1_1_1F_M2 = get_testdata_file("JPEG-LL.dcm")
-+## JPGL14: 1.2.840.10008.1.2.4.57 - JPEG Lossless P14
-+## No datasets available
-+## JPGL: 1.2.840.10008.1.2.4.70 - JPEG Lossless, Non-hierarchical, 1st Order
-+#JPGL_08_08_1_0_1F = get_testdata_file("JPGLosslessP14SV1_1s_1f_8b.dcm")
+diff --git a/pydicom/tests/test_dataelem.py b/pydicom/tests/test_dataelem.py
+index c28986e..50ba637 100644
+--- a/pydicom/tests/test_dataelem.py
++++ b/pydicom/tests/test_dataelem.py
+@@ -404,6 +404,7 @@ class TestDataElement:
+ assert 'PN' == ds[0x00100010].VR
+ assert 'Dionysios=?????????' == ds[0x00100010].value
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_reading_ds_with_known_tags_with_UN_VR(
+ self, replace_un_with_known_vr):
+ """Known tags with VR UN are correctly read."""
+diff --git a/pydicom/tests/test_dataset.py b/pydicom/tests/test_dataset.py
+index ded1777..1800ea1 100644
+--- a/pydicom/tests/test_dataset.py
++++ b/pydicom/tests/test_dataset.py
+@@ -20,7 +20,7 @@ except ImportError:
+ import pydicom
+ from pydicom import config
+ from pydicom import dcmread
+-from pydicom.data import get_testdata_file
++#from pydicom.data import get_testdata_file
+ from pydicom.dataelem import DataElement, RawDataElement
+ from pydicom.dataset import (
+ Dataset, FileDataset, validate_file_meta, FileMetaDataset
+@@ -932,6 +932,7 @@ class TestDataset:
+ assert 'SOPInstanceUID' in group0000
+ assert 'SkipFrameRangeFlag' in group0000
- # Transfer Syntaxes (non-retired + Explicit VR Big Endian)
-@@ -124,13 +125,13 @@ def test_unsupported_syntaxes():
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_get_item(self):
+ """Test Dataset.get_item"""
+ ds = Dataset()
+@@ -1108,6 +1109,7 @@ class TestDataset:
+ item = ds.get_private_item(0x0009, 0x02, 'Creator 2.0')
+ assert 2 == item.value
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_private_creator_from_raw_ds(self):
+ # regression test for #1078
+ ct_filename = get_testdata_file("CT_small.dcm")
+@@ -1119,6 +1121,7 @@ class TestDataset:
+ ds.private_block(0x13, 'GEMS_PATI_01', create=True)
+ assert ['GEMS_PATI_01'] == ds.private_creators(0x13)
- REFERENCE_DATA_UNSUPPORTED = [
-- (IMPL, ('1.2.840.10008.1.2', 'CompressedSamples^MR1')),
-- (EXPL, ('1.2.840.10008.1.2.1', 'OB^^^^')),
-- (EXPB, ('1.2.840.10008.1.2.2', 'OB^^^^')),
-- (DEFL, ('1.2.840.10008.1.2.1.99', '^^^^')),
-- (JPEG_LS_LOSSLESS, ('1.2.840.10008.1.2.4.80', 'CompressedSamples^MR1')),
-- (JPGL_08_08_1_0_1F, ('1.2.840.10008.1.2.4.70', 'Citizen^Jan')),
-- (RLE, ('1.2.840.10008.1.2.5', 'CompressedSamples^MR1')),
-+# (IMPL, ('1.2.840.10008.1.2', 'CompressedSamples^MR1')),
-+# (EXPL, ('1.2.840.10008.1.2.1', 'OB^^^^')),
-+# (EXPB, ('1.2.840.10008.1.2.2', 'OB^^^^')),
-+# (DEFL, ('1.2.840.10008.1.2.1.99', '^^^^')),
-+# (JPEG_LS_LOSSLESS, ('1.2.840.10008.1.2.4.80', 'CompressedSamples^MR1')),
-+# (JPGL_08_08_1_0_1F, ('1.2.840.10008.1.2.4.70', 'Citizen^Jan')),
-+# (RLE, ('1.2.840.10008.1.2.5', 'CompressedSamples^MR1')),
- ]
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_add_known_private_tag(self):
+ # regression test for #1082
+ ds = dcmread(get_testdata_file("CT_small.dcm"))
+@@ -1506,6 +1509,7 @@ class TestDataset:
+ ds.save_as(fp)
+ assert elem.is_undefined_length
-
-@@ -210,171 +211,171 @@ JPGL = JPEGLosslessSV1
- J2KI = JPEG2000
- J2KR = JPEG2000Lossless
- REFERENCE_DATA = [
-- # fpath, (syntax, bits, nr samples, pixel repr, nr frames, shape, dtype)
-- (JPGB_08_08_3_0_120F_YBR_FULL_422, (JPGB, 8, 3, 0, 120, (120, 480, 640, 3), 'uint8')), # noqa
-- (JPGB_08_08_3_0_1F_YBR_FULL_422_411, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
-- (JPGB_08_08_3_0_1F_YBR_FULL_422_422, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
-- (JPGB_08_08_3_0_1F_YBR_FULL_411, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
-- (JPGB_08_08_3_0_1F_YBR_FULL_422, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
-- (JPGB_08_08_3_0_1F_YBR_FULL_444, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
-- (JPGB_08_08_3_0_1F_RGB, (JPGB, 8, 3, 0, 1, (256, 256, 3), 'uint8')),
-- (JPGB_08_08_3_0_1F_RGB_APP14, (JPGB, 8, 3, 0, 1, (256, 256, 3), 'uint8')),
-- (J2KR_08_08_3_0_1F_YBR_ICT, (J2KR, 8, 3, 0, 1, (480, 640, 3), 'uint8')),
-- (J2KR_16_10_1_0_1F_M1, (J2KR, 16, 1, 0, 1, (1760, 1760), 'uint16')),
-- (J2KR_16_12_1_0_1F_M2, (J2KR, 16, 1, 0, 1, (1024, 1024), 'uint16')),
-- (J2KR_16_15_1_0_1F_M1, (J2KR, 16, 1, 0, 1, (1955, 1841), 'uint16')),
-- (J2KR_16_16_1_0_10F_M2, (J2KR, 16, 1, 0, 10, (10, 64, 64), 'uint16')),
-- (J2KR_16_14_1_1_1F_M2, (J2KR, 16, 1, 1, 1, (512, 512), 'int16')),
-- (J2KR_16_16_1_1_1F_M2, (J2KR, 16, 1, 1, 1, (64, 64), 'int16')),
-- (J2KI_08_08_3_0_1F_RGB, (J2KI, 8, 3, 0, 1, (100, 100, 3), 'uint8')),
-- (J2KI_08_08_3_0_1F_YBR_ICT, (J2KI, 8, 3, 0, 1, (480, 640, 3), 'uint8')),
-- (J2KI_16_10_1_0_1F_M1, (J2KI, 16, 1, 0, 1, (1760, 1760), 'uint16')),
-- (J2KI_16_12_1_0_1F_M2, (J2KI, 16, 1, 0, 1, (1024, 1024), 'uint16')),
-- (J2KI_16_15_1_0_1F_M1, (J2KI, 16, 1, 0, 1, (1955, 1841), 'uint16')),
-- (J2KI_16_14_1_1_1F_M2, (J2KI, 16, 1, 1, 1, (512, 512), 'int16')),
-- (J2KI_16_16_1_1_1F_M2, (J2KI, 16, 1, 1, 1, (1024, 256), 'int16')),
-+# # fpath, (syntax, bits, nr samples, pixel repr, nr frames, shape, dtype)
-+# (JPGB_08_08_3_0_120F_YBR_FULL_422, (JPGB, 8, 3, 0, 120, (120, 480, 640, 3), 'uint8')), # noqa
-+# (JPGB_08_08_3_0_1F_YBR_FULL_422_411, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
-+# (JPGB_08_08_3_0_1F_YBR_FULL_422_422, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
-+# (JPGB_08_08_3_0_1F_YBR_FULL_411, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
-+# (JPGB_08_08_3_0_1F_YBR_FULL_422, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
-+# (JPGB_08_08_3_0_1F_YBR_FULL_444, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
-+# (JPGB_08_08_3_0_1F_RGB, (JPGB, 8, 3, 0, 1, (256, 256, 3), 'uint8')),
-+# (JPGB_08_08_3_0_1F_RGB_APP14, (JPGB, 8, 3, 0, 1, (256, 256, 3), 'uint8')),
-+# (J2KR_08_08_3_0_1F_YBR_ICT, (J2KR, 8, 3, 0, 1, (480, 640, 3), 'uint8')),
-+# (J2KR_16_10_1_0_1F_M1, (J2KR, 16, 1, 0, 1, (1760, 1760), 'uint16')),
-+# (J2KR_16_12_1_0_1F_M2, (J2KR, 16, 1, 0, 1, (1024, 1024), 'uint16')),
-+# (J2KR_16_15_1_0_1F_M1, (J2KR, 16, 1, 0, 1, (1955, 1841), 'uint16')),
-+# (J2KR_16_16_1_0_10F_M2, (J2KR, 16, 1, 0, 10, (10, 64, 64), 'uint16')),
-+# (J2KR_16_14_1_1_1F_M2, (J2KR, 16, 1, 1, 1, (512, 512), 'int16')),
-+# (J2KR_16_16_1_1_1F_M2, (J2KR, 16, 1, 1, 1, (64, 64), 'int16')),
-+# (J2KI_08_08_3_0_1F_RGB, (J2KI, 8, 3, 0, 1, (100, 100, 3), 'uint8')),
-+# (J2KI_08_08_3_0_1F_YBR_ICT, (J2KI, 8, 3, 0, 1, (480, 640, 3), 'uint8')),
-+# (J2KI_16_10_1_0_1F_M1, (J2KI, 16, 1, 0, 1, (1760, 1760), 'uint16')),
-+# (J2KI_16_12_1_0_1F_M2, (J2KI, 16, 1, 0, 1, (1024, 1024), 'uint16')),
-+# (J2KI_16_15_1_0_1F_M1, (J2KI, 16, 1, 0, 1, (1955, 1841), 'uint16')),
-+# (J2KI_16_14_1_1_1F_M2, (J2KI, 16, 1, 1, 1, (512, 512), 'int16')),
-+# (J2KI_16_16_1_1_1F_M2, (J2KI, 16, 1, 1, 1, (1024, 256), 'int16')),
- ]
--
-+#
- JPEG_MATCHING_DATASETS = [
-- # (compressed, reference, hard coded check values)
-- pytest.param(
-- JPGB_08_08_3_0_1F_YBR_FULL_422_411,
-- get_testdata_file("SC_rgb_dcmtk_ebcynp_dcmd.dcm"),
-- [
-- (253, 1, 0), (253, 128, 132), (0, 255, 5), (127, 255, 127),
-- (1, 0, 254), (127, 128, 255), (0, 0, 0), (64, 64, 64),
-- (192, 192, 192), (255, 255, 255),
-- ],
-- marks=pytest.mark.xfail(reason="Resulting image is a bad match")
-- ),
-- pytest.param(
-- JPGB_08_08_3_0_1F_YBR_FULL_422_422,
-- get_testdata_file("SC_rgb_dcmtk_ebcys2_dcmd.dcm"),
-- [
-- (254, 0, 0), (255, 127, 127), (0, 255, 5), (129, 255, 129),
-- (0, 0, 254), (128, 127, 255), (0, 0, 0), (64, 64, 64),
-- (192, 192, 192), (255, 255, 255),
-- ],
-- ),
-- pytest.param(
-- JPGB_08_08_3_0_1F_YBR_FULL_411,
-- get_testdata_file("SC_rgb_dcmtk_ebcyn1_dcmd.dcm"),
-- [
-- (253, 1, 0), (253, 128, 132), (0, 255, 5), (127, 255, 127),
-- (1, 0, 254), (127, 128, 255), (0, 0, 0), (64, 64, 64),
-- (192, 192, 192), (255, 255, 255),
-- ],
-- marks=pytest.mark.xfail(reason="Resulting image is a bad match")
-- ),
-- pytest.param(
-- JPGB_08_08_3_0_1F_YBR_FULL_422,
-- get_testdata_file("SC_rgb_dcmtk_ebcyn2_dcmd.dcm"),
-- [
-- (254, 0, 0), (255, 127, 127), (0, 255, 5), (129, 255, 129),
-- (0, 0, 254), (128, 127, 255), (0, 0, 0), (64, 64, 64),
-- (192, 192, 192), (255, 255, 255),
-- ],
-- ),
-- pytest.param(
-- JPGB_08_08_3_0_1F_YBR_FULL_444,
-- get_testdata_file("SC_rgb_dcmtk_ebcys4_dcmd.dcm"),
-- [
-- (254, 0, 0), (255, 127, 127), (0, 255, 5), (129, 255, 129),
-- (0, 0, 254), (128, 127, 255), (0, 0, 0), (64, 64, 64),
-- (192, 192, 192), (255, 255, 255),
-- ],
-- ),
-- pytest.param(
-- JPGB_08_08_3_0_1F_RGB,
-- get_testdata_file("SC_rgb_jpeg_dcmd.dcm"),
-- [
-- (244, 244, 244), (244, 244, 244), (244, 244, 244), (244, 244, 244),
-- (236, 237, 234), (244, 244, 244), (244, 244, 244), (244, 244, 244),
-- (244, 244, 244), (244, 244, 244),
-- ],
-- ),
-- pytest.param(
-- JPGB_08_08_3_0_1F_RGB_APP14,
-- get_testdata_file("SC_rgb_jpeg_app14_dcmd.dcm"),
-- [
-- (246, 246, 246), (246, 246, 246), (246, 246, 246), (246, 246, 246),
-- (246, 246, 246), (244, 244, 246), (246, 246, 246), (246, 246, 246),
-- (246, 246, 246), (246, 246, 246),
-- ],
-- ),
-+# # (compressed, reference, hard coded check values)
-+# pytest.param(
-+# JPGB_08_08_3_0_1F_YBR_FULL_422_411,
-+# get_testdata_file("SC_rgb_dcmtk_ebcynp_dcmd.dcm"),
-+# [
-+# (253, 1, 0), (253, 128, 132), (0, 255, 5), (127, 255, 127),
-+# (1, 0, 254), (127, 128, 255), (0, 0, 0), (64, 64, 64),
-+# (192, 192, 192), (255, 255, 255),
-+# ],
-+# marks=pytest.mark.xfail(reason="Resulting image is a bad match")
-+# ),
-+# pytest.param(
-+# JPGB_08_08_3_0_1F_YBR_FULL_422_422,
-+# get_testdata_file("SC_rgb_dcmtk_ebcys2_dcmd.dcm"),
-+# [
-+# (254, 0, 0), (255, 127, 127), (0, 255, 5), (129, 255, 129),
-+# (0, 0, 254), (128, 127, 255), (0, 0, 0), (64, 64, 64),
-+# (192, 192, 192), (255, 255, 255),
-+# ],
-+# ),
-+# pytest.param(
-+# JPGB_08_08_3_0_1F_YBR_FULL_411,
-+# get_testdata_file("SC_rgb_dcmtk_ebcyn1_dcmd.dcm"),
-+# [
-+# (253, 1, 0), (253, 128, 132), (0, 255, 5), (127, 255, 127),
-+# (1, 0, 254), (127, 128, 255), (0, 0, 0), (64, 64, 64),
-+# (192, 192, 192), (255, 255, 255),
-+# ],
-+# marks=pytest.mark.xfail(reason="Resulting image is a bad match")
-+# ),
-+# pytest.param(
-+# JPGB_08_08_3_0_1F_YBR_FULL_422,
-+# get_testdata_file("SC_rgb_dcmtk_ebcyn2_dcmd.dcm"),
-+# [
-+# (254, 0, 0), (255, 127, 127), (0, 255, 5), (129, 255, 129),
-+# (0, 0, 254), (128, 127, 255), (0, 0, 0), (64, 64, 64),
-+# (192, 192, 192), (255, 255, 255),
-+# ],
-+# ),
-+# pytest.param(
-+# JPGB_08_08_3_0_1F_YBR_FULL_444,
-+# get_testdata_file("SC_rgb_dcmtk_ebcys4_dcmd.dcm"),
-+# [
-+# (254, 0, 0), (255, 127, 127), (0, 255, 5), (129, 255, 129),
-+# (0, 0, 254), (128, 127, 255), (0, 0, 0), (64, 64, 64),
-+# (192, 192, 192), (255, 255, 255),
-+# ],
-+# ),
-+# pytest.param(
-+# JPGB_08_08_3_0_1F_RGB,
-+# get_testdata_file("SC_rgb_jpeg_dcmd.dcm"),
-+# [
-+# (244, 244, 244), (244, 244, 244), (244, 244, 244), (244, 244, 244),
-+# (236, 237, 234), (244, 244, 244), (244, 244, 244), (244, 244, 244),
-+# (244, 244, 244), (244, 244, 244),
-+# ],
-+# ),
-+# pytest.param(
-+# JPGB_08_08_3_0_1F_RGB_APP14,
-+# get_testdata_file("SC_rgb_jpeg_app14_dcmd.dcm"),
-+# [
-+# (246, 246, 246), (246, 246, 246), (246, 246, 246), (246, 246, 246),
-+# (246, 246, 246), (244, 244, 246), (246, 246, 246), (246, 246, 246),
-+# (246, 246, 246), (246, 246, 246),
-+# ],
-+# ),
- ]
- JPEG2K_MATCHING_DATASETS = [
-- # (compressed, reference, fixes)
-- pytest.param(
-- J2KR_08_08_3_0_1F_YBR_ICT,
-- get_testdata_file("US1_UNCR.dcm"),
-- {},
-- ),
-- pytest.param(
-- J2KR_16_10_1_0_1F_M1,
-- get_testdata_file("RG3_UNCR.dcm"),
-- {},
-- ),
-- pytest.param(
-- J2KR_16_12_1_0_1F_M2,
-- get_testdata_file("MR2_UNCR.dcm"),
-- {},
-- ),
-- pytest.param(
-- J2KR_16_15_1_0_1F_M1,
-- get_testdata_file("RG1_UNCR.dcm"),
-- {},
-- ),
-- pytest.param(
-- J2KR_16_16_1_0_10F_M2,
-- get_testdata_file("emri_small.dcm"),
-- {'BitsStored': 16},
-- ),
-- pytest.param(
-- J2KR_16_14_1_1_1F_M2,
-- get_testdata_file("693_UNCR.dcm"),
-- {'BitsStored': 14},
-- ),
-- pytest.param(
-- J2KR_16_16_1_1_1F_M2,
-- get_testdata_file("MR_small.dcm"),
-- {},
-- ),
-- pytest.param(
-- J2KI_08_08_3_0_1F_RGB,
-- get_testdata_file("SC_rgb_gdcm2k_uncompressed.dcm"),
-- {},
-- ),
-- pytest.param(
-- J2KI_08_08_3_0_1F_YBR_ICT,
-- get_testdata_file("US1_UNCI.dcm"),
-- {},
-- ),
-- pytest.param(
-- J2KI_16_10_1_0_1F_M1,
-- get_testdata_file("RG3_UNCI.dcm"),
-- {},
-- ),
-- pytest.param(
-- J2KI_16_12_1_0_1F_M2,
-- get_testdata_file("MR2_UNCI.dcm"),
-- {},
-- ),
-- pytest.param(
-- J2KI_16_15_1_0_1F_M1,
-- get_testdata_file("RG1_UNCI.dcm"),
-- {},
-- ),
-- pytest.param(
-- J2KI_16_14_1_1_1F_M2,
-- get_testdata_file("693_UNCI.dcm"),
-- {'BitsStored': 16},
-- ),
-- pytest.param(
-- J2KI_16_16_1_1_1F_M2,
-- get_testdata_file("JPEG2000_UNC.dcm"),
-- {},
-- ),
-+# # (compressed, reference, fixes)
-+# pytest.param(
-+# J2KR_08_08_3_0_1F_YBR_ICT,
-+# get_testdata_file("US1_UNCR.dcm"),
-+# {},
-+# ),
-+# pytest.param(
-+# J2KR_16_10_1_0_1F_M1,
-+# get_testdata_file("RG3_UNCR.dcm"),
-+# {},
-+# ),
-+# pytest.param(
-+# J2KR_16_12_1_0_1F_M2,
-+# get_testdata_file("MR2_UNCR.dcm"),
-+# {},
-+# ),
-+# pytest.param(
-+# J2KR_16_15_1_0_1F_M1,
-+# get_testdata_file("RG1_UNCR.dcm"),
-+# {},
-+# ),
-+# pytest.param(
-+# J2KR_16_16_1_0_10F_M2,
-+# get_testdata_file("emri_small.dcm"),
-+# {'BitsStored': 16},
-+# ),
-+# pytest.param(
-+# J2KR_16_14_1_1_1F_M2,
-+# get_testdata_file("693_UNCR.dcm"),
-+# {'BitsStored': 14},
-+# ),
-+# pytest.param(
-+# J2KR_16_16_1_1_1F_M2,
-+# get_testdata_file("MR_small.dcm"),
-+# {},
-+# ),
-+# pytest.param(
-+# J2KI_08_08_3_0_1F_RGB,
-+# get_testdata_file("SC_rgb_gdcm2k_uncompressed.dcm"),
-+# {},
-+# ),
-+# pytest.param(
-+# J2KI_08_08_3_0_1F_YBR_ICT,
-+# get_testdata_file("US1_UNCI.dcm"),
-+# {},
-+# ),
-+# pytest.param(
-+# J2KI_16_10_1_0_1F_M1,
-+# get_testdata_file("RG3_UNCI.dcm"),
-+# {},
-+# ),
-+# pytest.param(
-+# J2KI_16_12_1_0_1F_M2,
-+# get_testdata_file("MR2_UNCI.dcm"),
-+# {},
-+# ),
-+# pytest.param(
-+# J2KI_16_15_1_0_1F_M1,
-+# get_testdata_file("RG1_UNCI.dcm"),
-+# {},
-+# ),
-+# pytest.param(
-+# J2KI_16_14_1_1_1F_M2,
-+# get_testdata_file("693_UNCI.dcm"),
-+# {'BitsStored': 16},
-+# ),
-+# pytest.param(
-+# J2KI_16_16_1_1_1F_M2,
-+# get_testdata_file("JPEG2000_UNC.dcm"),
-+# {},
-+# ),
- ]
-
-
-@@ -398,6 +399,7 @@ class TestPillowHandler_JPEG2K:
- assert HAVE_PIL
- assert PIL_HANDLER is not None
-
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_unsupported_syntax_raises(self):
- """Test pixel_array raises exception for unsupported syntaxes."""
- pydicom.config.pixel_data_handlers = [PIL_HANDLER]
-@@ -408,6 +410,7 @@ class TestPillowHandler_JPEG2K:
- with pytest.raises((NotImplementedError, RuntimeError)):
- ds.pixel_array
-
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- @pytest.mark.parametrize("fpath, data", REFERENCE_DATA_UNSUPPORTED)
- def test_can_access_unsupported_dataset(self, fpath, data):
- """Test can read and access elements in unsupported datasets."""
-@@ -415,6 +418,7 @@ class TestPillowHandler_JPEG2K:
- assert data[0] == ds.file_meta.TransferSyntaxUID
- assert data[1] == ds.PatientName
-
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- @pytest.mark.parametrize('fpath, data', REFERENCE_DATA)
- def test_properties(self, fpath, data):
- """Test dataset and pixel array properties are as expected."""
-@@ -439,6 +443,7 @@ class TestPillowHandler_JPEG2K:
- assert data[5] == arr.shape
- assert arr.dtype == data[6]
-
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- @pytest.mark.parametrize('fpath, rpath, fixes', JPEG2K_MATCHING_DATASETS)
- def test_array(self, fpath, rpath, fixes):
- """Test pixel_array returns correct values."""
-@@ -453,6 +458,7 @@ class TestPillowHandler_JPEG2K:
- ref = dcmread(rpath).pixel_array
- assert np.array_equal(arr, ref)
-
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_warning(self):
- """Test that the precision warning works OK."""
- ds = dcmread(J2KR_16_14_1_1_1F_M2)
-@@ -464,6 +470,7 @@ class TestPillowHandler_JPEG2K:
- with pytest.warns(UserWarning, match=msg):
- ds.pixel_array
-
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_decompress_using_pillow(self):
- """Test decompressing JPEG2K with pillow handler succeeds."""
- ds = dcmread(J2KR_16_14_1_1_1F_M2)
-@@ -474,6 +481,8 @@ class TestPillowHandler_JPEG2K:
- ref = ds.pixel_array
- assert np.array_equal(arr, ref)
-
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_changing_bits_stored(self):
- """Test changing BitsStored affects the pixel data."""
- pydicom.config.APPLY_J2K_CORRECTIONS = False
-@@ -486,6 +495,7 @@ class TestPillowHandler_JPEG2K:
- arr_14 = ds.pixel_array
- assert not np.array_equal(arr, arr_14)
-
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_pixel_rep_mismatch(self):
- """Test mismatched j2k sign and Pixel Representation."""
- ds = dcmread(J2KR_16_13_1_1_1F_M2_MISMATCH)
-@@ -529,6 +539,7 @@ class TestPillowHandler_JPEG:
- assert HAVE_PIL
- assert PIL_HANDLER is not None
-
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_unsupported_syntax_raises(self):
- """Test pixel_array raises exception for unsupported syntaxes."""
- pydicom.config.pixel_data_handlers = [PIL_HANDLER]
-@@ -546,6 +557,7 @@ class TestPillowHandler_JPEG:
- assert data[0] == ds.file_meta.TransferSyntaxUID
- assert data[1] == ds.PatientName
-
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- @pytest.mark.parametrize('fpath, data', REFERENCE_DATA)
- def test_properties(self, fpath, data):
- """Test dataset and pixel array properties are as expected."""
-@@ -564,6 +576,7 @@ class TestPillowHandler_JPEG:
- assert data[5] == arr.shape
- assert arr.dtype == data[6]
-
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- @pytest.mark.parametrize('fpath, rpath, values', JPEG_MATCHING_DATASETS)
- def test_array(self, fpath, rpath, values):
- """Test pixel_array returns correct values."""
-@@ -588,6 +601,7 @@ class TestPillowHandler_JPEG:
-
- assert np.array_equal(arr, ref)
-
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_color_3d(self):
- """Test decoding JPEG with pillow handler succeeds."""
- ds = dcmread(JPGB_08_08_3_0_120F_YBR_FULL_422)
-@@ -602,6 +616,7 @@ class TestPillowHandler_JPEG:
-
- assert "YBR_FULL_422" == ds.PhotometricInterpretation
-
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_JPGE_16bit_raises(self):
- """Test decoding JPEG lossy with pillow handler fails."""
- ds = dcmread(JPGE_16_12_1_0_1F_M2)
-@@ -612,6 +627,7 @@ class TestPillowHandler_JPEG:
- with pytest.raises(NotImplementedError, match=msg):
- ds.pixel_array
-
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_JPGL_raises(self):
- """Test decoding JPEG Lossless with pillow handler fails."""
- ds = dcmread(JPGL_16_16_1_1_1F_M2)
-@@ -619,6 +635,7 @@ class TestPillowHandler_JPEG:
- with pytest.raises(NotImplementedError, match=msg):
- ds.pixel_array
-
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_JPGB_odd_data_size(self):
- """Test decoding JPEG Baseline with pillow handler succeeds."""
- ds = dcmread(JPGB_08_08_3_0_1F_YBR_FULL)
---- a/pydicom/tests/test_pylibjpeg.py
-+++ b/pydicom/tests/test_pylibjpeg.py
-@@ -71,258 +71,258 @@ UNSUPPORTED_SYNTAXES = list(
- set(AllTransferSyntaxes) ^ set(SUPPORTED_SYNTAXES)
- )
-
--# Transfer syntaxes supported by other handlers
--IMPL = get_testdata_file("MR_small_implicit.dcm")
--EXPL = get_testdata_file("OBXXXX1A.dcm")
--EXPB = get_testdata_file("OBXXXX1A_expb.dcm")
--DEFL = get_testdata_file("image_dfl.dcm")
--
--REFERENCE_DATA_UNSUPPORTED = [
-- (IMPL, ('1.2.840.10008.1.2', 'CompressedSamples^MR1')),
-- (EXPL, ('1.2.840.10008.1.2.1', 'OB^^^^')),
-- (EXPB, ('1.2.840.10008.1.2.2', 'OB^^^^')),
-- (DEFL, ('1.2.840.10008.1.2.1.99', '^^^^')),
--]
--
--# RLE Lossless - PackBits algorithm
--RLE_8_1_1F = get_testdata_file("OBXXXX1A_rle.dcm")
--RLE_8_1_2F = get_testdata_file("OBXXXX1A_rle_2frame.dcm")
--RLE_8_3_1F = get_testdata_file("SC_rgb_rle.dcm")
--RLE_8_3_2F = get_testdata_file("SC_rgb_rle_2frame.dcm")
--RLE_16_1_1F = get_testdata_file("MR_small_RLE.dcm")
--RLE_16_1_10F = get_testdata_file("emri_small_RLE.dcm")
--RLE_16_3_1F = get_testdata_file("SC_rgb_rle_16bit.dcm")
--RLE_16_3_2F = get_testdata_file("SC_rgb_rle_16bit_2frame.dcm")
--RLE_32_1_1F = get_testdata_file("rtdose_rle_1frame.dcm")
--RLE_32_1_15F = get_testdata_file("rtdose_rle.dcm")
--RLE_32_3_1F = get_testdata_file("SC_rgb_rle_32bit.dcm")
--RLE_32_3_2F = get_testdata_file("SC_rgb_rle_32bit_2frame.dcm")
--
--# JPEG - ISO/IEC 10918 Standard
--# FMT_BA_BV_SPX_PR_FRAMESF_PI
--# JPGB: 1.2.840.10008.1.2.4.50 - JPEG Baseline (8-bit only)
--JPGB_08_08_3_0_1F_YBR_FULL = get_testdata_file("SC_rgb_small_odd_jpeg.dcm")
--JPGB_08_08_3_0_120F_YBR_FULL_422 = get_testdata_file("color3d_jpeg_baseline.dcm") # noqa
--# Different subsampling 411, 422, 444
--JPGB_08_08_3_0_1F_YBR_FULL_422_411 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+np.dcm") # noqa
--JPGB_08_08_3_0_1F_YBR_FULL_422_422 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+s2.dcm") # noqa
--JPGB_08_08_3_0_1F_YBR_FULL_411 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+n1.dcm") # noqa
--JPGB_08_08_3_0_1F_YBR_FULL_422 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+n2.dcm") # noqa
--JPGB_08_08_3_0_1F_YBR_FULL_444 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+s4.dcm") # noqa
--JPGB_08_08_3_0_1F_RGB = get_testdata_file("SC_rgb_dcmtk_+eb+cr.dcm")
--# JPGE: 1.2.840.1.2.4.51 - JPEG Extended
--JPGE_BAD = get_testdata_file("JPEG-lossy.dcm") # Bad JPEG file
--JPGE_16_12_1_0_1F_M2 = get_testdata_file("JPGExtended.dcm") # Fixed version
--# JPGL: 1.2.840.10008.1.2.4.70 - JPEG Lossless, Non-hierarchical, 1st Order
--JPGL_08_08_1_0_1F = get_testdata_file("JPGLosslessP14SV1_1s_1f_8b.dcm")
--JPGL_16_16_1_1_1F_M2 = get_testdata_file("JPEG-LL.dcm")
--
--JPGB = JPEGBaseline8Bit
--JPGE = JPEGExtended12Bit
--JPGL = JPEGLosslessSV1
--
-+## Transfer syntaxes supported by other handlers
-+#IMPL = get_testdata_file("MR_small_implicit.dcm")
-+#EXPL = get_testdata_file("OBXXXX1A.dcm")
-+#EXPB = get_testdata_file("OBXXXX1A_expb.dcm")
-+#DEFL = get_testdata_file("image_dfl.dcm")
-+#
-+#REFERENCE_DATA_UNSUPPORTED = [
-+# (IMPL, ('1.2.840.10008.1.2', 'CompressedSamples^MR1')),
-+# (EXPL, ('1.2.840.10008.1.2.1', 'OB^^^^')),
-+# (EXPB, ('1.2.840.10008.1.2.2', 'OB^^^^')),
-+# (DEFL, ('1.2.840.10008.1.2.1.99', '^^^^')),
-+#]
-+#
-+## RLE Lossless - PackBits algorithm
-+#RLE_8_1_1F = get_testdata_file("OBXXXX1A_rle.dcm")
-+#RLE_8_1_2F = get_testdata_file("OBXXXX1A_rle_2frame.dcm")
-+#RLE_8_3_1F = get_testdata_file("SC_rgb_rle.dcm")
-+#RLE_8_3_2F = get_testdata_file("SC_rgb_rle_2frame.dcm")
-+#RLE_16_1_1F = get_testdata_file("MR_small_RLE.dcm")
-+#RLE_16_1_10F = get_testdata_file("emri_small_RLE.dcm")
-+#RLE_16_3_1F = get_testdata_file("SC_rgb_rle_16bit.dcm")
-+#RLE_16_3_2F = get_testdata_file("SC_rgb_rle_16bit_2frame.dcm")
-+#RLE_32_1_1F = get_testdata_file("rtdose_rle_1frame.dcm")
-+#RLE_32_1_15F = get_testdata_file("rtdose_rle.dcm")
-+#RLE_32_3_1F = get_testdata_file("SC_rgb_rle_32bit.dcm")
-+#RLE_32_3_2F = get_testdata_file("SC_rgb_rle_32bit_2frame.dcm")
-+#
-+## JPEG - ISO/IEC 10918 Standard
-+## FMT_BA_BV_SPX_PR_FRAMESF_PI
-+## JPGB: 1.2.840.10008.1.2.4.50 - JPEG Baseline (8-bit only)
-+#JPGB_08_08_3_0_1F_YBR_FULL = get_testdata_file("SC_rgb_small_odd_jpeg.dcm")
-+#JPGB_08_08_3_0_120F_YBR_FULL_422 = get_testdata_file("color3d_jpeg_baseline.dcm") # noqa
-+## Different subsampling 411, 422, 444
-+#JPGB_08_08_3_0_1F_YBR_FULL_422_411 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+np.dcm") # noqa
-+#JPGB_08_08_3_0_1F_YBR_FULL_422_422 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+s2.dcm") # noqa
-+#JPGB_08_08_3_0_1F_YBR_FULL_411 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+n1.dcm") # noqa
-+#JPGB_08_08_3_0_1F_YBR_FULL_422 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+n2.dcm") # noqa
-+#JPGB_08_08_3_0_1F_YBR_FULL_444 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+s4.dcm") # noqa
-+#JPGB_08_08_3_0_1F_RGB = get_testdata_file("SC_rgb_dcmtk_+eb+cr.dcm")
-+## JPGE: 1.2.840.1.2.4.51 - JPEG Extended
-+#JPGE_BAD = get_testdata_file("JPEG-lossy.dcm") # Bad JPEG file
-+#JPGE_16_12_1_0_1F_M2 = get_testdata_file("JPGExtended.dcm") # Fixed version
-+## JPGL: 1.2.840.10008.1.2.4.70 - JPEG Lossless, Non-hierarchical, 1st Order
-+#JPGL_08_08_1_0_1F = get_testdata_file("JPGLosslessP14SV1_1s_1f_8b.dcm")
-+#JPGL_16_16_1_1_1F_M2 = get_testdata_file("JPEG-LL.dcm")
-+#
-+#JPGB = JPEGBaseline8Bit
-+#JPGE = JPEGExtended12Bit
-+#JPGL = JPEGLosslessSV1
-+#
- JPG_REFERENCE_DATA = [
-- # fpath, (syntax, bits, nr samples, pixel repr, nr frames, shape, dtype)
-- (JPGB_08_08_3_0_120F_YBR_FULL_422, (JPGB, 8, 3, 0, 120, (120, 480, 640, 3), 'uint8')), # noqa
-- (JPGB_08_08_3_0_1F_YBR_FULL_422_411, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
-- (JPGB_08_08_3_0_1F_YBR_FULL_422_422, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
-- (JPGB_08_08_3_0_1F_YBR_FULL_411, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
-- (JPGB_08_08_3_0_1F_YBR_FULL_422, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
-- (JPGB_08_08_3_0_1F_YBR_FULL_444, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
-- (JPGB_08_08_3_0_1F_RGB, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')),
-- (JPGE_16_12_1_0_1F_M2, (JPGE, 16, 1, 0, 1, (1024, 256), 'uint16')),
-- (JPGL_08_08_1_0_1F, (JPGL, 8, 1, 0, 1, (768, 1024), 'uint8')),
-- (JPGL_16_16_1_1_1F_M2, (JPGL, 16, 1, 1, 1, (1024, 256), 'int16')),
-+# # fpath, (syntax, bits, nr samples, pixel repr, nr frames, shape, dtype)
-+# (JPGB_08_08_3_0_120F_YBR_FULL_422, (JPGB, 8, 3, 0, 120, (120, 480, 640, 3), 'uint8')), # noqa
-+# (JPGB_08_08_3_0_1F_YBR_FULL_422_411, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
-+# (JPGB_08_08_3_0_1F_YBR_FULL_422_422, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
-+# (JPGB_08_08_3_0_1F_YBR_FULL_411, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
-+# (JPGB_08_08_3_0_1F_YBR_FULL_422, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
-+# (JPGB_08_08_3_0_1F_YBR_FULL_444, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
-+# (JPGB_08_08_3_0_1F_RGB, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')),
-+# (JPGE_16_12_1_0_1F_M2, (JPGE, 16, 1, 0, 1, (1024, 256), 'uint16')),
-+# (JPGL_08_08_1_0_1F, (JPGL, 8, 1, 0, 1, (768, 1024), 'uint8')),
-+# (JPGL_16_16_1_1_1F_M2, (JPGL, 16, 1, 1, 1, (1024, 256), 'int16')),
- ]
- JPG_MATCHING_DATASETS = [
-- # (compressed, reference, hard coded check values), px tolerance
-- pytest.param(
-- JPGB_08_08_3_0_1F_YBR_FULL_422_411,
-- get_testdata_file("SC_rgb_dcmtk_ebcynp_dcmd.dcm"),
-- [
-- (253, 1, 0), (253, 129, 131), (0, 255, 5), (127, 255, 129),
-- (0, 0, 254), (127, 128, 255), (0, 0, 0), (64, 64, 64),
-- (192, 192, 192), (255, 255, 255),
-- ],
-- 2
-- ),
-- pytest.param(
-- JPGB_08_08_3_0_1F_YBR_FULL_422_422,
-- get_testdata_file("SC_rgb_dcmtk_ebcys2_dcmd.dcm"),
-- [
-- (254, 0, 0), (255, 127, 127), (0, 255, 5), (129, 255, 129),
-- (0, 0, 254), (128, 127, 255), (0, 0, 0), (64, 64, 64),
-- (192, 192, 192), (255, 255, 255),
-- ],
-- 0
-- ),
-- pytest.param(
-- JPGB_08_08_3_0_1F_YBR_FULL_411,
-- get_testdata_file("SC_rgb_dcmtk_ebcyn1_dcmd.dcm"),
-- [
-- (253, 1, 0), (253, 129, 131), (0, 255, 5), (127, 255, 129),
-- (0, 0, 254), (127, 128, 255), (0, 0, 0), (64, 64, 64),
-- (192, 192, 192), (255, 255, 255),
-- ],
-- 2
-- ),
-- pytest.param(
-- JPGB_08_08_3_0_1F_YBR_FULL_422,
-- get_testdata_file("SC_rgb_dcmtk_ebcyn2_dcmd.dcm"),
-- [
-- (254, 0, 0), (255, 127, 127), (0, 255, 5), (129, 255, 129),
-- (0, 0, 254), (128, 127, 255), (0, 0, 0), (64, 64, 64),
-- (192, 192, 192), (255, 255, 255),
-- ],
-- 0
-- ),
-- pytest.param(
-- JPGB_08_08_3_0_1F_YBR_FULL_444,
-- get_testdata_file("SC_rgb_dcmtk_ebcys4_dcmd.dcm"),
-- [
-- (254, 0, 0), (255, 127, 127), (0, 255, 5), (129, 255, 129),
-- (0, 0, 254), (128, 127, 255), (0, 0, 0), (64, 64, 64),
-- (192, 192, 192), (255, 255, 255),
-- ],
-- 0
-- ),
-- pytest.param(
-- JPGB_08_08_3_0_1F_RGB,
-- get_testdata_file("SC_rgb_dcmtk_ebcr_dcmd.dcm"),
-- [
-- (255, 0, 0), (255, 128, 128), (0, 255, 0), (128, 255, 128),
-- (0, 0, 255), (128, 128, 255), (0, 0, 0), (64, 64, 64),
-- (192, 192, 192), (255, 255, 255),
-- ],
-- 1
-- ),
-+# # (compressed, reference, hard coded check values), px tolerance
-+# pytest.param(
-+# JPGB_08_08_3_0_1F_YBR_FULL_422_411,
-+# get_testdata_file("SC_rgb_dcmtk_ebcynp_dcmd.dcm"),
-+# [
-+# (253, 1, 0), (253, 129, 131), (0, 255, 5), (127, 255, 129),
-+# (0, 0, 254), (127, 128, 255), (0, 0, 0), (64, 64, 64),
-+# (192, 192, 192), (255, 255, 255),
-+# ],
-+# 2
-+# ),
-+# pytest.param(
-+# JPGB_08_08_3_0_1F_YBR_FULL_422_422,
-+# get_testdata_file("SC_rgb_dcmtk_ebcys2_dcmd.dcm"),
-+# [
-+# (254, 0, 0), (255, 127, 127), (0, 255, 5), (129, 255, 129),
-+# (0, 0, 254), (128, 127, 255), (0, 0, 0), (64, 64, 64),
-+# (192, 192, 192), (255, 255, 255),
-+# ],
-+# 0
-+# ),
-+# pytest.param(
-+# JPGB_08_08_3_0_1F_YBR_FULL_411,
-+# get_testdata_file("SC_rgb_dcmtk_ebcyn1_dcmd.dcm"),
-+# [
-+# (253, 1, 0), (253, 129, 131), (0, 255, 5), (127, 255, 129),
-+# (0, 0, 254), (127, 128, 255), (0, 0, 0), (64, 64, 64),
-+# (192, 192, 192), (255, 255, 255),
-+# ],
-+# 2
-+# ),
-+# pytest.param(
-+# JPGB_08_08_3_0_1F_YBR_FULL_422,
-+# get_testdata_file("SC_rgb_dcmtk_ebcyn2_dcmd.dcm"),
-+# [
-+# (254, 0, 0), (255, 127, 127), (0, 255, 5), (129, 255, 129),
-+# (0, 0, 254), (128, 127, 255), (0, 0, 0), (64, 64, 64),
-+# (192, 192, 192), (255, 255, 255),
-+# ],
-+# 0
-+# ),
-+# pytest.param(
-+# JPGB_08_08_3_0_1F_YBR_FULL_444,
-+# get_testdata_file("SC_rgb_dcmtk_ebcys4_dcmd.dcm"),
-+# [
-+# (254, 0, 0), (255, 127, 127), (0, 255, 5), (129, 255, 129),
-+# (0, 0, 254), (128, 127, 255), (0, 0, 0), (64, 64, 64),
-+# (192, 192, 192), (255, 255, 255),
-+# ],
-+# 0
-+# ),
-+# pytest.param(
-+# JPGB_08_08_3_0_1F_RGB,
-+# get_testdata_file("SC_rgb_dcmtk_ebcr_dcmd.dcm"),
-+# [
-+# (255, 0, 0), (255, 128, 128), (0, 255, 0), (128, 255, 128),
-+# (0, 0, 255), (128, 128, 255), (0, 0, 0), (64, 64, 64),
-+# (192, 192, 192), (255, 255, 255),
-+# ],
-+# 1
-+# ),
- ]
--
--
--# JPEG-LS - ISO/IEC 14495 Standard
--JLSL = JPEGLSNearLossless
--JLSN = JPEGLSLossless
--JPEG_LS_LOSSLESS = get_testdata_file("MR_small_jpeg_ls_lossless.dcm")
-+#
-+#
-+## JPEG-LS - ISO/IEC 14495 Standard
-+#JLSL = JPEGLSNearLossless
-+#JLSN = JPEGLSLossless
-+#JPEG_LS_LOSSLESS = get_testdata_file("MR_small_jpeg_ls_lossless.dcm")
- JLS_REFERENCE_DATA = [
-- # fpath, (syntax, bits, nr samples, pixel repr, nr frames, shape, dtype)
-- (JPEG_LS_LOSSLESS, (JLSN, 16, 1, 1, 1, (64, 64), 'int16')),
-+# # fpath, (syntax, bits, nr samples, pixel repr, nr frames, shape, dtype)
-+# (JPEG_LS_LOSSLESS, (JLSN, 16, 1, 1, 1, (64, 64), 'int16')),
- ]
-
- # JPEG 2000 - ISO/IEC 15444 Standard
- J2KR = JPEG2000Lossless
- J2KI = JPEG2000
--# J2KR: 1.2.840.100008.1.2.4.90 - JPEG 2000 Lossless
--J2KR_08_08_3_0_1F_YBR_ICT = get_testdata_file("US1_J2KR.dcm")
--J2KR_16_10_1_0_1F_M1 = get_testdata_file("RG3_J2KR.dcm")
--J2KR_16_12_1_0_1F_M2 = get_testdata_file("MR2_J2KR.dcm")
--J2KR_16_15_1_0_1F_M1 = get_testdata_file("RG1_J2KR.dcm")
--J2KR_16_16_1_0_10F_M2 = get_testdata_file("emri_small_jpeg_2k_lossless.dcm")
--J2KR_16_14_1_1_1F_M2 = get_testdata_file("693_J2KR.dcm")
--J2KR_16_16_1_1_1F_M2 = get_testdata_file("MR_small_jp2klossless.dcm")
--J2KR_16_13_1_1_1F_M2_MISMATCH = get_testdata_file("J2K_pixelrep_mismatch.dcm")
--# Non-conformant pixel data -> JP2 header present
--J2KR_08_08_3_0_1F_YBR_RCT = get_testdata_file("GDCMJ2K_TextGBR.dcm")
--# J2KI: 1.2.840.10008.1.2.4.91 - JPEG 2000
--J2KI_08_08_3_0_1F_RGB = get_testdata_file("SC_rgb_gdcm_KY.dcm")
--J2KI_08_08_3_0_1F_YBR_ICT = get_testdata_file("US1_J2KI.dcm")
--J2KI_16_10_1_0_1F_M1 = get_testdata_file("RG3_J2KI.dcm")
--J2KI_16_12_1_0_1F_M2 = get_testdata_file("MR2_J2KI.dcm")
--J2KI_16_15_1_0_1F_M1 = get_testdata_file("RG1_J2KI.dcm")
--J2KI_16_14_1_1_1F_M2 = get_testdata_file("693_J2KI.dcm")
--J2KI_16_16_1_1_1F_M2 = get_testdata_file("JPEG2000.dcm")
--
-+## J2KR: 1.2.840.100008.1.2.4.90 - JPEG 2000 Lossless
-+#J2KR_08_08_3_0_1F_YBR_ICT = get_testdata_file("US1_J2KR.dcm")
-+#J2KR_16_10_1_0_1F_M1 = get_testdata_file("RG3_J2KR.dcm")
-+#J2KR_16_12_1_0_1F_M2 = get_testdata_file("MR2_J2KR.dcm")
-+#J2KR_16_15_1_0_1F_M1 = get_testdata_file("RG1_J2KR.dcm")
-+#J2KR_16_16_1_0_10F_M2 = get_testdata_file("emri_small_jpeg_2k_lossless.dcm")
-+#J2KR_16_14_1_1_1F_M2 = get_testdata_file("693_J2KR.dcm")
-+#J2KR_16_16_1_1_1F_M2 = get_testdata_file("MR_small_jp2klossless.dcm")
-+#J2KR_16_13_1_1_1F_M2_MISMATCH = get_testdata_file("J2K_pixelrep_mismatch.dcm")
-+## Non-conformant pixel data -> JP2 header present
-+#J2KR_08_08_3_0_1F_YBR_RCT = get_testdata_file("GDCMJ2K_TextGBR.dcm")
-+## J2KI: 1.2.840.10008.1.2.4.91 - JPEG 2000
-+#J2KI_08_08_3_0_1F_RGB = get_testdata_file("SC_rgb_gdcm_KY.dcm")
-+#J2KI_08_08_3_0_1F_YBR_ICT = get_testdata_file("US1_J2KI.dcm")
-+#J2KI_16_10_1_0_1F_M1 = get_testdata_file("RG3_J2KI.dcm")
-+#J2KI_16_12_1_0_1F_M2 = get_testdata_file("MR2_J2KI.dcm")
-+#J2KI_16_15_1_0_1F_M1 = get_testdata_file("RG1_J2KI.dcm")
-+#J2KI_16_14_1_1_1F_M2 = get_testdata_file("693_J2KI.dcm")
-+#J2KI_16_16_1_1_1F_M2 = get_testdata_file("JPEG2000.dcm")
-+#
- J2K_REFERENCE_DATA = [
-- # fpath, (syntax, bits, nr samples, pixel repr, nr frames, shape, dtype)
-- (J2KR_08_08_3_0_1F_YBR_ICT, (J2KR, 8, 3, 0, 1, (480, 640, 3), 'uint8')),
-- (J2KR_16_10_1_0_1F_M1, (J2KR, 16, 1, 0, 1, (1760, 1760), 'uint16')),
-- (J2KR_16_12_1_0_1F_M2, (J2KR, 16, 1, 0, 1, (1024, 1024), 'uint16')),
-- (J2KR_16_15_1_0_1F_M1, (J2KR, 16, 1, 0, 1, (1955, 1841), 'uint16')),
-- # should be Bits Stored = 12
-- (J2KR_16_16_1_0_10F_M2, (J2KR, 16, 1, 0, 10, (10, 64, 64), 'uint16')),
-- # should be Bits Stored = 16
-- (J2KR_16_14_1_1_1F_M2, (J2KR, 16, 1, 1, 1, (512, 512), 'int16')),
-- (J2KR_16_16_1_1_1F_M2, (J2KR, 16, 1, 1, 1, (64, 64), 'int16')),
-- (J2KI_08_08_3_0_1F_RGB, (J2KI, 8, 3, 0, 1, (100, 100, 3), 'uint8')),
-- (J2KI_08_08_3_0_1F_YBR_ICT, (J2KI, 8, 3, 0, 1, (480, 640, 3), 'uint8')),
-- (J2KI_16_10_1_0_1F_M1, (J2KI, 16, 1, 0, 1, (1760, 1760), 'uint16')),
-- (J2KI_16_12_1_0_1F_M2, (J2KI, 16, 1, 0, 1, (1024, 1024), 'uint16')),
-- (J2KI_16_15_1_0_1F_M1, (J2KI, 16, 1, 0, 1, (1955, 1841), 'uint16')),
-- # should be Bits Stored = 16
-- (J2KI_16_14_1_1_1F_M2, (J2KI, 16, 1, 1, 1, (512, 512), 'int16')),
-- (J2KI_16_16_1_1_1F_M2, (J2KI, 16, 1, 1, 1, (1024, 256), 'int16')),
-+# # fpath, (syntax, bits, nr samples, pixel repr, nr frames, shape, dtype)
-+# (J2KR_08_08_3_0_1F_YBR_ICT, (J2KR, 8, 3, 0, 1, (480, 640, 3), 'uint8')),
-+# (J2KR_16_10_1_0_1F_M1, (J2KR, 16, 1, 0, 1, (1760, 1760), 'uint16')),
-+# (J2KR_16_12_1_0_1F_M2, (J2KR, 16, 1, 0, 1, (1024, 1024), 'uint16')),
-+# (J2KR_16_15_1_0_1F_M1, (J2KR, 16, 1, 0, 1, (1955, 1841), 'uint16')),
-+# # should be Bits Stored = 12
-+# (J2KR_16_16_1_0_10F_M2, (J2KR, 16, 1, 0, 10, (10, 64, 64), 'uint16')),
-+# # should be Bits Stored = 16
-+# (J2KR_16_14_1_1_1F_M2, (J2KR, 16, 1, 1, 1, (512, 512), 'int16')),
-+# (J2KR_16_16_1_1_1F_M2, (J2KR, 16, 1, 1, 1, (64, 64), 'int16')),
-+# (J2KI_08_08_3_0_1F_RGB, (J2KI, 8, 3, 0, 1, (100, 100, 3), 'uint8')),
-+# (J2KI_08_08_3_0_1F_YBR_ICT, (J2KI, 8, 3, 0, 1, (480, 640, 3), 'uint8')),
-+# (J2KI_16_10_1_0_1F_M1, (J2KI, 16, 1, 0, 1, (1760, 1760), 'uint16')),
-+# (J2KI_16_12_1_0_1F_M2, (J2KI, 16, 1, 0, 1, (1024, 1024), 'uint16')),
-+# (J2KI_16_15_1_0_1F_M1, (J2KI, 16, 1, 0, 1, (1955, 1841), 'uint16')),
-+# # should be Bits Stored = 16
-+# (J2KI_16_14_1_1_1F_M2, (J2KI, 16, 1, 1, 1, (512, 512), 'int16')),
-+# (J2KI_16_16_1_1_1F_M2, (J2KI, 16, 1, 1, 1, (1024, 256), 'int16')),
- ]
- J2K_MATCHING_DATASETS = [
-- # (compressed, reference, fixes)
-- pytest.param(
-- J2KR_08_08_3_0_1F_YBR_ICT,
-- get_testdata_file("US1_UNCR.dcm"),
-- {},
-- ),
-- pytest.param(
-- J2KR_16_10_1_0_1F_M1,
-- get_testdata_file("RG3_UNCR.dcm"),
-- {},
-- ),
-- pytest.param(
-- J2KR_16_12_1_0_1F_M2,
-- get_testdata_file("MR2_UNCR.dcm"),
-- {},
-- ),
-- pytest.param(
-- J2KR_16_15_1_0_1F_M1,
-- get_testdata_file("RG1_UNCR.dcm"),
-- {},
-- ),
-- pytest.param(
-- J2KR_16_16_1_0_10F_M2,
-- get_testdata_file("emri_small.dcm"),
-- {'BitsStored': 16},
-- ),
-- pytest.param(
-- J2KR_16_14_1_1_1F_M2,
-- get_testdata_file("693_UNCR.dcm"),
-- {'BitsStored': 14},
-- ),
-- pytest.param(
-- J2KR_16_16_1_1_1F_M2,
-- get_testdata_file("MR_small.dcm"),
-- {},
-- ),
-- pytest.param(
-- J2KI_08_08_3_0_1F_RGB,
-- get_testdata_file("SC_rgb_gdcm2k_uncompressed.dcm"),
-- {},
-- ),
-- pytest.param(
-- J2KI_08_08_3_0_1F_YBR_ICT,
-- get_testdata_file("US1_UNCI.dcm"),
-- {},
-- ),
-- pytest.param(
-- J2KI_16_10_1_0_1F_M1,
-- get_testdata_file("RG3_UNCI.dcm"),
-- {},
-- ),
-- pytest.param(
-- J2KI_16_12_1_0_1F_M2,
-- get_testdata_file("MR2_UNCI.dcm"),
-- {},
-- ),
-- pytest.param(
-- J2KI_16_15_1_0_1F_M1,
-- get_testdata_file("RG1_UNCI.dcm"),
-- {},
-- ),
-- pytest.param(
-- J2KI_16_14_1_1_1F_M2,
-- get_testdata_file("693_UNCI.dcm"),
-- {'BitsStored': 16},
-- ),
-- pytest.param(
-- J2KI_16_16_1_1_1F_M2,
-- get_testdata_file("JPEG2000_UNC.dcm"),
-- {},
-- ),
-+# # (compressed, reference, fixes)
-+# pytest.param(
-+# J2KR_08_08_3_0_1F_YBR_ICT,
-+# get_testdata_file("US1_UNCR.dcm"),
-+# {},
-+# ),
-+# pytest.param(
-+# J2KR_16_10_1_0_1F_M1,
-+# get_testdata_file("RG3_UNCR.dcm"),
-+# {},
-+# ),
-+# pytest.param(
-+# J2KR_16_12_1_0_1F_M2,
-+# get_testdata_file("MR2_UNCR.dcm"),
-+# {},
-+# ),
-+# pytest.param(
-+# J2KR_16_15_1_0_1F_M1,
-+# get_testdata_file("RG1_UNCR.dcm"),
-+# {},
-+# ),
-+# pytest.param(
-+# J2KR_16_16_1_0_10F_M2,
-+# get_testdata_file("emri_small.dcm"),
-+# {'BitsStored': 16},
-+# ),
-+# pytest.param(
-+# J2KR_16_14_1_1_1F_M2,
-+# get_testdata_file("693_UNCR.dcm"),
-+# {'BitsStored': 14},
-+# ),
-+# pytest.param(
-+# J2KR_16_16_1_1_1F_M2,
-+# get_testdata_file("MR_small.dcm"),
-+# {},
-+# ),
-+# pytest.param(
-+# J2KI_08_08_3_0_1F_RGB,
-+# get_testdata_file("SC_rgb_gdcm2k_uncompressed.dcm"),
-+# {},
-+# ),
-+# pytest.param(
-+# J2KI_08_08_3_0_1F_YBR_ICT,
-+# get_testdata_file("US1_UNCI.dcm"),
-+# {},
-+# ),
-+# pytest.param(
-+# J2KI_16_10_1_0_1F_M1,
-+# get_testdata_file("RG3_UNCI.dcm"),
-+# {},
-+# ),
-+# pytest.param(
-+# J2KI_16_12_1_0_1F_M2,
-+# get_testdata_file("MR2_UNCI.dcm"),
-+# {},
-+# ),
-+# pytest.param(
-+# J2KI_16_15_1_0_1F_M1,
-+# get_testdata_file("RG1_UNCI.dcm"),
-+# {},
-+# ),
-+# pytest.param(
-+# J2KI_16_14_1_1_1F_M2,
-+# get_testdata_file("693_UNCI.dcm"),
-+# {'BitsStored': 16},
-+# ),
-+# pytest.param(
-+# J2KI_16_16_1_1_1F_M2,
-+# get_testdata_file("JPEG2000_UNC.dcm"),
-+# {},
-+# ),
- ]
-
-
-@@ -361,6 +361,7 @@ class TestHandler:
- with pytest.raises((NotImplementedError, RuntimeError)):
- ds.pixel_array
-
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- @pytest.mark.skipif(
- HAVE_LJ or HAVE_OJ or HAVE_RLE, reason="plugins available"
- )
-@@ -391,6 +392,7 @@ class TestHandler:
- with pytest.raises(RuntimeError, match=msg):
- ds.pixel_array
-
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_change_photometric_interpretation(self):
- """Test returned value."""
- ds = dcmread(J2KR_16_12_1_0_1F_M2)
-@@ -409,6 +411,7 @@ class TestJPEG:
- """Restore the environment."""
- pydicom.config.pixel_data_handlers = self.original_handlers
-
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- @pytest.mark.parametrize('fpath, data', JPG_REFERENCE_DATA)
- def test_properties(self, fpath, data):
- """Test dataset and pixel array properties are as expected."""
-@@ -425,6 +428,7 @@ class TestJPEG:
- assert data[5] == arr.shape
- assert arr.dtype == data[6]
-
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- @pytest.mark.parametrize('fpath, rpath, val, tol', JPG_MATCHING_DATASETS)
- def test_array(self, fpath, rpath, val, tol):
- """Test pixel_array returns correct values."""
-@@ -450,6 +454,7 @@ class TestJPEG:
- # All results within `tol` intensity units of the reference
- assert np.allclose(arr, ref, atol=tol)
-
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- @pytest.mark.parametrize('fpath, rpath, val, tol', JPG_MATCHING_DATASETS)
- def test_generate_frames(self, fpath, rpath, val, tol):
- """Test pixel_array returns correct values."""
-@@ -484,6 +489,7 @@ class TestJPEG:
- with pytest.raises(RuntimeError, match=msg):
- ds.pixel_array
-
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_missing_element_raises(self):
- """Test that missing required element raises exception."""
- ds = dcmread(JPGB_08_08_3_0_1F_YBR_FULL)
-@@ -507,6 +513,7 @@ class TestJPEGLS:
- """Restore the environment."""
- pydicom.config.pixel_data_handlers = self.original_handlers
-
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- @pytest.mark.parametrize('fpath, data', JLS_REFERENCE_DATA)
- def test_properties(self, fpath, data):
- """Test dataset and pixel array properties are as expected."""
-@@ -523,6 +530,7 @@ class TestJPEGLS:
- assert data[5] == arr.shape
- assert arr.dtype == data[6]
-
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_arrary(self):
- """Test returned array values are OK."""
- ds = dcmread(JPEG_LS_LOSSLESS)
-@@ -546,6 +554,7 @@ class TestJPEG2K:
- """Restore the environment."""
- pydicom.config.pixel_data_handlers = self.original_handlers
-
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- @pytest.mark.parametrize('fpath, data', J2K_REFERENCE_DATA)
- def test_properties_as_array(self, fpath, data):
- """Test dataset, pixel_array and as_array() are as expected."""
-@@ -584,6 +593,7 @@ class TestJPEG2K:
- assert data[5] == arr.shape
- assert arr.dtype == data[6]
-
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- @pytest.mark.parametrize('fpath, rpath, fixes', J2K_MATCHING_DATASETS)
- def test_array(self, fpath, rpath, fixes):
- """Test pixel_array returns correct values."""
-@@ -597,6 +607,7 @@ class TestJPEG2K:
- ref = dcmread(rpath).pixel_array
- assert np.array_equal(arr, ref)
-
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- @pytest.mark.parametrize('fpath, rpath, fixes', J2K_MATCHING_DATASETS)
- def test_generate_frames(self, fpath, rpath, fixes):
- """Test pixel_array returns correct values."""
-@@ -620,6 +631,7 @@ class TestJPEG2K:
- with pytest.raises(StopIteration):
- next(frame_generator)
-
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_warnings(self):
- """Test the plugin warnings work."""
- # Bits Stored
-@@ -667,6 +679,7 @@ class TestJPEG2K:
- with pytest.warns(UserWarning, match=msg):
- ds.pixel_array
-
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_decompress_using_pylibjpeg(self):
- """Test decompressing JPEG2K with pylibjpeg handler succeeds."""
- ds = dcmread(J2KR_16_12_1_0_1F_M2)
-@@ -677,6 +690,7 @@ class TestJPEG2K:
- ref = ds.pixel_array
- assert np.array_equal(arr, ref)
-
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_pixel_rep_mismatch(self):
- """Test mismatched j2k sign and Pixel Representation."""
- ds = dcmread(J2KR_16_13_1_1_1F_M2_MISMATCH)
-@@ -706,37 +720,38 @@ class TestJPEG2K:
-
-
- RLE_REFERENCE_DATA = [
-- # fpath, (bits, nr samples, pixel repr, nr frames, shape, dtype)
-- (RLE_8_1_1F, (8, 1, 0, 1, (600, 800), 'uint8')),
-- (RLE_8_1_2F, (8, 1, 0, 2, (2, 600, 800), 'uint8')),
-- (RLE_8_3_1F, (8, 3, 0, 1, (100, 100, 3), 'uint8')),
-- (RLE_8_3_2F, (8, 3, 0, 2, (2, 100, 100, 3), 'uint8')),
-- (RLE_16_1_1F, (16, 1, 1, 1, (64, 64), 'int16')),
-- (RLE_16_1_10F, (16, 1, 0, 10, (10, 64, 64), 'uint16')),
-- (RLE_16_3_1F, (16, 3, 0, 1, (100, 100, 3), 'uint16')),
-- (RLE_16_3_2F, (16, 3, 0, 2, (2, 100, 100, 3), 'uint16')),
-- (RLE_32_1_1F, (32, 1, 0, 1, (10, 10), 'uint32')),
-- (RLE_32_1_15F, (32, 1, 0, 15, (15, 10, 10), 'uint32')),
-- (RLE_32_3_1F, (32, 3, 0, 1, (100, 100, 3), 'uint32')),
-- (RLE_32_3_2F, (32, 3, 0, 2, (2, 100, 100, 3), 'uint32')),
-+# # fpath, (bits, nr samples, pixel repr, nr frames, shape, dtype)
-+# (RLE_8_1_1F, (8, 1, 0, 1, (600, 800), 'uint8')),
-+# (RLE_8_1_2F, (8, 1, 0, 2, (2, 600, 800), 'uint8')),
-+# (RLE_8_3_1F, (8, 3, 0, 1, (100, 100, 3), 'uint8')),
-+# (RLE_8_3_2F, (8, 3, 0, 2, (2, 100, 100, 3), 'uint8')),
-+# (RLE_16_1_1F, (16, 1, 1, 1, (64, 64), 'int16')),
-+# (RLE_16_1_10F, (16, 1, 0, 10, (10, 64, 64), 'uint16')),
-+# (RLE_16_3_1F, (16, 3, 0, 1, (100, 100, 3), 'uint16')),
-+# (RLE_16_3_2F, (16, 3, 0, 2, (2, 100, 100, 3), 'uint16')),
-+# (RLE_32_1_1F, (32, 1, 0, 1, (10, 10), 'uint32')),
-+# (RLE_32_1_15F, (32, 1, 0, 15, (15, 10, 10), 'uint32')),
-+# (RLE_32_3_1F, (32, 3, 0, 1, (100, 100, 3), 'uint32')),
-+# (RLE_32_3_2F, (32, 3, 0, 2, (2, 100, 100, 3), 'uint32')),
- ]
- RLE_MATCHING_DATASETS = [
-- # (compressed, reference)
-- pytest.param(RLE_8_1_1F, get_testdata_file("OBXXXX1A.dcm")),
-- pytest.param(RLE_8_1_2F, get_testdata_file("OBXXXX1A_2frame.dcm")),
-- pytest.param(RLE_8_3_1F, get_testdata_file("SC_rgb.dcm")),
-- pytest.param(RLE_8_3_2F, get_testdata_file("SC_rgb_2frame.dcm")),
-- pytest.param(RLE_16_1_1F, get_testdata_file("MR_small.dcm")),
-- pytest.param(RLE_16_1_10F, get_testdata_file("emri_small.dcm")),
-- pytest.param(RLE_16_3_1F, get_testdata_file("SC_rgb_16bit.dcm")),
-- pytest.param(RLE_16_3_2F, get_testdata_file("SC_rgb_16bit_2frame.dcm")),
-- pytest.param(RLE_32_1_1F, get_testdata_file("rtdose_1frame.dcm")),
-- pytest.param(RLE_32_1_15F, get_testdata_file("rtdose.dcm")),
-- pytest.param(RLE_32_3_1F, get_testdata_file("SC_rgb_32bit.dcm")),
-- pytest.param(RLE_32_3_2F, get_testdata_file("SC_rgb_32bit_2frame.dcm")),
-+# # (compressed, reference)
-+# pytest.param(RLE_8_1_1F, get_testdata_file("OBXXXX1A.dcm")),
-+# pytest.param(RLE_8_1_2F, get_testdata_file("OBXXXX1A_2frame.dcm")),
-+# pytest.param(RLE_8_3_1F, get_testdata_file("SC_rgb.dcm")),
-+# pytest.param(RLE_8_3_2F, get_testdata_file("SC_rgb_2frame.dcm")),
-+# pytest.param(RLE_16_1_1F, get_testdata_file("MR_small.dcm")),
-+# pytest.param(RLE_16_1_10F, get_testdata_file("emri_small.dcm")),
-+# pytest.param(RLE_16_3_1F, get_testdata_file("SC_rgb_16bit.dcm")),
-+# pytest.param(RLE_16_3_2F, get_testdata_file("SC_rgb_16bit_2frame.dcm")),
-+# pytest.param(RLE_32_1_1F, get_testdata_file("rtdose_1frame.dcm")),
-+# pytest.param(RLE_32_1_15F, get_testdata_file("rtdose.dcm")),
-+# pytest.param(RLE_32_3_1F, get_testdata_file("SC_rgb_32bit.dcm")),
-+# pytest.param(RLE_32_3_2F, get_testdata_file("SC_rgb_32bit_2frame.dcm")),
- ]
-
-
-+ at pytest.mark.skip("When building a Debian package we can not download anything")
- @pytest.mark.skipif(not TEST_RLE, reason="no -rle plugin")
- class TestRLE:
- def test_decompress_using_pylibjpeg(self):
---- a/pydicom/tests/test_JPEG_LS_transfer_syntax.py
-+++ b/pydicom/tests/test_JPEG_LS_transfer_syntax.py
-@@ -49,15 +49,16 @@ except ImportError:
- gdcm_handler = None
- HAVE_GDCM = False
-
--mr_name = get_testdata_file("MR_small.dcm")
--jpeg_ls_lossless_name = get_testdata_file("MR_small_jpeg_ls_lossless.dcm")
--emri_name = get_testdata_file("emri_small.dcm")
--emri_jpeg_ls_lossless = get_testdata_file(
-- "emri_small_jpeg_ls_lossless.dcm")
-+#mr_name = get_testdata_file("MR_small.dcm")
-+#jpeg_ls_lossless_name = get_testdata_file("MR_small_jpeg_ls_lossless.dcm")
-+#emri_name = get_testdata_file("emri_small.dcm")
-+#emri_jpeg_ls_lossless = get_testdata_file(
-+# "emri_small_jpeg_ls_lossless.dcm")
- dir_name = os.path.dirname(sys.argv[0])
- save_dir = os.getcwd()
-
-
-+ at pytest.mark.skip("When building a Debian package we can not download anything")
- class Test_JPEG_LS_Lossless_transfer_syntax():
- def setup_method(self, method):
- self.jpeg_ls_lossless = dcmread(jpeg_ls_lossless_name)
---- a/pydicom/tests/test_dataset.py
-+++ b/pydicom/tests/test_dataset.py
-@@ -20,7 +20,7 @@ except ImportError:
- import pydicom
- from pydicom import config
- from pydicom import dcmread
--from pydicom.data import get_testdata_file
-+#from pydicom.data import get_testdata_file
- from pydicom.dataelem import DataElement, RawDataElement
- from pydicom.dataset import (
- Dataset, FileDataset, validate_file_meta, FileMetaDataset
-@@ -932,6 +932,7 @@ class TestDataset:
- assert 'SOPInstanceUID' in group0000
- assert 'SkipFrameRangeFlag' in group0000
-
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_get_item(self):
- """Test Dataset.get_item"""
- ds = Dataset()
-@@ -1108,6 +1109,7 @@ class TestDataset:
- item = ds.get_private_item(0x0009, 0x02, 'Creator 2.0')
- assert 2 == item.value
-
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_private_creator_from_raw_ds(self):
- # regression test for #1078
- ct_filename = get_testdata_file("CT_small.dcm")
-@@ -1119,6 +1121,7 @@ class TestDataset:
- ds.private_block(0x13, 'GEMS_PATI_01', create=True)
- assert ['GEMS_PATI_01'] == ds.private_creators(0x13)
-
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_add_known_private_tag(self):
- # regression test for #1082
- ds = dcmread(get_testdata_file("CT_small.dcm"))
-@@ -1506,6 +1509,7 @@ class TestDataset:
- ds.save_as(fp)
- assert elem.is_undefined_length
-
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_with(self):
- """Test Dataset.__enter__ and __exit__."""
- test_file = get_testdata_file('CT_small.dcm')
-@@ -1537,6 +1541,7 @@ class TestDataset:
- with pytest.raises(ValueError, match="Random ex message!"):
- getattr(DSException(), 'test')
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_with(self):
+ """Test Dataset.__enter__ and __exit__."""
+ test_file = get_testdata_file('CT_small.dcm')
+@@ -1537,6 +1541,7 @@ class TestDataset:
+ with pytest.raises(ValueError, match="Random ex message!"):
+ getattr(DSException(), 'test')
+ @pytest.mark.skip("When building a Debian package we can not download anything")
def test_pixel_array_already_have(self):
@@ -1448,452 +297,493 @@ Description: Several data files need to be downloaded which is not possible at p
class TestDatasetOverlayArray:
"""Tests for Dataset.overlay_array()."""
---- a/pydicom/tests/test_gdcm_pixel_data.py
-+++ b/pydicom/tests/test_gdcm_pixel_data.py
-@@ -18,7 +18,7 @@ except ImportError:
+diff --git a/pydicom/tests/test_encaps.py b/pydicom/tests/test_encaps.py
+index 4c6cbc8..8c448f3 100644
+--- a/pydicom/tests/test_encaps.py
++++ b/pydicom/tests/test_encaps.py
+@@ -472,6 +472,7 @@ class TestGeneratePixelDataFrames:
+ assert next(frames) == b'\x03\x00\x00\x00\x02\x04'
+ pytest.raises(StopIteration, next, frames)
- import pydicom
- from pydicom.filereader import dcmread
--from pydicom.data import get_testdata_file
-+#from pydicom.data import get_testdata_file
- from pydicom.encaps import defragment_data
- from pydicom.pixel_data_handlers import numpy_handler, gdcm_handler
- from pydicom.pixel_data_handlers.util import (
-@@ -43,59 +43,60 @@ gdcm_im_missing_message = (
- )
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_empty_bot_multi_fragments_per_frame(self):
+ """Test multi-frame where multiple frags per frame and no BOT."""
+ # Regression test for #685
+@@ -541,6 +542,7 @@ class TestGeneratePixelData:
+ with pytest.raises(ValueError, match=msg):
+ next(generate_pixel_data(bytestream))
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_empty_bot_too_few_fragments(self):
+ """Test parsing with too few fragments."""
+ ds = dcmread(JP2K_10FRAME_NOBOT)
+@@ -1135,6 +1137,7 @@ class TestEncapsulateFrame:
+ pytest.raises(StopIteration, next, item_generator)
--empty_number_tags_name = get_testdata_file(
-- "reportsi_with_empty_number_tags.dcm")
--rtplan_name = get_testdata_file("rtplan.dcm")
--rtdose_name = get_testdata_file("rtdose.dcm")
--ct_name = get_testdata_file("CT_small.dcm")
--mr_name = get_testdata_file("MR_small.dcm")
--truncated_mr_name = get_testdata_file("MR_truncated.dcm")
--jpeg2000_name = get_testdata_file("JPEG2000.dcm")
--jpeg2000_lossless_name = get_testdata_file("MR_small_jp2klossless.dcm")
--jpeg_ls_lossless_name = get_testdata_file("MR_small_jpeg_ls_lossless.dcm")
--jpeg_lossy_name = get_testdata_file("JPEG-lossy.dcm")
--jpeg_lossless_name = get_testdata_file("JPEG-LL.dcm")
--jpeg_lossless_odd_data_size_name = get_testdata_file(
-- 'SC_rgb_small_odd_jpeg.dcm')
--deflate_name = get_testdata_file("image_dfl.dcm")
--rtstruct_name = get_testdata_file("rtstruct.dcm")
--priv_SQ_name = get_testdata_file("priv_SQ.dcm")
--nested_priv_SQ_name = get_testdata_file("nested_priv_SQ.dcm")
--meta_missing_tsyntax_name = get_testdata_file("meta_missing_tsyntax.dcm")
--no_meta_group_length = get_testdata_file("no_meta_group_length.dcm")
--gzip_name = get_testdata_file("zipMR.gz")
--color_px_name = get_testdata_file("color-px.dcm")
--color_pl_name = get_testdata_file("color-pl.dcm")
--explicit_vr_le_no_meta = get_testdata_file("ExplVR_LitEndNoMeta.dcm")
--explicit_vr_be_no_meta = get_testdata_file("ExplVR_BigEndNoMeta.dcm")
--emri_name = get_testdata_file("emri_small.dcm")
--emri_big_endian_name = get_testdata_file("emri_small_big_endian.dcm")
--emri_jpeg_ls_lossless = get_testdata_file(
-- "emri_small_jpeg_ls_lossless.dcm")
--emri_jpeg_2k_lossless = get_testdata_file(
-- "emri_small_jpeg_2k_lossless.dcm")
--color_3d_jpeg_baseline = get_testdata_file("color3d_jpeg_baseline.dcm")
--sc_rgb_jpeg_dcmtk_411_YBR_FULL_422 = get_testdata_file(
-- "SC_rgb_dcmtk_+eb+cy+np.dcm")
--sc_rgb_jpeg_dcmtk_411_YBR_FULL = get_testdata_file(
-- "SC_rgb_dcmtk_+eb+cy+n1.dcm")
--sc_rgb_jpeg_dcmtk_422_YBR_FULL = get_testdata_file(
-- "SC_rgb_dcmtk_+eb+cy+n2.dcm")
--sc_rgb_jpeg_dcmtk_444_YBR_FULL = get_testdata_file(
-- "SC_rgb_dcmtk_+eb+cy+s4.dcm")
--sc_rgb_jpeg_dcmtk_422_YBR_FULL_422 = get_testdata_file(
-- "SC_rgb_dcmtk_+eb+cy+s2.dcm")
--sc_rgb_jpeg_dcmtk_RGB = get_testdata_file("SC_rgb_dcmtk_+eb+cr.dcm")
--sc_rgb_jpeg2k_gdcm_KY = get_testdata_file("SC_rgb_gdcm_KY.dcm")
--ground_truth_sc_rgb_jpeg2k_gdcm_KY_gdcm = get_testdata_file(
-- "SC_rgb_gdcm2k_uncompressed.dcm"
--)
--J2KR_16_13_1_1_1F_M2_MISMATCH = get_testdata_file("J2K_pixelrep_mismatch.dcm")
-+#empty_number_tags_name = get_testdata_file(
-+# "reportsi_with_empty_number_tags.dcm")
-+#rtplan_name = get_testdata_file("rtplan.dcm")
-+#rtdose_name = get_testdata_file("rtdose.dcm")
-+#ct_name = get_testdata_file("CT_small.dcm")
-+#mr_name = get_testdata_file("MR_small.dcm")
-+#truncated_mr_name = get_testdata_file("MR_truncated.dcm")
-+#jpeg2000_name = get_testdata_file("JPEG2000.dcm")
-+#jpeg2000_lossless_name = get_testdata_file("MR_small_jp2klossless.dcm")
-+#jpeg_ls_lossless_name = get_testdata_file("MR_small_jpeg_ls_lossless.dcm")
-+#jpeg_lossy_name = get_testdata_file("JPEG-lossy.dcm")
-+#jpeg_lossless_name = get_testdata_file("JPEG-LL.dcm")
-+#jpeg_lossless_odd_data_size_name = get_testdata_file(
-+# 'SC_rgb_small_odd_jpeg.dcm')
-+#deflate_name = get_testdata_file("image_dfl.dcm")
-+#rtstruct_name = get_testdata_file("rtstruct.dcm")
-+#priv_SQ_name = get_testdata_file("priv_SQ.dcm")
-+#nested_priv_SQ_name = get_testdata_file("nested_priv_SQ.dcm")
-+#meta_missing_tsyntax_name = get_testdata_file("meta_missing_tsyntax.dcm")
-+#no_meta_group_length = get_testdata_file("no_meta_group_length.dcm")
-+#gzip_name = get_testdata_file("zipMR.gz")
-+#color_px_name = get_testdata_file("color-px.dcm")
-+#color_pl_name = get_testdata_file("color-pl.dcm")
-+#explicit_vr_le_no_meta = get_testdata_file("ExplVR_LitEndNoMeta.dcm")
-+#explicit_vr_be_no_meta = get_testdata_file("ExplVR_BigEndNoMeta.dcm")
-+#emri_name = get_testdata_file("emri_small.dcm")
-+#emri_big_endian_name = get_testdata_file("emri_small_big_endian.dcm")
-+#emri_jpeg_ls_lossless = get_testdata_file(
-+# "emri_small_jpeg_ls_lossless.dcm")
-+#emri_jpeg_2k_lossless = get_testdata_file(
-+# "emri_small_jpeg_2k_lossless.dcm")
-+#color_3d_jpeg_baseline = get_testdata_file("color3d_jpeg_baseline.dcm")
-+#sc_rgb_jpeg_dcmtk_411_YBR_FULL_422 = get_testdata_file(
-+# "SC_rgb_dcmtk_+eb+cy+np.dcm")
-+#sc_rgb_jpeg_dcmtk_411_YBR_FULL = get_testdata_file(
-+# "SC_rgb_dcmtk_+eb+cy+n1.dcm")
-+#sc_rgb_jpeg_dcmtk_422_YBR_FULL = get_testdata_file(
-+# "SC_rgb_dcmtk_+eb+cy+n2.dcm")
-+#sc_rgb_jpeg_dcmtk_444_YBR_FULL = get_testdata_file(
-+# "SC_rgb_dcmtk_+eb+cy+s4.dcm")
-+#sc_rgb_jpeg_dcmtk_422_YBR_FULL_422 = get_testdata_file(
-+# "SC_rgb_dcmtk_+eb+cy+s2.dcm")
-+#sc_rgb_jpeg_dcmtk_RGB = get_testdata_file("SC_rgb_dcmtk_+eb+cr.dcm")
-+#sc_rgb_jpeg2k_gdcm_KY = get_testdata_file("SC_rgb_gdcm_KY.dcm")
-+#ground_truth_sc_rgb_jpeg2k_gdcm_KY_gdcm = get_testdata_file(
-+# "SC_rgb_gdcm2k_uncompressed.dcm"
-+#)
-+#J2KR_16_13_1_1_1F_M2_MISMATCH = get_testdata_file("J2K_pixelrep_mismatch.dcm")
- dir_name = os.path.dirname(sys.argv[0])
- save_dir = os.getcwd()
++ at pytest.mark.skip("When building a Debian package we can not download anything")
+ class TestEncapsulate:
+ """Test encaps.encapsulate."""
+ def test_encapsulate_single_fragment_per_frame_no_bot(self):
+@@ -1229,6 +1232,7 @@ class TestEncapsulate:
+ encapsulate([frame_a, frame_b], has_bot=True)
+
+
++ at pytest.mark.skip("When building a Debian package we can not download anything")
+ class TestEncapsulateExtended:
+ """Tests for encaps.encapsulate_extended."""
+ def test_encapsulate(self):
+diff --git a/pydicom/tests/test_encoders.py b/pydicom/tests/test_encoders.py
+index c64f4f1..4ca6290 100644
+--- a/pydicom/tests/test_encoders.py
++++ b/pydicom/tests/test_encoders.py
+@@ -270,6 +270,7 @@ class TestEncoder:
+ assert 'foo - requires bar' == s[0]
+
+
++ at pytest.mark.skip("When building a Debian package we can not download anything")
+ @pytest.mark.skipif(not HAVE_NP, reason="Numpy not available")
+ class TestEncoder_Encode:
+ """Tests for Encoder.encode() and related methods."""
+diff --git a/pydicom/tests/test_encoders_gdcm.py b/pydicom/tests/test_encoders_gdcm.py
+index ed50c63..dc62ac4 100644
+--- a/pydicom/tests/test_encoders_gdcm.py
++++ b/pydicom/tests/test_encoders_gdcm.py
+@@ -21,18 +21,19 @@ except ImportError:
+ HAVE_GDCM = False
+ GDCM_VERSION = [0, 0, 0]
+
+-# EXPL: Explicit VR Little Endian
+-EXPL_8_1_1F = get_testdata_file("OBXXXX1A.dcm")
+-EXPL_8_3_1F = get_testdata_file("SC_rgb.dcm")
+-EXPL_16_1_1F = get_testdata_file("MR_small.dcm")
+-EXPL_16_3_1F = get_testdata_file("SC_rgb_16bit.dcm")
+-EXPL_32_1_1F = get_testdata_file("rtdose_1frame.dcm")
+-EXPL_32_3_1F = get_testdata_file("SC_rgb_32bit.dcm")
++## EXPL: Explicit VR Little Endian
++#EXPL_8_1_1F = get_testdata_file("OBXXXX1A.dcm")
++#EXPL_8_3_1F = get_testdata_file("SC_rgb.dcm")
++#EXPL_16_1_1F = get_testdata_file("MR_small.dcm")
++#EXPL_16_3_1F = get_testdata_file("SC_rgb_16bit.dcm")
++#EXPL_32_1_1F = get_testdata_file("rtdose_1frame.dcm")
++#EXPL_32_3_1F = get_testdata_file("SC_rgb_32bit.dcm")
+
+ @pytest.mark.skipif(not HAVE_GDCM, reason='GDCM plugin is not available')
+ class TestRLELossless:
+ """Tests for encoding RLE Lossless."""
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_cycle_u8_1s_1f(self):
+ """Test an encode/decode cycle for 8-bit 1 sample/pixel."""
+ ds = dcmread(EXPL_8_1_1F)
+@@ -51,6 +52,7 @@ class TestRLELossless:
-+ at pytest.mark.skip("When building a Debian package we can not download anything")
- class TestGDCM_JPEG_LS_no_gdcm:
- def setup_method(self):
- self.unicode_filename = os.path.join(
-@@ -121,6 +122,7 @@ class TestGDCM_JPEG_LS_no_gdcm:
- self.emri_jpeg_ls_lossless.pixel_array
+ assert np.array_equal(ref.ravel(), arr)
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_cycle_u8_3s_1f(self):
+ """Test an encode/decode cycle for 8-bit 3 sample/pixel."""
+ ds = dcmread(EXPL_8_3_1F)
+@@ -73,6 +75,7 @@ class TestRLELossless:
-+ at pytest.mark.skip("When building a Debian package we can not download anything")
- class TestGDCM_JPEG2000_no_gdcm:
- def setup_method(self):
- self.jpeg_2k = dcmread(jpeg2000_name)
-@@ -184,6 +186,7 @@ class TestGDCM_JPEGlossy_no_gdcm:
- self.color_3d_jpeg.pixel_array
+ assert np.array_equal(ref, arr)
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_cycle_i16_1s_1f(self):
+ """Test an encode/decode cycle for 16-bit 1 sample/pixel."""
+ ds = dcmread(EXPL_16_1_1F)
+@@ -93,6 +96,7 @@ class TestRLELossless:
-+ at pytest.mark.skip("When building a Debian package we can not download anything")
- class TestGDCM_JPEGlossless_no_gdcm:
- def setup_method(self):
- self.jpeg_lossless = dcmread(jpeg_lossless_name)
-@@ -208,115 +211,6 @@ class TestGDCM_JPEGlossless_no_gdcm:
- self.jpeg_lossless.pixel_array
+ assert np.array_equal(ref, arr)
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_cycle_u16_3s_1f(self):
+ """Test an encode/decode cycle for 16-bit 3 sample/pixel."""
+ ds = dcmread(EXPL_16_3_1F)
+@@ -115,6 +119,7 @@ class TestRLELossless:
--pi_rgb_test_ids = [
-- "JPEG_RGB_411_AS_YBR_FULL",
-- "JPEG_RGB_411_AS_YBR_FULL_422",
-- "JPEG_RGB_422_AS_YBR_FULL",
-- "JPEG_RGB_422_AS_YBR_FULL_422",
-- "JPEG_RGB_444_AS_YBR_FULL",
--]
--
--pi_rgb_testdata = [
-- pytest.param(
-- sc_rgb_jpeg_dcmtk_411_YBR_FULL,
-- "YBR_FULL",
-- [
-- (253, 1, 0),
-- (253, 128, 132),
-- (0, 255, 5),
-- (127, 255, 127),
-- (1, 0, 254),
-- (127, 128, 255),
-- (0, 0, 0),
-- (64, 64, 64),
-- (192, 192, 192),
-- (255, 255, 255),
-- ],
-- True,
-- ),
-- pytest.param(
-- sc_rgb_jpeg_dcmtk_411_YBR_FULL_422,
-- "YBR_FULL_422",
-- [
-- (253, 1, 0),
-- (253, 128, 132),
-- (0, 255, 5),
-- (127, 255, 127),
-- (1, 0, 254),
-- (127, 128, 255),
-- (0, 0, 0),
-- (64, 64, 64),
-- (192, 192, 192),
-- (255, 255, 255),
-- ],
-- True,
-- ),
-- pytest.param(
-- sc_rgb_jpeg_dcmtk_422_YBR_FULL,
-- "YBR_FULL",
-- [
-- (254, 0, 0),
-- (255, 127, 127),
-- (0, 255, 5),
-- (129, 255, 129),
-- (0, 0, 254),
-- (128, 127, 255),
-- (0, 0, 0),
-- (64, 64, 64),
-- (192, 192, 192),
-- (255, 255, 255),
-- ],
-- True,
-- ),
-- pytest.param(
-- sc_rgb_jpeg_dcmtk_422_YBR_FULL_422,
-- "YBR_FULL_422",
-- [
-- (254, 0, 0),
-- (255, 127, 127),
-- (0, 255, 5),
-- (129, 255, 129),
-- (0, 0, 254),
-- (128, 127, 255),
-- (0, 0, 0),
-- (64, 64, 64),
-- (192, 192, 192),
-- (255, 255, 255),
-- ],
-- True,
-- ),
-- pytest.param(
-- sc_rgb_jpeg_dcmtk_444_YBR_FULL,
-- "YBR_FULL",
-- [
-- (254, 0, 0),
-- (255, 127, 127),
-- (0, 255, 5),
-- (129, 255, 129),
-- (0, 0, 254),
-- (128, 127, 255),
-- (0, 0, 0),
-- (64, 64, 64),
-- (192, 192, 192),
-- (255, 255, 255),
-- ],
-- True,
-- )
--]
--
--with_gdcm_params = [
-- pytest.param(
-- 'File',
-- marks=pytest.mark.skipif(not HAVE_GDCM, reason=gdcm_missing_message)
-- ),
-- pytest.param(
-- 'InMemory',
-- marks=pytest.mark.skipif(
-- not HAVE_GDCM_IN_MEMORY_SUPPORT, reason=gdcm_im_missing_message
-- )
-- )
--]
--
+ assert np.array_equal(ref, arr)
+
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_cycle_u32_1s_1f(self):
+ """Test an encode/decode cycle for 32-bit 1 sample/pixel."""
+ ds = dcmread(EXPL_32_1_1F)
+@@ -135,6 +140,7 @@ class TestRLELossless:
+
+ assert np.array_equal(ref, arr)
+
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ @pytest.mark.skipif(GDCM_VERSION < [3, 0, 10], reason="GDCM bug")
+ def test_cycle_u32_3s_1f(self):
+ """Test an encode/decode cycle for 32-bit 3 sample/pixel."""
+@@ -159,6 +165,7 @@ class TestRLELossless:
+
+ assert np.array_equal(ref, arr)
+
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ @pytest.mark.skipif(GDCM_VERSION >= [3, 0, 10], reason="GDCM bug fixed")
+ def test_cycle_u32_3s_1f_raises(self):
+ """Test that 32-bit, 3 sample/px data raises exception."""
+@@ -176,6 +183,7 @@ class TestRLELossless:
+ with pytest.raises(RuntimeError, match=msg):
+ gdcm_rle_encode(ds.PixelData, **kwargs)
+
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_invalid_byteorder_raises(self):
+ """Test that big endian source raises exception."""
+ ds = dcmread(EXPL_8_1_1F)
+@@ -191,6 +199,7 @@ class TestRLELossless:
+ ds.PixelData, encoding_plugin='gdcm', byteorder='>', **kwargs
+ )
+
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_above_32bit_raises(self):
+ """Test that > 32-bit Bits Allocated raises exception."""
+ ds = dcmread(EXPL_8_1_1F)
+@@ -206,6 +215,7 @@ class TestRLELossless:
+ with pytest.raises(RuntimeError, match=msg):
+ enc.encode(ds.PixelData, encoding_plugin='gdcm', **kwargs)
+
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_encoding_failure_raises(self):
+ """Test that a encoding failure result raises an exception"""
+ kwargs = {
+@@ -226,6 +236,7 @@ class TestRLELossless:
+ with pytest.raises(RuntimeError, match=msg):
+ gdcm_rle_encode(b'\x00', **kwargs)
+
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_no_sequence_raises(self):
+ """Test that no sequence of fragments raises an exception"""
+ kwargs = {
+diff --git a/pydicom/tests/test_encoders_pydicom.py b/pydicom/tests/test_encoders_pydicom.py
+index ad06b8f..9b15acf 100644
+--- a/pydicom/tests/test_encoders_pydicom.py
++++ b/pydicom/tests/test_encoders_pydicom.py
+@@ -28,23 +28,25 @@ from pydicom.pixel_data_handlers.util import reshape_pixel_array
+ from pydicom.uid import RLELossless
+
+
+-# EXPL: Explicit VR Little Endian
+-# RLE: RLE Lossless
+-# 8/8-bit, 1 sample/pixel, 1 frame
+-EXPL_8_1_1F = get_testdata_file("OBXXXX1A.dcm")
+-RLE_8_1_1F = get_testdata_file("OBXXXX1A_rle.dcm")
+-# 8/8-bit, 3 sample/pixel, 1 frame
+-EXPL_8_3_1F = get_testdata_file("SC_rgb.dcm")
+-# 8/8-bit, 3 sample/pixel, 2 frame
+-EXPL_8_3_2F = get_testdata_file("SC_rgb_2frame.dcm")
+-# 16/16-bit, 1 sample/pixel, 1 frame
+-EXPL_16_1_1F = get_testdata_file("MR_small.dcm")
+-# 16/16-bit, 3 sample/pixel, 1 frame
+-EXPL_16_3_1F = get_testdata_file("SC_rgb_16bit.dcm")
+-# 32/32-bit, 1 sample/pixel, 1 frame
+-EXPL_32_1_1F = get_testdata_file("rtdose_1frame.dcm")
+-# 32/32-bit, 3 sample/pixel, 1 frame
+-EXPL_32_3_1F = get_testdata_file("SC_rgb_32bit.dcm")
++## EXPL: Explicit VR Little Endian
++## RLE: RLE Lossless
++## 8/8-bit, 1 sample/pixel, 1 frame
++#EXPL_8_1_1F = get_testdata_file("OBXXXX1A.dcm")
++#RLE_8_1_1F = get_testdata_file("OBXXXX1A_rle.dcm")
++RLE_8_1_1F = None
++## 8/8-bit, 3 sample/pixel, 1 frame
++#EXPL_8_3_1F = get_testdata_file("SC_rgb.dcm")
++## 8/8-bit, 3 sample/pixel, 2 frame
++#EXPL_8_3_2F = get_testdata_file("SC_rgb_2frame.dcm")
++## 16/16-bit, 1 sample/pixel, 1 frame
++#EXPL_16_1_1F = get_testdata_file("MR_small.dcm")
++## 16/16-bit, 3 sample/pixel, 1 frame
++#EXPL_16_3_1F = get_testdata_file("SC_rgb_16bit.dcm")
++EXPL_16_3_1F = None
++## 32/32-bit, 1 sample/pixel, 1 frame
++#EXPL_32_1_1F = get_testdata_file("rtdose_1frame.dcm")
++## 32/32-bit, 3 sample/pixel, 1 frame
++#EXPL_32_3_1F = get_testdata_file("SC_rgb_32bit.dcm")
+
+
+ # Tests for RLE encoding
+@@ -107,6 +109,7 @@ class TestEncodeRow:
+ assert output == _encode_row(src)
- class TestsWithGDCM:
- @pytest.fixture(params=with_gdcm_params, scope='class', autouse=True)
-@@ -481,9 +375,10 @@ class TestsWithGDCM:
- assert (57, 57, 57) == tuple(a[3, 169, 290, :])
- assert "YBR_FULL_422" == color_3d_jpeg.PhotometricInterpretation
-- @pytest.mark.parametrize(
-- "image,pi,results,convert_yuv_to_rgb",
-- pi_rgb_testdata, ids=pi_rgb_test_ids)
++ at pytest.mark.skip("When building a Debian package we can not download anything")
+ @pytest.mark.skipif(not HAVE_NP, reason="Numpy not available")
+ class TestEncodeFrame:
+ """Tests for rle_handler._encode_frame."""
+@@ -139,6 +142,7 @@ class TestEncodeFrame:
+
+ assert np.array_equal(ref, arr)
+
+ @pytest.mark.skip("When building a Debian package we can not download anything")
-+ #@pytest.mark.parametrize(
-+ # "image,pi,results,convert_yuv_to_rgb",
-+ # pi_rgb_testdata, ids=pi_rgb_test_ids)
- def test_PI_RGB(self, image, pi, results, convert_yuv_to_rgb):
- t = dcmread(image)
- assert t.PhotometricInterpretation == pi
-@@ -541,7 +436,7 @@ class TestsWithGDCM:
- arr[328:338, 106].tolist()
- )
+ def test_cycle_8bit_3sample(self):
+ """Test an encode/decode cycle for 8-bit 3 sample/pixel."""
+ ds = dcmread(EXPL_8_3_1F)
+@@ -176,6 +180,7 @@ class TestEncodeFrame:
--
-+ at pytest.mark.skip("When building a Debian package we can not download anything")
- class TestSupportFunctions:
- @pytest.fixture(scope='class')
- def dataset_2d(self):
---- a/pydicom/tests/test_jpeg_ls_pixel_data.py
-+++ b/pydicom/tests/test_jpeg_ls_pixel_data.py
-@@ -22,44 +22,44 @@ have_jpeg_ls_handler = jpeg_ls_handler.i
+ assert np.array_equal(ref, arr)
- test_jpeg_ls_decoder = have_numpy_handler and have_jpeg_ls_handler
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_cycle_16bit_3sample(self):
+ """Test an encode/decode cycle for 16-bit 3 sample/pixel."""
+ ds = dcmread(EXPL_16_3_1F)
+@@ -351,6 +356,7 @@ class TestEncodeFrame:
+
+ class TestEncodeSegment:
+ """Tests for rle_handler._encode_segment."""
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ @pytest.mark.skipif(not HAVE_NP, reason="Numpy not available")
+ def test_one_row(self):
+ """Test encoding data that contains only a single row."""
+@@ -372,6 +378,7 @@ class TestEncodeSegment:
+ assert ds.Columns == len(redecoded)
+ assert decoded[:ds.Columns] == redecoded
+
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_cycle(self):
+ """Test the decoded data remains the same after encoding/decoding."""
+ ds = dcmread(RLE_8_1_1F)
+@@ -404,6 +411,7 @@ class TestRLEEncodeFrame:
+ with pytest.raises(ValueError, match=msg):
+ rle_encode_frame(arr)
+
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_encoding_multiple_frames_raises(self):
+ """Test encoding multiple framed pixel data raises exception."""
+ # Note: only works with multi-sample data
+@@ -418,6 +426,7 @@ class TestRLEEncodeFrame:
+ with pytest.raises(ValueError, match=msg):
+ rle_encode_frame(ds.pixel_array)
+
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_functional(self):
+ """Test function works OK."""
+ ds = dcmread(EXPL_16_3_1F)
+@@ -436,6 +445,7 @@ class TestRLEEncodeFrame:
+
+ assert np.array_equal(ref, arr)
+
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_big_endian_arr(self):
+ """Test using a big endian array works."""
+ ds = dcmread(EXPL_16_3_1F)
+diff --git a/pydicom/tests/test_filereader.py b/pydicom/tests/test_filereader.py
+index 001a507..b0fc4c9 100644
+--- a/pydicom/tests/test_filereader.py
++++ b/pydicom/tests/test_filereader.py
+@@ -59,45 +59,45 @@ except ImportError:
+ have_jpeg_ls = jpeg_ls is not None
+ have_pillow = PILImg is not None
-empty_number_tags_name = get_testdata_file(
-- "reportsi_with_empty_number_tags.dcm")
+- "reportsi_with_empty_number_tags.dcm"
+-)
-rtplan_name = get_testdata_file("rtplan.dcm")
-rtdose_name = get_testdata_file("rtdose.dcm")
-ct_name = get_testdata_file("CT_small.dcm")
-mr_name = get_testdata_file("MR_small.dcm")
-truncated_mr_name = get_testdata_file("MR_truncated.dcm")
-jpeg2000_name = get_testdata_file("JPEG2000.dcm")
--jpeg2000_lossless_name = get_testdata_file(
-- "MR_small_jp2klossless.dcm")
--jpeg_ls_lossless_name = get_testdata_file(
-- "MR_small_jpeg_ls_lossless.dcm")
+-jpeg2000_embedded_sequence_delimeter_name = get_testdata_file(
+- "JPEG2000-embedded-sequence-delimiter.dcm"
+-)
+-jpeg2000_lossless_name = get_testdata_file("MR_small_jp2klossless.dcm")
+-jpeg_ls_lossless_name = get_testdata_file("MR_small_jpeg_ls_lossless.dcm")
-jpeg_lossy_name = get_testdata_file("JPEG-lossy.dcm")
-jpeg_lossless_name = get_testdata_file("JPEG-LL.dcm")
-deflate_name = get_testdata_file("image_dfl.dcm")
-rtstruct_name = get_testdata_file("rtstruct.dcm")
-priv_SQ_name = get_testdata_file("priv_SQ.dcm")
-nested_priv_SQ_name = get_testdata_file("nested_priv_SQ.dcm")
--meta_missing_tsyntax_name = get_testdata_file(
-- "meta_missing_tsyntax.dcm")
--no_meta_group_length = get_testdata_file(
-- "no_meta_group_length.dcm")
+-meta_missing_tsyntax_name = get_testdata_file("meta_missing_tsyntax.dcm")
+-no_meta_group_length = get_testdata_file("no_meta_group_length.dcm")
-gzip_name = get_testdata_file("zipMR.gz")
-color_px_name = get_testdata_file("color-px.dcm")
-color_pl_name = get_testdata_file("color-pl.dcm")
--explicit_vr_le_no_meta = get_testdata_file(
-- "ExplVR_LitEndNoMeta.dcm")
--explicit_vr_be_no_meta = get_testdata_file(
-- "ExplVR_BigEndNoMeta.dcm")
+-explicit_vr_le_no_meta = get_testdata_file("ExplVR_LitEndNoMeta.dcm")
+-explicit_vr_be_no_meta = get_testdata_file("ExplVR_BigEndNoMeta.dcm")
-emri_name = get_testdata_file("emri_small.dcm")
--emri_big_endian_name = get_testdata_file(
-- "emri_small_big_endian.dcm")
--emri_jpeg_ls_lossless = get_testdata_file(
-- "emri_small_jpeg_ls_lossless.dcm")
--emri_jpeg_2k_lossless = get_testdata_file(
-- "emri_small_jpeg_2k_lossless.dcm")
--color_3d_jpeg_baseline = get_testdata_file(
-- "color3d_jpeg_baseline.dcm")
+-emri_big_endian_name = get_testdata_file("emri_small_big_endian.dcm")
+-emri_jpeg_ls_lossless = get_testdata_file("emri_small_jpeg_ls_lossless.dcm")
+-emri_jpeg_2k_lossless = get_testdata_file("emri_small_jpeg_2k_lossless.dcm")
+-emri_jpeg_2k_lossless_too_short = get_testdata_file(
+- "emri_small_jpeg_2k_lossless_too_short.dcm"
+-)
+-color_3d_jpeg_baseline = get_testdata_file("color3d_jpeg_baseline.dcm")
+#empty_number_tags_name = get_testdata_file(
-+# "reportsi_with_empty_number_tags.dcm")
++# "reportsi_with_empty_number_tags.dcm"
++#)
+#rtplan_name = get_testdata_file("rtplan.dcm")
+#rtdose_name = get_testdata_file("rtdose.dcm")
+#ct_name = get_testdata_file("CT_small.dcm")
+#mr_name = get_testdata_file("MR_small.dcm")
+#truncated_mr_name = get_testdata_file("MR_truncated.dcm")
+#jpeg2000_name = get_testdata_file("JPEG2000.dcm")
-+#jpeg2000_lossless_name = get_testdata_file(
-+# "MR_small_jp2klossless.dcm")
-+#jpeg_ls_lossless_name = get_testdata_file(
-+# "MR_small_jpeg_ls_lossless.dcm")
++#jpeg2000_embedded_sequence_delimeter_name = get_testdata_file(
++# "JPEG2000-embedded-sequence-delimiter.dcm"
++#)
++#jpeg2000_lossless_name = get_testdata_file("MR_small_jp2klossless.dcm")
++#jpeg_ls_lossless_name = get_testdata_file("MR_small_jpeg_ls_lossless.dcm")
+#jpeg_lossy_name = get_testdata_file("JPEG-lossy.dcm")
+#jpeg_lossless_name = get_testdata_file("JPEG-LL.dcm")
+#deflate_name = get_testdata_file("image_dfl.dcm")
+#rtstruct_name = get_testdata_file("rtstruct.dcm")
+#priv_SQ_name = get_testdata_file("priv_SQ.dcm")
+#nested_priv_SQ_name = get_testdata_file("nested_priv_SQ.dcm")
-+#meta_missing_tsyntax_name = get_testdata_file(
-+# "meta_missing_tsyntax.dcm")
-+#no_meta_group_length = get_testdata_file(
-+# "no_meta_group_length.dcm")
++#meta_missing_tsyntax_name = get_testdata_file("meta_missing_tsyntax.dcm")
++#no_meta_group_length = get_testdata_file("no_meta_group_length.dcm")
+#gzip_name = get_testdata_file("zipMR.gz")
+#color_px_name = get_testdata_file("color-px.dcm")
+#color_pl_name = get_testdata_file("color-pl.dcm")
-+#explicit_vr_le_no_meta = get_testdata_file(
-+# "ExplVR_LitEndNoMeta.dcm")
-+#explicit_vr_be_no_meta = get_testdata_file(
-+# "ExplVR_BigEndNoMeta.dcm")
++#explicit_vr_le_no_meta = get_testdata_file("ExplVR_LitEndNoMeta.dcm")
++#explicit_vr_be_no_meta = get_testdata_file("ExplVR_BigEndNoMeta.dcm")
+#emri_name = get_testdata_file("emri_small.dcm")
-+#emri_big_endian_name = get_testdata_file(
-+# "emri_small_big_endian.dcm")
-+#emri_jpeg_ls_lossless = get_testdata_file(
-+# "emri_small_jpeg_ls_lossless.dcm")
-+#emri_jpeg_2k_lossless = get_testdata_file(
-+# "emri_small_jpeg_2k_lossless.dcm")
-+#color_3d_jpeg_baseline = get_testdata_file(
-+# "color3d_jpeg_baseline.dcm")
++#emri_big_endian_name = get_testdata_file("emri_small_big_endian.dcm")
++#emri_jpeg_ls_lossless = get_testdata_file("emri_small_jpeg_ls_lossless.dcm")
++#emri_jpeg_2k_lossless = get_testdata_file("emri_small_jpeg_2k_lossless.dcm")
++#emri_jpeg_2k_lossless_too_short = get_testdata_file(
++# "emri_small_jpeg_2k_lossless_too_short.dcm"
++#)
++#color_3d_jpeg_baseline = get_testdata_file("color3d_jpeg_baseline.dcm")
dir_name = os.path.dirname(sys.argv[0])
save_dir = os.getcwd()
-@@ -67,6 +67,7 @@ SUPPORTED_HANDLER_NAMES = (
- 'jpegls', 'jpeg_ls', 'JPEG_LS', 'jpegls_handler', 'JPEG_LS_Handler'
- )
+-
++ at pytest.mark.skip("When building a Debian package we can not download anything")
+ class TestReader:
+ def test_empty_numbers_tag(self):
+ """Test that an empty tag with a number VR (FL, UL, SL, US,
+@@ -1376,6 +1376,7 @@ class TestDSISnumpy:
+ config.DS_decimal(orig_DS_decimal)
+ config.DS_numpy(orig_DS_numpy)
-+ at pytest.mark.skip("Ignore test due to wrong gdcm usage. (See https://lists.debian.org/debian-med/2021/12/msg00061.html)")
- class TestJPEGLS_no_jpeg_ls:
- def setup_method(self):
- self.jpeg_ls_lossless = dcmread(jpeg_ls_lossless_name)
-@@ -84,6 +85,7 @@ class TestJPEGLS_no_jpeg_ls:
- self.jpeg_ls_lossless.pixel_array
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ @pytest.mark.skipif(have_numpy, reason="Testing import error")
+ def test_IS_numpy_import_error(self):
+ config.use_IS_numpy = True
+@@ -1384,6 +1385,7 @@ class TestDSISnumpy:
+ with pytest.raises(ImportError):
+ rtss.ROIContourSequence[0].ROIDisplayColor # VR is IS
+
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ @pytest.mark.skipif(not have_numpy, reason="Testing with numpy only")
+ def test_IS_numpy_class(self):
+ config.use_IS_numpy = True
+@@ -1396,6 +1398,7 @@ class TestDSISnumpy:
+ roi_num = rtss.ROIContourSequence[0].ReferencedROINumber
+ assert isinstance(roi_num, numpy.int64)
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_IS_not_numpy(self):
+ """Test class of the object matches the config,
+ when the config is changed"""
+@@ -1404,6 +1407,7 @@ class TestDSISnumpy:
+ col = rtss.ROIContourSequence[0].ROIDisplayColor # VR is IS
+ assert isinstance(col, MultiValue)
-+ at pytest.mark.skip("Ignore test due to wrong gdcm usage. (See https://lists.debian.org/debian-med/2021/12/msg00061.html)")
- class TestJPEGLS_JPEG2000_no_jpeg_ls:
- def setup_method(self):
- self.jpeg_2k = dcmread(jpeg2000_name)
-@@ -108,6 +110,7 @@ class TestJPEGLS_JPEG2000_no_jpeg_ls:
- self.emri_jpeg_2k_lossless.pixel_array
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ @pytest.mark.skipif(have_numpy, reason="Testing import error")
+ def test_DS_numpy_import_error(self):
+ config.use_DS_numpy = True
+@@ -1412,6 +1416,7 @@ class TestDSISnumpy:
+ with pytest.raises(ImportError):
+ rtss.ROIContourSequence[0].ContourSequence[0].ContourData
+
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ @pytest.mark.skipif(not have_numpy, reason="Testing with numpy only")
+ def test_DS_numpy_class(self):
+ config.use_DS_numpy = True
+@@ -1425,6 +1430,7 @@ class TestDSISnumpy:
+ roi_vol = rtss.StructureSetROISequence[0].ROIVolume
+ assert isinstance(roi_vol, numpy.float64)
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_DS_not_numpy(self):
+ """Test class of the object matches the config."""
+ config.use_DS_numpy = False
+@@ -1468,6 +1474,7 @@ class TestDSISnumpy:
+ values.convert_IS_string(b"123", True)
-+ at pytest.mark.skip("Ignore test due to wrong gdcm usage. (See https://lists.debian.org/debian-med/2021/12/msg00061.html)")
- class TestJPEGLS_JPEGlossy_no_jpeg_ls:
- def setup_method(self):
- self.jpeg_lossy = dcmread(jpeg_lossy_name)
-@@ -133,6 +136,7 @@ class TestJPEGLS_JPEGlossy_no_jpeg_ls:
- self.color_3d_jpeg.pixel_array
++ at pytest.mark.skip("When building a Debian package we can not download anything")
+ class TestDeferredRead:
+ """Test that deferred data element reading (for large size)
+ works as expected
+@@ -1537,6 +1544,7 @@ class TestDeferredRead:
+ assert 2068 == len(private_block[0x29].value)
-+ at pytest.mark.skip("Ignore test due to wrong gdcm usage. (See https://lists.debian.org/debian-med/2021/12/msg00061.html)")
- class TestJPEGLS_JPEGlossless_no_jpeg_ls:
- def setup_method(self):
- self.jpeg_lossless = dcmread(jpeg_lossless_name)
-@@ -156,6 +160,7 @@ class TestJPEGLS_JPEGlossless_no_jpeg_ls
- self.jpeg_lossless.pixel_array
++ at pytest.mark.skip("When building a Debian package we can not download anything")
+ class TestReadTruncatedFile:
+ def testReadFileWithMissingPixelData(self):
+ mr = dcmread(truncated_mr_name)
+@@ -1569,6 +1577,7 @@ class TestReadTruncatedFile:
+ mr.pixel_array
-+ at pytest.mark.skip("Ignore test due to wrong gdcm usage. (See https://lists.debian.org/debian-med/2021/12/msg00061.html)")
- @pytest.mark.skipif(not test_jpeg_ls_decoder, reason=jpeg_ls_missing_message)
- class TestJPEGLS_JPEG_LS_with_jpeg_ls:
- def setup_method(self):
-@@ -189,6 +194,7 @@ class TestJPEGLS_JPEG_LS_with_jpeg_ls:
- assert b.mean() == a.mean()
++ at pytest.mark.skip("When building a Debian package we can not download anything")
+ class TestFileLike:
+ """Test that can read DICOM files with file-like object rather than
+ filename
+diff --git a/pydicom/tests/test_filewriter.py b/pydicom/tests/test_filewriter.py
+index 606a02f..baaee9a 100644
+--- a/pydicom/tests/test_filewriter.py
++++ b/pydicom/tests/test_filewriter.py
+@@ -246,6 +246,7 @@ class TestWriteFile:
+ ds = dcmread(fp, force=True)
+ assert ds[0xFFFFFFFF].value == b'123456'
-+ at pytest.mark.skip("Ignore test due to wrong gdcm usage. (See https://lists.debian.org/debian-med/2021/12/msg00061.html)")
- @pytest.mark.skipif(not test_jpeg_ls_decoder, reason=jpeg_ls_missing_message)
- class TestJPEGLS_JPEG2000_with_jpeg_ls:
- def setup_method(self):
-@@ -212,6 +218,7 @@ class TestJPEGLS_JPEG2000_with_jpeg_ls:
- self.emri_jpeg_2k_lossless.pixel_array
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_write_removes_grouplength(self):
+ ds = dcmread(color_pl_name)
+ assert 0x00080000 in ds
+@@ -1395,6 +1396,7 @@ class TestWriteToStandard:
+ assert ds.get_item(0x300A0006).is_raw # RT Plan Date
+ assert ds.get_item(0x300A0010).is_raw # Dose Reference Sequence
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_raw_elements_preserved_explicit_vr(self):
+ """Test writing the dataset preserves raw elements."""
+ ds = dcmread(color_pl_name)
+@@ -1583,6 +1585,7 @@ class TestWriteToStandard:
+ assert ds_expl[(0x0009, 0x10e7)].VR == 'UL'
+ assert ds_expl[(0x0043, 0x1010)].VR == 'US'
-+ at pytest.mark.skip("Ignore test due to wrong gdcm usage. (See https://lists.debian.org/debian-med/2021/12/msg00061.html)")
- @pytest.mark.skipif(not test_jpeg_ls_decoder, reason=jpeg_ls_missing_message)
- class TestJPEGLS_JPEGlossy_with_jpeg_ls:
- def setup_method(self):
-@@ -237,6 +244,7 @@ class TestJPEGLS_JPEGlossy_with_jpeg_ls:
- self.color_3d_jpeg.pixel_array
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_convert_rgb_from_implicit_to_explicit_vr(self, no_numpy_use):
+ """Test converting an RGB dataset from implicit to explicit VR
+ and vice verse."""
+diff --git a/pydicom/tests/test_gdcm_pixel_data.py b/pydicom/tests/test_gdcm_pixel_data.py
+index 2426753..398c83b 100644
+--- a/pydicom/tests/test_gdcm_pixel_data.py
++++ b/pydicom/tests/test_gdcm_pixel_data.py
+@@ -18,7 +18,7 @@ except ImportError:
+ import pydicom
+ from pydicom.filereader import dcmread
+-from pydicom.data import get_testdata_file
++#from pydicom.data import get_testdata_file
+ from pydicom.encaps import defragment_data
+ from pydicom.pixel_data_handlers import numpy_handler, gdcm_handler
+ from pydicom.pixel_data_handlers.util import (
+@@ -43,59 +43,60 @@ gdcm_im_missing_message = (
+ )
-+ at pytest.mark.skip("Ignore test due to wrong gdcm usage. (See https://lists.debian.org/debian-med/2021/12/msg00061.html)")
- @pytest.mark.skipif(not test_jpeg_ls_decoder, reason=jpeg_ls_missing_message)
- class TestJPEGLS_JPEGlossless_with_jpeg_ls:
- def setup_method(self):
---- a/pydicom/tests/test_filereader.py
-+++ b/pydicom/tests/test_filereader.py
-@@ -59,45 +59,45 @@ except ImportError:
- have_jpeg_ls = jpeg_ls is not None
- have_pillow = PILImg is not None
-empty_number_tags_name = get_testdata_file(
-- "reportsi_with_empty_number_tags.dcm"
--)
+- "reportsi_with_empty_number_tags.dcm")
-rtplan_name = get_testdata_file("rtplan.dcm")
-rtdose_name = get_testdata_file("rtdose.dcm")
-ct_name = get_testdata_file("CT_small.dcm")
-mr_name = get_testdata_file("MR_small.dcm")
-truncated_mr_name = get_testdata_file("MR_truncated.dcm")
-jpeg2000_name = get_testdata_file("JPEG2000.dcm")
--jpeg2000_embedded_sequence_delimeter_name = get_testdata_file(
-- "JPEG2000-embedded-sequence-delimiter.dcm"
--)
-jpeg2000_lossless_name = get_testdata_file("MR_small_jp2klossless.dcm")
-jpeg_ls_lossless_name = get_testdata_file("MR_small_jpeg_ls_lossless.dcm")
-jpeg_lossy_name = get_testdata_file("JPEG-lossy.dcm")
-jpeg_lossless_name = get_testdata_file("JPEG-LL.dcm")
+-jpeg_lossless_odd_data_size_name = get_testdata_file(
+- 'SC_rgb_small_odd_jpeg.dcm')
-deflate_name = get_testdata_file("image_dfl.dcm")
-rtstruct_name = get_testdata_file("rtstruct.dcm")
-priv_SQ_name = get_testdata_file("priv_SQ.dcm")
@@ -1907,28 +797,41 @@ Description: Several data files need to be downloaded which is not possible at p
-explicit_vr_be_no_meta = get_testdata_file("ExplVR_BigEndNoMeta.dcm")
-emri_name = get_testdata_file("emri_small.dcm")
-emri_big_endian_name = get_testdata_file("emri_small_big_endian.dcm")
--emri_jpeg_ls_lossless = get_testdata_file("emri_small_jpeg_ls_lossless.dcm")
--emri_jpeg_2k_lossless = get_testdata_file("emri_small_jpeg_2k_lossless.dcm")
--emri_jpeg_2k_lossless_too_short = get_testdata_file(
-- "emri_small_jpeg_2k_lossless_too_short.dcm"
--)
+-emri_jpeg_ls_lossless = get_testdata_file(
+- "emri_small_jpeg_ls_lossless.dcm")
+-emri_jpeg_2k_lossless = get_testdata_file(
+- "emri_small_jpeg_2k_lossless.dcm")
-color_3d_jpeg_baseline = get_testdata_file("color3d_jpeg_baseline.dcm")
+-sc_rgb_jpeg_dcmtk_411_YBR_FULL_422 = get_testdata_file(
+- "SC_rgb_dcmtk_+eb+cy+np.dcm")
+-sc_rgb_jpeg_dcmtk_411_YBR_FULL = get_testdata_file(
+- "SC_rgb_dcmtk_+eb+cy+n1.dcm")
+-sc_rgb_jpeg_dcmtk_422_YBR_FULL = get_testdata_file(
+- "SC_rgb_dcmtk_+eb+cy+n2.dcm")
+-sc_rgb_jpeg_dcmtk_444_YBR_FULL = get_testdata_file(
+- "SC_rgb_dcmtk_+eb+cy+s4.dcm")
+-sc_rgb_jpeg_dcmtk_422_YBR_FULL_422 = get_testdata_file(
+- "SC_rgb_dcmtk_+eb+cy+s2.dcm")
+-sc_rgb_jpeg_dcmtk_RGB = get_testdata_file("SC_rgb_dcmtk_+eb+cr.dcm")
+-sc_rgb_jpeg2k_gdcm_KY = get_testdata_file("SC_rgb_gdcm_KY.dcm")
+-ground_truth_sc_rgb_jpeg2k_gdcm_KY_gdcm = get_testdata_file(
+- "SC_rgb_gdcm2k_uncompressed.dcm"
+-)
+-J2KR_16_13_1_1_1F_M2_MISMATCH = get_testdata_file("J2K_pixelrep_mismatch.dcm")
+#empty_number_tags_name = get_testdata_file(
-+# "reportsi_with_empty_number_tags.dcm"
-+#)
++# "reportsi_with_empty_number_tags.dcm")
+#rtplan_name = get_testdata_file("rtplan.dcm")
+#rtdose_name = get_testdata_file("rtdose.dcm")
+#ct_name = get_testdata_file("CT_small.dcm")
+#mr_name = get_testdata_file("MR_small.dcm")
+#truncated_mr_name = get_testdata_file("MR_truncated.dcm")
+#jpeg2000_name = get_testdata_file("JPEG2000.dcm")
-+#jpeg2000_embedded_sequence_delimeter_name = get_testdata_file(
-+# "JPEG2000-embedded-sequence-delimiter.dcm"
-+#)
+#jpeg2000_lossless_name = get_testdata_file("MR_small_jp2klossless.dcm")
+#jpeg_ls_lossless_name = get_testdata_file("MR_small_jpeg_ls_lossless.dcm")
+#jpeg_lossy_name = get_testdata_file("JPEG-lossy.dcm")
+#jpeg_lossless_name = get_testdata_file("JPEG-LL.dcm")
++#jpeg_lossless_odd_data_size_name = get_testdata_file(
++# 'SC_rgb_small_odd_jpeg.dcm')
+#deflate_name = get_testdata_file("image_dfl.dcm")
+#rtstruct_name = get_testdata_file("rtstruct.dcm")
+#priv_SQ_name = get_testdata_file("priv_SQ.dcm")
@@ -1942,1585 +845,2745 @@ Description: Several data files need to be downloaded which is not possible at p
+#explicit_vr_be_no_meta = get_testdata_file("ExplVR_BigEndNoMeta.dcm")
+#emri_name = get_testdata_file("emri_small.dcm")
+#emri_big_endian_name = get_testdata_file("emri_small_big_endian.dcm")
-+#emri_jpeg_ls_lossless = get_testdata_file("emri_small_jpeg_ls_lossless.dcm")
-+#emri_jpeg_2k_lossless = get_testdata_file("emri_small_jpeg_2k_lossless.dcm")
-+#emri_jpeg_2k_lossless_too_short = get_testdata_file(
-+# "emri_small_jpeg_2k_lossless_too_short.dcm"
-+#)
++#emri_jpeg_ls_lossless = get_testdata_file(
++# "emri_small_jpeg_ls_lossless.dcm")
++#emri_jpeg_2k_lossless = get_testdata_file(
++# "emri_small_jpeg_2k_lossless.dcm")
+#color_3d_jpeg_baseline = get_testdata_file("color3d_jpeg_baseline.dcm")
++#sc_rgb_jpeg_dcmtk_411_YBR_FULL_422 = get_testdata_file(
++# "SC_rgb_dcmtk_+eb+cy+np.dcm")
++#sc_rgb_jpeg_dcmtk_411_YBR_FULL = get_testdata_file(
++# "SC_rgb_dcmtk_+eb+cy+n1.dcm")
++#sc_rgb_jpeg_dcmtk_422_YBR_FULL = get_testdata_file(
++# "SC_rgb_dcmtk_+eb+cy+n2.dcm")
++#sc_rgb_jpeg_dcmtk_444_YBR_FULL = get_testdata_file(
++# "SC_rgb_dcmtk_+eb+cy+s4.dcm")
++#sc_rgb_jpeg_dcmtk_422_YBR_FULL_422 = get_testdata_file(
++# "SC_rgb_dcmtk_+eb+cy+s2.dcm")
++#sc_rgb_jpeg_dcmtk_RGB = get_testdata_file("SC_rgb_dcmtk_+eb+cr.dcm")
++#sc_rgb_jpeg2k_gdcm_KY = get_testdata_file("SC_rgb_gdcm_KY.dcm")
++#ground_truth_sc_rgb_jpeg2k_gdcm_KY_gdcm = get_testdata_file(
++# "SC_rgb_gdcm2k_uncompressed.dcm"
++#)
++#J2KR_16_13_1_1_1F_M2_MISMATCH = get_testdata_file("J2K_pixelrep_mismatch.dcm")
+
dir_name = os.path.dirname(sys.argv[0])
save_dir = os.getcwd()
+
++ at pytest.mark.skip("When building a Debian package we can not download anything")
+ class TestGDCM_JPEG_LS_no_gdcm:
+ def setup_method(self):
+ self.unicode_filename = os.path.join(
+@@ -121,6 +122,7 @@ class TestGDCM_JPEG_LS_no_gdcm:
+ self.emri_jpeg_ls_lossless.pixel_array
+
+
++ at pytest.mark.skip("When building a Debian package we can not download anything")
+ class TestGDCM_JPEG2000_no_gdcm:
+ def setup_method(self):
+ self.jpeg_2k = dcmread(jpeg2000_name)
+@@ -184,6 +186,7 @@ class TestGDCM_JPEGlossy_no_gdcm:
+ self.color_3d_jpeg.pixel_array
+
+
++ at pytest.mark.skip("When building a Debian package we can not download anything")
+ class TestGDCM_JPEGlossless_no_gdcm:
+ def setup_method(self):
+ self.jpeg_lossless = dcmread(jpeg_lossless_name)
+@@ -208,115 +211,6 @@ class TestGDCM_JPEGlossless_no_gdcm:
+ self.jpeg_lossless.pixel_array
+
+
+-pi_rgb_test_ids = [
+- "JPEG_RGB_411_AS_YBR_FULL",
+- "JPEG_RGB_411_AS_YBR_FULL_422",
+- "JPEG_RGB_422_AS_YBR_FULL",
+- "JPEG_RGB_422_AS_YBR_FULL_422",
+- "JPEG_RGB_444_AS_YBR_FULL",
+-]
+-
+-pi_rgb_testdata = [
+- pytest.param(
+- sc_rgb_jpeg_dcmtk_411_YBR_FULL,
+- "YBR_FULL",
+- [
+- (253, 1, 0),
+- (253, 128, 132),
+- (0, 255, 5),
+- (127, 255, 127),
+- (1, 0, 254),
+- (127, 128, 255),
+- (0, 0, 0),
+- (64, 64, 64),
+- (192, 192, 192),
+- (255, 255, 255),
+- ],
+- True,
+- ),
+- pytest.param(
+- sc_rgb_jpeg_dcmtk_411_YBR_FULL_422,
+- "YBR_FULL_422",
+- [
+- (253, 1, 0),
+- (253, 128, 132),
+- (0, 255, 5),
+- (127, 255, 127),
+- (1, 0, 254),
+- (127, 128, 255),
+- (0, 0, 0),
+- (64, 64, 64),
+- (192, 192, 192),
+- (255, 255, 255),
+- ],
+- True,
+- ),
+- pytest.param(
+- sc_rgb_jpeg_dcmtk_422_YBR_FULL,
+- "YBR_FULL",
+- [
+- (254, 0, 0),
+- (255, 127, 127),
+- (0, 255, 5),
+- (129, 255, 129),
+- (0, 0, 254),
+- (128, 127, 255),
+- (0, 0, 0),
+- (64, 64, 64),
+- (192, 192, 192),
+- (255, 255, 255),
+- ],
+- True,
+- ),
+- pytest.param(
+- sc_rgb_jpeg_dcmtk_422_YBR_FULL_422,
+- "YBR_FULL_422",
+- [
+- (254, 0, 0),
+- (255, 127, 127),
+- (0, 255, 5),
+- (129, 255, 129),
+- (0, 0, 254),
+- (128, 127, 255),
+- (0, 0, 0),
+- (64, 64, 64),
+- (192, 192, 192),
+- (255, 255, 255),
+- ],
+- True,
+- ),
+- pytest.param(
+- sc_rgb_jpeg_dcmtk_444_YBR_FULL,
+- "YBR_FULL",
+- [
+- (254, 0, 0),
+- (255, 127, 127),
+- (0, 255, 5),
+- (129, 255, 129),
+- (0, 0, 254),
+- (128, 127, 255),
+- (0, 0, 0),
+- (64, 64, 64),
+- (192, 192, 192),
+- (255, 255, 255),
+- ],
+- True,
+- )
+-]
+-
+-with_gdcm_params = [
+- pytest.param(
+- 'File',
+- marks=pytest.mark.skipif(not HAVE_GDCM, reason=gdcm_missing_message)
+- ),
+- pytest.param(
+- 'InMemory',
+- marks=pytest.mark.skipif(
+- not HAVE_GDCM_IN_MEMORY_SUPPORT, reason=gdcm_im_missing_message
+- )
+- )
+-]
-
-+ at pytest.mark.skip("When building a Debian package we can not download anything")
- class TestReader:
- def test_empty_numbers_tag(self):
- """Test that an empty tag with a number VR (FL, UL, SL, US,
-@@ -1376,6 +1376,7 @@ class TestDSISnumpy:
- config.DS_decimal(orig_DS_decimal)
- config.DS_numpy(orig_DS_numpy)
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- @pytest.mark.skipif(have_numpy, reason="Testing import error")
- def test_IS_numpy_import_error(self):
- config.use_IS_numpy = True
-@@ -1384,6 +1385,7 @@ class TestDSISnumpy:
- with pytest.raises(ImportError):
- rtss.ROIContourSequence[0].ROIDisplayColor # VR is IS
+ class TestsWithGDCM:
+ @pytest.fixture(params=with_gdcm_params, scope='class', autouse=True)
+@@ -481,9 +375,10 @@ class TestsWithGDCM:
+ assert (57, 57, 57) == tuple(a[3, 169, 290, :])
+ assert "YBR_FULL_422" == color_3d_jpeg.PhotometricInterpretation
+- @pytest.mark.parametrize(
+- "image,pi,results,convert_yuv_to_rgb",
+- pi_rgb_testdata, ids=pi_rgb_test_ids)
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- @pytest.mark.skipif(not have_numpy, reason="Testing with numpy only")
- def test_IS_numpy_class(self):
- config.use_IS_numpy = True
-@@ -1396,6 +1398,7 @@ class TestDSISnumpy:
- roi_num = rtss.ROIContourSequence[0].ReferencedROINumber
- assert isinstance(roi_num, numpy.int64)
++ #@pytest.mark.parametrize(
++ # "image,pi,results,convert_yuv_to_rgb",
++ # pi_rgb_testdata, ids=pi_rgb_test_ids)
+ def test_PI_RGB(self, image, pi, results, convert_yuv_to_rgb):
+ t = dcmread(image)
+ assert t.PhotometricInterpretation == pi
+@@ -541,7 +436,7 @@ class TestsWithGDCM:
+ arr[328:338, 106].tolist()
+ )
+
+-
++ at pytest.mark.skip("When building a Debian package we can not download anything")
+ class TestSupportFunctions:
+ @pytest.fixture(scope='class')
+ def dataset_2d(self):
+diff --git a/pydicom/tests/test_handler_util.py b/pydicom/tests/test_handler_util.py
+index d1dc102..ea71f67 100644
+--- a/pydicom/tests/test_handler_util.py
++++ b/pydicom/tests/test_handler_util.py
+@@ -43,32 +43,32 @@ from pydicom.uid import (
+ )
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_IS_not_numpy(self):
- """Test class of the object matches the config,
- when the config is changed"""
-@@ -1404,6 +1407,7 @@ class TestDSISnumpy:
- col = rtss.ROIContourSequence[0].ROIDisplayColor # VR is IS
- assert isinstance(col, MultiValue)
+
+-# PAL: PALETTE COLOR Photometric Interpretation
+-# SEG: Segmented Palette Color
+-# SUP: Supplemental Palette Color
+-# LE, BE: little endian, big endian encoding
+-# 8/8, 1 sample/pixel, 1 frame
+-PAL_08_256_0_16_1F = get_testdata_file("OBXXXX1A.dcm")
+-PAL_08_200_0_16_1F = get_testdata_file("OT-PAL-8-face.dcm")
+-# 8/8, 1 sample/pixel, 2 frame
+-PAL_08_256_0_16_2F = get_testdata_file("OBXXXX1A_2frame.dcm")
+-# PALETTE COLOR with 16-bit LUTs (no indirect segments)
+-PAL_SEG_LE_16_1F = get_testdata_file("gdcm-US-ALOKA-16.dcm")
+-PAL_SEG_BE_16_1F = get_testdata_file("gdcm-US-ALOKA-16_big.dcm")
+-# Supplemental palette colour + VOI windowing
+-SUP_16_16_2F = get_testdata_file("eCT_Supplemental.dcm")
+-# 8 bit, 3 samples/pixel, 1 and 2 frame datasets
+-# RGB colorspace, uncompressed
+-RGB_8_3_1F = get_testdata_file("SC_rgb.dcm")
+-RGB_8_3_2F = get_testdata_file("SC_rgb_2frame.dcm")
+-# MOD: Modality LUT
+-# SEQ: Modality LUT Sequence
+-MOD_16 = get_testdata_file("CT_small.dcm")
+-MOD_16_SEQ = get_testdata_file("mlut_18.dcm")
+-# VOI: VOI LUT Sequence
+-# WIN: Windowing operation
+-WIN_12_1F = get_testdata_file("MR-SIEMENS-DICOM-WithOverlays.dcm")
+-VOI_08_1F = get_testdata_file("vlut_04.dcm")
++## PAL: PALETTE COLOR Photometric Interpretation
++## SEG: Segmented Palette Color
++## SUP: Supplemental Palette Color
++## LE, BE: little endian, big endian encoding
++## 8/8, 1 sample/pixel, 1 frame
++#PAL_08_256_0_16_1F = get_testdata_file("OBXXXX1A.dcm")
++#PAL_08_200_0_16_1F = get_testdata_file("OT-PAL-8-face.dcm")
++## 8/8, 1 sample/pixel, 2 frame
++#PAL_08_256_0_16_2F = get_testdata_file("OBXXXX1A_2frame.dcm")
++## PALETTE COLOR with 16-bit LUTs (no indirect segments)
++#PAL_SEG_LE_16_1F = get_testdata_file("gdcm-US-ALOKA-16.dcm")
++#PAL_SEG_BE_16_1F = get_testdata_file("gdcm-US-ALOKA-16_big.dcm")
++## Supplemental palette colour + VOI windowing
++#SUP_16_16_2F = get_testdata_file("eCT_Supplemental.dcm")
++## 8 bit, 3 samples/pixel, 1 and 2 frame datasets
++## RGB colorspace, uncompressed
++#RGB_8_3_1F = get_testdata_file("SC_rgb.dcm")
++#RGB_8_3_2F = get_testdata_file("SC_rgb_2frame.dcm")
++## MOD: Modality LUT
++## SEQ: Modality LUT Sequence
++#MOD_16 = get_testdata_file("CT_small.dcm")
++#MOD_16_SEQ = get_testdata_file("mlut_18.dcm")
++## VOI: VOI LUT Sequence
++## WIN: Windowing operation
++#WIN_12_1F = get_testdata_file("MR-SIEMENS-DICOM-WithOverlays.dcm")
++#VOI_08_1F = get_testdata_file("vlut_04.dcm")
+ # 1/1, 1 sample/pixel, 3 frame
+ EXPL_1_1_3F = get_testdata_file("liver.dcm")
+ # Uncompressed YBR_FULL_422
+@@ -568,6 +568,7 @@ class TestNumpy_ConvertColourSpace:
+ arr = np.ones((2, 3))
+ assert np.array_equal(arr, convert_color_space(arr, current, desired))
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- @pytest.mark.skipif(have_numpy, reason="Testing import error")
- def test_DS_numpy_import_error(self):
- config.use_DS_numpy = True
-@@ -1412,6 +1416,7 @@ class TestDSISnumpy:
- with pytest.raises(ImportError):
- rtss.ROIContourSequence[0].ContourSequence[0].ContourData
+ def test_rgb_ybr_rgb_single_frame(self):
+ """Test round trip conversion of single framed pixel data."""
+ ds = dcmread(RGB_8_3_1F)
+@@ -602,6 +603,7 @@ class TestNumpy_ConvertColourSpace:
+ assert np.allclose(rgb, arr, atol=1)
+ assert rgb.shape == arr.shape
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- @pytest.mark.skipif(not have_numpy, reason="Testing with numpy only")
- def test_DS_numpy_class(self):
- config.use_DS_numpy = True
-@@ -1425,6 +1430,7 @@ class TestDSISnumpy:
- roi_vol = rtss.StructureSetROISequence[0].ROIVolume
- assert isinstance(roi_vol, numpy.float64)
+ def test_rgb_ybr_rgb_multi_frame(self):
+ """Test round trip conversion of multi-framed pixel data."""
+ ds = dcmread(RGB_8_3_2F)
+@@ -649,6 +651,7 @@ class TestNumpy_ConvertColourSpace:
+ assert np.allclose(rgb, arr, atol=1)
+ assert rgb.shape == arr.shape
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_DS_not_numpy(self):
- """Test class of the object matches the config."""
- config.use_DS_numpy = False
-@@ -1468,6 +1474,7 @@ class TestDSISnumpy:
- values.convert_IS_string(b"123", True)
+ def test_frame_by_frame(self):
+ """Test processing frame-by-frame."""
+ ds = dcmread(RGB_8_3_2F)
+@@ -828,6 +831,7 @@ class TestGetExpectedLength:
+ assert length[2] == get_expected_length(ds, unit='bytes')
+ at pytest.mark.skip("When building a Debian package we can not download anything")
- class TestDeferredRead:
- """Test that deferred data element reading (for large size)
- works as expected
-@@ -1537,6 +1544,7 @@ class TestDeferredRead:
- assert 2068 == len(private_block[0x29].value)
+ @pytest.mark.skipif(not HAVE_NP, reason="Numpy is not available")
+ class TestNumpy_ModalityLUT:
+ """Tests for util.apply_modality_lut()."""
+@@ -848,6 +852,7 @@ class TestNumpy_ModalityLUT:
+ out = apply_modality_lut(arr, ds)
+ assert np.array_equal(arr * 2.5 - 2048, out)
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_lut_sequence(self):
+ """Test the LUT Sequence transform."""
+ ds = dcmread(MOD_16_SEQ)
+@@ -875,6 +880,7 @@ class TestNumpy_ModalityLUT:
+ assert 52428 == out[228, 385]
+ assert 58974 == out[291, 385]
-+ at pytest.mark.skip("When building a Debian package we can not download anything")
- class TestReadTruncatedFile:
- def testReadFileWithMissingPixelData(self):
- mr = dcmread(truncated_mr_name)
-@@ -1569,6 +1577,7 @@ class TestReadTruncatedFile:
- mr.pixel_array
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_lut_sequence_zero_entries(self):
+ """Test that 0 entries is interpreted correctly."""
+ # LUTDescriptor[0] of 0 -> 65536, but only 4096 entries so any
+@@ -906,6 +912,7 @@ class TestNumpy_ModalityLUT:
+ out = apply_modality_lut(arr, ds)
+ assert arr is out
+
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_lutdata_ow(self):
+ """Test LUT Data with VR OW."""
+ ds = dcmread(MOD_16_SEQ)
+@@ -950,6 +957,7 @@ class TestNumpy_PaletteColor:
+ if os.path.exists(self.n_palette):
+ os.rename(self.n_palette, self.o_palette)
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_neither_ds_nor_palette_raises(self):
+ """Test missing `ds` and `palette` raise an exception."""
+ ds = dcmread(PAL_08_256_0_16_1F)
+@@ -957,6 +965,7 @@ class TestNumpy_PaletteColor:
+ with pytest.raises(ValueError, match=msg):
+ apply_color_lut(ds.pixel_array)
-+ at pytest.mark.skip("When building a Debian package we can not download anything")
- class TestFileLike:
- """Test that can read DICOM files with file-like object rather than
- filename
---- a/pydicom/tests/test_cli.py
-+++ b/pydicom/tests/test_cli.py
-@@ -31,6 +31,7 @@ bad_indexes = (
- )
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_palette_unknown_raises(self, disable_value_validation):
+ """Test using an unknown `palette` raise an exception."""
+ ds = dcmread(PAL_08_256_0_16_1F)
+@@ -970,6 +979,7 @@ class TestNumpy_PaletteColor:
+ with pytest.raises(ValueError, match=msg):
+ apply_color_lut(ds.pixel_array, palette='1.2.840.10008.1.1')
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_palette_unavailable_raises(self, disable_value_validation):
+ """Test using a missing `palette` raise an exception."""
+ os.rename(self.o_palette, self.n_palette)
+@@ -978,6 +988,7 @@ class TestNumpy_PaletteColor:
+ with pytest.raises(IndexError, match=msg):
+ apply_color_lut(ds.pixel_array, palette='PET')
-+ at pytest.mark.skip("When building a Debian package we can not download anything")
- class TestFilespec:
- @pytest.mark.parametrize("bad_spec", bad_elem_specs)
- def test_syntax(self, bad_spec):
-@@ -76,6 +77,7 @@ class TestFilespec:
- assert expected == filespec_parts(filespec)
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_supplemental_raises(self):
+ """Test that supplemental palette color LUT raises exception."""
+ ds = dcmread(SUP_16_16_2F)
+@@ -988,6 +999,7 @@ class TestNumpy_PaletteColor:
+ with pytest.raises(ValueError, match=msg):
+ apply_color_lut(ds.pixel_array, ds)
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_invalid_bit_depth_raises(self):
+ """Test that an invalid bit depth raises an exception."""
+ ds = dcmread(PAL_08_256_0_16_1F)
+@@ -996,6 +1008,7 @@ class TestNumpy_PaletteColor:
+ with pytest.raises(TypeError, match=msg):
+ apply_color_lut(ds.pixel_array, ds)
-+ at pytest.mark.skip("When building a Debian package we can not download anything")
- class TestFilespecElementEval:
- # Load plan once
- plan, _ = filespec_parser("pydicom::rtplan.dcm")[0]
-@@ -121,6 +123,7 @@ class TestCLIcall:
- out, _ = capsys.readouterr()
- assert out.startswith("usage: pydicom [-h] {")
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_invalid_lut_bit_depth_raises(self):
+ """Test that an invalid LUT bit depth raises an exception."""
+ ds = dcmread(PAL_08_256_0_16_1F)
+@@ -1015,6 +1028,7 @@ class TestNumpy_PaletteColor:
+ with pytest.raises(ValueError, match=msg):
+ apply_color_lut(ds.pixel_array, ds)
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_codify_command(self, capsys):
- """CLI `codify` command prints correct output"""
-
-@@ -134,6 +137,7 @@ class TestCLIcall:
- out, _ = capsys.readouterr()
- assert "add_new((0x0001, 0x0001)" not in out
+ def test_unequal_lut_length_raises(self):
+ """Test that an unequal LUT lengths raise an exception."""
+ ds = dcmread(PAL_08_256_0_16_1F)
+@@ -1025,6 +1039,7 @@ class TestNumpy_PaletteColor:
+ with pytest.raises(ValueError, match=msg):
+ apply_color_lut(ds.pixel_array, ds)
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_codify_data_element(self, capsys):
- """CLI `codify` command raises error if not a Dataset"""
- with pytest.raises(NotImplementedError):
-@@ -146,6 +150,7 @@ class TestCLIcall:
- assert out.startswith("# -*- coding: utf-8 -*-")
- assert "Buc^J?r?me" in out
+ def test_no_palette_color(self):
+ """Test that an unequal LUT lengths raise an exception."""
+ ds = dcmread(PAL_08_256_0_16_1F)
+@@ -1033,6 +1048,7 @@ class TestNumpy_PaletteColor:
+ with pytest.raises(ValueError, match=msg):
+ apply_color_lut(ds.pixel_array, ds)
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_help(self, capsys):
- """CLI `help` command gives expected output"""
- # With subcommand
-@@ -164,6 +169,7 @@ class TestCLIcall:
- out, _ = capsys.readouterr()
- assert "Available subcommands:" in out
+ def test_uint08_16(self):
+ """Test uint8 Pixel Data with 16-bit LUT entries."""
+ ds = dcmread(PAL_08_200_0_16_1F, force=True)
+@@ -1053,6 +1069,7 @@ class TestNumpy_PaletteColor:
+ # original `arr` is unchanged
+ assert np.array_equal(orig, arr)
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_show_command(self, capsys):
- """CLI `show` command prints correct output"""
- main("show pydicom::MR_small_RLE.dcm".split())
-@@ -178,6 +184,7 @@ class TestCLIcall:
- out, _ = capsys.readouterr()
- assert "4000" == out.strip()
+ def test_uint08_16_2frame(self):
+ """Test 2 frame uint8 Pixel Data with 16-bit LUT entries."""
+ ds = dcmread(PAL_08_256_0_16_2F)
+@@ -1086,6 +1103,7 @@ class TestNumpy_PaletteColor:
+ # original `arr` is unchanged
+ assert np.array_equal(orig, arr)
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_show_options(self, capsys):
- """CLI `show` command with options prints correct output"""
- # Quiet option, image file
---- a/pydicom/tests/test_dataelem.py
-+++ b/pydicom/tests/test_dataelem.py
-@@ -404,6 +404,7 @@ class TestDataElement:
- assert 'PN' == ds[0x00100010].VR
- assert 'Dionysios=?????????' == ds[0x00100010].value
+ def test_uint16_16_segmented_litle(self):
+ """Test uint16 Pixel Data with 16-bit LUT entries."""
+ ds = dcmread(PAL_SEG_LE_16_1F)
+@@ -1107,6 +1125,7 @@ class TestNumpy_PaletteColor:
+
+ assert (orig == arr).all()
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_reading_ds_with_known_tags_with_UN_VR(
- self, replace_un_with_known_vr):
- """Known tags with VR UN are correctly read."""
---- a/pydicom/tests/test_encaps.py
-+++ b/pydicom/tests/test_encaps.py
-@@ -472,6 +472,7 @@ class TestGeneratePixelDataFrames:
- assert next(frames) == b'\x03\x00\x00\x00\x02\x04'
- pytest.raises(StopIteration, next, frames)
+ def test_uint16_16_segmented_big(self):
+ """Test big endian uint16 Pixel Data with 16-bit LUT entries."""
+ ds = dcmread(PAL_SEG_BE_16_1F)
+@@ -1126,6 +1145,7 @@ class TestNumpy_PaletteColor:
+ assert [10280, 11565, 16705] == list(rgb[479, 320, :])
+ assert [10280, 11565, 16705] == list(rgb[479, 639, :])
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_empty_bot_multi_fragments_per_frame(self):
- """Test multi-frame where multiple frags per frame and no BOT."""
- # Regression test for #685
-@@ -541,6 +542,7 @@ class TestGeneratePixelData:
- with pytest.raises(ValueError, match=msg):
- next(generate_pixel_data(bytestream))
+ def test_16_allocated_8_entries(self):
+ """Test LUT with 8-bit entries in 16 bits allocated."""
+ ds = dcmread(PAL_08_200_0_16_1F, force=True)
+@@ -1147,6 +1167,7 @@ class TestNumpy_PaletteColor:
+ assert np.array_equal(arr, out[:, :, 1])
+ assert np.array_equal(arr, out[:, :, 2])
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_empty_bot_too_few_fragments(self):
- """Test parsing with too few fragments."""
- ds = dcmread(JP2K_10FRAME_NOBOT)
-@@ -1135,6 +1137,7 @@ class TestEncapsulateFrame:
- pytest.raises(StopIteration, next, item_generator)
+ def test_alpha(self):
+ """Test applying a color palette with an alpha channel."""
+ ds = dcmread(PAL_08_256_0_16_1F)
+@@ -1157,6 +1178,7 @@ class TestNumpy_PaletteColor:
+ assert 32768 == rgba[:, :, 3][0, 0]
+ assert (32768 == rgba[:, :, 3]).any()
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_well_known_palette(self, disable_value_validation):
+ """Test using a well-known palette."""
+ ds = dcmread(PAL_08_256_0_16_1F)
+@@ -1190,6 +1212,7 @@ class TestNumpy_PaletteColor:
+ uid = apply_color_lut(arr, palette='1.2.840.10008.1.5.2')
+ assert np.array_equal(uid, rgb)
-+ at pytest.mark.skip("When building a Debian package we can not download anything")
- class TestEncapsulate:
- """Test encaps.encapsulate."""
- def test_encapsulate_single_fragment_per_frame_no_bot(self):
-@@ -1229,6 +1232,7 @@ class TestEncapsulate:
- encapsulate([frame_a, frame_b], has_bot=True)
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_first_map_positive(self):
+ """Test a positive first mapping value."""
+ ds = dcmread(PAL_08_200_0_16_1F, force=True)
+@@ -1208,6 +1231,7 @@ class TestNumpy_PaletteColor:
+ assert [50944, 16384, 27904] == list(rgb[arr == 149][0])
+ assert ([50944, 16384, 27904] == rgb[arr == 149]).all()
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_first_map_negative(self):
+ """Test a negative first mapping value."""
+ ds = dcmread(PAL_08_200_0_16_1F, force=True)
+@@ -1227,6 +1251,7 @@ class TestNumpy_PaletteColor:
+ assert [60160, 25600, 37376] == list(rgb[arr == 130][0])
+ assert ([60160, 25600, 37376] == rgb[arr == 130]).all()
-+ at pytest.mark.skip("When building a Debian package we can not download anything")
- class TestEncapsulateExtended:
- """Tests for encaps.encapsulate_extended."""
- def test_encapsulate(self):
---- a/pydicom/tests/test_encoders_pydicom.py
-+++ b/pydicom/tests/test_encoders_pydicom.py
-@@ -28,23 +28,25 @@ from pydicom.pixel_data_handlers.util im
- from pydicom.uid import RLELossless
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_unchanged(self):
+ """Test dataset with no LUT is unchanged."""
+ # Regression test for #1068
+@@ -1466,6 +1491,7 @@ class TestNumpy_ExpandSegmentedLUT:
+ @pytest.mark.skipif(not HAVE_NP, reason="Numpy is not available")
+ class TestNumpy_ApplyWindowing:
+ """Tests for util.apply_windowing()."""
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_window_single_view(self):
+ """Test windowing with a single view."""
+ # 12-bit unsigned
+@@ -1483,6 +1509,7 @@ class TestNumpy_ApplyWindowing:
+ out = apply_windowing(arr, ds)
+ assert 3046.6 == pytest.approx(out[326, 130], abs=0.1)
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_window_multi_view(self):
+ """Test windowing with multiple views."""
+ ds = dcmread(WIN_12_1F)
+@@ -1725,6 +1752,7 @@ class TestNumpy_ApplyWindowing:
+ )
+ )
--# EXPL: Explicit VR Little Endian
--# RLE: RLE Lossless
--# 8/8-bit, 1 sample/pixel, 1 frame
--EXPL_8_1_1F = get_testdata_file("OBXXXX1A.dcm")
--RLE_8_1_1F = get_testdata_file("OBXXXX1A_rle.dcm")
--# 8/8-bit, 3 sample/pixel, 1 frame
--EXPL_8_3_1F = get_testdata_file("SC_rgb.dcm")
--# 8/8-bit, 3 sample/pixel, 2 frame
--EXPL_8_3_2F = get_testdata_file("SC_rgb_2frame.dcm")
--# 16/16-bit, 1 sample/pixel, 1 frame
--EXPL_16_1_1F = get_testdata_file("MR_small.dcm")
--# 16/16-bit, 3 sample/pixel, 1 frame
--EXPL_16_3_1F = get_testdata_file("SC_rgb_16bit.dcm")
--# 32/32-bit, 1 sample/pixel, 1 frame
--EXPL_32_1_1F = get_testdata_file("rtdose_1frame.dcm")
--# 32/32-bit, 3 sample/pixel, 1 frame
--EXPL_32_3_1F = get_testdata_file("SC_rgb_32bit.dcm")
-+## EXPL: Explicit VR Little Endian
-+## RLE: RLE Lossless
-+## 8/8-bit, 1 sample/pixel, 1 frame
-+#EXPL_8_1_1F = get_testdata_file("OBXXXX1A.dcm")
-+#RLE_8_1_1F = get_testdata_file("OBXXXX1A_rle.dcm")
-+RLE_8_1_1F = None
-+## 8/8-bit, 3 sample/pixel, 1 frame
-+#EXPL_8_3_1F = get_testdata_file("SC_rgb.dcm")
-+## 8/8-bit, 3 sample/pixel, 2 frame
-+#EXPL_8_3_2F = get_testdata_file("SC_rgb_2frame.dcm")
-+## 16/16-bit, 1 sample/pixel, 1 frame
-+#EXPL_16_1_1F = get_testdata_file("MR_small.dcm")
-+## 16/16-bit, 3 sample/pixel, 1 frame
-+#EXPL_16_3_1F = get_testdata_file("SC_rgb_16bit.dcm")
-+EXPL_16_3_1F = None
-+## 32/32-bit, 1 sample/pixel, 1 frame
-+#EXPL_32_1_1F = get_testdata_file("rtdose_1frame.dcm")
-+## 32/32-bit, 3 sample/pixel, 1 frame
-+#EXPL_32_3_1F = get_testdata_file("SC_rgb_32bit.dcm")
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_window_multi_frame(self):
+ """Test windowing with a multiple frames."""
+ ds = dcmread(WIN_12_1F)
+@@ -1745,6 +1773,7 @@ class TestNumpy_ApplyWindowing:
+ assert 3046.6 == pytest.approx(out[0, 326, 130], abs=0.1)
+ assert 4095.0 == pytest.approx(out[1, 326, 130], abs=0.1)
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_window_rescale(self):
+ """Test windowing after a rescale operation."""
+ ds = dcmread(WIN_12_1F)
+@@ -1776,6 +1805,7 @@ class TestNumpy_ApplyWindowing:
+ assert 4455.6 == pytest.approx(out[326, 130], abs=0.1)
+ assert 4914.0 == pytest.approx(out[316, 481], abs=0.1)
- # Tests for RLE encoding
-@@ -107,6 +109,7 @@ class TestEncodeRow:
- assert output == _encode_row(src)
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_window_modality_lut(self):
+ """Test windowing after a modality LUT operation."""
+ ds = dcmread(MOD_16_SEQ)
+@@ -1806,6 +1836,7 @@ class TestNumpy_ApplyWindowing:
+ assert 65535 == out.max()
+ assert 0 == out.min()
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_window_bad_photometric_interp(self):
+ """Test bad photometric interpretation raises exception."""
+ ds = dcmread(WIN_12_1F)
+@@ -1814,6 +1845,7 @@ class TestNumpy_ApplyWindowing:
+ with pytest.raises(ValueError, match=msg):
+ apply_windowing(ds.pixel_array, ds)
-+ at pytest.mark.skip("When building a Debian package we can not download anything")
- @pytest.mark.skipif(not HAVE_NP, reason="Numpy not available")
- class TestEncodeFrame:
- """Tests for rle_handler._encode_frame."""
-@@ -139,6 +142,7 @@ class TestEncodeFrame:
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_window_bad_parameters(self):
+ """Test bad windowing parameters raise exceptions."""
+ ds = dcmread(WIN_12_1F)
+@@ -1838,6 +1870,7 @@ class TestNumpy_ApplyWindowing:
+ with pytest.raises(ValueError, match=msg):
+ apply_windowing(ds.pixel_array, ds)
- assert np.array_equal(ref, arr)
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_window_bad_index(self, no_numpy_use):
+ """Test windowing with a bad view index."""
+ ds = dcmread(WIN_12_1F)
+@@ -1860,6 +1893,7 @@ class TestNumpy_ApplyWindowing:
+ out = apply_windowing(arr, ds)
+ assert [-128, -127, -1, 0, 1, 126, 127] == out.tolist()
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_cycle_8bit_3sample(self):
- """Test an encode/decode cycle for 8-bit 3 sample/pixel."""
- ds = dcmread(EXPL_8_3_1F)
-@@ -176,6 +180,7 @@ class TestEncodeFrame:
+ def test_rescale_empty(self):
+ """Test RescaleSlope and RescaleIntercept being empty."""
+ ds = dcmread(WIN_12_1F)
+@@ -1876,6 +1910,7 @@ class TestNumpy_ApplyWindowing:
+ assert 4095.0 == pytest.approx(out[316, 481], abs=0.1)
- assert np.array_equal(ref, arr)
+
++ at pytest.mark.skip("When building a Debian package we can not download anything")
+ @pytest.mark.skipif(not HAVE_NP, reason="Numpy is not available")
+ class TestNumpy_ApplyVOI:
+ """Tests for util.apply_voi()."""
+@@ -1905,6 +1940,7 @@ class TestNumpy_ApplyVOI:
+ assert 45746 == out[186, 389]
+ assert 65535 == out[129, 79]
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_cycle_16bit_3sample(self):
- """Test an encode/decode cycle for 16-bit 3 sample/pixel."""
- ds = dcmread(EXPL_16_3_1F)
-@@ -351,6 +356,7 @@ class TestEncodeFrame:
+ def test_voi_multi_view(self):
+ """Test VOI LUT with multiple views."""
+ ds = dcmread(VOI_08_1F)
+@@ -1936,6 +1972,7 @@ class TestNumpy_ApplyVOI:
+ assert 19789 == out1[186, 389]
+ assert 0 == out1[129, 79]
- class TestEncodeSegment:
- """Tests for rle_handler._encode_segment."""
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- @pytest.mark.skipif(not HAVE_NP, reason="Numpy not available")
- def test_one_row(self):
- """Test encoding data that contains only a single row."""
-@@ -372,6 +378,7 @@ class TestEncodeSegment:
- assert ds.Columns == len(redecoded)
- assert decoded[:ds.Columns] == redecoded
+ def test_voi_multi_frame(self):
+ """Test VOI with a multiple frames."""
+ ds = dcmread(VOI_08_1F)
+@@ -1957,6 +1994,7 @@ class TestNumpy_ApplyVOI:
+ assert 19789 == out[1, 186, 389]
+ assert 0 == out[1, 129, 79]
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_cycle(self):
- """Test the decoded data remains the same after encoding/decoding."""
- ds = dcmread(RLE_8_1_1F)
-@@ -404,6 +411,7 @@ class TestRLEEncodeFrame:
- with pytest.raises(ValueError, match=msg):
- rle_encode_frame(arr)
+ def test_voi_zero_entries(self):
+ """Test that 0 entries is interpreted correctly."""
+ ds = dcmread(VOI_08_1F)
+@@ -2029,6 +2067,7 @@ class TestNumpy_ApplyVOI:
+ assert 'uint16' == out.dtype
+ assert [0, 0, 32768, 0, 65535] == out.tolist()
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_encoding_multiple_frames_raises(self):
- """Test encoding multiple framed pixel data raises exception."""
- # Note: only works with multi-sample data
-@@ -418,6 +426,7 @@ class TestRLEEncodeFrame:
- with pytest.raises(ValueError, match=msg):
- rle_encode_frame(ds.pixel_array)
+ def test_voi_bad_depth(self):
+ """Test bad LUT depth raises exception."""
+ ds = dcmread(VOI_08_1F)
+@@ -2364,6 +2403,7 @@ class TestNumpy_PackBits:
+ """Test packing data that isn't a full byte long."""
+ assert output == pack_bits(np.asarray(input), pad=False)
+ @pytest.mark.skip("When building a Debian package we can not download anything")
def test_functional(self):
- """Test function works OK."""
- ds = dcmread(EXPL_16_3_1F)
-@@ -436,6 +445,7 @@ class TestRLEEncodeFrame:
+ """Test against a real dataset."""
+ ds = dcmread(EXPL_1_1_3F)
+diff --git a/pydicom/tests/test_jpeg_ls_pixel_data.py b/pydicom/tests/test_jpeg_ls_pixel_data.py
+index 396c7e0..b0ae9bb 100644
+--- a/pydicom/tests/test_jpeg_ls_pixel_data.py
++++ b/pydicom/tests/test_jpeg_ls_pixel_data.py
+@@ -22,44 +22,44 @@ have_jpeg_ls_handler = jpeg_ls_handler.is_available()
- assert np.array_equal(ref, arr)
+ test_jpeg_ls_decoder = have_numpy_handler and have_jpeg_ls_handler
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_big_endian_arr(self):
- """Test using a big endian array works."""
- ds = dcmread(EXPL_16_3_1F)
---- a/pydicom/tests/test_filewriter.py
-+++ b/pydicom/tests/test_filewriter.py
-@@ -246,6 +246,7 @@ class TestWriteFile:
- ds = dcmread(fp, force=True)
- assert ds[0xFFFFFFFF].value == b'123456'
+-empty_number_tags_name = get_testdata_file(
+- "reportsi_with_empty_number_tags.dcm")
+-rtplan_name = get_testdata_file("rtplan.dcm")
+-rtdose_name = get_testdata_file("rtdose.dcm")
+-ct_name = get_testdata_file("CT_small.dcm")
+-mr_name = get_testdata_file("MR_small.dcm")
+-truncated_mr_name = get_testdata_file("MR_truncated.dcm")
+-jpeg2000_name = get_testdata_file("JPEG2000.dcm")
+-jpeg2000_lossless_name = get_testdata_file(
+- "MR_small_jp2klossless.dcm")
+-jpeg_ls_lossless_name = get_testdata_file(
+- "MR_small_jpeg_ls_lossless.dcm")
+-jpeg_lossy_name = get_testdata_file("JPEG-lossy.dcm")
+-jpeg_lossless_name = get_testdata_file("JPEG-LL.dcm")
+-deflate_name = get_testdata_file("image_dfl.dcm")
+-rtstruct_name = get_testdata_file("rtstruct.dcm")
+-priv_SQ_name = get_testdata_file("priv_SQ.dcm")
+-nested_priv_SQ_name = get_testdata_file("nested_priv_SQ.dcm")
+-meta_missing_tsyntax_name = get_testdata_file(
+- "meta_missing_tsyntax.dcm")
+-no_meta_group_length = get_testdata_file(
+- "no_meta_group_length.dcm")
+-gzip_name = get_testdata_file("zipMR.gz")
+-color_px_name = get_testdata_file("color-px.dcm")
+-color_pl_name = get_testdata_file("color-pl.dcm")
+-explicit_vr_le_no_meta = get_testdata_file(
+- "ExplVR_LitEndNoMeta.dcm")
+-explicit_vr_be_no_meta = get_testdata_file(
+- "ExplVR_BigEndNoMeta.dcm")
+-emri_name = get_testdata_file("emri_small.dcm")
+-emri_big_endian_name = get_testdata_file(
+- "emri_small_big_endian.dcm")
+-emri_jpeg_ls_lossless = get_testdata_file(
+- "emri_small_jpeg_ls_lossless.dcm")
+-emri_jpeg_2k_lossless = get_testdata_file(
+- "emri_small_jpeg_2k_lossless.dcm")
+-color_3d_jpeg_baseline = get_testdata_file(
+- "color3d_jpeg_baseline.dcm")
++#empty_number_tags_name = get_testdata_file(
++# "reportsi_with_empty_number_tags.dcm")
++#rtplan_name = get_testdata_file("rtplan.dcm")
++#rtdose_name = get_testdata_file("rtdose.dcm")
++#ct_name = get_testdata_file("CT_small.dcm")
++#mr_name = get_testdata_file("MR_small.dcm")
++#truncated_mr_name = get_testdata_file("MR_truncated.dcm")
++#jpeg2000_name = get_testdata_file("JPEG2000.dcm")
++#jpeg2000_lossless_name = get_testdata_file(
++# "MR_small_jp2klossless.dcm")
++#jpeg_ls_lossless_name = get_testdata_file(
++# "MR_small_jpeg_ls_lossless.dcm")
++#jpeg_lossy_name = get_testdata_file("JPEG-lossy.dcm")
++#jpeg_lossless_name = get_testdata_file("JPEG-LL.dcm")
++#deflate_name = get_testdata_file("image_dfl.dcm")
++#rtstruct_name = get_testdata_file("rtstruct.dcm")
++#priv_SQ_name = get_testdata_file("priv_SQ.dcm")
++#nested_priv_SQ_name = get_testdata_file("nested_priv_SQ.dcm")
++#meta_missing_tsyntax_name = get_testdata_file(
++# "meta_missing_tsyntax.dcm")
++#no_meta_group_length = get_testdata_file(
++# "no_meta_group_length.dcm")
++#gzip_name = get_testdata_file("zipMR.gz")
++#color_px_name = get_testdata_file("color-px.dcm")
++#color_pl_name = get_testdata_file("color-pl.dcm")
++#explicit_vr_le_no_meta = get_testdata_file(
++# "ExplVR_LitEndNoMeta.dcm")
++#explicit_vr_be_no_meta = get_testdata_file(
++# "ExplVR_BigEndNoMeta.dcm")
++#emri_name = get_testdata_file("emri_small.dcm")
++#emri_big_endian_name = get_testdata_file(
++# "emri_small_big_endian.dcm")
++#emri_jpeg_ls_lossless = get_testdata_file(
++# "emri_small_jpeg_ls_lossless.dcm")
++#emri_jpeg_2k_lossless = get_testdata_file(
++# "emri_small_jpeg_2k_lossless.dcm")
++#color_3d_jpeg_baseline = get_testdata_file(
++# "color3d_jpeg_baseline.dcm")
+ dir_name = os.path.dirname(sys.argv[0])
+ save_dir = os.getcwd()
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_write_removes_grouplength(self):
- ds = dcmread(color_pl_name)
- assert 0x00080000 in ds
-@@ -1395,6 +1396,7 @@ class TestWriteToStandard:
- assert ds.get_item(0x300A0006).is_raw # RT Plan Date
- assert ds.get_item(0x300A0010).is_raw # Dose Reference Sequence
+@@ -67,6 +67,7 @@ SUPPORTED_HANDLER_NAMES = (
+ 'jpegls', 'jpeg_ls', 'JPEG_LS', 'jpegls_handler', 'JPEG_LS_Handler'
+ )
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_raw_elements_preserved_explicit_vr(self):
- """Test writing the dataset preserves raw elements."""
- ds = dcmread(color_pl_name)
-@@ -1583,6 +1585,7 @@ class TestWriteToStandard:
- assert ds_expl[(0x0009, 0x10e7)].VR == 'UL'
- assert ds_expl[(0x0043, 0x1010)].VR == 'US'
++ at pytest.mark.skip("Ignore test due to wrong gdcm usage. (See https://lists.debian.org/debian-med/2021/12/msg00061.html)")
+ class TestJPEGLS_no_jpeg_ls:
+ def setup_method(self):
+ self.jpeg_ls_lossless = dcmread(jpeg_ls_lossless_name)
+@@ -84,6 +85,7 @@ class TestJPEGLS_no_jpeg_ls:
+ self.jpeg_ls_lossless.pixel_array
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_convert_rgb_from_implicit_to_explicit_vr(self, no_numpy_use):
- """Test converting an RGB dataset from implicit to explicit VR
- and vice verse."""
---- a/pydicom/tests/test_handler_util.py
-+++ b/pydicom/tests/test_handler_util.py
-@@ -43,32 +43,32 @@ from pydicom.uid import (
- )
++ at pytest.mark.skip("Ignore test due to wrong gdcm usage. (See https://lists.debian.org/debian-med/2021/12/msg00061.html)")
+ class TestJPEGLS_JPEG2000_no_jpeg_ls:
+ def setup_method(self):
+ self.jpeg_2k = dcmread(jpeg2000_name)
+@@ -108,6 +110,7 @@ class TestJPEGLS_JPEG2000_no_jpeg_ls:
+ self.emri_jpeg_2k_lossless.pixel_array
--# PAL: PALETTE COLOR Photometric Interpretation
--# SEG: Segmented Palette Color
--# SUP: Supplemental Palette Color
--# LE, BE: little endian, big endian encoding
--# 8/8, 1 sample/pixel, 1 frame
--PAL_08_256_0_16_1F = get_testdata_file("OBXXXX1A.dcm")
--PAL_08_200_0_16_1F = get_testdata_file("OT-PAL-8-face.dcm")
--# 8/8, 1 sample/pixel, 2 frame
--PAL_08_256_0_16_2F = get_testdata_file("OBXXXX1A_2frame.dcm")
--# PALETTE COLOR with 16-bit LUTs (no indirect segments)
--PAL_SEG_LE_16_1F = get_testdata_file("gdcm-US-ALOKA-16.dcm")
--PAL_SEG_BE_16_1F = get_testdata_file("gdcm-US-ALOKA-16_big.dcm")
--# Supplemental palette colour + VOI windowing
--SUP_16_16_2F = get_testdata_file("eCT_Supplemental.dcm")
--# 8 bit, 3 samples/pixel, 1 and 2 frame datasets
--# RGB colorspace, uncompressed
--RGB_8_3_1F = get_testdata_file("SC_rgb.dcm")
--RGB_8_3_2F = get_testdata_file("SC_rgb_2frame.dcm")
--# MOD: Modality LUT
--# SEQ: Modality LUT Sequence
--MOD_16 = get_testdata_file("CT_small.dcm")
--MOD_16_SEQ = get_testdata_file("mlut_18.dcm")
--# VOI: VOI LUT Sequence
--# WIN: Windowing operation
--WIN_12_1F = get_testdata_file("MR-SIEMENS-DICOM-WithOverlays.dcm")
--VOI_08_1F = get_testdata_file("vlut_04.dcm")
-+## PAL: PALETTE COLOR Photometric Interpretation
-+## SEG: Segmented Palette Color
-+## SUP: Supplemental Palette Color
-+## LE, BE: little endian, big endian encoding
-+## 8/8, 1 sample/pixel, 1 frame
-+#PAL_08_256_0_16_1F = get_testdata_file("OBXXXX1A.dcm")
-+#PAL_08_200_0_16_1F = get_testdata_file("OT-PAL-8-face.dcm")
-+## 8/8, 1 sample/pixel, 2 frame
-+#PAL_08_256_0_16_2F = get_testdata_file("OBXXXX1A_2frame.dcm")
-+## PALETTE COLOR with 16-bit LUTs (no indirect segments)
-+#PAL_SEG_LE_16_1F = get_testdata_file("gdcm-US-ALOKA-16.dcm")
-+#PAL_SEG_BE_16_1F = get_testdata_file("gdcm-US-ALOKA-16_big.dcm")
-+## Supplemental palette colour + VOI windowing
-+#SUP_16_16_2F = get_testdata_file("eCT_Supplemental.dcm")
-+## 8 bit, 3 samples/pixel, 1 and 2 frame datasets
-+## RGB colorspace, uncompressed
-+#RGB_8_3_1F = get_testdata_file("SC_rgb.dcm")
-+#RGB_8_3_2F = get_testdata_file("SC_rgb_2frame.dcm")
-+## MOD: Modality LUT
-+## SEQ: Modality LUT Sequence
-+#MOD_16 = get_testdata_file("CT_small.dcm")
-+#MOD_16_SEQ = get_testdata_file("mlut_18.dcm")
-+## VOI: VOI LUT Sequence
-+## WIN: Windowing operation
-+#WIN_12_1F = get_testdata_file("MR-SIEMENS-DICOM-WithOverlays.dcm")
-+#VOI_08_1F = get_testdata_file("vlut_04.dcm")
- # 1/1, 1 sample/pixel, 3 frame
- EXPL_1_1_3F = get_testdata_file("liver.dcm")
- # Uncompressed YBR_FULL_422
-@@ -568,6 +568,7 @@ class TestNumpy_ConvertColourSpace:
- arr = np.ones((2, 3))
- assert np.array_equal(arr, convert_color_space(arr, current, desired))
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_rgb_ybr_rgb_single_frame(self):
- """Test round trip conversion of single framed pixel data."""
- ds = dcmread(RGB_8_3_1F)
-@@ -602,6 +603,7 @@ class TestNumpy_ConvertColourSpace:
- assert np.allclose(rgb, arr, atol=1)
- assert rgb.shape == arr.shape
++ at pytest.mark.skip("Ignore test due to wrong gdcm usage. (See https://lists.debian.org/debian-med/2021/12/msg00061.html)")
+ class TestJPEGLS_JPEGlossy_no_jpeg_ls:
+ def setup_method(self):
+ self.jpeg_lossy = dcmread(jpeg_lossy_name)
+@@ -133,6 +136,7 @@ class TestJPEGLS_JPEGlossy_no_jpeg_ls:
+ self.color_3d_jpeg.pixel_array
+
+
++ at pytest.mark.skip("Ignore test due to wrong gdcm usage. (See https://lists.debian.org/debian-med/2021/12/msg00061.html)")
+ class TestJPEGLS_JPEGlossless_no_jpeg_ls:
+ def setup_method(self):
+ self.jpeg_lossless = dcmread(jpeg_lossless_name)
+@@ -156,6 +160,7 @@ class TestJPEGLS_JPEGlossless_no_jpeg_ls:
+ self.jpeg_lossless.pixel_array
+
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_rgb_ybr_rgb_multi_frame(self):
- """Test round trip conversion of multi-framed pixel data."""
- ds = dcmread(RGB_8_3_2F)
-@@ -649,6 +651,7 @@ class TestNumpy_ConvertColourSpace:
- assert np.allclose(rgb, arr, atol=1)
- assert rgb.shape == arr.shape
++ at pytest.mark.skip("Ignore test due to wrong gdcm usage. (See https://lists.debian.org/debian-med/2021/12/msg00061.html)")
+ @pytest.mark.skipif(not test_jpeg_ls_decoder, reason=jpeg_ls_missing_message)
+ class TestJPEGLS_JPEG_LS_with_jpeg_ls:
+ def setup_method(self):
+@@ -189,6 +194,7 @@ class TestJPEGLS_JPEG_LS_with_jpeg_ls:
+ assert b.mean() == a.mean()
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_frame_by_frame(self):
- """Test processing frame-by-frame."""
- ds = dcmread(RGB_8_3_2F)
-@@ -828,6 +831,7 @@ class TestGetExpectedLength:
- assert length[2] == get_expected_length(ds, unit='bytes')
++ at pytest.mark.skip("Ignore test due to wrong gdcm usage. (See https://lists.debian.org/debian-med/2021/12/msg00061.html)")
+ @pytest.mark.skipif(not test_jpeg_ls_decoder, reason=jpeg_ls_missing_message)
+ class TestJPEGLS_JPEG2000_with_jpeg_ls:
+ def setup_method(self):
+@@ -212,6 +218,7 @@ class TestJPEGLS_JPEG2000_with_jpeg_ls:
+ self.emri_jpeg_2k_lossless.pixel_array
-+ at pytest.mark.skip("When building a Debian package we can not download anything")
- @pytest.mark.skipif(not HAVE_NP, reason="Numpy is not available")
- class TestNumpy_ModalityLUT:
- """Tests for util.apply_modality_lut()."""
-@@ -848,6 +852,7 @@ class TestNumpy_ModalityLUT:
- out = apply_modality_lut(arr, ds)
- assert np.array_equal(arr * 2.5 - 2048, out)
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_lut_sequence(self):
- """Test the LUT Sequence transform."""
- ds = dcmread(MOD_16_SEQ)
-@@ -875,6 +880,7 @@ class TestNumpy_ModalityLUT:
- assert 52428 == out[228, 385]
- assert 58974 == out[291, 385]
++ at pytest.mark.skip("Ignore test due to wrong gdcm usage. (See https://lists.debian.org/debian-med/2021/12/msg00061.html)")
+ @pytest.mark.skipif(not test_jpeg_ls_decoder, reason=jpeg_ls_missing_message)
+ class TestJPEGLS_JPEGlossy_with_jpeg_ls:
+ def setup_method(self):
+@@ -237,6 +244,7 @@ class TestJPEGLS_JPEGlossy_with_jpeg_ls:
+ self.color_3d_jpeg.pixel_array
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_lut_sequence_zero_entries(self):
- """Test that 0 entries is interpreted correctly."""
- # LUTDescriptor[0] of 0 -> 65536, but only 4096 entries so any
-@@ -906,6 +912,7 @@ class TestNumpy_ModalityLUT:
- out = apply_modality_lut(arr, ds)
- assert arr is out
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_lutdata_ow(self):
- """Test LUT Data with VR OW."""
- ds = dcmread(MOD_16_SEQ)
-@@ -950,6 +957,7 @@ class TestNumpy_PaletteColor:
- if os.path.exists(self.n_palette):
- os.rename(self.n_palette, self.o_palette)
++ at pytest.mark.skip("Ignore test due to wrong gdcm usage. (See https://lists.debian.org/debian-med/2021/12/msg00061.html)")
+ @pytest.mark.skipif(not test_jpeg_ls_decoder, reason=jpeg_ls_missing_message)
+ class TestJPEGLS_JPEGlossless_with_jpeg_ls:
+ def setup_method(self):
+diff --git a/pydicom/tests/test_numpy_pixel_data.py b/pydicom/tests/test_numpy_pixel_data.py
+index 1dbf395..d4a83e9 100644
+--- a/pydicom/tests/test_numpy_pixel_data.py
++++ b/pydicom/tests/test_numpy_pixel_data.py
+@@ -66,11 +66,11 @@ except ImportError:
+ # DEFL: Deflated Explicit VR Little Endian
+ # EXPB: Explicit VR Big Endian
+ # 1/1, 1 sample/pixel, 1 frame
+-EXPL_1_1_1F = get_testdata_file("liver_1frame.dcm")
+-EXPB_1_1_1F = get_testdata_file("liver_expb_1frame.dcm")
++##EXPL_1_1_1F = get_testdata_file("liver_1frame.dcm")
++##EXPB_1_1_1F = get_testdata_file("liver_expb_1frame.dcm")
+ # 1/1, 1 sample/pixel, 3 frame
+-EXPL_1_1_3F = get_testdata_file("liver.dcm")
+-EXPB_1_1_3F = get_testdata_file("liver_expb.dcm")
++##EXPL_1_1_3F = get_testdata_file("liver.dcm")
++##EXPB_1_1_3F = get_testdata_file("liver_expb.dcm")
+ # 1/1, 3 sample/pixel, 1 frame
+ EXPL_1_3_1F = None
+ EXPB_1_3_1F = None
+@@ -78,74 +78,74 @@ EXPB_1_3_1F = None
+ EXPL_1_3_XF = None
+ EXPB_1_3_XF = None
+ # 8/8, 1 sample/pixel, 1 frame
+-DEFL_8_1_1F = get_testdata_file("image_dfl.dcm")
+-EXPL_8_1_1F = get_testdata_file("OBXXXX1A.dcm")
+-EXPB_8_1_1F = get_testdata_file("OBXXXX1A_expb.dcm")
++##DEFL_8_1_1F = get_testdata_file("image_dfl.dcm")
++##EXPL_8_1_1F = get_testdata_file("OBXXXX1A.dcm")
++##EXPB_8_1_1F = get_testdata_file("OBXXXX1A_expb.dcm")
+ # 8/8, 1 sample/pixel, 2 frame
+-EXPL_8_1_2F = get_testdata_file("OBXXXX1A_2frame.dcm")
+-EXPB_8_1_2F = get_testdata_file("OBXXXX1A_expb_2frame.dcm")
++##EXPL_8_1_2F = get_testdata_file("OBXXXX1A_2frame.dcm")
++##EXPB_8_1_2F = get_testdata_file("OBXXXX1A_expb_2frame.dcm")
+ # 8/8, 3 sample/pixel, 1 frame
+-EXPL_8_3_1F = get_testdata_file("SC_rgb.dcm")
+-EXPB_8_3_1F = get_testdata_file("SC_rgb_expb.dcm")
++##EXPL_8_3_1F = get_testdata_file("SC_rgb.dcm")
++##EXPB_8_3_1F = get_testdata_file("SC_rgb_expb.dcm")
+ # 8/8, 3 samples/pixel, 1 frame, 3 x 3
+-EXPL_8_3_1F_ODD = get_testdata_file('SC_rgb_small_odd.dcm')
+-EXPL_8_3_1F_ODD_BIGE = get_testdata_file('SC_rgb_small_odd_big_endian.dcm')
++##EXPL_8_3_1F_ODD = get_testdata_file('SC_rgb_small_odd.dcm')
++##EXPL_8_3_1F_ODD_BIGE = get_testdata_file('SC_rgb_small_odd_big_endian.dcm')
+ # 8/8, 3 sample/pixel, 1 frame, YBR_FULL_422
+-EXPL_8_3_1F_YBR422 = get_testdata_file('SC_ybr_full_422_uncompressed.dcm')
++##EXPL_8_3_1F_YBR422 = get_testdata_file('SC_ybr_full_422_uncompressed.dcm')
+ # 8/8, 3 sample/pixel, 1 frame, YBR_FULL
+-EXPL_8_3_1F_YBR = get_testdata_file('SC_ybr_full_uncompressed.dcm')
++##EXPL_8_3_1F_YBR = get_testdata_file('SC_ybr_full_uncompressed.dcm')
+ # 8/8, 3 sample/pixel, 2 frame
+-EXPL_8_3_2F = get_testdata_file("SC_rgb_2frame.dcm")
+-EXPB_8_3_2F = get_testdata_file("SC_rgb_expb_2frame.dcm")
++##EXPL_8_3_2F = get_testdata_file("SC_rgb_2frame.dcm")
++##EXPB_8_3_2F = get_testdata_file("SC_rgb_expb_2frame.dcm")
+ # 16/16, 1 sample/pixel, 1 frame
+-IMPL_16_1_1F = get_testdata_file("MR_small_implicit.dcm")
+-EXPL_16_1_1F = get_testdata_file("MR_small.dcm")
+-EXPB_16_1_1F = get_testdata_file("MR_small_expb.dcm")
++##IMPL_16_1_1F = get_testdata_file("MR_small_implicit.dcm")
++##EXPL_16_1_1F = get_testdata_file("MR_small.dcm")
++##EXPB_16_1_1F = get_testdata_file("MR_small_expb.dcm")
+ # Pixel Data with 128 bytes trailing padding
+-EXPL_16_1_1F_PAD = get_testdata_file("MR_small_padded.dcm")
++##EXPL_16_1_1F_PAD = get_testdata_file("MR_small_padded.dcm")
+ # 16/12, 1 sample/pixel, 10 frame
+-EXPL_16_1_10F = get_testdata_file("emri_small.dcm")
+-EXPB_16_1_10F = get_testdata_file("emri_small_big_endian.dcm")
++##EXPL_16_1_10F = get_testdata_file("emri_small.dcm")
++##EXPB_16_1_10F = get_testdata_file("emri_small_big_endian.dcm")
+ # 16/16, 3 sample/pixel, 1 frame
+-EXPL_16_3_1F = get_testdata_file("SC_rgb_16bit.dcm")
+-EXPB_16_3_1F = get_testdata_file("SC_rgb_expb_16bit.dcm")
++##EXPL_16_3_1F = get_testdata_file("SC_rgb_16bit.dcm")
++##EXPB_16_3_1F = get_testdata_file("SC_rgb_expb_16bit.dcm")
+ # 16/16, 3 sample/pixel, 2 frame
+-EXPL_16_3_2F = get_testdata_file("SC_rgb_16bit_2frame.dcm")
+-EXPB_16_3_2F = get_testdata_file("SC_rgb_expb_16bit_2frame.dcm")
++##EXPL_16_3_2F = get_testdata_file("SC_rgb_16bit_2frame.dcm")
++##EXPB_16_3_2F = get_testdata_file("SC_rgb_expb_16bit_2frame.dcm")
+ # 32/32, 1 sample/pixel, 1 frame
+-IMPL_32_1_1F = get_testdata_file("rtdose_1frame.dcm")
+-EXPB_32_1_1F = get_testdata_file("rtdose_expb_1frame.dcm")
++##IMPL_32_1_1F = get_testdata_file("rtdose_1frame.dcm")
++##EXPB_32_1_1F = get_testdata_file("rtdose_expb_1frame.dcm")
+ # 32/32, 1 sample/pixel, 15 frame
+-IMPL_32_1_15F = get_testdata_file("rtdose.dcm")
+-EXPB_32_1_15F = get_testdata_file("rtdose_expb.dcm")
++##IMPL_32_1_15F = get_testdata_file("rtdose.dcm")
++##EXPB_32_1_15F = get_testdata_file("rtdose_expb.dcm")
+ # 32/32, 3 sample/pixel, 1 frame
+-EXPL_32_3_1F = get_testdata_file("SC_rgb_32bit.dcm")
+-EXPB_32_3_1F = get_testdata_file("SC_rgb_expb_32bit.dcm")
++##EXPL_32_3_1F = get_testdata_file("SC_rgb_32bit.dcm")
++##EXPB_32_3_1F = get_testdata_file("SC_rgb_expb_32bit.dcm")
+ # 32/32, 3 sample/pixel, 2 frame
+-EXPL_32_3_2F = get_testdata_file("SC_rgb_32bit_2frame.dcm")
+-EXPB_32_3_2F = get_testdata_file("SC_rgb_expb_32bit_2frame.dcm")
++##EXPL_32_3_2F = get_testdata_file("SC_rgb_32bit_2frame.dcm")
++##EXPB_32_3_2F = get_testdata_file("SC_rgb_expb_32bit_2frame.dcm")
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_neither_ds_nor_palette_raises(self):
- """Test missing `ds` and `palette` raise an exception."""
- ds = dcmread(PAL_08_256_0_16_1F)
-@@ -957,6 +965,7 @@ class TestNumpy_PaletteColor:
- with pytest.raises(ValueError, match=msg):
- apply_color_lut(ds.pixel_array)
+ # Transfer syntaxes supported by other handlers
+ # JPEG Baseline (Process 1)
+-JPEG_BASELINE_1 = get_testdata_file("SC_rgb_jpeg_dcmtk.dcm")
++##JPEG_BASELINE_1 = get_testdata_file("SC_rgb_jpeg_dcmtk.dcm")
+ # JPEG Baseline (Process 2 and 4)
+-JPEG_EXTENDED_2 = get_testdata_file("JPEG-lossy.dcm")
++##JPEG_EXTENDED_2 = get_testdata_file("JPEG-lossy.dcm")
+ # JPEG Lossless (Process 14)
+ JPEG_LOSSLESS_14 = None
+ # JPEG Lossless (Process 14, Selection Value 1)
+-JPEG_LOSSLESS_14_1 = get_testdata_file("SC_rgb_jpeg_gdcm.dcm")
++##JPEG_LOSSLESS_14_1 = get_testdata_file("SC_rgb_jpeg_gdcm.dcm")
+ # JPEG-LS Lossless
+-JPEG_LS_LOSSLESS = get_testdata_file("MR_small_jpeg_ls_lossless.dcm")
++##JPEG_LS_LOSSLESS = get_testdata_file("MR_small_jpeg_ls_lossless.dcm")
+ # JPEG-LS Lossy
+ JPEG_LS_LOSSY = None
+ # JPEG2k Lossless
+-JPEG_2K_LOSSLESS = get_testdata_file("emri_small_jpeg_2k_lossless.dcm")
++##JPEG_2K_LOSSLESS = get_testdata_file("emri_small_jpeg_2k_lossless.dcm")
+ # JPEG2k
+-JPEG_2K = get_testdata_file("JPEG2000.dcm")
++##JPEG_2K = get_testdata_file("JPEG2000.dcm")
+ # RLE Lossless
+-RLE = get_testdata_file("MR_small_RLE.dcm")
++##RLE = get_testdata_file("MR_small_RLE.dcm")
+ # No Image Pixel module
+-NO_PIXEL = get_testdata_file("rtplan.dcm")
++##NO_PIXEL = get_testdata_file("rtplan.dcm")
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_palette_unknown_raises(self, disable_value_validation):
- """Test using an unknown `palette` raise an exception."""
- ds = dcmread(PAL_08_256_0_16_1F)
-@@ -970,6 +979,7 @@ class TestNumpy_PaletteColor:
- with pytest.raises(ValueError, match=msg):
- apply_color_lut(ds.pixel_array, palette='1.2.840.10008.1.1')
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_palette_unavailable_raises(self, disable_value_validation):
- """Test using a missing `palette` raise an exception."""
- os.rename(self.o_palette, self.n_palette)
-@@ -978,6 +988,7 @@ class TestNumpy_PaletteColor:
- with pytest.raises(IndexError, match=msg):
- apply_color_lut(ds.pixel_array, palette='PET')
+ # Transfer Syntaxes (non-retired + Explicit VR Big Endian)
+@@ -167,15 +167,15 @@ def test_unsupported_syntaxes():
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_supplemental_raises(self):
- """Test that supplemental palette color LUT raises exception."""
- ds = dcmread(SUP_16_16_2F)
-@@ -988,6 +999,7 @@ class TestNumpy_PaletteColor:
- with pytest.raises(ValueError, match=msg):
- apply_color_lut(ds.pixel_array, ds)
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_invalid_bit_depth_raises(self):
- """Test that an invalid bit depth raises an exception."""
- ds = dcmread(PAL_08_256_0_16_1F)
-@@ -996,6 +1008,7 @@ class TestNumpy_PaletteColor:
- with pytest.raises(TypeError, match=msg):
- apply_color_lut(ds.pixel_array, ds)
+ REFERENCE_DATA_UNSUPPORTED = [
+- (JPEG_BASELINE_1, ('1.2.840.10008.1.2.4.50', 'Lestrade^G')),
+- (JPEG_EXTENDED_2, ('1.2.840.10008.1.2.4.51', 'CompressedSamples^NM1')),
+- # (JPEG_LOSSLESS_14, ('1.2.840.10008.1.2.4.57')), # No dataset available
+- (JPEG_LOSSLESS_14_1, ('1.2.840.10008.1.2.4.70', 'Lestrade^G')),
+- (JPEG_LS_LOSSLESS, ('1.2.840.10008.1.2.4.80', 'CompressedSamples^MR1')),
+- # (JPEG_LS_LOSSY, ('1.2.840.10008.1.2.4.81')), # No dataset available
+- (JPEG_2K_LOSSLESS, ('1.2.840.10008.1.2.4.90', '')),
+- (JPEG_2K, ('1.2.840.10008.1.2.4.91', 'CompressedSamples^NM1')),
+- (RLE, ('1.2.840.10008.1.2.5', 'CompressedSamples^MR1')),
++# (JPEG_BASELINE_1, ('1.2.840.10008.1.2.4.50', 'Lestrade^G')),
++# (JPEG_EXTENDED_2, ('1.2.840.10008.1.2.4.51', 'CompressedSamples^NM1')),
++# # (JPEG_LOSSLESS_14, ('1.2.840.10008.1.2.4.57')), # No dataset available
++# (JPEG_LOSSLESS_14_1, ('1.2.840.10008.1.2.4.70', 'Lestrade^G')),
++# (JPEG_LS_LOSSLESS, ('1.2.840.10008.1.2.4.80', 'CompressedSamples^MR1')),
++# # (JPEG_LS_LOSSY, ('1.2.840.10008.1.2.4.81')), # No dataset available
++# (JPEG_2K_LOSSLESS, ('1.2.840.10008.1.2.4.90', '')),
++# (JPEG_2K, ('1.2.840.10008.1.2.4.91', 'CompressedSamples^NM1')),
++# (RLE, ('1.2.840.10008.1.2.5', 'CompressedSamples^MR1')),
+ ]
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_invalid_lut_bit_depth_raises(self):
- """Test that an invalid LUT bit depth raises an exception."""
- ds = dcmread(PAL_08_256_0_16_1F)
-@@ -1015,6 +1028,7 @@ class TestNumpy_PaletteColor:
- with pytest.raises(ValueError, match=msg):
- apply_color_lut(ds.pixel_array, ds)
+ SUPPORTED_HANDLER_NAMES = (
+@@ -338,6 +338,7 @@ class TestNumpy_NoNumpyHandler:
+ # We numpy handler should still be available
+ assert NP_HANDLER is not None
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_unequal_lut_length_raises(self):
- """Test that an unequal LUT lengths raise an exception."""
- ds = dcmread(PAL_08_256_0_16_1F)
-@@ -1025,6 +1039,7 @@ class TestNumpy_PaletteColor:
- with pytest.raises(ValueError, match=msg):
- apply_color_lut(ds.pixel_array, ds)
+ def test_can_access_supported_dataset(self):
+ """Test that we can read and access elements in dataset."""
+ # Explicit little
+@@ -360,6 +361,7 @@ class TestNumpy_NoNumpyHandler:
+ assert 'CompressedSamples^MR1' == ds.PatientName
+ assert 8192 == len(ds.PixelData)
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_no_palette_color(self):
- """Test that an unequal LUT lengths raise an exception."""
- ds = dcmread(PAL_08_256_0_16_1F)
-@@ -1033,6 +1048,7 @@ class TestNumpy_PaletteColor:
- with pytest.raises(ValueError, match=msg):
- apply_color_lut(ds.pixel_array, ds)
+ @pytest.mark.parametrize("fpath,data", REFERENCE_DATA_UNSUPPORTED)
+ def test_can_access_unsupported_dataset(self, fpath, data):
+ """Test can read and access elements in unsupported datasets."""
+@@ -367,6 +369,7 @@ class TestNumpy_NoNumpyHandler:
+ assert data[0] == ds.file_meta.TransferSyntaxUID
+ assert data[1] == ds.PatientName
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_uint08_16(self):
- """Test uint8 Pixel Data with 16-bit LUT entries."""
- ds = dcmread(PAL_08_200_0_16_1F, force=True)
-@@ -1053,6 +1069,7 @@ class TestNumpy_PaletteColor:
- # original `arr` is unchanged
- assert np.array_equal(orig, arr)
+ def test_pixel_array_raises(self):
+ """Test pixel_array raises exception for all syntaxes."""
+ ds = dcmread(EXPL_16_1_1F)
+@@ -378,42 +381,42 @@ class TestNumpy_NoNumpyHandler:
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_uint08_16_2frame(self):
- """Test 2 frame uint8 Pixel Data with 16-bit LUT entries."""
- ds = dcmread(PAL_08_256_0_16_2F)
-@@ -1086,6 +1103,7 @@ class TestNumpy_PaletteColor:
- # original `arr` is unchanged
- assert np.array_equal(orig, arr)
+ # Numpy and the numpy handler are available
+ MATCHING_DATASETS = [
+- (EXPL_1_1_1F, EXPB_1_1_1F),
+- (EXPL_1_1_3F, EXPB_1_1_3F),
+- (EXPL_8_1_1F, EXPB_8_1_1F),
+- (EXPL_8_1_2F, EXPB_8_1_2F),
+- (EXPL_8_3_1F, EXPB_8_3_1F),
+- (EXPL_8_3_2F, EXPB_8_3_2F),
+- (EXPL_16_1_1F, EXPB_16_1_1F),
+- (EXPL_16_1_10F, EXPB_16_1_10F),
+- (EXPL_16_3_1F, EXPB_16_3_1F),
+- (EXPL_16_3_2F, EXPB_16_3_2F),
+- (IMPL_32_1_1F, EXPB_32_1_1F),
+- (IMPL_32_1_15F, EXPB_32_1_15F),
+- (EXPL_32_3_1F, EXPB_32_3_1F),
+- (EXPL_32_3_2F, EXPB_32_3_2F)
++# (EXPL_1_1_1F, EXPB_1_1_1F),
++# (EXPL_1_1_3F, EXPB_1_1_3F),
++# (EXPL_8_1_1F, EXPB_8_1_1F),
++# (EXPL_8_1_2F, EXPB_8_1_2F),
++# (EXPL_8_3_1F, EXPB_8_3_1F),
++# (EXPL_8_3_2F, EXPB_8_3_2F),
++# (EXPL_16_1_1F, EXPB_16_1_1F),
++# (EXPL_16_1_10F, EXPB_16_1_10F),
++# (EXPL_16_3_1F, EXPB_16_3_1F),
++# (EXPL_16_3_2F, EXPB_16_3_2F),
++# (IMPL_32_1_1F, EXPB_32_1_1F),
++# (IMPL_32_1_15F, EXPB_32_1_15F),
++# (EXPL_32_3_1F, EXPB_32_3_1F),
++# (EXPL_32_3_2F, EXPB_32_3_2F)
+ ]
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_uint16_16_segmented_litle(self):
- """Test uint16 Pixel Data with 16-bit LUT entries."""
- ds = dcmread(PAL_SEG_LE_16_1F)
-@@ -1107,6 +1125,7 @@ class TestNumpy_PaletteColor:
+ EXPL = ExplicitVRLittleEndian
+ IMPL = ImplicitVRLittleEndian
+ REFERENCE_DATA_LITTLE = [
+- # fpath, (syntax, bits, nr samples, pixel repr, nr frames, shape, dtype)
+- (EXPL_1_1_1F, (EXPL, 1, 1, 0, 1, (512, 512), 'uint8')),
+- (EXPL_1_1_3F, (EXPL, 1, 1, 0, 3, (3, 512, 512), 'uint8')),
+- (EXPL_8_1_1F, (EXPL, 8, 1, 0, 1, (600, 800), 'uint8')),
+- (EXPL_8_3_1F_ODD, (EXPL, 8, 3, 0, 1, (3, 3, 3), 'uint8')),
+- (EXPL_8_3_1F_YBR422, (EXPL, 8, 3, 0, 1, (100, 100, 3), 'uint8')),
+- (EXPL_8_1_2F, (EXPL, 8, 1, 0, 2, (2, 600, 800), 'uint8')),
+- (EXPL_8_3_1F, (EXPL, 8, 3, 0, 1, (100, 100, 3), 'uint8')),
+- (EXPL_8_3_2F, (EXPL, 8, 3, 0, 2, (2, 100, 100, 3), 'uint8')),
+- (EXPL_16_1_1F, (EXPL, 16, 1, 1, 1, (64, 64), 'int16')),
+- (EXPL_16_1_10F, (EXPL, 16, 1, 0, 10, (10, 64, 64), 'uint16')),
+- (EXPL_16_3_1F, (EXPL, 16, 3, 0, 1, (100, 100, 3), 'uint16')),
+- (EXPL_16_3_2F, (EXPL, 16, 3, 0, 2, (2, 100, 100, 3), 'uint16')),
+- (IMPL_32_1_1F, (IMPL, 32, 1, 0, 1, (10, 10), 'uint32')),
+- (IMPL_32_1_15F, (IMPL, 32, 1, 0, 15, (15, 10, 10), 'uint32')),
+- (EXPL_32_3_1F, (EXPL, 32, 3, 0, 1, (100, 100, 3), 'uint32')),
+- (EXPL_32_3_2F, (EXPL, 32, 3, 0, 2, (2, 100, 100, 3), 'uint32')),
++# # fpath, (syntax, bits, nr samples, pixel repr, nr frames, shape, dtype)
++# (EXPL_1_1_1F, (EXPL, 1, 1, 0, 1, (512, 512), 'uint8')),
++# (EXPL_1_1_3F, (EXPL, 1, 1, 0, 3, (3, 512, 512), 'uint8')),
++# (EXPL_8_1_1F, (EXPL, 8, 1, 0, 1, (600, 800), 'uint8')),
++# (EXPL_8_3_1F_ODD, (EXPL, 8, 3, 0, 1, (3, 3, 3), 'uint8')),
++# (EXPL_8_3_1F_YBR422, (EXPL, 8, 3, 0, 1, (100, 100, 3), 'uint8')),
++# (EXPL_8_1_2F, (EXPL, 8, 1, 0, 2, (2, 600, 800), 'uint8')),
++# (EXPL_8_3_1F, (EXPL, 8, 3, 0, 1, (100, 100, 3), 'uint8')),
++# (EXPL_8_3_2F, (EXPL, 8, 3, 0, 2, (2, 100, 100, 3), 'uint8')),
++# (EXPL_16_1_1F, (EXPL, 16, 1, 1, 1, (64, 64), 'int16')),
++# (EXPL_16_1_10F, (EXPL, 16, 1, 0, 10, (10, 64, 64), 'uint16')),
++# (EXPL_16_3_1F, (EXPL, 16, 3, 0, 1, (100, 100, 3), 'uint16')),
++# (EXPL_16_3_2F, (EXPL, 16, 3, 0, 2, (2, 100, 100, 3), 'uint16')),
++# (IMPL_32_1_1F, (IMPL, 32, 1, 0, 1, (10, 10), 'uint32')),
++# (IMPL_32_1_15F, (IMPL, 32, 1, 0, 15, (15, 10, 10), 'uint32')),
++# (EXPL_32_3_1F, (EXPL, 32, 3, 0, 1, (100, 100, 3), 'uint32')),
++# (EXPL_32_3_2F, (EXPL, 32, 3, 0, 2, (2, 100, 100, 3), 'uint32')),
+ ]
- assert (orig == arr).all()
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_uint16_16_segmented_big(self):
- """Test big endian uint16 Pixel Data with 16-bit LUT entries."""
- ds = dcmread(PAL_SEG_BE_16_1F)
-@@ -1126,6 +1145,7 @@ class TestNumpy_PaletteColor:
- assert [10280, 11565, 16705] == list(rgb[479, 320, :])
- assert [10280, 11565, 16705] == list(rgb[479, 639, :])
+@@ -435,6 +438,7 @@ class TestNumpy_NumpyHandler:
+ assert HAVE_NP
+ assert NP_HANDLER is not None
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_16_allocated_8_entries(self):
- """Test LUT with 8-bit entries in 16 bits allocated."""
- ds = dcmread(PAL_08_200_0_16_1F, force=True)
-@@ -1147,6 +1167,7 @@ class TestNumpy_PaletteColor:
- assert np.array_equal(arr, out[:, :, 1])
- assert np.array_equal(arr, out[:, :, 2])
+ def test_unsupported_syntax_raises(self):
+ """Test pixel_array raises exception for unsupported syntaxes."""
+ ds = dcmread(EXPL_16_1_1F)
+@@ -444,6 +448,7 @@ class TestNumpy_NumpyHandler:
+ with pytest.raises((NotImplementedError, RuntimeError)):
+ ds.pixel_array
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_alpha(self):
- """Test applying a color palette with an alpha channel."""
- ds = dcmread(PAL_08_256_0_16_1F)
-@@ -1157,6 +1178,7 @@ class TestNumpy_PaletteColor:
- assert 32768 == rgba[:, :, 3][0, 0]
- assert (32768 == rgba[:, :, 3]).any()
+ def test_dataset_pixel_array_handler_needs_convert(self):
+ """Test Dataset.pixel_array when converting to RGB."""
+ ds = dcmread(EXPL_8_3_1F)
+@@ -472,6 +477,7 @@ class TestNumpy_NumpyHandler:
+ # Reset
+ NP_HANDLER.needs_to_convert_to_RGB = orig_fn
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_well_known_palette(self, disable_value_validation):
- """Test using a well-known palette."""
- ds = dcmread(PAL_08_256_0_16_1F)
-@@ -1190,6 +1212,7 @@ class TestNumpy_PaletteColor:
- uid = apply_color_lut(arr, palette='1.2.840.10008.1.5.2')
- assert np.array_equal(uid, rgb)
+ def test_dataset_pixel_array_no_pixels(self):
+ """Test good exception message if no pixel data in dataset."""
+ ds = dcmread(NO_PIXEL)
+@@ -483,6 +489,7 @@ class TestNumpy_NumpyHandler:
+ with pytest.raises(AttributeError, match=msg):
+ ds.pixel_array
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_first_map_positive(self):
- """Test a positive first mapping value."""
- ds = dcmread(PAL_08_200_0_16_1F, force=True)
-@@ -1208,6 +1231,7 @@ class TestNumpy_PaletteColor:
- assert [50944, 16384, 27904] == list(rgb[arr == 149][0])
- assert ([50944, 16384, 27904] == rgb[arr == 149]).all()
+ @pytest.mark.parametrize("fpath, data", REFERENCE_DATA_UNSUPPORTED)
+ def test_can_access_unsupported_dataset(self, fpath, data):
+ """Test can read and access elements in unsupported datasets."""
+@@ -490,6 +497,7 @@ class TestNumpy_NumpyHandler:
+ assert data[0] == ds.file_meta.TransferSyntaxUID
+ assert data[1] == ds.PatientName
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_first_map_negative(self):
- """Test a negative first mapping value."""
- ds = dcmread(PAL_08_200_0_16_1F, force=True)
-@@ -1227,6 +1251,7 @@ class TestNumpy_PaletteColor:
- assert [60160, 25600, 37376] == list(rgb[arr == 130][0])
- assert ([60160, 25600, 37376] == rgb[arr == 130]).all()
+ def test_pixel_array_8bit_un_signed(self):
+ """Test pixel_array for 8-bit unsigned -> signed data."""
+ ds = dcmread(EXPL_8_1_1F)
+@@ -505,6 +513,7 @@ class TestNumpy_NumpyHandler:
+ assert (1, -10, 1) == tuple(arr[300, 491:494])
+ assert 0 == arr[-1].min() == arr[-1].max()
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_unchanged(self):
- """Test dataset with no LUT is unchanged."""
- # Regression test for #1068
-@@ -1466,6 +1491,7 @@ class TestNumpy_ExpandSegmentedLUT:
- @pytest.mark.skipif(not HAVE_NP, reason="Numpy is not available")
- class TestNumpy_ApplyWindowing:
- """Tests for util.apply_windowing()."""
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_window_single_view(self):
- """Test windowing with a single view."""
- # 12-bit unsigned
-@@ -1483,6 +1509,7 @@ class TestNumpy_ApplyWindowing:
- out = apply_windowing(arr, ds)
- assert 3046.6 == pytest.approx(out[326, 130], abs=0.1)
+ @pytest.mark.parametrize("handler_name", SUPPORTED_HANDLER_NAMES)
+ def test_decompress_using_handler(self, handler_name):
+ """Test different possibilities for the numpy handler name."""
+@@ -515,6 +524,7 @@ class TestNumpy_NumpyHandler:
+ assert (1, 246, 1) == tuple(ds.pixel_array[300, 491:494])
+ assert 0 == ds.pixel_array[-1].min() == ds.pixel_array[-1].max()
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_window_multi_view(self):
- """Test windowing with multiple views."""
- ds = dcmread(WIN_12_1F)
-@@ -1725,6 +1752,7 @@ class TestNumpy_ApplyWindowing:
- )
- )
+ def test_pixel_array_16bit_un_signed(self):
+ """Test pixel_array for 16-bit unsigned -> signed."""
+ ds = dcmread(EXPL_16_3_1F)
+@@ -529,6 +539,7 @@ class TestNumpy_NumpyHandler:
+ assert -1 == arr[0, :, 0].min() == arr[0, :, 0].max()
+ assert -32640 == arr[50, :, 0].min() == arr[50, :, 0].max()
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_window_multi_frame(self):
- """Test windowing with a multiple frames."""
- ds = dcmread(WIN_12_1F)
-@@ -1745,6 +1773,7 @@ class TestNumpy_ApplyWindowing:
- assert 3046.6 == pytest.approx(out[0, 326, 130], abs=0.1)
- assert 4095.0 == pytest.approx(out[1, 326, 130], abs=0.1)
+ def test_pixel_array_32bit_un_signed(self):
+ """Test pixel_array for 32-bit unsigned -> signed."""
+ ds = dcmread(EXPL_32_3_1F)
+@@ -544,6 +555,7 @@ class TestNumpy_NumpyHandler:
+ assert -2139062144 == arr[50, :, 0].min() == arr[50, :, 0].max()
+ # Endian independent datasets
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_window_rescale(self):
- """Test windowing after a rescale operation."""
- ds = dcmread(WIN_12_1F)
-@@ -1776,6 +1805,7 @@ class TestNumpy_ApplyWindowing:
- assert 4455.6 == pytest.approx(out[326, 130], abs=0.1)
- assert 4914.0 == pytest.approx(out[316, 481], abs=0.1)
+ def test_8bit_1sample_1frame(self):
+ """Test pixel_array for 8-bit, 1 sample/pixel, 1 frame."""
+ # Check supported syntaxes
+@@ -559,6 +571,7 @@ class TestNumpy_NumpyHandler:
+ assert (1, 246, 1) == tuple(arr[300, 491:494])
+ assert 0 == arr[-1].min() == arr[-1].max()
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_window_modality_lut(self):
- """Test windowing after a modality LUT operation."""
- ds = dcmread(MOD_16_SEQ)
-@@ -1806,6 +1836,7 @@ class TestNumpy_ApplyWindowing:
- assert 65535 == out.max()
- assert 0 == out.min()
+ def test_8bit_1sample_2frame(self):
+ """Test pixel_array for 8-bit, 1 sample/pixel, 2 frame."""
+ # Check supported syntaxes
+@@ -577,6 +590,7 @@ class TestNumpy_NumpyHandler:
+ # Frame 2 is frame 1 inverted
+ assert np.array_equal((2 ** ds.BitsAllocated - 1) - arr[1], arr[0])
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_window_bad_photometric_interp(self):
- """Test bad photometric interpretation raises exception."""
- ds = dcmread(WIN_12_1F)
-@@ -1814,6 +1845,7 @@ class TestNumpy_ApplyWindowing:
- with pytest.raises(ValueError, match=msg):
- apply_windowing(ds.pixel_array, ds)
+ def test_8bit_3sample_1frame_odd_size(self):
+ """Test pixel_array for odd sized (3x3) pixel data."""
+ # Check supported syntaxes
+@@ -595,6 +609,7 @@ class TestNumpy_NumpyHandler:
+ [158, 158, 158], [158, 158, 158], [158, 158, 158]
+ ]
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_window_bad_parameters(self):
- """Test bad windowing parameters raise exceptions."""
- ds = dcmread(WIN_12_1F)
-@@ -1838,6 +1870,7 @@ class TestNumpy_ApplyWindowing:
- with pytest.raises(ValueError, match=msg):
- apply_windowing(ds.pixel_array, ds)
+ def test_8bit_3sample_1frame_ybr422(self):
+ """Test pixel_array for YBR_FULL_422 pixel data."""
+ ds = dcmread(EXPL_8_3_1F_YBR422)
+@@ -620,6 +635,7 @@ class TestNumpy_NumpyHandler:
+ assert (192, 128, 128) == tuple(arr[85, 50, :])
+ assert (255, 128, 128) == tuple(arr[95, 50, :])
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_window_bad_index(self, no_numpy_use):
- """Test windowing with a bad view index."""
- ds = dcmread(WIN_12_1F)
-@@ -1860,6 +1893,7 @@ class TestNumpy_ApplyWindowing:
- out = apply_windowing(arr, ds)
- assert [-128, -127, -1, 0, 1, 126, 127] == out.tolist()
+ def test_8bit_3sample_1frame(self):
+ """Test pixel_array for 8-bit, 3 sample/pixel, 1 frame."""
+ # Check supported syntaxes
+@@ -641,6 +657,7 @@ class TestNumpy_NumpyHandler:
+ assert (192, 192, 192) == tuple(arr[85, 50, :])
+ assert (255, 255, 255) == tuple(arr[95, 50, :])
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_rescale_empty(self):
- """Test RescaleSlope and RescaleIntercept being empty."""
- ds = dcmread(WIN_12_1F)
-@@ -1876,6 +1910,7 @@ class TestNumpy_ApplyWindowing:
- assert 4095.0 == pytest.approx(out[316, 481], abs=0.1)
-
-
-+ at pytest.mark.skip("When building a Debian package we can not download anything")
- @pytest.mark.skipif(not HAVE_NP, reason="Numpy is not available")
- class TestNumpy_ApplyVOI:
- """Tests for util.apply_voi()."""
-@@ -1905,6 +1940,7 @@ class TestNumpy_ApplyVOI:
- assert 45746 == out[186, 389]
- assert 65535 == out[129, 79]
+ def test_8bit_3sample_2frame(self):
+ """Test pixel_array for 8-bit, 3 sample/pixel, 2 frame."""
+ # Check supported syntaxes
+@@ -667,6 +684,7 @@ class TestNumpy_NumpyHandler:
+ assert np.array_equal((2 ** ds.BitsAllocated - 1) - arr[1], arr[0])
+ # Little endian datasets
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_voi_multi_view(self):
- """Test VOI LUT with multiple views."""
- ds = dcmread(VOI_08_1F)
-@@ -1936,6 +1972,7 @@ class TestNumpy_ApplyVOI:
- assert 19789 == out1[186, 389]
- assert 0 == out1[129, 79]
+ @pytest.mark.parametrize('fpath, data', REFERENCE_DATA_LITTLE)
+ def test_properties(self, fpath, data):
+ """Test dataset and pixel array properties are as expected."""
+@@ -695,6 +713,7 @@ class TestNumpy_NumpyHandler:
+ if size % 2:
+ assert ds.PixelData[-1] == b'\x00'[0]
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_voi_multi_frame(self):
- """Test VOI with a multiple frames."""
- ds = dcmread(VOI_08_1F)
-@@ -1957,6 +1994,7 @@ class TestNumpy_ApplyVOI:
- assert 19789 == out[1, 186, 389]
- assert 0 == out[1, 129, 79]
+ def test_little_1bit_1sample_1frame(self):
+ """Test pixel_array for little 1-bit, 1 sample/pixel, 1 frame."""
+ # Check all little endian syntaxes
+@@ -713,6 +732,7 @@ class TestNumpy_NumpyHandler:
+ assert (0, 1, 1) == tuple(arr[254, 78:81])
+ assert (1, 0, 0, 1, 1, 0) == tuple(arr[254, 304:310])
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_voi_zero_entries(self):
- """Test that 0 entries is interpreted correctly."""
- ds = dcmread(VOI_08_1F)
-@@ -2029,6 +2067,7 @@ class TestNumpy_ApplyVOI:
- assert 'uint16' == out.dtype
- assert [0, 0, 32768, 0, 65535] == out.tolist()
+ def test_little_1bit_1sample_3frame(self):
+ """Test pixel_array for little 1-bit, 1 sample/pixel, 3 frame."""
+ # Check all little endian syntaxes
+@@ -774,6 +794,7 @@ class TestNumpy_NumpyHandler:
+ ds.file_meta.TransferSyntaxUID = uid
+ arr = ds.pixel_array
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_voi_bad_depth(self):
- """Test bad LUT depth raises exception."""
- ds = dcmread(VOI_08_1F)
-@@ -2364,6 +2403,7 @@ class TestNumpy_PackBits:
- """Test packing data that isn't a full byte long."""
- assert output == pack_bits(np.asarray(input), pad=False)
+ def test_little_16bit_1sample_1frame(self):
+ """Test pixel_array for little 16-bit, 1 sample/pixel, 1 frame."""
+ # Check all little endian syntaxes
+@@ -790,6 +811,7 @@ class TestNumpy_NumpyHandler:
+ # Last pixel
+ assert 862 == arr[-1, -1]
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_functional(self):
- """Test against a real dataset."""
- ds = dcmread(EXPL_1_1_3F)
---- a/pydicom/tests/test_numpy_pixel_data.py
-+++ b/pydicom/tests/test_numpy_pixel_data.py
-@@ -66,11 +66,11 @@ except ImportError:
- # DEFL: Deflated Explicit VR Little Endian
- # EXPB: Explicit VR Big Endian
- # 1/1, 1 sample/pixel, 1 frame
--EXPL_1_1_1F = get_testdata_file("liver_1frame.dcm")
--EXPB_1_1_1F = get_testdata_file("liver_expb_1frame.dcm")
-+##EXPL_1_1_1F = get_testdata_file("liver_1frame.dcm")
-+##EXPB_1_1_1F = get_testdata_file("liver_expb_1frame.dcm")
- # 1/1, 1 sample/pixel, 3 frame
--EXPL_1_1_3F = get_testdata_file("liver.dcm")
--EXPB_1_1_3F = get_testdata_file("liver_expb.dcm")
-+##EXPL_1_1_3F = get_testdata_file("liver.dcm")
-+##EXPB_1_1_3F = get_testdata_file("liver_expb.dcm")
- # 1/1, 3 sample/pixel, 1 frame
- EXPL_1_3_1F = None
- EXPB_1_3_1F = None
-@@ -78,74 +78,74 @@ EXPB_1_3_1F = None
- EXPL_1_3_XF = None
- EXPB_1_3_XF = None
- # 8/8, 1 sample/pixel, 1 frame
--DEFL_8_1_1F = get_testdata_file("image_dfl.dcm")
--EXPL_8_1_1F = get_testdata_file("OBXXXX1A.dcm")
--EXPB_8_1_1F = get_testdata_file("OBXXXX1A_expb.dcm")
-+##DEFL_8_1_1F = get_testdata_file("image_dfl.dcm")
-+##EXPL_8_1_1F = get_testdata_file("OBXXXX1A.dcm")
-+##EXPB_8_1_1F = get_testdata_file("OBXXXX1A_expb.dcm")
- # 8/8, 1 sample/pixel, 2 frame
--EXPL_8_1_2F = get_testdata_file("OBXXXX1A_2frame.dcm")
--EXPB_8_1_2F = get_testdata_file("OBXXXX1A_expb_2frame.dcm")
-+##EXPL_8_1_2F = get_testdata_file("OBXXXX1A_2frame.dcm")
-+##EXPB_8_1_2F = get_testdata_file("OBXXXX1A_expb_2frame.dcm")
- # 8/8, 3 sample/pixel, 1 frame
--EXPL_8_3_1F = get_testdata_file("SC_rgb.dcm")
--EXPB_8_3_1F = get_testdata_file("SC_rgb_expb.dcm")
-+##EXPL_8_3_1F = get_testdata_file("SC_rgb.dcm")
-+##EXPB_8_3_1F = get_testdata_file("SC_rgb_expb.dcm")
- # 8/8, 3 samples/pixel, 1 frame, 3 x 3
--EXPL_8_3_1F_ODD = get_testdata_file('SC_rgb_small_odd.dcm')
--EXPL_8_3_1F_ODD_BIGE = get_testdata_file('SC_rgb_small_odd_big_endian.dcm')
-+##EXPL_8_3_1F_ODD = get_testdata_file('SC_rgb_small_odd.dcm')
-+##EXPL_8_3_1F_ODD_BIGE = get_testdata_file('SC_rgb_small_odd_big_endian.dcm')
- # 8/8, 3 sample/pixel, 1 frame, YBR_FULL_422
--EXPL_8_3_1F_YBR422 = get_testdata_file('SC_ybr_full_422_uncompressed.dcm')
-+##EXPL_8_3_1F_YBR422 = get_testdata_file('SC_ybr_full_422_uncompressed.dcm')
- # 8/8, 3 sample/pixel, 1 frame, YBR_FULL
--EXPL_8_3_1F_YBR = get_testdata_file('SC_ybr_full_uncompressed.dcm')
-+##EXPL_8_3_1F_YBR = get_testdata_file('SC_ybr_full_uncompressed.dcm')
- # 8/8, 3 sample/pixel, 2 frame
--EXPL_8_3_2F = get_testdata_file("SC_rgb_2frame.dcm")
--EXPB_8_3_2F = get_testdata_file("SC_rgb_expb_2frame.dcm")
-+##EXPL_8_3_2F = get_testdata_file("SC_rgb_2frame.dcm")
-+##EXPB_8_3_2F = get_testdata_file("SC_rgb_expb_2frame.dcm")
- # 16/16, 1 sample/pixel, 1 frame
--IMPL_16_1_1F = get_testdata_file("MR_small_implicit.dcm")
--EXPL_16_1_1F = get_testdata_file("MR_small.dcm")
--EXPB_16_1_1F = get_testdata_file("MR_small_expb.dcm")
-+##IMPL_16_1_1F = get_testdata_file("MR_small_implicit.dcm")
-+##EXPL_16_1_1F = get_testdata_file("MR_small.dcm")
-+##EXPB_16_1_1F = get_testdata_file("MR_small_expb.dcm")
- # Pixel Data with 128 bytes trailing padding
--EXPL_16_1_1F_PAD = get_testdata_file("MR_small_padded.dcm")
-+##EXPL_16_1_1F_PAD = get_testdata_file("MR_small_padded.dcm")
- # 16/12, 1 sample/pixel, 10 frame
--EXPL_16_1_10F = get_testdata_file("emri_small.dcm")
--EXPB_16_1_10F = get_testdata_file("emri_small_big_endian.dcm")
-+##EXPL_16_1_10F = get_testdata_file("emri_small.dcm")
-+##EXPB_16_1_10F = get_testdata_file("emri_small_big_endian.dcm")
- # 16/16, 3 sample/pixel, 1 frame
--EXPL_16_3_1F = get_testdata_file("SC_rgb_16bit.dcm")
--EXPB_16_3_1F = get_testdata_file("SC_rgb_expb_16bit.dcm")
-+##EXPL_16_3_1F = get_testdata_file("SC_rgb_16bit.dcm")
-+##EXPB_16_3_1F = get_testdata_file("SC_rgb_expb_16bit.dcm")
- # 16/16, 3 sample/pixel, 2 frame
--EXPL_16_3_2F = get_testdata_file("SC_rgb_16bit_2frame.dcm")
--EXPB_16_3_2F = get_testdata_file("SC_rgb_expb_16bit_2frame.dcm")
-+##EXPL_16_3_2F = get_testdata_file("SC_rgb_16bit_2frame.dcm")
-+##EXPB_16_3_2F = get_testdata_file("SC_rgb_expb_16bit_2frame.dcm")
- # 32/32, 1 sample/pixel, 1 frame
--IMPL_32_1_1F = get_testdata_file("rtdose_1frame.dcm")
--EXPB_32_1_1F = get_testdata_file("rtdose_expb_1frame.dcm")
-+##IMPL_32_1_1F = get_testdata_file("rtdose_1frame.dcm")
-+##EXPB_32_1_1F = get_testdata_file("rtdose_expb_1frame.dcm")
- # 32/32, 1 sample/pixel, 15 frame
--IMPL_32_1_15F = get_testdata_file("rtdose.dcm")
--EXPB_32_1_15F = get_testdata_file("rtdose_expb.dcm")
-+##IMPL_32_1_15F = get_testdata_file("rtdose.dcm")
-+##EXPB_32_1_15F = get_testdata_file("rtdose_expb.dcm")
- # 32/32, 3 sample/pixel, 1 frame
--EXPL_32_3_1F = get_testdata_file("SC_rgb_32bit.dcm")
--EXPB_32_3_1F = get_testdata_file("SC_rgb_expb_32bit.dcm")
-+##EXPL_32_3_1F = get_testdata_file("SC_rgb_32bit.dcm")
-+##EXPB_32_3_1F = get_testdata_file("SC_rgb_expb_32bit.dcm")
- # 32/32, 3 sample/pixel, 2 frame
--EXPL_32_3_2F = get_testdata_file("SC_rgb_32bit_2frame.dcm")
--EXPB_32_3_2F = get_testdata_file("SC_rgb_expb_32bit_2frame.dcm")
-+##EXPL_32_3_2F = get_testdata_file("SC_rgb_32bit_2frame.dcm")
-+##EXPB_32_3_2F = get_testdata_file("SC_rgb_expb_32bit_2frame.dcm")
-
- # Transfer syntaxes supported by other handlers
- # JPEG Baseline (Process 1)
--JPEG_BASELINE_1 = get_testdata_file("SC_rgb_jpeg_dcmtk.dcm")
-+##JPEG_BASELINE_1 = get_testdata_file("SC_rgb_jpeg_dcmtk.dcm")
- # JPEG Baseline (Process 2 and 4)
--JPEG_EXTENDED_2 = get_testdata_file("JPEG-lossy.dcm")
-+##JPEG_EXTENDED_2 = get_testdata_file("JPEG-lossy.dcm")
- # JPEG Lossless (Process 14)
- JPEG_LOSSLESS_14 = None
- # JPEG Lossless (Process 14, Selection Value 1)
--JPEG_LOSSLESS_14_1 = get_testdata_file("SC_rgb_jpeg_gdcm.dcm")
-+##JPEG_LOSSLESS_14_1 = get_testdata_file("SC_rgb_jpeg_gdcm.dcm")
- # JPEG-LS Lossless
--JPEG_LS_LOSSLESS = get_testdata_file("MR_small_jpeg_ls_lossless.dcm")
-+##JPEG_LS_LOSSLESS = get_testdata_file("MR_small_jpeg_ls_lossless.dcm")
- # JPEG-LS Lossy
- JPEG_LS_LOSSY = None
- # JPEG2k Lossless
--JPEG_2K_LOSSLESS = get_testdata_file("emri_small_jpeg_2k_lossless.dcm")
-+##JPEG_2K_LOSSLESS = get_testdata_file("emri_small_jpeg_2k_lossless.dcm")
- # JPEG2k
--JPEG_2K = get_testdata_file("JPEG2000.dcm")
-+##JPEG_2K = get_testdata_file("JPEG2000.dcm")
- # RLE Lossless
--RLE = get_testdata_file("MR_small_RLE.dcm")
-+##RLE = get_testdata_file("MR_small_RLE.dcm")
- # No Image Pixel module
--NO_PIXEL = get_testdata_file("rtplan.dcm")
-+##NO_PIXEL = get_testdata_file("rtplan.dcm")
+ def test_little_16bit_1sample_1frame_padded(self):
+ """Test with padded little 16-bit, 1 sample/pixel, 1 frame."""
+ ds = dcmread(EXPL_16_1_1F_PAD)
+@@ -824,6 +846,7 @@ class TestNumpy_NumpyHandler:
+ # Last pixel
+ assert 862 == arr[-1, -1]
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_little_16bit_1sample_10frame(self):
+ """Test pixel_array for little 16-bit, 1 sample/pixel, 10 frame."""
+ # Check all little endian syntaxes
+@@ -847,6 +870,7 @@ class TestNumpy_NumpyHandler:
+ assert (25, 4, 9) == tuple(arr[-1, 31, :3])
+ assert (227, 300, 147) == tuple(arr[-1, -1, -3:])
- # Transfer Syntaxes (non-retired + Explicit VR Big Endian)
-@@ -167,15 +167,15 @@ def test_unsupported_syntaxes():
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_little_16bit_3sample_1frame(self):
+ """Test pixel_array for little 16-bit, 3 sample/pixel, 1 frame."""
+ # Check all little endian syntaxes
+@@ -868,6 +892,7 @@ class TestNumpy_NumpyHandler:
+ assert (49344, 49344, 49344) == tuple(arr[85, 50, :])
+ assert (65535, 65535, 65535) == tuple(arr[95, 50, :])
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_little_16bit_3sample_2frame(self):
+ """Test pixel_array for little 16-bit, 3 sample/pixel, 2 frame."""
+ # Check all little endian syntaxes
+@@ -892,6 +917,7 @@ class TestNumpy_NumpyHandler:
+ # Frame 2 is frame 1 inverted
+ assert np.array_equal((2 ** ds.BitsAllocated - 1) - arr[1], arr[0])
- REFERENCE_DATA_UNSUPPORTED = [
-- (JPEG_BASELINE_1, ('1.2.840.10008.1.2.4.50', 'Lestrade^G')),
-- (JPEG_EXTENDED_2, ('1.2.840.10008.1.2.4.51', 'CompressedSamples^NM1')),
-- # (JPEG_LOSSLESS_14, ('1.2.840.10008.1.2.4.57')), # No dataset available
-- (JPEG_LOSSLESS_14_1, ('1.2.840.10008.1.2.4.70', 'Lestrade^G')),
-- (JPEG_LS_LOSSLESS, ('1.2.840.10008.1.2.4.80', 'CompressedSamples^MR1')),
-- # (JPEG_LS_LOSSY, ('1.2.840.10008.1.2.4.81')), # No dataset available
-- (JPEG_2K_LOSSLESS, ('1.2.840.10008.1.2.4.90', '')),
-- (JPEG_2K, ('1.2.840.10008.1.2.4.91', 'CompressedSamples^NM1')),
-- (RLE, ('1.2.840.10008.1.2.5', 'CompressedSamples^MR1')),
-+# (JPEG_BASELINE_1, ('1.2.840.10008.1.2.4.50', 'Lestrade^G')),
-+# (JPEG_EXTENDED_2, ('1.2.840.10008.1.2.4.51', 'CompressedSamples^NM1')),
-+# # (JPEG_LOSSLESS_14, ('1.2.840.10008.1.2.4.57')), # No dataset available
-+# (JPEG_LOSSLESS_14_1, ('1.2.840.10008.1.2.4.70', 'Lestrade^G')),
-+# (JPEG_LS_LOSSLESS, ('1.2.840.10008.1.2.4.80', 'CompressedSamples^MR1')),
-+# # (JPEG_LS_LOSSY, ('1.2.840.10008.1.2.4.81')), # No dataset available
-+# (JPEG_2K_LOSSLESS, ('1.2.840.10008.1.2.4.90', '')),
-+# (JPEG_2K, ('1.2.840.10008.1.2.4.91', 'CompressedSamples^NM1')),
-+# (RLE, ('1.2.840.10008.1.2.5', 'CompressedSamples^MR1')),
- ]
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_little_32bit_1sample_1frame(self):
+ """Test pixel_array for little 32-bit, 1 sample/pixel, 1 frame."""
+ # Check all little endian syntaxes
+@@ -906,6 +932,7 @@ class TestNumpy_NumpyHandler:
+ assert (1031000, 1029000, 1027000) == tuple(arr[4, 3:6])
+ assert (803000, 801000, 798000) == tuple(arr[-1, -3:])
- SUPPORTED_HANDLER_NAMES = (
-@@ -338,6 +338,7 @@ class TestNumpy_NoNumpyHandler:
- # We numpy handler should still be available
- assert NP_HANDLER is not None
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_little_32bit_1sample_15frame(self):
+ """Test pixel_array for little 32-bit, 1 sample/pixel, 15 frame."""
+ # Check all little endian syntaxes
+@@ -929,6 +956,7 @@ class TestNumpy_NumpyHandler:
+ assert (1031000, 1031000, 1031000) == tuple(arr[-1, 4, 3:6])
+ assert (801000, 800000, 799000) == tuple(arr[-1, -1, -3:])
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_can_access_supported_dataset(self):
- """Test that we can read and access elements in dataset."""
- # Explicit little
-@@ -360,6 +361,7 @@ class TestNumpy_NoNumpyHandler:
- assert 'CompressedSamples^MR1' == ds.PatientName
- assert 8192 == len(ds.PixelData)
+ def test_little_32bit_3sample_1frame(self):
+ """Test pixel_array for little 32-bit, 3 sample/pixel, 1 frame."""
+ # Check all little endian syntaxes
+@@ -950,6 +978,7 @@ class TestNumpy_NumpyHandler:
+ assert (3233857728, 3233857728, 3233857728) == tuple(ar[85, 50, :])
+ assert (4294967295, 4294967295, 4294967295) == tuple(ar[95, 50, :])
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- @pytest.mark.parametrize("fpath,data", REFERENCE_DATA_UNSUPPORTED)
- def test_can_access_unsupported_dataset(self, fpath, data):
- """Test can read and access elements in unsupported datasets."""
-@@ -367,6 +369,7 @@ class TestNumpy_NoNumpyHandler:
- assert data[0] == ds.file_meta.TransferSyntaxUID
- assert data[1] == ds.PatientName
+ def test_little_32bit_3sample_2frame(self):
+ """Test pixel_array for little 32-bit, 3 sample/pixel, 10 frame."""
+ # Check all little endian syntaxes
+@@ -986,6 +1015,7 @@ class TestNumpy_NumpyHandler:
+ # Frame 2 is frame 1 inverted
+ assert np.array_equal((2 ** ds.BitsAllocated - 1) - arr[1], arr[0])
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_pixel_array_raises(self):
- """Test pixel_array raises exception for all syntaxes."""
- ds = dcmread(EXPL_16_1_1F)
-@@ -378,42 +381,42 @@ class TestNumpy_NoNumpyHandler:
+ def test_little_32bit_float_1frame(self):
+ """Test pixel_array for float pixel data, 1 frame."""
+ ds = dcmread(IMPL_32_1_1F)
+@@ -1002,6 +1032,7 @@ class TestNumpy_NumpyHandler:
+ assert 1.44e-39 == pytest.approx(arr[4, 3], abs=0.01e-39)
+ assert 1.13e-39 == pytest.approx(arr[-1, -3], abs=0.01e-39)
- # Numpy and the numpy handler are available
- MATCHING_DATASETS = [
-- (EXPL_1_1_1F, EXPB_1_1_1F),
-- (EXPL_1_1_3F, EXPB_1_1_3F),
-- (EXPL_8_1_1F, EXPB_8_1_1F),
-- (EXPL_8_1_2F, EXPB_8_1_2F),
-- (EXPL_8_3_1F, EXPB_8_3_1F),
-- (EXPL_8_3_2F, EXPB_8_3_2F),
-- (EXPL_16_1_1F, EXPB_16_1_1F),
-- (EXPL_16_1_10F, EXPB_16_1_10F),
-- (EXPL_16_3_1F, EXPB_16_3_1F),
-- (EXPL_16_3_2F, EXPB_16_3_2F),
-- (IMPL_32_1_1F, EXPB_32_1_1F),
-- (IMPL_32_1_15F, EXPB_32_1_15F),
-- (EXPL_32_3_1F, EXPB_32_3_1F),
-- (EXPL_32_3_2F, EXPB_32_3_2F)
-+# (EXPL_1_1_1F, EXPB_1_1_1F),
-+# (EXPL_1_1_3F, EXPB_1_1_3F),
-+# (EXPL_8_1_1F, EXPB_8_1_1F),
-+# (EXPL_8_1_2F, EXPB_8_1_2F),
-+# (EXPL_8_3_1F, EXPB_8_3_1F),
-+# (EXPL_8_3_2F, EXPB_8_3_2F),
-+# (EXPL_16_1_1F, EXPB_16_1_1F),
-+# (EXPL_16_1_10F, EXPB_16_1_10F),
-+# (EXPL_16_3_1F, EXPB_16_3_1F),
-+# (EXPL_16_3_2F, EXPB_16_3_2F),
-+# (IMPL_32_1_1F, EXPB_32_1_1F),
-+# (IMPL_32_1_15F, EXPB_32_1_15F),
-+# (EXPL_32_3_1F, EXPB_32_3_1F),
-+# (EXPL_32_3_2F, EXPB_32_3_2F)
- ]
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_little_32bit_float_15frame(self):
+ """Test pixel_array for float pixel data, 15 frames."""
+ ds = dcmread(IMPL_32_1_15F)
+@@ -1018,6 +1049,7 @@ class TestNumpy_NumpyHandler:
+ assert 1.44e-39 == pytest.approx(arr[0, 4, 3], abs=0.01e-39)
+ assert 1.13e-39 == pytest.approx(arr[0, -1, -3], abs=0.01e-39)
- EXPL = ExplicitVRLittleEndian
- IMPL = ImplicitVRLittleEndian
- REFERENCE_DATA_LITTLE = [
-- # fpath, (syntax, bits, nr samples, pixel repr, nr frames, shape, dtype)
-- (EXPL_1_1_1F, (EXPL, 1, 1, 0, 1, (512, 512), 'uint8')),
-- (EXPL_1_1_3F, (EXPL, 1, 1, 0, 3, (3, 512, 512), 'uint8')),
-- (EXPL_8_1_1F, (EXPL, 8, 1, 0, 1, (600, 800), 'uint8')),
-- (EXPL_8_3_1F_ODD, (EXPL, 8, 3, 0, 1, (3, 3, 3), 'uint8')),
-- (EXPL_8_3_1F_YBR422, (EXPL, 8, 3, 0, 1, (100, 100, 3), 'uint8')),
-- (EXPL_8_1_2F, (EXPL, 8, 1, 0, 2, (2, 600, 800), 'uint8')),
-- (EXPL_8_3_1F, (EXPL, 8, 3, 0, 1, (100, 100, 3), 'uint8')),
-- (EXPL_8_3_2F, (EXPL, 8, 3, 0, 2, (2, 100, 100, 3), 'uint8')),
-- (EXPL_16_1_1F, (EXPL, 16, 1, 1, 1, (64, 64), 'int16')),
-- (EXPL_16_1_10F, (EXPL, 16, 1, 0, 10, (10, 64, 64), 'uint16')),
-- (EXPL_16_3_1F, (EXPL, 16, 3, 0, 1, (100, 100, 3), 'uint16')),
-- (EXPL_16_3_2F, (EXPL, 16, 3, 0, 2, (2, 100, 100, 3), 'uint16')),
-- (IMPL_32_1_1F, (IMPL, 32, 1, 0, 1, (10, 10), 'uint32')),
-- (IMPL_32_1_15F, (IMPL, 32, 1, 0, 15, (15, 10, 10), 'uint32')),
-- (EXPL_32_3_1F, (EXPL, 32, 3, 0, 1, (100, 100, 3), 'uint32')),
-- (EXPL_32_3_2F, (EXPL, 32, 3, 0, 2, (2, 100, 100, 3), 'uint32')),
-+# # fpath, (syntax, bits, nr samples, pixel repr, nr frames, shape, dtype)
-+# (EXPL_1_1_1F, (EXPL, 1, 1, 0, 1, (512, 512), 'uint8')),
-+# (EXPL_1_1_3F, (EXPL, 1, 1, 0, 3, (3, 512, 512), 'uint8')),
-+# (EXPL_8_1_1F, (EXPL, 8, 1, 0, 1, (600, 800), 'uint8')),
-+# (EXPL_8_3_1F_ODD, (EXPL, 8, 3, 0, 1, (3, 3, 3), 'uint8')),
-+# (EXPL_8_3_1F_YBR422, (EXPL, 8, 3, 0, 1, (100, 100, 3), 'uint8')),
-+# (EXPL_8_1_2F, (EXPL, 8, 1, 0, 2, (2, 600, 800), 'uint8')),
-+# (EXPL_8_3_1F, (EXPL, 8, 3, 0, 1, (100, 100, 3), 'uint8')),
-+# (EXPL_8_3_2F, (EXPL, 8, 3, 0, 2, (2, 100, 100, 3), 'uint8')),
-+# (EXPL_16_1_1F, (EXPL, 16, 1, 1, 1, (64, 64), 'int16')),
-+# (EXPL_16_1_10F, (EXPL, 16, 1, 0, 10, (10, 64, 64), 'uint16')),
-+# (EXPL_16_3_1F, (EXPL, 16, 3, 0, 1, (100, 100, 3), 'uint16')),
-+# (EXPL_16_3_2F, (EXPL, 16, 3, 0, 2, (2, 100, 100, 3), 'uint16')),
-+# (IMPL_32_1_1F, (IMPL, 32, 1, 0, 1, (10, 10), 'uint32')),
-+# (IMPL_32_1_15F, (IMPL, 32, 1, 0, 15, (15, 10, 10), 'uint32')),
-+# (EXPL_32_3_1F, (EXPL, 32, 3, 0, 1, (100, 100, 3), 'uint32')),
-+# (EXPL_32_3_2F, (EXPL, 32, 3, 0, 2, (2, 100, 100, 3), 'uint32')),
- ]
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_little_64bit_float_1frame(self):
+ """Test pixel_array for double float pixel data, 1 frame."""
+ ds = dcmread(IMPL_32_1_1F)
+@@ -1035,6 +1067,7 @@ class TestNumpy_NumpyHandler:
+ assert 1.80e-308 == pytest.approx(arr[4, 3], abs=0.01e-308)
+ assert 1.69e-308 == pytest.approx(arr[-1, -3], abs=0.01e-308)
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_little_64bit_float_15frame(self):
+ """Test pixel_array for double float pixel data, 15 frames."""
+ ds = dcmread(IMPL_32_1_15F)
+@@ -1080,6 +1113,7 @@ class TestNumpy_NumpyHandler:
-@@ -435,6 +438,7 @@ class TestNumpy_NumpyHandler:
- assert HAVE_NP
- assert NP_HANDLER is not None
+ assert ds.pixel_array.max() == 1
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_unsupported_syntax_raises(self):
- """Test pixel_array raises exception for unsupported syntaxes."""
+ def test_read_only(self):
+ """Test for #717, returned array read-only."""
+ ds = dcmread(EXPL_8_1_1F)
+@@ -1094,6 +1128,7 @@ class TestNumpy_NumpyHandler:
+ @pytest.mark.skipif(not HAVE_NP, reason='Numpy is not available')
+ class TestNumpy_GetPixelData:
+ """Tests for numpy_handler.get_pixeldata with numpy."""
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_no_pixel_data_raises(self):
+ """Test get_pixeldata raises if dataset has no PixelData."""
ds = dcmread(EXPL_16_1_1F)
-@@ -444,6 +448,7 @@ class TestNumpy_NumpyHandler:
- with pytest.raises((NotImplementedError, RuntimeError)):
- ds.pixel_array
+@@ -1109,6 +1144,7 @@ class TestNumpy_GetPixelData:
+ with pytest.raises(AttributeError, match=msg):
+ get_pixeldata(ds)
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_dataset_pixel_array_handler_needs_convert(self):
- """Test Dataset.pixel_array when converting to RGB."""
+ def test_missing_required_elem_pixel_data_monochrome(self):
+ """Tet get_pixeldata raises if dataset missing required element."""
+ required_attrs = (
+@@ -1130,6 +1166,7 @@ class TestNumpy_GetPixelData:
+ with pytest.raises(AttributeError, match=msg):
+ get_pixeldata(ds)
+
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_missing_required_elem_pixel_data_color(self):
+ """Tet get_pixeldata raises if dataset missing required element."""
ds = dcmread(EXPL_8_3_1F)
-@@ -472,6 +477,7 @@ class TestNumpy_NumpyHandler:
- # Reset
- NP_HANDLER.needs_to_convert_to_RGB = orig_fn
+@@ -1142,6 +1179,7 @@ class TestNumpy_GetPixelData:
+ with pytest.raises(AttributeError, match=msg):
+ get_pixeldata(ds)
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_dataset_pixel_array_no_pixels(self):
- """Test good exception message if no pixel data in dataset."""
- ds = dcmread(NO_PIXEL)
-@@ -483,6 +489,7 @@ class TestNumpy_NumpyHandler:
+ def test_missing_conditionally_required_elem_pixel_data_color(self):
+ """Tet get_pixeldata raises if dataset missing required element."""
+ ds = dcmread(EXPL_8_3_1F)
+@@ -1154,6 +1192,7 @@ class TestNumpy_GetPixelData:
with pytest.raises(AttributeError, match=msg):
- ds.pixel_array
+ get_pixeldata(ds)
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- @pytest.mark.parametrize("fpath, data", REFERENCE_DATA_UNSUPPORTED)
- def test_can_access_unsupported_dataset(self, fpath, data):
- """Test can read and access elements in unsupported datasets."""
-@@ -490,6 +497,7 @@ class TestNumpy_NumpyHandler:
- assert data[0] == ds.file_meta.TransferSyntaxUID
- assert data[1] == ds.PatientName
+ def test_missing_required_elem_float_pixel_data_monochrome(self):
+ """Tet get_pixeldata raises if dataset missing required element."""
+ ds = dcmread(IMPL_32_1_1F)
+@@ -1167,6 +1206,7 @@ class TestNumpy_GetPixelData:
+ with pytest.raises(AttributeError, match=msg):
+ get_pixeldata(ds)
+
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_unknown_pixel_representation_raises(self):
+ """Test get_pixeldata raises if unsupported PixelRepresentation."""
+ ds = dcmread(EXPL_16_1_1F)
+@@ -1175,6 +1215,7 @@ class TestNumpy_GetPixelData:
+ match=r"value of '2' for '\(0028,0103"):
+ get_pixeldata(ds)
+
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ def test_unsupported_syntaxes_raises(self):
+ """Test get_pixeldata raises if unsupported Transfer Syntax."""
+ ds = dcmread(EXPL_16_1_1F)
+@@ -1183,6 +1224,7 @@ class TestNumpy_GetPixelData:
+ match=' the transfer syntax is not supported'):
+ get_pixeldata(ds)
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_pixel_array_8bit_un_signed(self):
- """Test pixel_array for 8-bit unsigned -> signed data."""
+ def test_bad_length_raises(self):
+ """Test bad pixel data length raises exception."""
ds = dcmread(EXPL_8_1_1F)
-@@ -505,6 +513,7 @@ class TestNumpy_NumpyHandler:
- assert (1, -10, 1) == tuple(arr[300, 491:494])
- assert 0 == arr[-1].min() == arr[-1].max()
+@@ -1197,6 +1239,7 @@ class TestNumpy_GetPixelData:
+ with pytest.raises(ValueError, match=msg):
+ get_pixeldata(ds)
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- @pytest.mark.parametrize("handler_name", SUPPORTED_HANDLER_NAMES)
- def test_decompress_using_handler(self, handler_name):
- """Test different possibilities for the numpy handler name."""
-@@ -515,6 +524,7 @@ class TestNumpy_NumpyHandler:
- assert (1, 246, 1) == tuple(ds.pixel_array[300, 491:494])
- assert 0 == ds.pixel_array[-1].min() == ds.pixel_array[-1].max()
+ def test_missing_padding_warns(self):
+ """A warning shall be issued if the padding for odd data is missing."""
+ ds = dcmread(EXPL_8_3_1F_ODD)
+@@ -1206,6 +1249,7 @@ class TestNumpy_GetPixelData:
+ with pytest.warns(UserWarning, match=msg):
+ get_pixeldata(ds)
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_pixel_array_16bit_un_signed(self):
- """Test pixel_array for 16-bit unsigned -> signed."""
- ds = dcmread(EXPL_16_3_1F)
-@@ -529,6 +539,7 @@ class TestNumpy_NumpyHandler:
- assert -1 == arr[0, :, 0].min() == arr[0, :, 0].max()
- assert -32640 == arr[50, :, 0].min() == arr[50, :, 0].max()
+ def test_change_photometric_interpretation(self):
+ """Test get_pixeldata changes PhotometricInterpretation if required."""
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_pixel_array_32bit_un_signed(self):
- """Test pixel_array for 32-bit unsigned -> signed."""
- ds = dcmread(EXPL_32_3_1F)
-@@ -544,6 +555,7 @@ class TestNumpy_NumpyHandler:
- assert -2139062144 == arr[50, :, 0].min() == arr[50, :, 0].max()
+@@ -1229,6 +1273,7 @@ class TestNumpy_GetPixelData:
- # Endian independent datasets
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_8bit_1sample_1frame(self):
- """Test pixel_array for 8-bit, 1 sample/pixel, 1 frame."""
- # Check supported syntaxes
-@@ -559,6 +571,7 @@ class TestNumpy_NumpyHandler:
- assert (1, 246, 1) == tuple(arr[300, 491:494])
- assert 0 == arr[-1].min() == arr[-1].max()
+ NP_HANDLER.should_change_PhotometricInterpretation_to_RGB = orig_fn
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_8bit_1sample_2frame(self):
- """Test pixel_array for 8-bit, 1 sample/pixel, 2 frame."""
- # Check supported syntaxes
-@@ -577,6 +590,7 @@ class TestNumpy_NumpyHandler:
- # Frame 2 is frame 1 inverted
- assert np.array_equal((2 ** ds.BitsAllocated - 1) - arr[1], arr[0])
+ def test_array_read_only(self):
+ """Test returning a read only array for BitsAllocated > 8."""
+ ds = dcmread(EXPL_8_1_1F)
+@@ -1243,6 +1288,7 @@ class TestNumpy_GetPixelData:
+ with pytest.raises(ValueError, match="is read-only"):
+ arr[10] = 0
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_8bit_3sample_1frame_odd_size(self):
- """Test pixel_array for odd sized (3x3) pixel data."""
- # Check supported syntaxes
-@@ -595,6 +609,7 @@ class TestNumpy_NumpyHandler:
- [158, 158, 158], [158, 158, 158], [158, 158, 158]
- ]
+ def test_array_read_only_bit_packed(self):
+ """Test returning a read only array for BitsAllocated = 1."""
+ ds = dcmread(EXPL_1_1_1F)
+@@ -1252,6 +1298,7 @@ class TestNumpy_GetPixelData:
+ arr = get_pixeldata(ds, read_only=True)
+ assert arr.flags.writeable
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_8bit_3sample_1frame_ybr422(self):
- """Test pixel_array for YBR_FULL_422 pixel data."""
+ def test_ybr422_excess_padding(self):
+ """Test YBR data with excess padding."""
ds = dcmread(EXPL_8_3_1F_YBR422)
-@@ -620,6 +635,7 @@ class TestNumpy_NumpyHandler:
+@@ -1276,6 +1323,7 @@ class TestNumpy_GetPixelData:
assert (192, 128, 128) == tuple(arr[85, 50, :])
assert (255, 128, 128) == tuple(arr[95, 50, :])
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_8bit_3sample_1frame(self):
- """Test pixel_array for 8-bit, 3 sample/pixel, 1 frame."""
- # Check supported syntaxes
-@@ -641,6 +657,7 @@ class TestNumpy_NumpyHandler:
- assert (192, 192, 192) == tuple(arr[85, 50, :])
- assert (255, 255, 255) == tuple(arr[95, 50, :])
+ def test_ybr422_wrong_interpretation(self):
+ """Test YBR data with wrong Photometric Interpretation."""
+ ds = dcmread(EXPL_8_3_1F_YBR)
+@@ -1289,6 +1337,7 @@ class TestNumpy_GetPixelData:
+ # Resulting data will be nonsense but of correct shape
+ assert (100, 100, 3) == arr.shape
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_8bit_3sample_2frame(self):
- """Test pixel_array for 8-bit, 3 sample/pixel, 2 frame."""
- # Check supported syntaxes
-@@ -667,6 +684,7 @@ class TestNumpy_NumpyHandler:
- assert np.array_equal((2 ** ds.BitsAllocated - 1) - arr[1], arr[0])
+ def test_float_pixel_data(self):
+ """Test handling of Float Pixel Data."""
+ # Only 1 sample per pixel allowed
+@@ -1299,6 +1348,7 @@ class TestNumpy_GetPixelData:
+ arr = get_pixeldata(ds)
+ assert 'float32' == arr.dtype
- # Little endian datasets
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- @pytest.mark.parametrize('fpath, data', REFERENCE_DATA_LITTLE)
- def test_properties(self, fpath, data):
- """Test dataset and pixel array properties are as expected."""
-@@ -695,6 +713,7 @@ class TestNumpy_NumpyHandler:
- if size % 2:
- assert ds.PixelData[-1] == b'\x00'[0]
+ def test_double_float_pixel_data(self):
+ """Test handling of Double Float Pixel Data."""
+ # Only 1 sample per pixel allowed
+@@ -1309,6 +1359,7 @@ class TestNumpy_GetPixelData:
+ arr = get_pixeldata(ds)
+ assert 'float64' == arr.dtype
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_little_1bit_1sample_1frame(self):
- """Test pixel_array for little 1-bit, 1 sample/pixel, 1 frame."""
- # Check all little endian syntaxes
-@@ -713,6 +732,7 @@ class TestNumpy_NumpyHandler:
- assert (0, 1, 1) == tuple(arr[254, 78:81])
- assert (1, 0, 0, 1, 1, 0) == tuple(arr[254, 304:310])
+ def test_big_endian_rgb_data(self):
+ """RGB data encoded as OW in Big Endian transfer syntax shall
+ yield the same data as if encoded in Little Endian."""
+diff --git a/pydicom/tests/test_overlay_np.py b/pydicom/tests/test_overlay_np.py
+index d3ba235..43a24b5 100644
+--- a/pydicom/tests/test_overlay_np.py
++++ b/pydicom/tests/test_overlay_np.py
+@@ -55,13 +55,13 @@ except ImportError:
+ # Paths to the test datasets
+ # EXPL: Explicit VR Little Endian
+ # Overlay Data
+-# 1/1, 1 sample/pixel, 1 frame
+-EXPL_1_1_1F = get_testdata_file("MR-SIEMENS-DICOM-WithOverlays.dcm")
++## 1/1, 1 sample/pixel, 1 frame
++#EXPL_1_1_1F = get_testdata_file("MR-SIEMENS-DICOM-WithOverlays.dcm")
+ # 1/1, 1 sample/pixel, N frame
+ EXPL_1_1_3F = None
+ # No Overlay Data
+-# 16/16, 1 sample/pixel, 1 frame
+-EXPL_16_1_1F = get_testdata_file("MR_small.dcm")
++## 16/16, 1 sample/pixel, 1 frame
++#EXPL_16_1_1F = get_testdata_file("MR_small.dcm")
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_little_1bit_1sample_3frame(self):
- """Test pixel_array for little 1-bit, 1 sample/pixel, 3 frame."""
- # Check all little endian syntaxes
-@@ -774,6 +794,7 @@ class TestNumpy_NumpyHandler:
- ds.file_meta.TransferSyntaxUID = uid
- arr = ds.pixel_array
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_little_16bit_1sample_1frame(self):
- """Test pixel_array for little 16-bit, 1 sample/pixel, 1 frame."""
- # Check all little endian syntaxes
-@@ -790,6 +811,7 @@ class TestNumpy_NumpyHandler:
- # Last pixel
- assert 862 == arr[-1, -1]
+ # Numpy unavailable and the numpy handler is available
+@@ -82,6 +82,7 @@ class TestNoNumpy_NumpyHandler:
+ assert not HAVE_NP
+ assert NP_HANDLER is not None
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_little_16bit_1sample_1frame_padded(self):
- """Test with padded little 16-bit, 1 sample/pixel, 1 frame."""
- ds = dcmread(EXPL_16_1_1F_PAD)
-@@ -824,6 +846,7 @@ class TestNumpy_NumpyHandler:
- # Last pixel
- assert 862 == arr[-1, -1]
+ def test_overlay_array_raises(self):
+ """Test overlay_array raises exception"""
+ ds = dcmread(EXPL_1_1_1F)
+@@ -89,6 +90,7 @@ class TestNoNumpy_NumpyHandler:
+ with pytest.raises(RuntimeError, match=msg):
+ ds.overlay_array(0x6000)
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_little_16bit_1sample_10frame(self):
- """Test pixel_array for little 16-bit, 1 sample/pixel, 10 frame."""
- # Check all little endian syntaxes
-@@ -847,6 +870,7 @@ class TestNumpy_NumpyHandler:
- assert (25, 4, 9) == tuple(arr[-1, 31, :3])
- assert (227, 300, 147) == tuple(arr[-1, -1, -3:])
+ def test_get_overlay_array_raises(self):
+ """Test get_overlay_array raises exception"""
+ ds = dcmread(EXPL_1_1_1F)
+@@ -110,7 +112,7 @@ IMPL = ImplicitVRLittleEndian
+ REFERENCE_DATA_LITTLE = [
+ # fpath, (syntax, bits, nr samples, pixel repr, nr frames, shape, dtype,
+ # group)
+- (EXPL_1_1_1F, (EXPL, 1, 1, 0, 1, (484, 484), 'uint8', 0x6000)),
++# (EXPL_1_1_1F, (EXPL, 1, 1, 0, 1, (484, 484), 'uint8', 0x6000)),
+ # (EXPL_1_1_3F, (EXPL, 1, 1, 0, 3, (3, 512, 512), 'uint8', 0x6000)),
+ ]
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_little_16bit_3sample_1frame(self):
- """Test pixel_array for little 16-bit, 3 sample/pixel, 1 frame."""
- # Check all little endian syntaxes
-@@ -868,6 +892,7 @@ class TestNumpy_NumpyHandler:
- assert (49344, 49344, 49344) == tuple(arr[85, 50, :])
- assert (65535, 65535, 65535) == tuple(arr[95, 50, :])
+@@ -154,6 +156,7 @@ class TestNumpy_NumpyHandler:
+ if size % 2:
+ assert ds[group, 0x3000].value[-1] == b'\x00'[0]
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_little_16bit_3sample_2frame(self):
- """Test pixel_array for little 16-bit, 3 sample/pixel, 2 frame."""
- # Check all little endian syntaxes
-@@ -892,6 +917,7 @@ class TestNumpy_NumpyHandler:
- # Frame 2 is frame 1 inverted
- assert np.array_equal((2 ** ds.BitsAllocated - 1) - arr[1], arr[0])
+ def test_little_1bit_1sample_1frame(self):
+ """Test pixel_array for little 1-bit, 1 sample/pixel, 1 frame."""
+ ds = dcmread(EXPL_1_1_1F)
+@@ -170,6 +173,7 @@ class TestNumpy_NumpyHandler:
+ ds = dcmread(EXPL_1_1_3F)
+ arr = ds.overlay_array(0x6000)
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_little_32bit_1sample_1frame(self):
- """Test pixel_array for little 32-bit, 1 sample/pixel, 1 frame."""
- # Check all little endian syntaxes
-@@ -906,6 +932,7 @@ class TestNumpy_NumpyHandler:
- assert (1031000, 1029000, 1027000) == tuple(arr[4, 3:6])
- assert (803000, 801000, 798000) == tuple(arr[-1, -3:])
+ def test_read_only(self):
+ """Test for #717, returned array read-only."""
+ ds = dcmread(EXPL_1_1_1F)
+@@ -179,6 +183,7 @@ class TestNumpy_NumpyHandler:
+ assert 1 == arr[0, 0]
+ assert arr.flags.writeable
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_little_32bit_1sample_15frame(self):
- """Test pixel_array for little 32-bit, 1 sample/pixel, 15 frame."""
- # Check all little endian syntaxes
-@@ -929,6 +956,7 @@ class TestNumpy_NumpyHandler:
- assert (1031000, 1031000, 1031000) == tuple(arr[-1, 4, 3:6])
- assert (801000, 800000, 799000) == tuple(arr[-1, -1, -3:])
+ def test_bad_group_raises(self):
+ """Test that using a bad group raises exception."""
+ ds = dcmread(EXPL_1_1_1F)
+@@ -191,6 +196,7 @@ class TestNumpy_NumpyHandler:
+ with pytest.raises(ValueError, match=msg):
+ ds.overlay_array(0x6100)
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_little_32bit_3sample_1frame(self):
- """Test pixel_array for little 32-bit, 3 sample/pixel, 1 frame."""
- # Check all little endian syntaxes
-@@ -950,6 +978,7 @@ class TestNumpy_NumpyHandler:
- assert (3233857728, 3233857728, 3233857728) == tuple(ar[85, 50, :])
- assert (4294967295, 4294967295, 4294967295) == tuple(ar[95, 50, :])
-
+ def test_no_frames(self):
+ """Test handler with no NumberOfFramesInOverlay element."""
+ ds = dcmread(EXPL_1_1_1F)
+@@ -206,6 +212,7 @@ class TestNumpy_NumpyHandler:
+ @pytest.mark.skipif(not HAVE_NP, reason='Numpy is not available')
+ class TestNumpy_GetOverlayArray:
+ """Tests for numpy_handler.get_overlay_array with numpy."""
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_little_32bit_3sample_2frame(self):
- """Test pixel_array for little 32-bit, 3 sample/pixel, 10 frame."""
- # Check all little endian syntaxes
-@@ -986,6 +1015,7 @@ class TestNumpy_NumpyHandler:
- # Frame 2 is frame 1 inverted
- assert np.array_equal((2 ** ds.BitsAllocated - 1) - arr[1], arr[0])
+ def test_no_overlay_data_raises(self):
+ """Test get_overlay_array raises if dataset has no OverlayData."""
+ ds = dcmread(EXPL_1_1_1F)
+@@ -214,6 +221,7 @@ class TestNumpy_GetOverlayArray:
+ with pytest.raises(AttributeError, match=r' dataset: OverlayData'):
+ get_overlay_array(ds, 0x6000)
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_little_32bit_float_1frame(self):
- """Test pixel_array for float pixel data, 1 frame."""
- ds = dcmread(IMPL_32_1_1F)
-@@ -1002,6 +1032,7 @@ class TestNumpy_NumpyHandler:
- assert 1.44e-39 == pytest.approx(arr[4, 3], abs=0.01e-39)
- assert 1.13e-39 == pytest.approx(arr[-1, -3], abs=0.01e-39)
+ def test_bad_length_raises(self):
+ """Test bad pixel data length raises exception."""
+ ds = dcmread(EXPL_1_1_1F)
+@@ -228,6 +236,7 @@ class TestNumpy_GetOverlayArray:
+ with pytest.raises(ValueError, match=msg):
+ get_overlay_array(ds, 0x6000)
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_little_32bit_float_15frame(self):
- """Test pixel_array for float pixel data, 15 frames."""
- ds = dcmread(IMPL_32_1_15F)
-@@ -1018,6 +1049,7 @@ class TestNumpy_NumpyHandler:
- assert 1.44e-39 == pytest.approx(arr[0, 4, 3], abs=0.01e-39)
- assert 1.13e-39 == pytest.approx(arr[0, -1, -3], abs=0.01e-39)
+ def test_missing_padding_warns(self):
+ """A warning shall be issued if the padding for odd data is missing."""
+ ds = dcmread(EXPL_1_1_1F)
+@@ -239,6 +248,7 @@ class TestNumpy_GetOverlayArray:
+ with pytest.warns(UserWarning, match=msg):
+ get_overlay_array(ds, 0x6000)
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_little_64bit_float_1frame(self):
- """Test pixel_array for double float pixel data, 1 frame."""
- ds = dcmread(IMPL_32_1_1F)
-@@ -1035,6 +1067,7 @@ class TestNumpy_NumpyHandler:
- assert 1.80e-308 == pytest.approx(arr[4, 3], abs=0.01e-308)
- assert 1.69e-308 == pytest.approx(arr[-1, -3], abs=0.01e-308)
+ def test_excess_padding(self):
+ """A warning shall be issued excess padding present."""
+ ds = dcmread(EXPL_1_1_1F)
+@@ -254,6 +264,7 @@ class TestNumpy_GetOverlayArray:
+ with pytest.warns(UserWarning, match=msg):
+ get_overlay_array(ds, 0x6000)
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_little_64bit_float_15frame(self):
- """Test pixel_array for double float pixel data, 15 frames."""
- ds = dcmread(IMPL_32_1_15F)
-@@ -1080,6 +1113,7 @@ class TestNumpy_NumpyHandler:
+ def test_old_import(self):
+ """Test that can import using the old path."""
+ from pydicom.overlay_data_handlers import numpy_handler as np_old
+diff --git a/pydicom/tests/test_pillow_pixel_data.py b/pydicom/tests/test_pillow_pixel_data.py
+index b662af7..9a509ac 100644
+--- a/pydicom/tests/test_pillow_pixel_data.py
++++ b/pydicom/tests/test_pillow_pixel_data.py
+@@ -54,52 +54,53 @@ TEST_JPEG2K = TEST_PIL and HAVE_JPEG2K
+ # FRAMES: NumberOfFrames
+ # PI: PhotometricInterpretation
+ # FMT_BA_BV_SPX_PR_FRAMESF_PI
+-# JPGB: 1.2.840.10008.1.2.4.50 - JPEG Baseline (8-bit only)
+-JPGB_08_08_3_0_1F_YBR_FULL = get_testdata_file("SC_rgb_small_odd_jpeg.dcm")
+-JPGB_08_08_3_0_120F_YBR_FULL_422 = get_testdata_file("color3d_jpeg_baseline.dcm") # noqa
+-# Different subsampling 411, 422, 444
+-JPGB_08_08_3_0_1F_YBR_FULL_422_411 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+np.dcm") # noqa
+-JPGB_08_08_3_0_1F_YBR_FULL_422_422 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+s2.dcm") # noqa
+-JPGB_08_08_3_0_1F_YBR_FULL_411 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+n1.dcm") # noqa
+-JPGB_08_08_3_0_1F_YBR_FULL_422 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+n2.dcm") # noqa
+-JPGB_08_08_3_0_1F_YBR_FULL_444 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+s4.dcm") # noqa
+-JPGB_08_08_3_0_1F_RGB = get_testdata_file("SC_jpeg_no_color_transform.dcm")
+-JPGB_08_08_3_0_1F_RGB_APP14 = get_testdata_file("SC_jpeg_no_color_transform_2.dcm") # noqa
+-# JPGE: 1.2.840.10008.1.2.4.51 - JPEG Extended (Process 2 and 4) (8 and 12-bit)
+-# No supported datasets available
+-
+-# JPEG 2000 - ISO/IEC 15444 Standard
+-# J2KR: 1.2.840.100008.1.2.4.90 - JPEG 2000 Lossless
+-J2KR_08_08_3_0_1F_YBR_ICT = get_testdata_file("US1_J2KR.dcm")
+-J2KR_16_10_1_0_1F_M1 = get_testdata_file("RG3_J2KR.dcm")
+-J2KR_16_12_1_0_1F_M2 = get_testdata_file("MR2_J2KR.dcm")
+-J2KR_16_15_1_0_1F_M1 = get_testdata_file("RG1_J2KR.dcm")
+-J2KR_16_16_1_0_10F_M2 = get_testdata_file("emri_small_jpeg_2k_lossless.dcm")
+-J2KR_16_14_1_1_1F_M2 = get_testdata_file("693_J2KR.dcm")
+-J2KR_16_16_1_1_1F_M2 = get_testdata_file("MR_small_jp2klossless.dcm")
+-J2KR_16_13_1_1_1F_M2_MISMATCH = get_testdata_file("J2K_pixelrep_mismatch.dcm")
+-# J2KI: 1.2.840.10008.1.2.4.91 - JPEG 2000
+-J2KI_08_08_3_0_1F_RGB = get_testdata_file("SC_rgb_gdcm_KY.dcm")
+-J2KI_08_08_3_0_1F_YBR_ICT = get_testdata_file("US1_J2KI.dcm")
+-J2KI_16_10_1_0_1F_M1 = get_testdata_file("RG3_J2KI.dcm")
+-J2KI_16_12_1_0_1F_M2 = get_testdata_file("MR2_J2KI.dcm")
+-J2KI_16_15_1_0_1F_M1 = get_testdata_file("RG1_J2KI.dcm")
+-J2KI_16_14_1_1_1F_M2 = get_testdata_file("693_J2KI.dcm")
+-J2KI_16_16_1_1_1F_M2 = get_testdata_file("JPEG2000.dcm")
+-
+-# Transfer syntaxes supported by other handlers
+-IMPL = get_testdata_file("MR_small_implicit.dcm")
+-EXPL = get_testdata_file("OBXXXX1A.dcm")
+-EXPB = get_testdata_file("OBXXXX1A_expb.dcm")
+-DEFL = get_testdata_file("image_dfl.dcm")
+-JPEG_LS_LOSSLESS = get_testdata_file("MR_small_jpeg_ls_lossless.dcm")
+-RLE = get_testdata_file("MR_small_RLE.dcm")
+-JPGE_16_12_1_0_1F_M2 = get_testdata_file("JPEG-lossy.dcm")
+-JPGL_16_16_1_1_1F_M2 = get_testdata_file("JPEG-LL.dcm")
+-# JPGL14: 1.2.840.10008.1.2.4.57 - JPEG Lossless P14
+-# No datasets available
+-# JPGL: 1.2.840.10008.1.2.4.70 - JPEG Lossless, Non-hierarchical, 1st Order
+-JPGL_08_08_1_0_1F = get_testdata_file("JPGLosslessP14SV1_1s_1f_8b.dcm")
++## JPGB: 1.2.840.10008.1.2.4.50 - JPEG Baseline (8-bit only)
++#JPGB_08_08_3_0_1F_YBR_FULL = get_testdata_file("SC_rgb_small_odd_jpeg.dcm")
++#JPGB_08_08_3_0_120F_YBR_FULL_422 = get_testdata_file("color3d_jpeg_baseline.dcm") # noqa
++## Different subsampling 411, 422, 444
++#JPGB_08_08_3_0_1F_YBR_FULL_422_411 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+np.dcm") # noqa
++#JPGB_08_08_3_0_1F_YBR_FULL_422_422 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+s2.dcm") # noqa
++#JPGB_08_08_3_0_1F_YBR_FULL_411 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+n1.dcm") # noqa
++#JPGB_08_08_3_0_1F_YBR_FULL_422 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+n2.dcm") # noqa
++#JPGB_08_08_3_0_1F_YBR_FULL_444 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+s4.dcm") # noqa
++#JPGB_08_08_3_0_1F_RGB = get_testdata_file("SC_jpeg_no_color_transform.dcm")
++#JPGB_08_08_3_0_1F_RGB_APP14 = get_testdata_file("SC_jpeg_no_color_transform_2.dcm") # noqa
++## JPGE: 1.2.840.10008.1.2.4.51 - JPEG Extended (Process 2 and 4) (8 and 12-bit)
++## No supported datasets available
++#
++## JPEG 2000 - ISO/IEC 15444 Standard
++## J2KR: 1.2.840.100008.1.2.4.90 - JPEG 2000 Lossless
++#J2KR_08_08_3_0_1F_YBR_ICT = get_testdata_file("US1_J2KR.dcm")
++#J2KR_16_10_1_0_1F_M1 = get_testdata_file("RG3_J2KR.dcm")
++#J2KR_16_12_1_0_1F_M2 = get_testdata_file("MR2_J2KR.dcm")
++#J2KR_16_15_1_0_1F_M1 = get_testdata_file("RG1_J2KR.dcm")
++#J2KR_16_16_1_0_10F_M2 = get_testdata_file("emri_small_jpeg_2k_lossless.dcm")
++#J2KR_16_14_1_1_1F_M2 = get_testdata_file("693_J2KR.dcm")
++#J2KR_16_16_1_1_1F_M2 = get_testdata_file("MR_small_jp2klossless.dcm")
++#J2KR_16_13_1_1_1F_M2_MISMATCH = get_testdata_file("J2K_pixelrep_mismatch.dcm")
++## J2KI: 1.2.840.10008.1.2.4.91 - JPEG 2000
++#J2KI_08_08_3_0_1F_RGB = get_testdata_file("SC_rgb_gdcm_KY.dcm")
++#J2KI_08_08_3_0_1F_YBR_ICT = get_testdata_file("US1_J2KI.dcm")
++#J2KI_16_10_1_0_1F_M1 = get_testdata_file("RG3_J2KI.dcm")
++#J2KI_16_12_1_0_1F_M2 = get_testdata_file("MR2_J2KI.dcm")
++#J2KI_16_15_1_0_1F_M1 = get_testdata_file("RG1_J2KI.dcm")
++#J2KI_16_14_1_1_1F_M2 = get_testdata_file("693_J2KI.dcm")
++#J2KI_16_16_1_1_1F_M2 = get_testdata_file("JPEG2000.dcm")
++#
++## Transfer syntaxes supported by other handlers
++#IMPL = get_testdata_file("MR_small_implicit.dcm")
++#EXPL = get_testdata_file("OBXXXX1A.dcm")
++EXPL = None
++#EXPB = get_testdata_file("OBXXXX1A_expb.dcm")
++#DEFL = get_testdata_file("image_dfl.dcm")
++#JPEG_LS_LOSSLESS = get_testdata_file("MR_small_jpeg_ls_lossless.dcm")
++#RLE = get_testdata_file("MR_small_RLE.dcm")
++#JPGE_16_12_1_0_1F_M2 = get_testdata_file("JPEG-lossy.dcm")
++#JPGL_16_16_1_1_1F_M2 = get_testdata_file("JPEG-LL.dcm")
++## JPGL14: 1.2.840.10008.1.2.4.57 - JPEG Lossless P14
++## No datasets available
++## JPGL: 1.2.840.10008.1.2.4.70 - JPEG Lossless, Non-hierarchical, 1st Order
++#JPGL_08_08_1_0_1F = get_testdata_file("JPGLosslessP14SV1_1s_1f_8b.dcm")
- assert ds.pixel_array.max() == 1
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_read_only(self):
- """Test for #717, returned array read-only."""
- ds = dcmread(EXPL_8_1_1F)
-@@ -1094,6 +1128,7 @@ class TestNumpy_NumpyHandler:
- @pytest.mark.skipif(not HAVE_NP, reason='Numpy is not available')
- class TestNumpy_GetPixelData:
- """Tests for numpy_handler.get_pixeldata with numpy."""
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_no_pixel_data_raises(self):
- """Test get_pixeldata raises if dataset has no PixelData."""
- ds = dcmread(EXPL_16_1_1F)
-@@ -1109,6 +1144,7 @@ class TestNumpy_GetPixelData:
- with pytest.raises(AttributeError, match=msg):
- get_pixeldata(ds)
+ # Transfer Syntaxes (non-retired + Explicit VR Big Endian)
+@@ -124,13 +125,13 @@ def test_unsupported_syntaxes():
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_missing_required_elem_pixel_data_monochrome(self):
- """Tet get_pixeldata raises if dataset missing required element."""
- required_attrs = (
-@@ -1130,6 +1166,7 @@ class TestNumpy_GetPixelData:
- with pytest.raises(AttributeError, match=msg):
- get_pixeldata(ds)
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_missing_required_elem_pixel_data_color(self):
- """Tet get_pixeldata raises if dataset missing required element."""
- ds = dcmread(EXPL_8_3_1F)
-@@ -1142,6 +1179,7 @@ class TestNumpy_GetPixelData:
- with pytest.raises(AttributeError, match=msg):
- get_pixeldata(ds)
+ REFERENCE_DATA_UNSUPPORTED = [
+- (IMPL, ('1.2.840.10008.1.2', 'CompressedSamples^MR1')),
+- (EXPL, ('1.2.840.10008.1.2.1', 'OB^^^^')),
+- (EXPB, ('1.2.840.10008.1.2.2', 'OB^^^^')),
+- (DEFL, ('1.2.840.10008.1.2.1.99', '^^^^')),
+- (JPEG_LS_LOSSLESS, ('1.2.840.10008.1.2.4.80', 'CompressedSamples^MR1')),
+- (JPGL_08_08_1_0_1F, ('1.2.840.10008.1.2.4.70', 'Citizen^Jan')),
+- (RLE, ('1.2.840.10008.1.2.5', 'CompressedSamples^MR1')),
++# (IMPL, ('1.2.840.10008.1.2', 'CompressedSamples^MR1')),
++# (EXPL, ('1.2.840.10008.1.2.1', 'OB^^^^')),
++# (EXPB, ('1.2.840.10008.1.2.2', 'OB^^^^')),
++# (DEFL, ('1.2.840.10008.1.2.1.99', '^^^^')),
++# (JPEG_LS_LOSSLESS, ('1.2.840.10008.1.2.4.80', 'CompressedSamples^MR1')),
++# (JPGL_08_08_1_0_1F, ('1.2.840.10008.1.2.4.70', 'Citizen^Jan')),
++# (RLE, ('1.2.840.10008.1.2.5', 'CompressedSamples^MR1')),
+ ]
+
+
+@@ -210,171 +211,171 @@ JPGL = JPEGLosslessSV1
+ J2KI = JPEG2000
+ J2KR = JPEG2000Lossless
+ REFERENCE_DATA = [
+- # fpath, (syntax, bits, nr samples, pixel repr, nr frames, shape, dtype)
+- (JPGB_08_08_3_0_120F_YBR_FULL_422, (JPGB, 8, 3, 0, 120, (120, 480, 640, 3), 'uint8')), # noqa
+- (JPGB_08_08_3_0_1F_YBR_FULL_422_411, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
+- (JPGB_08_08_3_0_1F_YBR_FULL_422_422, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
+- (JPGB_08_08_3_0_1F_YBR_FULL_411, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
+- (JPGB_08_08_3_0_1F_YBR_FULL_422, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
+- (JPGB_08_08_3_0_1F_YBR_FULL_444, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
+- (JPGB_08_08_3_0_1F_RGB, (JPGB, 8, 3, 0, 1, (256, 256, 3), 'uint8')),
+- (JPGB_08_08_3_0_1F_RGB_APP14, (JPGB, 8, 3, 0, 1, (256, 256, 3), 'uint8')),
+- (J2KR_08_08_3_0_1F_YBR_ICT, (J2KR, 8, 3, 0, 1, (480, 640, 3), 'uint8')),
+- (J2KR_16_10_1_0_1F_M1, (J2KR, 16, 1, 0, 1, (1760, 1760), 'uint16')),
+- (J2KR_16_12_1_0_1F_M2, (J2KR, 16, 1, 0, 1, (1024, 1024), 'uint16')),
+- (J2KR_16_15_1_0_1F_M1, (J2KR, 16, 1, 0, 1, (1955, 1841), 'uint16')),
+- (J2KR_16_16_1_0_10F_M2, (J2KR, 16, 1, 0, 10, (10, 64, 64), 'uint16')),
+- (J2KR_16_14_1_1_1F_M2, (J2KR, 16, 1, 1, 1, (512, 512), 'int16')),
+- (J2KR_16_16_1_1_1F_M2, (J2KR, 16, 1, 1, 1, (64, 64), 'int16')),
+- (J2KI_08_08_3_0_1F_RGB, (J2KI, 8, 3, 0, 1, (100, 100, 3), 'uint8')),
+- (J2KI_08_08_3_0_1F_YBR_ICT, (J2KI, 8, 3, 0, 1, (480, 640, 3), 'uint8')),
+- (J2KI_16_10_1_0_1F_M1, (J2KI, 16, 1, 0, 1, (1760, 1760), 'uint16')),
+- (J2KI_16_12_1_0_1F_M2, (J2KI, 16, 1, 0, 1, (1024, 1024), 'uint16')),
+- (J2KI_16_15_1_0_1F_M1, (J2KI, 16, 1, 0, 1, (1955, 1841), 'uint16')),
+- (J2KI_16_14_1_1_1F_M2, (J2KI, 16, 1, 1, 1, (512, 512), 'int16')),
+- (J2KI_16_16_1_1_1F_M2, (J2KI, 16, 1, 1, 1, (1024, 256), 'int16')),
++# # fpath, (syntax, bits, nr samples, pixel repr, nr frames, shape, dtype)
++# (JPGB_08_08_3_0_120F_YBR_FULL_422, (JPGB, 8, 3, 0, 120, (120, 480, 640, 3), 'uint8')), # noqa
++# (JPGB_08_08_3_0_1F_YBR_FULL_422_411, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
++# (JPGB_08_08_3_0_1F_YBR_FULL_422_422, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
++# (JPGB_08_08_3_0_1F_YBR_FULL_411, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
++# (JPGB_08_08_3_0_1F_YBR_FULL_422, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
++# (JPGB_08_08_3_0_1F_YBR_FULL_444, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
++# (JPGB_08_08_3_0_1F_RGB, (JPGB, 8, 3, 0, 1, (256, 256, 3), 'uint8')),
++# (JPGB_08_08_3_0_1F_RGB_APP14, (JPGB, 8, 3, 0, 1, (256, 256, 3), 'uint8')),
++# (J2KR_08_08_3_0_1F_YBR_ICT, (J2KR, 8, 3, 0, 1, (480, 640, 3), 'uint8')),
++# (J2KR_16_10_1_0_1F_M1, (J2KR, 16, 1, 0, 1, (1760, 1760), 'uint16')),
++# (J2KR_16_12_1_0_1F_M2, (J2KR, 16, 1, 0, 1, (1024, 1024), 'uint16')),
++# (J2KR_16_15_1_0_1F_M1, (J2KR, 16, 1, 0, 1, (1955, 1841), 'uint16')),
++# (J2KR_16_16_1_0_10F_M2, (J2KR, 16, 1, 0, 10, (10, 64, 64), 'uint16')),
++# (J2KR_16_14_1_1_1F_M2, (J2KR, 16, 1, 1, 1, (512, 512), 'int16')),
++# (J2KR_16_16_1_1_1F_M2, (J2KR, 16, 1, 1, 1, (64, 64), 'int16')),
++# (J2KI_08_08_3_0_1F_RGB, (J2KI, 8, 3, 0, 1, (100, 100, 3), 'uint8')),
++# (J2KI_08_08_3_0_1F_YBR_ICT, (J2KI, 8, 3, 0, 1, (480, 640, 3), 'uint8')),
++# (J2KI_16_10_1_0_1F_M1, (J2KI, 16, 1, 0, 1, (1760, 1760), 'uint16')),
++# (J2KI_16_12_1_0_1F_M2, (J2KI, 16, 1, 0, 1, (1024, 1024), 'uint16')),
++# (J2KI_16_15_1_0_1F_M1, (J2KI, 16, 1, 0, 1, (1955, 1841), 'uint16')),
++# (J2KI_16_14_1_1_1F_M2, (J2KI, 16, 1, 1, 1, (512, 512), 'int16')),
++# (J2KI_16_16_1_1_1F_M2, (J2KI, 16, 1, 1, 1, (1024, 256), 'int16')),
+ ]
+-
++#
+ JPEG_MATCHING_DATASETS = [
+- # (compressed, reference, hard coded check values)
+- pytest.param(
+- JPGB_08_08_3_0_1F_YBR_FULL_422_411,
+- get_testdata_file("SC_rgb_dcmtk_ebcynp_dcmd.dcm"),
+- [
+- (253, 1, 0), (253, 128, 132), (0, 255, 5), (127, 255, 127),
+- (1, 0, 254), (127, 128, 255), (0, 0, 0), (64, 64, 64),
+- (192, 192, 192), (255, 255, 255),
+- ],
+- marks=pytest.mark.xfail(reason="Resulting image is a bad match")
+- ),
+- pytest.param(
+- JPGB_08_08_3_0_1F_YBR_FULL_422_422,
+- get_testdata_file("SC_rgb_dcmtk_ebcys2_dcmd.dcm"),
+- [
+- (254, 0, 0), (255, 127, 127), (0, 255, 5), (129, 255, 129),
+- (0, 0, 254), (128, 127, 255), (0, 0, 0), (64, 64, 64),
+- (192, 192, 192), (255, 255, 255),
+- ],
+- ),
+- pytest.param(
+- JPGB_08_08_3_0_1F_YBR_FULL_411,
+- get_testdata_file("SC_rgb_dcmtk_ebcyn1_dcmd.dcm"),
+- [
+- (253, 1, 0), (253, 128, 132), (0, 255, 5), (127, 255, 127),
+- (1, 0, 254), (127, 128, 255), (0, 0, 0), (64, 64, 64),
+- (192, 192, 192), (255, 255, 255),
+- ],
+- marks=pytest.mark.xfail(reason="Resulting image is a bad match")
+- ),
+- pytest.param(
+- JPGB_08_08_3_0_1F_YBR_FULL_422,
+- get_testdata_file("SC_rgb_dcmtk_ebcyn2_dcmd.dcm"),
+- [
+- (254, 0, 0), (255, 127, 127), (0, 255, 5), (129, 255, 129),
+- (0, 0, 254), (128, 127, 255), (0, 0, 0), (64, 64, 64),
+- (192, 192, 192), (255, 255, 255),
+- ],
+- ),
+- pytest.param(
+- JPGB_08_08_3_0_1F_YBR_FULL_444,
+- get_testdata_file("SC_rgb_dcmtk_ebcys4_dcmd.dcm"),
+- [
+- (254, 0, 0), (255, 127, 127), (0, 255, 5), (129, 255, 129),
+- (0, 0, 254), (128, 127, 255), (0, 0, 0), (64, 64, 64),
+- (192, 192, 192), (255, 255, 255),
+- ],
+- ),
+- pytest.param(
+- JPGB_08_08_3_0_1F_RGB,
+- get_testdata_file("SC_rgb_jpeg_dcmd.dcm"),
+- [
+- (244, 244, 244), (244, 244, 244), (244, 244, 244), (244, 244, 244),
+- (236, 237, 234), (244, 244, 244), (244, 244, 244), (244, 244, 244),
+- (244, 244, 244), (244, 244, 244),
+- ],
+- ),
+- pytest.param(
+- JPGB_08_08_3_0_1F_RGB_APP14,
+- get_testdata_file("SC_rgb_jpeg_app14_dcmd.dcm"),
+- [
+- (246, 246, 246), (246, 246, 246), (246, 246, 246), (246, 246, 246),
+- (246, 246, 246), (244, 244, 246), (246, 246, 246), (246, 246, 246),
+- (246, 246, 246), (246, 246, 246),
+- ],
+- ),
++# # (compressed, reference, hard coded check values)
++# pytest.param(
++# JPGB_08_08_3_0_1F_YBR_FULL_422_411,
++# get_testdata_file("SC_rgb_dcmtk_ebcynp_dcmd.dcm"),
++# [
++# (253, 1, 0), (253, 128, 132), (0, 255, 5), (127, 255, 127),
++# (1, 0, 254), (127, 128, 255), (0, 0, 0), (64, 64, 64),
++# (192, 192, 192), (255, 255, 255),
++# ],
++# marks=pytest.mark.xfail(reason="Resulting image is a bad match")
++# ),
++# pytest.param(
++# JPGB_08_08_3_0_1F_YBR_FULL_422_422,
++# get_testdata_file("SC_rgb_dcmtk_ebcys2_dcmd.dcm"),
++# [
++# (254, 0, 0), (255, 127, 127), (0, 255, 5), (129, 255, 129),
++# (0, 0, 254), (128, 127, 255), (0, 0, 0), (64, 64, 64),
++# (192, 192, 192), (255, 255, 255),
++# ],
++# ),
++# pytest.param(
++# JPGB_08_08_3_0_1F_YBR_FULL_411,
++# get_testdata_file("SC_rgb_dcmtk_ebcyn1_dcmd.dcm"),
++# [
++# (253, 1, 0), (253, 128, 132), (0, 255, 5), (127, 255, 127),
++# (1, 0, 254), (127, 128, 255), (0, 0, 0), (64, 64, 64),
++# (192, 192, 192), (255, 255, 255),
++# ],
++# marks=pytest.mark.xfail(reason="Resulting image is a bad match")
++# ),
++# pytest.param(
++# JPGB_08_08_3_0_1F_YBR_FULL_422,
++# get_testdata_file("SC_rgb_dcmtk_ebcyn2_dcmd.dcm"),
++# [
++# (254, 0, 0), (255, 127, 127), (0, 255, 5), (129, 255, 129),
++# (0, 0, 254), (128, 127, 255), (0, 0, 0), (64, 64, 64),
++# (192, 192, 192), (255, 255, 255),
++# ],
++# ),
++# pytest.param(
++# JPGB_08_08_3_0_1F_YBR_FULL_444,
++# get_testdata_file("SC_rgb_dcmtk_ebcys4_dcmd.dcm"),
++# [
++# (254, 0, 0), (255, 127, 127), (0, 255, 5), (129, 255, 129),
++# (0, 0, 254), (128, 127, 255), (0, 0, 0), (64, 64, 64),
++# (192, 192, 192), (255, 255, 255),
++# ],
++# ),
++# pytest.param(
++# JPGB_08_08_3_0_1F_RGB,
++# get_testdata_file("SC_rgb_jpeg_dcmd.dcm"),
++# [
++# (244, 244, 244), (244, 244, 244), (244, 244, 244), (244, 244, 244),
++# (236, 237, 234), (244, 244, 244), (244, 244, 244), (244, 244, 244),
++# (244, 244, 244), (244, 244, 244),
++# ],
++# ),
++# pytest.param(
++# JPGB_08_08_3_0_1F_RGB_APP14,
++# get_testdata_file("SC_rgb_jpeg_app14_dcmd.dcm"),
++# [
++# (246, 246, 246), (246, 246, 246), (246, 246, 246), (246, 246, 246),
++# (246, 246, 246), (244, 244, 246), (246, 246, 246), (246, 246, 246),
++# (246, 246, 246), (246, 246, 246),
++# ],
++# ),
+ ]
+ JPEG2K_MATCHING_DATASETS = [
+- # (compressed, reference, fixes)
+- pytest.param(
+- J2KR_08_08_3_0_1F_YBR_ICT,
+- get_testdata_file("US1_UNCR.dcm"),
+- {},
+- ),
+- pytest.param(
+- J2KR_16_10_1_0_1F_M1,
+- get_testdata_file("RG3_UNCR.dcm"),
+- {},
+- ),
+- pytest.param(
+- J2KR_16_12_1_0_1F_M2,
+- get_testdata_file("MR2_UNCR.dcm"),
+- {},
+- ),
+- pytest.param(
+- J2KR_16_15_1_0_1F_M1,
+- get_testdata_file("RG1_UNCR.dcm"),
+- {},
+- ),
+- pytest.param(
+- J2KR_16_16_1_0_10F_M2,
+- get_testdata_file("emri_small.dcm"),
+- {'BitsStored': 16},
+- ),
+- pytest.param(
+- J2KR_16_14_1_1_1F_M2,
+- get_testdata_file("693_UNCR.dcm"),
+- {'BitsStored': 14},
+- ),
+- pytest.param(
+- J2KR_16_16_1_1_1F_M2,
+- get_testdata_file("MR_small.dcm"),
+- {},
+- ),
+- pytest.param(
+- J2KI_08_08_3_0_1F_RGB,
+- get_testdata_file("SC_rgb_gdcm2k_uncompressed.dcm"),
+- {},
+- ),
+- pytest.param(
+- J2KI_08_08_3_0_1F_YBR_ICT,
+- get_testdata_file("US1_UNCI.dcm"),
+- {},
+- ),
+- pytest.param(
+- J2KI_16_10_1_0_1F_M1,
+- get_testdata_file("RG3_UNCI.dcm"),
+- {},
+- ),
+- pytest.param(
+- J2KI_16_12_1_0_1F_M2,
+- get_testdata_file("MR2_UNCI.dcm"),
+- {},
+- ),
+- pytest.param(
+- J2KI_16_15_1_0_1F_M1,
+- get_testdata_file("RG1_UNCI.dcm"),
+- {},
+- ),
+- pytest.param(
+- J2KI_16_14_1_1_1F_M2,
+- get_testdata_file("693_UNCI.dcm"),
+- {'BitsStored': 16},
+- ),
+- pytest.param(
+- J2KI_16_16_1_1_1F_M2,
+- get_testdata_file("JPEG2000_UNC.dcm"),
+- {},
+- ),
++# # (compressed, reference, fixes)
++# pytest.param(
++# J2KR_08_08_3_0_1F_YBR_ICT,
++# get_testdata_file("US1_UNCR.dcm"),
++# {},
++# ),
++# pytest.param(
++# J2KR_16_10_1_0_1F_M1,
++# get_testdata_file("RG3_UNCR.dcm"),
++# {},
++# ),
++# pytest.param(
++# J2KR_16_12_1_0_1F_M2,
++# get_testdata_file("MR2_UNCR.dcm"),
++# {},
++# ),
++# pytest.param(
++# J2KR_16_15_1_0_1F_M1,
++# get_testdata_file("RG1_UNCR.dcm"),
++# {},
++# ),
++# pytest.param(
++# J2KR_16_16_1_0_10F_M2,
++# get_testdata_file("emri_small.dcm"),
++# {'BitsStored': 16},
++# ),
++# pytest.param(
++# J2KR_16_14_1_1_1F_M2,
++# get_testdata_file("693_UNCR.dcm"),
++# {'BitsStored': 14},
++# ),
++# pytest.param(
++# J2KR_16_16_1_1_1F_M2,
++# get_testdata_file("MR_small.dcm"),
++# {},
++# ),
++# pytest.param(
++# J2KI_08_08_3_0_1F_RGB,
++# get_testdata_file("SC_rgb_gdcm2k_uncompressed.dcm"),
++# {},
++# ),
++# pytest.param(
++# J2KI_08_08_3_0_1F_YBR_ICT,
++# get_testdata_file("US1_UNCI.dcm"),
++# {},
++# ),
++# pytest.param(
++# J2KI_16_10_1_0_1F_M1,
++# get_testdata_file("RG3_UNCI.dcm"),
++# {},
++# ),
++# pytest.param(
++# J2KI_16_12_1_0_1F_M2,
++# get_testdata_file("MR2_UNCI.dcm"),
++# {},
++# ),
++# pytest.param(
++# J2KI_16_15_1_0_1F_M1,
++# get_testdata_file("RG1_UNCI.dcm"),
++# {},
++# ),
++# pytest.param(
++# J2KI_16_14_1_1_1F_M2,
++# get_testdata_file("693_UNCI.dcm"),
++# {'BitsStored': 16},
++# ),
++# pytest.param(
++# J2KI_16_16_1_1_1F_M2,
++# get_testdata_file("JPEG2000_UNC.dcm"),
++# {},
++# ),
+ ]
+
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_missing_conditionally_required_elem_pixel_data_color(self):
- """Tet get_pixeldata raises if dataset missing required element."""
- ds = dcmread(EXPL_8_3_1F)
-@@ -1154,6 +1192,7 @@ class TestNumpy_GetPixelData:
- with pytest.raises(AttributeError, match=msg):
- get_pixeldata(ds)
+@@ -398,6 +399,7 @@ class TestPillowHandler_JPEG2K:
+ assert HAVE_PIL
+ assert PIL_HANDLER is not None
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_missing_required_elem_float_pixel_data_monochrome(self):
- """Tet get_pixeldata raises if dataset missing required element."""
- ds = dcmread(IMPL_32_1_1F)
-@@ -1167,6 +1206,7 @@ class TestNumpy_GetPixelData:
- with pytest.raises(AttributeError, match=msg):
- get_pixeldata(ds)
+ def test_unsupported_syntax_raises(self):
+ """Test pixel_array raises exception for unsupported syntaxes."""
+ pydicom.config.pixel_data_handlers = [PIL_HANDLER]
+@@ -408,6 +410,7 @@ class TestPillowHandler_JPEG2K:
+ with pytest.raises((NotImplementedError, RuntimeError)):
+ ds.pixel_array
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_unknown_pixel_representation_raises(self):
- """Test get_pixeldata raises if unsupported PixelRepresentation."""
- ds = dcmread(EXPL_16_1_1F)
-@@ -1175,6 +1215,7 @@ class TestNumpy_GetPixelData:
- match=r"value of '2' for '\(0028,0103"):
- get_pixeldata(ds)
+ @pytest.mark.parametrize("fpath, data", REFERENCE_DATA_UNSUPPORTED)
+ def test_can_access_unsupported_dataset(self, fpath, data):
+ """Test can read and access elements in unsupported datasets."""
+@@ -415,6 +418,7 @@ class TestPillowHandler_JPEG2K:
+ assert data[0] == ds.file_meta.TransferSyntaxUID
+ assert data[1] == ds.PatientName
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_unsupported_syntaxes_raises(self):
- """Test get_pixeldata raises if unsupported Transfer Syntax."""
- ds = dcmread(EXPL_16_1_1F)
-@@ -1183,6 +1224,7 @@ class TestNumpy_GetPixelData:
- match=' the transfer syntax is not supported'):
- get_pixeldata(ds)
+ @pytest.mark.parametrize('fpath, data', REFERENCE_DATA)
+ def test_properties(self, fpath, data):
+ """Test dataset and pixel array properties are as expected."""
+@@ -439,6 +443,7 @@ class TestPillowHandler_JPEG2K:
+ assert data[5] == arr.shape
+ assert arr.dtype == data[6]
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_bad_length_raises(self):
- """Test bad pixel data length raises exception."""
- ds = dcmread(EXPL_8_1_1F)
-@@ -1197,6 +1239,7 @@ class TestNumpy_GetPixelData:
- with pytest.raises(ValueError, match=msg):
- get_pixeldata(ds)
+ @pytest.mark.parametrize('fpath, rpath, fixes', JPEG2K_MATCHING_DATASETS)
+ def test_array(self, fpath, rpath, fixes):
+ """Test pixel_array returns correct values."""
+@@ -453,6 +458,7 @@ class TestPillowHandler_JPEG2K:
+ ref = dcmread(rpath).pixel_array
+ assert np.array_equal(arr, ref)
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_missing_padding_warns(self):
- """A warning shall be issued if the padding for odd data is missing."""
- ds = dcmread(EXPL_8_3_1F_ODD)
-@@ -1206,6 +1249,7 @@ class TestNumpy_GetPixelData:
+ def test_warning(self):
+ """Test that the precision warning works OK."""
+ ds = dcmread(J2KR_16_14_1_1_1F_M2)
+@@ -464,6 +470,7 @@ class TestPillowHandler_JPEG2K:
with pytest.warns(UserWarning, match=msg):
- get_pixeldata(ds)
-
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_change_photometric_interpretation(self):
- """Test get_pixeldata changes PhotometricInterpretation if required."""
-
-@@ -1229,6 +1273,7 @@ class TestNumpy_GetPixelData:
-
- NP_HANDLER.should_change_PhotometricInterpretation_to_RGB = orig_fn
-
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_array_read_only(self):
- """Test returning a read only array for BitsAllocated > 8."""
- ds = dcmread(EXPL_8_1_1F)
-@@ -1243,6 +1288,7 @@ class TestNumpy_GetPixelData:
- with pytest.raises(ValueError, match="is read-only"):
- arr[10] = 0
-
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_array_read_only_bit_packed(self):
- """Test returning a read only array for BitsAllocated = 1."""
- ds = dcmread(EXPL_1_1_1F)
-@@ -1252,6 +1298,7 @@ class TestNumpy_GetPixelData:
- arr = get_pixeldata(ds, read_only=True)
- assert arr.flags.writeable
+ ds.pixel_array
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_ybr422_excess_padding(self):
- """Test YBR data with excess padding."""
- ds = dcmread(EXPL_8_3_1F_YBR422)
-@@ -1276,6 +1323,7 @@ class TestNumpy_GetPixelData:
- assert (192, 128, 128) == tuple(arr[85, 50, :])
- assert (255, 128, 128) == tuple(arr[95, 50, :])
+ def test_decompress_using_pillow(self):
+ """Test decompressing JPEG2K with pillow handler succeeds."""
+ ds = dcmread(J2KR_16_14_1_1_1F_M2)
+@@ -474,6 +481,8 @@ class TestPillowHandler_JPEG2K:
+ ref = ds.pixel_array
+ assert np.array_equal(arr, ref)
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_ybr422_wrong_interpretation(self):
- """Test YBR data with wrong Photometric Interpretation."""
- ds = dcmread(EXPL_8_3_1F_YBR)
-@@ -1289,6 +1337,7 @@ class TestNumpy_GetPixelData:
- # Resulting data will be nonsense but of correct shape
- assert (100, 100, 3) == arr.shape
-
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_float_pixel_data(self):
- """Test handling of Float Pixel Data."""
- # Only 1 sample per pixel allowed
-@@ -1299,6 +1348,7 @@ class TestNumpy_GetPixelData:
- arr = get_pixeldata(ds)
- assert 'float32' == arr.dtype
+ def test_changing_bits_stored(self):
+ """Test changing BitsStored affects the pixel data."""
+ pydicom.config.APPLY_J2K_CORRECTIONS = False
+@@ -486,6 +495,7 @@ class TestPillowHandler_JPEG2K:
+ arr_14 = ds.pixel_array
+ assert not np.array_equal(arr, arr_14)
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_double_float_pixel_data(self):
- """Test handling of Double Float Pixel Data."""
- # Only 1 sample per pixel allowed
-@@ -1309,6 +1359,7 @@ class TestNumpy_GetPixelData:
- arr = get_pixeldata(ds)
- assert 'float64' == arr.dtype
+ def test_pixel_rep_mismatch(self):
+ """Test mismatched j2k sign and Pixel Representation."""
+ ds = dcmread(J2KR_16_13_1_1_1F_M2_MISMATCH)
+@@ -529,6 +539,7 @@ class TestPillowHandler_JPEG:
+ assert HAVE_PIL
+ assert PIL_HANDLER is not None
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_big_endian_rgb_data(self):
- """RGB data encoded as OW in Big Endian transfer syntax shall
- yield the same data as if encoded in Little Endian."""
---- a/pydicom/tests/test_encoders.py
-+++ b/pydicom/tests/test_encoders.py
-@@ -270,6 +270,7 @@ class TestEncoder:
- assert 'foo - requires bar' == s[0]
-
-
-+ at pytest.mark.skip("When building a Debian package we can not download anything")
- @pytest.mark.skipif(not HAVE_NP, reason="Numpy not available")
- class TestEncoder_Encode:
- """Tests for Encoder.encode() and related methods."""
---- a/pydicom/tests/test_encoders_gdcm.py
-+++ b/pydicom/tests/test_encoders_gdcm.py
-@@ -21,18 +21,19 @@ except ImportError:
- HAVE_GDCM = False
- GDCM_VERSION = [0, 0, 0]
-
--# EXPL: Explicit VR Little Endian
--EXPL_8_1_1F = get_testdata_file("OBXXXX1A.dcm")
--EXPL_8_3_1F = get_testdata_file("SC_rgb.dcm")
--EXPL_16_1_1F = get_testdata_file("MR_small.dcm")
--EXPL_16_3_1F = get_testdata_file("SC_rgb_16bit.dcm")
--EXPL_32_1_1F = get_testdata_file("rtdose_1frame.dcm")
--EXPL_32_3_1F = get_testdata_file("SC_rgb_32bit.dcm")
-+## EXPL: Explicit VR Little Endian
-+#EXPL_8_1_1F = get_testdata_file("OBXXXX1A.dcm")
-+#EXPL_8_3_1F = get_testdata_file("SC_rgb.dcm")
-+#EXPL_16_1_1F = get_testdata_file("MR_small.dcm")
-+#EXPL_16_3_1F = get_testdata_file("SC_rgb_16bit.dcm")
-+#EXPL_32_1_1F = get_testdata_file("rtdose_1frame.dcm")
-+#EXPL_32_3_1F = get_testdata_file("SC_rgb_32bit.dcm")
-
+ def test_unsupported_syntax_raises(self):
+ """Test pixel_array raises exception for unsupported syntaxes."""
+ pydicom.config.pixel_data_handlers = [PIL_HANDLER]
+@@ -546,6 +557,7 @@ class TestPillowHandler_JPEG:
+ assert data[0] == ds.file_meta.TransferSyntaxUID
+ assert data[1] == ds.PatientName
- @pytest.mark.skipif(not HAVE_GDCM, reason='GDCM plugin is not available')
- class TestRLELossless:
- """Tests for encoding RLE Lossless."""
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_cycle_u8_1s_1f(self):
- """Test an encode/decode cycle for 8-bit 1 sample/pixel."""
- ds = dcmread(EXPL_8_1_1F)
-@@ -51,6 +52,7 @@ class TestRLELossless:
-
- assert np.array_equal(ref.ravel(), arr)
+ @pytest.mark.parametrize('fpath, data', REFERENCE_DATA)
+ def test_properties(self, fpath, data):
+ """Test dataset and pixel array properties are as expected."""
+@@ -564,6 +576,7 @@ class TestPillowHandler_JPEG:
+ assert data[5] == arr.shape
+ assert arr.dtype == data[6]
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_cycle_u8_3s_1f(self):
- """Test an encode/decode cycle for 8-bit 3 sample/pixel."""
- ds = dcmread(EXPL_8_3_1F)
-@@ -73,6 +75,7 @@ class TestRLELossless:
+ @pytest.mark.parametrize('fpath, rpath, values', JPEG_MATCHING_DATASETS)
+ def test_array(self, fpath, rpath, values):
+ """Test pixel_array returns correct values."""
+@@ -588,6 +601,7 @@ class TestPillowHandler_JPEG:
- assert np.array_equal(ref, arr)
+ assert np.array_equal(arr, ref)
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_cycle_i16_1s_1f(self):
- """Test an encode/decode cycle for 16-bit 1 sample/pixel."""
- ds = dcmread(EXPL_16_1_1F)
-@@ -93,6 +96,7 @@ class TestRLELossless:
+ def test_color_3d(self):
+ """Test decoding JPEG with pillow handler succeeds."""
+ ds = dcmread(JPGB_08_08_3_0_120F_YBR_FULL_422)
+@@ -602,6 +616,7 @@ class TestPillowHandler_JPEG:
- assert np.array_equal(ref, arr)
+ assert "YBR_FULL_422" == ds.PhotometricInterpretation
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_cycle_u16_3s_1f(self):
- """Test an encode/decode cycle for 16-bit 3 sample/pixel."""
- ds = dcmread(EXPL_16_3_1F)
-@@ -115,6 +119,7 @@ class TestRLELossless:
-
- assert np.array_equal(ref, arr)
+ def test_JPGE_16bit_raises(self):
+ """Test decoding JPEG lossy with pillow handler fails."""
+ ds = dcmread(JPGE_16_12_1_0_1F_M2)
+@@ -612,6 +627,7 @@ class TestPillowHandler_JPEG:
+ with pytest.raises(NotImplementedError, match=msg):
+ ds.pixel_array
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_cycle_u32_1s_1f(self):
- """Test an encode/decode cycle for 32-bit 1 sample/pixel."""
- ds = dcmread(EXPL_32_1_1F)
-@@ -135,6 +140,7 @@ class TestRLELossless:
-
- assert np.array_equal(ref, arr)
+ def test_JPGL_raises(self):
+ """Test decoding JPEG Lossless with pillow handler fails."""
+ ds = dcmread(JPGL_16_16_1_1_1F_M2)
+@@ -619,6 +635,7 @@ class TestPillowHandler_JPEG:
+ with pytest.raises(NotImplementedError, match=msg):
+ ds.pixel_array
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- @pytest.mark.skipif(GDCM_VERSION < [3, 0, 10], reason="GDCM bug")
- def test_cycle_u32_3s_1f(self):
- """Test an encode/decode cycle for 32-bit 3 sample/pixel."""
-@@ -159,6 +165,7 @@ class TestRLELossless:
+ def test_JPGB_odd_data_size(self):
+ """Test decoding JPEG Baseline with pillow handler succeeds."""
+ ds = dcmread(JPGB_08_08_3_0_1F_YBR_FULL)
+diff --git a/pydicom/tests/test_pylibjpeg.py b/pydicom/tests/test_pylibjpeg.py
+index c388b59..a3e67e8 100644
+--- a/pydicom/tests/test_pylibjpeg.py
++++ b/pydicom/tests/test_pylibjpeg.py
+@@ -71,258 +71,258 @@ UNSUPPORTED_SYNTAXES = list(
+ set(AllTransferSyntaxes) ^ set(SUPPORTED_SYNTAXES)
+ )
- assert np.array_equal(ref, arr)
+-# Transfer syntaxes supported by other handlers
+-IMPL = get_testdata_file("MR_small_implicit.dcm")
+-EXPL = get_testdata_file("OBXXXX1A.dcm")
+-EXPB = get_testdata_file("OBXXXX1A_expb.dcm")
+-DEFL = get_testdata_file("image_dfl.dcm")
+-
+-REFERENCE_DATA_UNSUPPORTED = [
+- (IMPL, ('1.2.840.10008.1.2', 'CompressedSamples^MR1')),
+- (EXPL, ('1.2.840.10008.1.2.1', 'OB^^^^')),
+- (EXPB, ('1.2.840.10008.1.2.2', 'OB^^^^')),
+- (DEFL, ('1.2.840.10008.1.2.1.99', '^^^^')),
+-]
+-
+-# RLE Lossless - PackBits algorithm
+-RLE_8_1_1F = get_testdata_file("OBXXXX1A_rle.dcm")
+-RLE_8_1_2F = get_testdata_file("OBXXXX1A_rle_2frame.dcm")
+-RLE_8_3_1F = get_testdata_file("SC_rgb_rle.dcm")
+-RLE_8_3_2F = get_testdata_file("SC_rgb_rle_2frame.dcm")
+-RLE_16_1_1F = get_testdata_file("MR_small_RLE.dcm")
+-RLE_16_1_10F = get_testdata_file("emri_small_RLE.dcm")
+-RLE_16_3_1F = get_testdata_file("SC_rgb_rle_16bit.dcm")
+-RLE_16_3_2F = get_testdata_file("SC_rgb_rle_16bit_2frame.dcm")
+-RLE_32_1_1F = get_testdata_file("rtdose_rle_1frame.dcm")
+-RLE_32_1_15F = get_testdata_file("rtdose_rle.dcm")
+-RLE_32_3_1F = get_testdata_file("SC_rgb_rle_32bit.dcm")
+-RLE_32_3_2F = get_testdata_file("SC_rgb_rle_32bit_2frame.dcm")
+-
+-# JPEG - ISO/IEC 10918 Standard
+-# FMT_BA_BV_SPX_PR_FRAMESF_PI
+-# JPGB: 1.2.840.10008.1.2.4.50 - JPEG Baseline (8-bit only)
+-JPGB_08_08_3_0_1F_YBR_FULL = get_testdata_file("SC_rgb_small_odd_jpeg.dcm")
+-JPGB_08_08_3_0_120F_YBR_FULL_422 = get_testdata_file("color3d_jpeg_baseline.dcm") # noqa
+-# Different subsampling 411, 422, 444
+-JPGB_08_08_3_0_1F_YBR_FULL_422_411 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+np.dcm") # noqa
+-JPGB_08_08_3_0_1F_YBR_FULL_422_422 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+s2.dcm") # noqa
+-JPGB_08_08_3_0_1F_YBR_FULL_411 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+n1.dcm") # noqa
+-JPGB_08_08_3_0_1F_YBR_FULL_422 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+n2.dcm") # noqa
+-JPGB_08_08_3_0_1F_YBR_FULL_444 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+s4.dcm") # noqa
+-JPGB_08_08_3_0_1F_RGB = get_testdata_file("SC_rgb_dcmtk_+eb+cr.dcm")
+-# JPGE: 1.2.840.1.2.4.51 - JPEG Extended
+-JPGE_BAD = get_testdata_file("JPEG-lossy.dcm") # Bad JPEG file
+-JPGE_16_12_1_0_1F_M2 = get_testdata_file("JPGExtended.dcm") # Fixed version
+-# JPGL: 1.2.840.10008.1.2.4.70 - JPEG Lossless, Non-hierarchical, 1st Order
+-JPGL_08_08_1_0_1F = get_testdata_file("JPGLosslessP14SV1_1s_1f_8b.dcm")
+-JPGL_16_16_1_1_1F_M2 = get_testdata_file("JPEG-LL.dcm")
+-
+-JPGB = JPEGBaseline8Bit
+-JPGE = JPEGExtended12Bit
+-JPGL = JPEGLosslessSV1
+-
++## Transfer syntaxes supported by other handlers
++#IMPL = get_testdata_file("MR_small_implicit.dcm")
++#EXPL = get_testdata_file("OBXXXX1A.dcm")
++#EXPB = get_testdata_file("OBXXXX1A_expb.dcm")
++#DEFL = get_testdata_file("image_dfl.dcm")
++#
++#REFERENCE_DATA_UNSUPPORTED = [
++# (IMPL, ('1.2.840.10008.1.2', 'CompressedSamples^MR1')),
++# (EXPL, ('1.2.840.10008.1.2.1', 'OB^^^^')),
++# (EXPB, ('1.2.840.10008.1.2.2', 'OB^^^^')),
++# (DEFL, ('1.2.840.10008.1.2.1.99', '^^^^')),
++#]
++#
++## RLE Lossless - PackBits algorithm
++#RLE_8_1_1F = get_testdata_file("OBXXXX1A_rle.dcm")
++#RLE_8_1_2F = get_testdata_file("OBXXXX1A_rle_2frame.dcm")
++#RLE_8_3_1F = get_testdata_file("SC_rgb_rle.dcm")
++#RLE_8_3_2F = get_testdata_file("SC_rgb_rle_2frame.dcm")
++#RLE_16_1_1F = get_testdata_file("MR_small_RLE.dcm")
++#RLE_16_1_10F = get_testdata_file("emri_small_RLE.dcm")
++#RLE_16_3_1F = get_testdata_file("SC_rgb_rle_16bit.dcm")
++#RLE_16_3_2F = get_testdata_file("SC_rgb_rle_16bit_2frame.dcm")
++#RLE_32_1_1F = get_testdata_file("rtdose_rle_1frame.dcm")
++#RLE_32_1_15F = get_testdata_file("rtdose_rle.dcm")
++#RLE_32_3_1F = get_testdata_file("SC_rgb_rle_32bit.dcm")
++#RLE_32_3_2F = get_testdata_file("SC_rgb_rle_32bit_2frame.dcm")
++#
++## JPEG - ISO/IEC 10918 Standard
++## FMT_BA_BV_SPX_PR_FRAMESF_PI
++## JPGB: 1.2.840.10008.1.2.4.50 - JPEG Baseline (8-bit only)
++#JPGB_08_08_3_0_1F_YBR_FULL = get_testdata_file("SC_rgb_small_odd_jpeg.dcm")
++#JPGB_08_08_3_0_120F_YBR_FULL_422 = get_testdata_file("color3d_jpeg_baseline.dcm") # noqa
++## Different subsampling 411, 422, 444
++#JPGB_08_08_3_0_1F_YBR_FULL_422_411 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+np.dcm") # noqa
++#JPGB_08_08_3_0_1F_YBR_FULL_422_422 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+s2.dcm") # noqa
++#JPGB_08_08_3_0_1F_YBR_FULL_411 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+n1.dcm") # noqa
++#JPGB_08_08_3_0_1F_YBR_FULL_422 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+n2.dcm") # noqa
++#JPGB_08_08_3_0_1F_YBR_FULL_444 = get_testdata_file("SC_rgb_dcmtk_+eb+cy+s4.dcm") # noqa
++#JPGB_08_08_3_0_1F_RGB = get_testdata_file("SC_rgb_dcmtk_+eb+cr.dcm")
++## JPGE: 1.2.840.1.2.4.51 - JPEG Extended
++#JPGE_BAD = get_testdata_file("JPEG-lossy.dcm") # Bad JPEG file
++#JPGE_16_12_1_0_1F_M2 = get_testdata_file("JPGExtended.dcm") # Fixed version
++## JPGL: 1.2.840.10008.1.2.4.70 - JPEG Lossless, Non-hierarchical, 1st Order
++#JPGL_08_08_1_0_1F = get_testdata_file("JPGLosslessP14SV1_1s_1f_8b.dcm")
++#JPGL_16_16_1_1_1F_M2 = get_testdata_file("JPEG-LL.dcm")
++#
++#JPGB = JPEGBaseline8Bit
++#JPGE = JPEGExtended12Bit
++#JPGL = JPEGLosslessSV1
++#
+ JPG_REFERENCE_DATA = [
+- # fpath, (syntax, bits, nr samples, pixel repr, nr frames, shape, dtype)
+- (JPGB_08_08_3_0_120F_YBR_FULL_422, (JPGB, 8, 3, 0, 120, (120, 480, 640, 3), 'uint8')), # noqa
+- (JPGB_08_08_3_0_1F_YBR_FULL_422_411, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
+- (JPGB_08_08_3_0_1F_YBR_FULL_422_422, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
+- (JPGB_08_08_3_0_1F_YBR_FULL_411, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
+- (JPGB_08_08_3_0_1F_YBR_FULL_422, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
+- (JPGB_08_08_3_0_1F_YBR_FULL_444, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
+- (JPGB_08_08_3_0_1F_RGB, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')),
+- (JPGE_16_12_1_0_1F_M2, (JPGE, 16, 1, 0, 1, (1024, 256), 'uint16')),
+- (JPGL_08_08_1_0_1F, (JPGL, 8, 1, 0, 1, (768, 1024), 'uint8')),
+- (JPGL_16_16_1_1_1F_M2, (JPGL, 16, 1, 1, 1, (1024, 256), 'int16')),
++# # fpath, (syntax, bits, nr samples, pixel repr, nr frames, shape, dtype)
++# (JPGB_08_08_3_0_120F_YBR_FULL_422, (JPGB, 8, 3, 0, 120, (120, 480, 640, 3), 'uint8')), # noqa
++# (JPGB_08_08_3_0_1F_YBR_FULL_422_411, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
++# (JPGB_08_08_3_0_1F_YBR_FULL_422_422, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
++# (JPGB_08_08_3_0_1F_YBR_FULL_411, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
++# (JPGB_08_08_3_0_1F_YBR_FULL_422, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
++# (JPGB_08_08_3_0_1F_YBR_FULL_444, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')), # noqa
++# (JPGB_08_08_3_0_1F_RGB, (JPGB, 8, 3, 0, 1, (100, 100, 3), 'uint8')),
++# (JPGE_16_12_1_0_1F_M2, (JPGE, 16, 1, 0, 1, (1024, 256), 'uint16')),
++# (JPGL_08_08_1_0_1F, (JPGL, 8, 1, 0, 1, (768, 1024), 'uint8')),
++# (JPGL_16_16_1_1_1F_M2, (JPGL, 16, 1, 1, 1, (1024, 256), 'int16')),
+ ]
+ JPG_MATCHING_DATASETS = [
+- # (compressed, reference, hard coded check values), px tolerance
+- pytest.param(
+- JPGB_08_08_3_0_1F_YBR_FULL_422_411,
+- get_testdata_file("SC_rgb_dcmtk_ebcynp_dcmd.dcm"),
+- [
+- (253, 1, 0), (253, 129, 131), (0, 255, 5), (127, 255, 129),
+- (0, 0, 254), (127, 128, 255), (0, 0, 0), (64, 64, 64),
+- (192, 192, 192), (255, 255, 255),
+- ],
+- 2
+- ),
+- pytest.param(
+- JPGB_08_08_3_0_1F_YBR_FULL_422_422,
+- get_testdata_file("SC_rgb_dcmtk_ebcys2_dcmd.dcm"),
+- [
+- (254, 0, 0), (255, 127, 127), (0, 255, 5), (129, 255, 129),
+- (0, 0, 254), (128, 127, 255), (0, 0, 0), (64, 64, 64),
+- (192, 192, 192), (255, 255, 255),
+- ],
+- 0
+- ),
+- pytest.param(
+- JPGB_08_08_3_0_1F_YBR_FULL_411,
+- get_testdata_file("SC_rgb_dcmtk_ebcyn1_dcmd.dcm"),
+- [
+- (253, 1, 0), (253, 129, 131), (0, 255, 5), (127, 255, 129),
+- (0, 0, 254), (127, 128, 255), (0, 0, 0), (64, 64, 64),
+- (192, 192, 192), (255, 255, 255),
+- ],
+- 2
+- ),
+- pytest.param(
+- JPGB_08_08_3_0_1F_YBR_FULL_422,
+- get_testdata_file("SC_rgb_dcmtk_ebcyn2_dcmd.dcm"),
+- [
+- (254, 0, 0), (255, 127, 127), (0, 255, 5), (129, 255, 129),
+- (0, 0, 254), (128, 127, 255), (0, 0, 0), (64, 64, 64),
+- (192, 192, 192), (255, 255, 255),
+- ],
+- 0
+- ),
+- pytest.param(
+- JPGB_08_08_3_0_1F_YBR_FULL_444,
+- get_testdata_file("SC_rgb_dcmtk_ebcys4_dcmd.dcm"),
+- [
+- (254, 0, 0), (255, 127, 127), (0, 255, 5), (129, 255, 129),
+- (0, 0, 254), (128, 127, 255), (0, 0, 0), (64, 64, 64),
+- (192, 192, 192), (255, 255, 255),
+- ],
+- 0
+- ),
+- pytest.param(
+- JPGB_08_08_3_0_1F_RGB,
+- get_testdata_file("SC_rgb_dcmtk_ebcr_dcmd.dcm"),
+- [
+- (255, 0, 0), (255, 128, 128), (0, 255, 0), (128, 255, 128),
+- (0, 0, 255), (128, 128, 255), (0, 0, 0), (64, 64, 64),
+- (192, 192, 192), (255, 255, 255),
+- ],
+- 1
+- ),
++# # (compressed, reference, hard coded check values), px tolerance
++# pytest.param(
++# JPGB_08_08_3_0_1F_YBR_FULL_422_411,
++# get_testdata_file("SC_rgb_dcmtk_ebcynp_dcmd.dcm"),
++# [
++# (253, 1, 0), (253, 129, 131), (0, 255, 5), (127, 255, 129),
++# (0, 0, 254), (127, 128, 255), (0, 0, 0), (64, 64, 64),
++# (192, 192, 192), (255, 255, 255),
++# ],
++# 2
++# ),
++# pytest.param(
++# JPGB_08_08_3_0_1F_YBR_FULL_422_422,
++# get_testdata_file("SC_rgb_dcmtk_ebcys2_dcmd.dcm"),
++# [
++# (254, 0, 0), (255, 127, 127), (0, 255, 5), (129, 255, 129),
++# (0, 0, 254), (128, 127, 255), (0, 0, 0), (64, 64, 64),
++# (192, 192, 192), (255, 255, 255),
++# ],
++# 0
++# ),
++# pytest.param(
++# JPGB_08_08_3_0_1F_YBR_FULL_411,
++# get_testdata_file("SC_rgb_dcmtk_ebcyn1_dcmd.dcm"),
++# [
++# (253, 1, 0), (253, 129, 131), (0, 255, 5), (127, 255, 129),
++# (0, 0, 254), (127, 128, 255), (0, 0, 0), (64, 64, 64),
++# (192, 192, 192), (255, 255, 255),
++# ],
++# 2
++# ),
++# pytest.param(
++# JPGB_08_08_3_0_1F_YBR_FULL_422,
++# get_testdata_file("SC_rgb_dcmtk_ebcyn2_dcmd.dcm"),
++# [
++# (254, 0, 0), (255, 127, 127), (0, 255, 5), (129, 255, 129),
++# (0, 0, 254), (128, 127, 255), (0, 0, 0), (64, 64, 64),
++# (192, 192, 192), (255, 255, 255),
++# ],
++# 0
++# ),
++# pytest.param(
++# JPGB_08_08_3_0_1F_YBR_FULL_444,
++# get_testdata_file("SC_rgb_dcmtk_ebcys4_dcmd.dcm"),
++# [
++# (254, 0, 0), (255, 127, 127), (0, 255, 5), (129, 255, 129),
++# (0, 0, 254), (128, 127, 255), (0, 0, 0), (64, 64, 64),
++# (192, 192, 192), (255, 255, 255),
++# ],
++# 0
++# ),
++# pytest.param(
++# JPGB_08_08_3_0_1F_RGB,
++# get_testdata_file("SC_rgb_dcmtk_ebcr_dcmd.dcm"),
++# [
++# (255, 0, 0), (255, 128, 128), (0, 255, 0), (128, 255, 128),
++# (0, 0, 255), (128, 128, 255), (0, 0, 0), (64, 64, 64),
++# (192, 192, 192), (255, 255, 255),
++# ],
++# 1
++# ),
+ ]
+-
+-
+-# JPEG-LS - ISO/IEC 14495 Standard
+-JLSL = JPEGLSNearLossless
+-JLSN = JPEGLSLossless
+-JPEG_LS_LOSSLESS = get_testdata_file("MR_small_jpeg_ls_lossless.dcm")
++#
++#
++## JPEG-LS - ISO/IEC 14495 Standard
++#JLSL = JPEGLSNearLossless
++#JLSN = JPEGLSLossless
++#JPEG_LS_LOSSLESS = get_testdata_file("MR_small_jpeg_ls_lossless.dcm")
+ JLS_REFERENCE_DATA = [
+- # fpath, (syntax, bits, nr samples, pixel repr, nr frames, shape, dtype)
+- (JPEG_LS_LOSSLESS, (JLSN, 16, 1, 1, 1, (64, 64), 'int16')),
++# # fpath, (syntax, bits, nr samples, pixel repr, nr frames, shape, dtype)
++# (JPEG_LS_LOSSLESS, (JLSN, 16, 1, 1, 1, (64, 64), 'int16')),
+ ]
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- @pytest.mark.skipif(GDCM_VERSION >= [3, 0, 10], reason="GDCM bug fixed")
- def test_cycle_u32_3s_1f_raises(self):
- """Test that 32-bit, 3 sample/px data raises exception."""
-@@ -176,6 +183,7 @@ class TestRLELossless:
- with pytest.raises(RuntimeError, match=msg):
- gdcm_rle_encode(ds.PixelData, **kwargs)
+ # JPEG 2000 - ISO/IEC 15444 Standard
+ J2KR = JPEG2000Lossless
+ J2KI = JPEG2000
+-# J2KR: 1.2.840.100008.1.2.4.90 - JPEG 2000 Lossless
+-J2KR_08_08_3_0_1F_YBR_ICT = get_testdata_file("US1_J2KR.dcm")
+-J2KR_16_10_1_0_1F_M1 = get_testdata_file("RG3_J2KR.dcm")
+-J2KR_16_12_1_0_1F_M2 = get_testdata_file("MR2_J2KR.dcm")
+-J2KR_16_15_1_0_1F_M1 = get_testdata_file("RG1_J2KR.dcm")
+-J2KR_16_16_1_0_10F_M2 = get_testdata_file("emri_small_jpeg_2k_lossless.dcm")
+-J2KR_16_14_1_1_1F_M2 = get_testdata_file("693_J2KR.dcm")
+-J2KR_16_16_1_1_1F_M2 = get_testdata_file("MR_small_jp2klossless.dcm")
+-J2KR_16_13_1_1_1F_M2_MISMATCH = get_testdata_file("J2K_pixelrep_mismatch.dcm")
+-# Non-conformant pixel data -> JP2 header present
+-J2KR_08_08_3_0_1F_YBR_RCT = get_testdata_file("GDCMJ2K_TextGBR.dcm")
+-# J2KI: 1.2.840.10008.1.2.4.91 - JPEG 2000
+-J2KI_08_08_3_0_1F_RGB = get_testdata_file("SC_rgb_gdcm_KY.dcm")
+-J2KI_08_08_3_0_1F_YBR_ICT = get_testdata_file("US1_J2KI.dcm")
+-J2KI_16_10_1_0_1F_M1 = get_testdata_file("RG3_J2KI.dcm")
+-J2KI_16_12_1_0_1F_M2 = get_testdata_file("MR2_J2KI.dcm")
+-J2KI_16_15_1_0_1F_M1 = get_testdata_file("RG1_J2KI.dcm")
+-J2KI_16_14_1_1_1F_M2 = get_testdata_file("693_J2KI.dcm")
+-J2KI_16_16_1_1_1F_M2 = get_testdata_file("JPEG2000.dcm")
+-
++## J2KR: 1.2.840.100008.1.2.4.90 - JPEG 2000 Lossless
++#J2KR_08_08_3_0_1F_YBR_ICT = get_testdata_file("US1_J2KR.dcm")
++#J2KR_16_10_1_0_1F_M1 = get_testdata_file("RG3_J2KR.dcm")
++#J2KR_16_12_1_0_1F_M2 = get_testdata_file("MR2_J2KR.dcm")
++#J2KR_16_15_1_0_1F_M1 = get_testdata_file("RG1_J2KR.dcm")
++#J2KR_16_16_1_0_10F_M2 = get_testdata_file("emri_small_jpeg_2k_lossless.dcm")
++#J2KR_16_14_1_1_1F_M2 = get_testdata_file("693_J2KR.dcm")
++#J2KR_16_16_1_1_1F_M2 = get_testdata_file("MR_small_jp2klossless.dcm")
++#J2KR_16_13_1_1_1F_M2_MISMATCH = get_testdata_file("J2K_pixelrep_mismatch.dcm")
++## Non-conformant pixel data -> JP2 header present
++#J2KR_08_08_3_0_1F_YBR_RCT = get_testdata_file("GDCMJ2K_TextGBR.dcm")
++## J2KI: 1.2.840.10008.1.2.4.91 - JPEG 2000
++#J2KI_08_08_3_0_1F_RGB = get_testdata_file("SC_rgb_gdcm_KY.dcm")
++#J2KI_08_08_3_0_1F_YBR_ICT = get_testdata_file("US1_J2KI.dcm")
++#J2KI_16_10_1_0_1F_M1 = get_testdata_file("RG3_J2KI.dcm")
++#J2KI_16_12_1_0_1F_M2 = get_testdata_file("MR2_J2KI.dcm")
++#J2KI_16_15_1_0_1F_M1 = get_testdata_file("RG1_J2KI.dcm")
++#J2KI_16_14_1_1_1F_M2 = get_testdata_file("693_J2KI.dcm")
++#J2KI_16_16_1_1_1F_M2 = get_testdata_file("JPEG2000.dcm")
++#
+ J2K_REFERENCE_DATA = [
+- # fpath, (syntax, bits, nr samples, pixel repr, nr frames, shape, dtype)
+- (J2KR_08_08_3_0_1F_YBR_ICT, (J2KR, 8, 3, 0, 1, (480, 640, 3), 'uint8')),
+- (J2KR_16_10_1_0_1F_M1, (J2KR, 16, 1, 0, 1, (1760, 1760), 'uint16')),
+- (J2KR_16_12_1_0_1F_M2, (J2KR, 16, 1, 0, 1, (1024, 1024), 'uint16')),
+- (J2KR_16_15_1_0_1F_M1, (J2KR, 16, 1, 0, 1, (1955, 1841), 'uint16')),
+- # should be Bits Stored = 12
+- (J2KR_16_16_1_0_10F_M2, (J2KR, 16, 1, 0, 10, (10, 64, 64), 'uint16')),
+- # should be Bits Stored = 16
+- (J2KR_16_14_1_1_1F_M2, (J2KR, 16, 1, 1, 1, (512, 512), 'int16')),
+- (J2KR_16_16_1_1_1F_M2, (J2KR, 16, 1, 1, 1, (64, 64), 'int16')),
+- (J2KI_08_08_3_0_1F_RGB, (J2KI, 8, 3, 0, 1, (100, 100, 3), 'uint8')),
+- (J2KI_08_08_3_0_1F_YBR_ICT, (J2KI, 8, 3, 0, 1, (480, 640, 3), 'uint8')),
+- (J2KI_16_10_1_0_1F_M1, (J2KI, 16, 1, 0, 1, (1760, 1760), 'uint16')),
+- (J2KI_16_12_1_0_1F_M2, (J2KI, 16, 1, 0, 1, (1024, 1024), 'uint16')),
+- (J2KI_16_15_1_0_1F_M1, (J2KI, 16, 1, 0, 1, (1955, 1841), 'uint16')),
+- # should be Bits Stored = 16
+- (J2KI_16_14_1_1_1F_M2, (J2KI, 16, 1, 1, 1, (512, 512), 'int16')),
+- (J2KI_16_16_1_1_1F_M2, (J2KI, 16, 1, 1, 1, (1024, 256), 'int16')),
++# # fpath, (syntax, bits, nr samples, pixel repr, nr frames, shape, dtype)
++# (J2KR_08_08_3_0_1F_YBR_ICT, (J2KR, 8, 3, 0, 1, (480, 640, 3), 'uint8')),
++# (J2KR_16_10_1_0_1F_M1, (J2KR, 16, 1, 0, 1, (1760, 1760), 'uint16')),
++# (J2KR_16_12_1_0_1F_M2, (J2KR, 16, 1, 0, 1, (1024, 1024), 'uint16')),
++# (J2KR_16_15_1_0_1F_M1, (J2KR, 16, 1, 0, 1, (1955, 1841), 'uint16')),
++# # should be Bits Stored = 12
++# (J2KR_16_16_1_0_10F_M2, (J2KR, 16, 1, 0, 10, (10, 64, 64), 'uint16')),
++# # should be Bits Stored = 16
++# (J2KR_16_14_1_1_1F_M2, (J2KR, 16, 1, 1, 1, (512, 512), 'int16')),
++# (J2KR_16_16_1_1_1F_M2, (J2KR, 16, 1, 1, 1, (64, 64), 'int16')),
++# (J2KI_08_08_3_0_1F_RGB, (J2KI, 8, 3, 0, 1, (100, 100, 3), 'uint8')),
++# (J2KI_08_08_3_0_1F_YBR_ICT, (J2KI, 8, 3, 0, 1, (480, 640, 3), 'uint8')),
++# (J2KI_16_10_1_0_1F_M1, (J2KI, 16, 1, 0, 1, (1760, 1760), 'uint16')),
++# (J2KI_16_12_1_0_1F_M2, (J2KI, 16, 1, 0, 1, (1024, 1024), 'uint16')),
++# (J2KI_16_15_1_0_1F_M1, (J2KI, 16, 1, 0, 1, (1955, 1841), 'uint16')),
++# # should be Bits Stored = 16
++# (J2KI_16_14_1_1_1F_M2, (J2KI, 16, 1, 1, 1, (512, 512), 'int16')),
++# (J2KI_16_16_1_1_1F_M2, (J2KI, 16, 1, 1, 1, (1024, 256), 'int16')),
+ ]
+ J2K_MATCHING_DATASETS = [
+- # (compressed, reference, fixes)
+- pytest.param(
+- J2KR_08_08_3_0_1F_YBR_ICT,
+- get_testdata_file("US1_UNCR.dcm"),
+- {},
+- ),
+- pytest.param(
+- J2KR_16_10_1_0_1F_M1,
+- get_testdata_file("RG3_UNCR.dcm"),
+- {},
+- ),
+- pytest.param(
+- J2KR_16_12_1_0_1F_M2,
+- get_testdata_file("MR2_UNCR.dcm"),
+- {},
+- ),
+- pytest.param(
+- J2KR_16_15_1_0_1F_M1,
+- get_testdata_file("RG1_UNCR.dcm"),
+- {},
+- ),
+- pytest.param(
+- J2KR_16_16_1_0_10F_M2,
+- get_testdata_file("emri_small.dcm"),
+- {'BitsStored': 16},
+- ),
+- pytest.param(
+- J2KR_16_14_1_1_1F_M2,
+- get_testdata_file("693_UNCR.dcm"),
+- {'BitsStored': 14},
+- ),
+- pytest.param(
+- J2KR_16_16_1_1_1F_M2,
+- get_testdata_file("MR_small.dcm"),
+- {},
+- ),
+- pytest.param(
+- J2KI_08_08_3_0_1F_RGB,
+- get_testdata_file("SC_rgb_gdcm2k_uncompressed.dcm"),
+- {},
+- ),
+- pytest.param(
+- J2KI_08_08_3_0_1F_YBR_ICT,
+- get_testdata_file("US1_UNCI.dcm"),
+- {},
+- ),
+- pytest.param(
+- J2KI_16_10_1_0_1F_M1,
+- get_testdata_file("RG3_UNCI.dcm"),
+- {},
+- ),
+- pytest.param(
+- J2KI_16_12_1_0_1F_M2,
+- get_testdata_file("MR2_UNCI.dcm"),
+- {},
+- ),
+- pytest.param(
+- J2KI_16_15_1_0_1F_M1,
+- get_testdata_file("RG1_UNCI.dcm"),
+- {},
+- ),
+- pytest.param(
+- J2KI_16_14_1_1_1F_M2,
+- get_testdata_file("693_UNCI.dcm"),
+- {'BitsStored': 16},
+- ),
+- pytest.param(
+- J2KI_16_16_1_1_1F_M2,
+- get_testdata_file("JPEG2000_UNC.dcm"),
+- {},
+- ),
++# # (compressed, reference, fixes)
++# pytest.param(
++# J2KR_08_08_3_0_1F_YBR_ICT,
++# get_testdata_file("US1_UNCR.dcm"),
++# {},
++# ),
++# pytest.param(
++# J2KR_16_10_1_0_1F_M1,
++# get_testdata_file("RG3_UNCR.dcm"),
++# {},
++# ),
++# pytest.param(
++# J2KR_16_12_1_0_1F_M2,
++# get_testdata_file("MR2_UNCR.dcm"),
++# {},
++# ),
++# pytest.param(
++# J2KR_16_15_1_0_1F_M1,
++# get_testdata_file("RG1_UNCR.dcm"),
++# {},
++# ),
++# pytest.param(
++# J2KR_16_16_1_0_10F_M2,
++# get_testdata_file("emri_small.dcm"),
++# {'BitsStored': 16},
++# ),
++# pytest.param(
++# J2KR_16_14_1_1_1F_M2,
++# get_testdata_file("693_UNCR.dcm"),
++# {'BitsStored': 14},
++# ),
++# pytest.param(
++# J2KR_16_16_1_1_1F_M2,
++# get_testdata_file("MR_small.dcm"),
++# {},
++# ),
++# pytest.param(
++# J2KI_08_08_3_0_1F_RGB,
++# get_testdata_file("SC_rgb_gdcm2k_uncompressed.dcm"),
++# {},
++# ),
++# pytest.param(
++# J2KI_08_08_3_0_1F_YBR_ICT,
++# get_testdata_file("US1_UNCI.dcm"),
++# {},
++# ),
++# pytest.param(
++# J2KI_16_10_1_0_1F_M1,
++# get_testdata_file("RG3_UNCI.dcm"),
++# {},
++# ),
++# pytest.param(
++# J2KI_16_12_1_0_1F_M2,
++# get_testdata_file("MR2_UNCI.dcm"),
++# {},
++# ),
++# pytest.param(
++# J2KI_16_15_1_0_1F_M1,
++# get_testdata_file("RG1_UNCI.dcm"),
++# {},
++# ),
++# pytest.param(
++# J2KI_16_14_1_1_1F_M2,
++# get_testdata_file("693_UNCI.dcm"),
++# {'BitsStored': 16},
++# ),
++# pytest.param(
++# J2KI_16_16_1_1_1F_M2,
++# get_testdata_file("JPEG2000_UNC.dcm"),
++# {},
++# ),
+ ]
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_invalid_byteorder_raises(self):
- """Test that big endian source raises exception."""
- ds = dcmread(EXPL_8_1_1F)
-@@ -191,6 +199,7 @@ class TestRLELossless:
- ds.PixelData, encoding_plugin='gdcm', byteorder='>', **kwargs
- )
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_above_32bit_raises(self):
- """Test that > 32-bit Bits Allocated raises exception."""
- ds = dcmread(EXPL_8_1_1F)
-@@ -206,6 +215,7 @@ class TestRLELossless:
- with pytest.raises(RuntimeError, match=msg):
- enc.encode(ds.PixelData, encoding_plugin='gdcm', **kwargs)
+@@ -361,6 +361,7 @@ class TestHandler:
+ with pytest.raises((NotImplementedError, RuntimeError)):
+ ds.pixel_array
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_encoding_failure_raises(self):
- """Test that a encoding failure result raises an exception"""
- kwargs = {
-@@ -226,6 +236,7 @@ class TestRLELossless:
+ @pytest.mark.skipif(
+ HAVE_LJ or HAVE_OJ or HAVE_RLE, reason="plugins available"
+ )
+@@ -391,6 +392,7 @@ class TestHandler:
with pytest.raises(RuntimeError, match=msg):
- gdcm_rle_encode(b'\x00', **kwargs)
+ ds.pixel_array
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_no_sequence_raises(self):
- """Test that no sequence of fragments raises an exception"""
- kwargs = {
---- a/pydicom/tests/test_overlay_np.py
-+++ b/pydicom/tests/test_overlay_np.py
-@@ -55,13 +55,13 @@ except ImportError:
- # Paths to the test datasets
- # EXPL: Explicit VR Little Endian
- # Overlay Data
--# 1/1, 1 sample/pixel, 1 frame
--EXPL_1_1_1F = get_testdata_file("MR-SIEMENS-DICOM-WithOverlays.dcm")
-+## 1/1, 1 sample/pixel, 1 frame
-+#EXPL_1_1_1F = get_testdata_file("MR-SIEMENS-DICOM-WithOverlays.dcm")
- # 1/1, 1 sample/pixel, N frame
- EXPL_1_1_3F = None
- # No Overlay Data
--# 16/16, 1 sample/pixel, 1 frame
--EXPL_16_1_1F = get_testdata_file("MR_small.dcm")
-+## 16/16, 1 sample/pixel, 1 frame
-+#EXPL_16_1_1F = get_testdata_file("MR_small.dcm")
+ def test_change_photometric_interpretation(self):
+ """Test returned value."""
+ ds = dcmread(J2KR_16_12_1_0_1F_M2)
+@@ -409,6 +411,7 @@ class TestJPEG:
+ """Restore the environment."""
+ pydicom.config.pixel_data_handlers = self.original_handlers
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ @pytest.mark.parametrize('fpath, data', JPG_REFERENCE_DATA)
+ def test_properties(self, fpath, data):
+ """Test dataset and pixel array properties are as expected."""
+@@ -425,6 +428,7 @@ class TestJPEG:
+ assert data[5] == arr.shape
+ assert arr.dtype == data[6]
- # Numpy unavailable and the numpy handler is available
-@@ -82,6 +82,7 @@ class TestNoNumpy_NumpyHandler:
- assert not HAVE_NP
- assert NP_HANDLER is not None
++ @pytest.mark.skip("When building a Debian package we can not download anything")
+ @pytest.mark.parametrize('fpath, rpath, val, tol', JPG_MATCHING_DATASETS)
+ def test_array(self, fpath, rpath, val, tol):
+ """Test pixel_array returns correct values."""
+@@ -450,6 +454,7 @@ class TestJPEG:
+ # All results within `tol` intensity units of the reference
+ assert np.allclose(arr, ref, atol=tol)
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_overlay_array_raises(self):
- """Test overlay_array raises exception"""
- ds = dcmread(EXPL_1_1_1F)
-@@ -89,6 +90,7 @@ class TestNoNumpy_NumpyHandler:
+ @pytest.mark.parametrize('fpath, rpath, val, tol', JPG_MATCHING_DATASETS)
+ def test_generate_frames(self, fpath, rpath, val, tol):
+ """Test pixel_array returns correct values."""
+@@ -484,6 +489,7 @@ class TestJPEG:
with pytest.raises(RuntimeError, match=msg):
- ds.overlay_array(0x6000)
+ ds.pixel_array
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_get_overlay_array_raises(self):
- """Test get_overlay_array raises exception"""
- ds = dcmread(EXPL_1_1_1F)
-@@ -110,7 +112,7 @@ IMPL = ImplicitVRLittleEndian
- REFERENCE_DATA_LITTLE = [
- # fpath, (syntax, bits, nr samples, pixel repr, nr frames, shape, dtype,
- # group)
-- (EXPL_1_1_1F, (EXPL, 1, 1, 0, 1, (484, 484), 'uint8', 0x6000)),
-+# (EXPL_1_1_1F, (EXPL, 1, 1, 0, 1, (484, 484), 'uint8', 0x6000)),
- # (EXPL_1_1_3F, (EXPL, 1, 1, 0, 3, (3, 512, 512), 'uint8', 0x6000)),
- ]
-
-@@ -154,6 +156,7 @@ class TestNumpy_NumpyHandler:
- if size % 2:
- assert ds[group, 0x3000].value[-1] == b'\x00'[0]
+ def test_missing_element_raises(self):
+ """Test that missing required element raises exception."""
+ ds = dcmread(JPGB_08_08_3_0_1F_YBR_FULL)
+@@ -507,6 +513,7 @@ class TestJPEGLS:
+ """Restore the environment."""
+ pydicom.config.pixel_data_handlers = self.original_handlers
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_little_1bit_1sample_1frame(self):
- """Test pixel_array for little 1-bit, 1 sample/pixel, 1 frame."""
- ds = dcmread(EXPL_1_1_1F)
-@@ -170,6 +173,7 @@ class TestNumpy_NumpyHandler:
- ds = dcmread(EXPL_1_1_3F)
- arr = ds.overlay_array(0x6000)
+ @pytest.mark.parametrize('fpath, data', JLS_REFERENCE_DATA)
+ def test_properties(self, fpath, data):
+ """Test dataset and pixel array properties are as expected."""
+@@ -523,6 +530,7 @@ class TestJPEGLS:
+ assert data[5] == arr.shape
+ assert arr.dtype == data[6]
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_read_only(self):
- """Test for #717, returned array read-only."""
- ds = dcmread(EXPL_1_1_1F)
-@@ -179,6 +183,7 @@ class TestNumpy_NumpyHandler:
- assert 1 == arr[0, 0]
- assert arr.flags.writeable
+ def test_arrary(self):
+ """Test returned array values are OK."""
+ ds = dcmread(JPEG_LS_LOSSLESS)
+@@ -546,6 +554,7 @@ class TestJPEG2K:
+ """Restore the environment."""
+ pydicom.config.pixel_data_handlers = self.original_handlers
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_bad_group_raises(self):
- """Test that using a bad group raises exception."""
- ds = dcmread(EXPL_1_1_1F)
-@@ -191,6 +196,7 @@ class TestNumpy_NumpyHandler:
- with pytest.raises(ValueError, match=msg):
- ds.overlay_array(0x6100)
+ @pytest.mark.parametrize('fpath, data', J2K_REFERENCE_DATA)
+ def test_properties_as_array(self, fpath, data):
+ """Test dataset, pixel_array and as_array() are as expected."""
+@@ -584,6 +593,7 @@ class TestJPEG2K:
+ assert data[5] == arr.shape
+ assert arr.dtype == data[6]
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_no_frames(self):
- """Test handler with no NumberOfFramesInOverlay element."""
- ds = dcmread(EXPL_1_1_1F)
-@@ -206,6 +212,7 @@ class TestNumpy_NumpyHandler:
- @pytest.mark.skipif(not HAVE_NP, reason='Numpy is not available')
- class TestNumpy_GetOverlayArray:
- """Tests for numpy_handler.get_overlay_array with numpy."""
-+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_no_overlay_data_raises(self):
- """Test get_overlay_array raises if dataset has no OverlayData."""
- ds = dcmread(EXPL_1_1_1F)
-@@ -214,6 +221,7 @@ class TestNumpy_GetOverlayArray:
- with pytest.raises(AttributeError, match=r' dataset: OverlayData'):
- get_overlay_array(ds, 0x6000)
+ @pytest.mark.parametrize('fpath, rpath, fixes', J2K_MATCHING_DATASETS)
+ def test_array(self, fpath, rpath, fixes):
+ """Test pixel_array returns correct values."""
+@@ -597,6 +607,7 @@ class TestJPEG2K:
+ ref = dcmread(rpath).pixel_array
+ assert np.array_equal(arr, ref)
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_bad_length_raises(self):
- """Test bad pixel data length raises exception."""
- ds = dcmread(EXPL_1_1_1F)
-@@ -228,6 +236,7 @@ class TestNumpy_GetOverlayArray:
- with pytest.raises(ValueError, match=msg):
- get_overlay_array(ds, 0x6000)
+ @pytest.mark.parametrize('fpath, rpath, fixes', J2K_MATCHING_DATASETS)
+ def test_generate_frames(self, fpath, rpath, fixes):
+ """Test pixel_array returns correct values."""
+@@ -620,6 +631,7 @@ class TestJPEG2K:
+ with pytest.raises(StopIteration):
+ next(frame_generator)
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_missing_padding_warns(self):
- """A warning shall be issued if the padding for odd data is missing."""
- ds = dcmread(EXPL_1_1_1F)
-@@ -239,6 +248,7 @@ class TestNumpy_GetOverlayArray:
+ def test_warnings(self):
+ """Test the plugin warnings work."""
+ # Bits Stored
+@@ -667,6 +679,7 @@ class TestJPEG2K:
with pytest.warns(UserWarning, match=msg):
- get_overlay_array(ds, 0x6000)
+ ds.pixel_array
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_excess_padding(self):
- """A warning shall be issued excess padding present."""
- ds = dcmread(EXPL_1_1_1F)
-@@ -254,6 +264,7 @@ class TestNumpy_GetOverlayArray:
- with pytest.warns(UserWarning, match=msg):
- get_overlay_array(ds, 0x6000)
+ def test_decompress_using_pylibjpeg(self):
+ """Test decompressing JPEG2K with pylibjpeg handler succeeds."""
+ ds = dcmread(J2KR_16_12_1_0_1F_M2)
+@@ -677,6 +690,7 @@ class TestJPEG2K:
+ ref = ds.pixel_array
+ assert np.array_equal(arr, ref)
+ @pytest.mark.skip("When building a Debian package we can not download anything")
- def test_old_import(self):
- """Test that can import using the old path."""
- from pydicom.overlay_data_handlers import numpy_handler as np_old
+ def test_pixel_rep_mismatch(self):
+ """Test mismatched j2k sign and Pixel Representation."""
+ ds = dcmread(J2KR_16_13_1_1_1F_M2_MISMATCH)
+@@ -706,37 +720,38 @@ class TestJPEG2K:
+
+
+ RLE_REFERENCE_DATA = [
+- # fpath, (bits, nr samples, pixel repr, nr frames, shape, dtype)
+- (RLE_8_1_1F, (8, 1, 0, 1, (600, 800), 'uint8')),
+- (RLE_8_1_2F, (8, 1, 0, 2, (2, 600, 800), 'uint8')),
+- (RLE_8_3_1F, (8, 3, 0, 1, (100, 100, 3), 'uint8')),
+- (RLE_8_3_2F, (8, 3, 0, 2, (2, 100, 100, 3), 'uint8')),
+- (RLE_16_1_1F, (16, 1, 1, 1, (64, 64), 'int16')),
+- (RLE_16_1_10F, (16, 1, 0, 10, (10, 64, 64), 'uint16')),
+- (RLE_16_3_1F, (16, 3, 0, 1, (100, 100, 3), 'uint16')),
+- (RLE_16_3_2F, (16, 3, 0, 2, (2, 100, 100, 3), 'uint16')),
+- (RLE_32_1_1F, (32, 1, 0, 1, (10, 10), 'uint32')),
+- (RLE_32_1_15F, (32, 1, 0, 15, (15, 10, 10), 'uint32')),
+- (RLE_32_3_1F, (32, 3, 0, 1, (100, 100, 3), 'uint32')),
+- (RLE_32_3_2F, (32, 3, 0, 2, (2, 100, 100, 3), 'uint32')),
++# # fpath, (bits, nr samples, pixel repr, nr frames, shape, dtype)
++# (RLE_8_1_1F, (8, 1, 0, 1, (600, 800), 'uint8')),
++# (RLE_8_1_2F, (8, 1, 0, 2, (2, 600, 800), 'uint8')),
++# (RLE_8_3_1F, (8, 3, 0, 1, (100, 100, 3), 'uint8')),
++# (RLE_8_3_2F, (8, 3, 0, 2, (2, 100, 100, 3), 'uint8')),
++# (RLE_16_1_1F, (16, 1, 1, 1, (64, 64), 'int16')),
++# (RLE_16_1_10F, (16, 1, 0, 10, (10, 64, 64), 'uint16')),
++# (RLE_16_3_1F, (16, 3, 0, 1, (100, 100, 3), 'uint16')),
++# (RLE_16_3_2F, (16, 3, 0, 2, (2, 100, 100, 3), 'uint16')),
++# (RLE_32_1_1F, (32, 1, 0, 1, (10, 10), 'uint32')),
++# (RLE_32_1_15F, (32, 1, 0, 15, (15, 10, 10), 'uint32')),
++# (RLE_32_3_1F, (32, 3, 0, 1, (100, 100, 3), 'uint32')),
++# (RLE_32_3_2F, (32, 3, 0, 2, (2, 100, 100, 3), 'uint32')),
+ ]
+ RLE_MATCHING_DATASETS = [
+- # (compressed, reference)
+- pytest.param(RLE_8_1_1F, get_testdata_file("OBXXXX1A.dcm")),
+- pytest.param(RLE_8_1_2F, get_testdata_file("OBXXXX1A_2frame.dcm")),
+- pytest.param(RLE_8_3_1F, get_testdata_file("SC_rgb.dcm")),
+- pytest.param(RLE_8_3_2F, get_testdata_file("SC_rgb_2frame.dcm")),
+- pytest.param(RLE_16_1_1F, get_testdata_file("MR_small.dcm")),
+- pytest.param(RLE_16_1_10F, get_testdata_file("emri_small.dcm")),
+- pytest.param(RLE_16_3_1F, get_testdata_file("SC_rgb_16bit.dcm")),
+- pytest.param(RLE_16_3_2F, get_testdata_file("SC_rgb_16bit_2frame.dcm")),
+- pytest.param(RLE_32_1_1F, get_testdata_file("rtdose_1frame.dcm")),
+- pytest.param(RLE_32_1_15F, get_testdata_file("rtdose.dcm")),
+- pytest.param(RLE_32_3_1F, get_testdata_file("SC_rgb_32bit.dcm")),
+- pytest.param(RLE_32_3_2F, get_testdata_file("SC_rgb_32bit_2frame.dcm")),
++# # (compressed, reference)
++# pytest.param(RLE_8_1_1F, get_testdata_file("OBXXXX1A.dcm")),
++# pytest.param(RLE_8_1_2F, get_testdata_file("OBXXXX1A_2frame.dcm")),
++# pytest.param(RLE_8_3_1F, get_testdata_file("SC_rgb.dcm")),
++# pytest.param(RLE_8_3_2F, get_testdata_file("SC_rgb_2frame.dcm")),
++# pytest.param(RLE_16_1_1F, get_testdata_file("MR_small.dcm")),
++# pytest.param(RLE_16_1_10F, get_testdata_file("emri_small.dcm")),
++# pytest.param(RLE_16_3_1F, get_testdata_file("SC_rgb_16bit.dcm")),
++# pytest.param(RLE_16_3_2F, get_testdata_file("SC_rgb_16bit_2frame.dcm")),
++# pytest.param(RLE_32_1_1F, get_testdata_file("rtdose_1frame.dcm")),
++# pytest.param(RLE_32_1_15F, get_testdata_file("rtdose.dcm")),
++# pytest.param(RLE_32_3_1F, get_testdata_file("SC_rgb_32bit.dcm")),
++# pytest.param(RLE_32_3_2F, get_testdata_file("SC_rgb_32bit_2frame.dcm")),
+ ]
+
+
++ at pytest.mark.skip("When building a Debian package we can not download anything")
+ @pytest.mark.skipif(not TEST_RLE, reason="no -rle plugin")
+ class TestRLE:
+ def test_decompress_using_pylibjpeg(self):
+diff --git a/pydicom/tests/test_rle_pixel_data.py b/pydicom/tests/test_rle_pixel_data.py
+index 1c89c91..e20bfce 100644
--- a/pydicom/tests/test_rle_pixel_data.py
+++ b/pydicom/tests/test_rle_pixel_data.py
@@ -308,6 +308,7 @@ class TestNumpy_NoRLEHandler:
diff --git a/debian/patches/ignore_tests_with_wrong_gdcm_usage.patch b/debian/patches/ignore_tests_with_wrong_gdcm_usage.patch
index e2a07bb..3367448 100644
--- a/debian/patches/ignore_tests_with_wrong_gdcm_usage.patch
+++ b/debian/patches/ignore_tests_with_wrong_gdcm_usage.patch
@@ -1,8 +1,16 @@
-Author: Andreas Tille <tille at debian.org>
+From: Andreas Tille <tille at debian.org>
+Date: Mon, 11 May 2026 10:53:29 +0200
+Subject: Ignore test due to wrong gdcm usage.
+
Last-Update: 2021-12-08
-Description: Ignore test due to wrong gdcm usage.
- See https://lists.debian.org/debian-med/2021/12/msg00061.html
+ See https://lists.debian.org/debian-med/2021/12/msg00061.html
+---
+ pydicom/tests/test_gdcm_pixel_data.py | 22 +++++++++++++++++++++-
+ 1 file changed, 21 insertions(+), 1 deletion(-)
+
+diff --git a/pydicom/tests/test_gdcm_pixel_data.py b/pydicom/tests/test_gdcm_pixel_data.py
+index 398c83b..7ae9344 100644
--- a/pydicom/tests/test_gdcm_pixel_data.py
+++ b/pydicom/tests/test_gdcm_pixel_data.py
@@ -161,6 +161,7 @@ class TestGDCM_JPEG2000_no_gdcm:
diff --git a/debian/patches/series b/debian/patches/series
index b82a55e..4121a96 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -3,3 +3,4 @@ ignore_tests_downloading_data.patch
ignore_tests_with_wrong_gdcm_usage.patch
sphinx_no_git.patch
skip-i386-incapable-tests.patch
+fix-for-FileSet-DICOMDIR-path-traversal-vulnerabilit.patch
diff --git a/debian/patches/skip-i386-incapable-tests.patch b/debian/patches/skip-i386-incapable-tests.patch
index f346b80..ab07802 100644
--- a/debian/patches/skip-i386-incapable-tests.patch
+++ b/debian/patches/skip-i386-incapable-tests.patch
@@ -1,18 +1,26 @@
-Description: skip tests impoosible to run on 32-bit architectures.
- This patch prevents running into the following errors by stopping the
- test just before the error condition:
- .
- > assert 36**6 + 1 == len(fs)
- E OverflowError: cannot fit 'int' into an index-sized integer
-Author: ?tienne Mollier <emollier at debian.org>
+From: =?utf-8?q?=C3=89tienne_Mollier?= <emollier at debian.org>
+Date: Mon, 11 May 2026 10:53:29 +0200
+Subject: skip tests impoosible to run on 32-bit architectures.
+
Bug-Debian: https://bugs.debian.org/1103137
Forwarded: no
Last-Update: 2025-04-14
+
+This patch prevents running into the following errors by stopping the
+test just before the error condition:
+
+ > assert 36**6 + 1 == len(fs)
+ E OverflowError: cannot fit 'int' into an index-sized integer
+Last-Update: 2025-04-14
---
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- pydicom.orig/pydicom/tests/test_fileset.py
-+++ pydicom/pydicom/tests/test_fileset.py
-@@ -2246,6 +2246,8 @@
+ pydicom/tests/test_fileset.py | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/pydicom/tests/test_fileset.py b/pydicom/tests/test_fileset.py
+index 40bd9d8..cff26da 100644
+--- a/pydicom/tests/test_fileset.py
++++ b/pydicom/tests/test_fileset.py
+@@ -2246,6 +2246,8 @@ class TestFileSet_Modify:
FileSet.__len__ = my_len
fs = FileSet(ds)
@@ -21,7 +29,7 @@ This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
assert 36**6 + 1 == len(fs)
msg = (
r"pydicom doesn't support writing File-sets with more than "
-@@ -2577,6 +2579,8 @@
+@@ -2577,6 +2579,8 @@ class TestFileSet_Copy:
FileSet.__len__ = my_len
fs = FileSet(tiny)
diff --git a/debian/patches/sphinx_no_git.patch b/debian/patches/sphinx_no_git.patch
index 89b1262..52da7f0 100644
--- a/debian/patches/sphinx_no_git.patch
+++ b/debian/patches/sphinx_no_git.patch
@@ -1,11 +1,19 @@
-Author: Andreas Tille <tille at debian.org>
+From: Andreas Tille <tille at debian.org>
+Date: Mon, 11 May 2026 10:53:29 +0200
+Subject: We are not in a Git repository thus prevent sphinx from assuming we
+ are
+
Last-Update: 2023-12-07
-Description: We are not in a Git repository thus prevent sphinx from assuming we are
Forwarded: Not needed
+---
+ build_tools/sphinx/github_link.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+diff --git a/build_tools/sphinx/github_link.py b/build_tools/sphinx/github_link.py
+index dd207ab..e7bd3dc 100644
--- a/build_tools/sphinx/github_link.py
+++ b/build_tools/sphinx/github_link.py
-@@ -84,6 +84,6 @@ def make_linkcode_resolve(package, url_f
+@@ -84,6 +84,6 @@ def make_linkcode_resolve(package, url_fmt):
'blob/{revision}/{package}/'
'{path}#L{lineno}')
"""
More information about the Debian-med-packaging
mailing list