Skip to content

Commit 0fb0030

Browse files
committed
ENH: Support compatibility with pydicom 3 and newer
1 parent 412395f commit 0fb0030

File tree

3 files changed

+11
-25
lines changed

3 files changed

+11
-25
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ dependencies = [
3333
"requests>=2.18",
3434
"retrying>=1.3.3",
3535
"Pillow>=8.3",
36-
"pydicom>=2.2",
36+
"pydicom>=3.0.0",
3737
"typing-extensions>=4.0; python_version < '3.8.0'",
3838
]
3939

src/dicomweb_client/file.py

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,7 @@
3232
from pydicom.datadict import dictionary_VR, keyword_for_tag, tag_for_keyword
3333
from pydicom.dataelem import DataElement
3434
from pydicom.dataset import Dataset, FileMetaDataset
35-
from pydicom.encaps import encapsulate
36-
try:
37-
# pydicom >= 3.0 - parse_basic_offsets replaces get_frame_offsets
38-
from pydicom.encaps import parse_basic_offsets
39-
_use_parse_basic_offsets = True
40-
except ImportError:
41-
# pydicom < 3.0 - use deprecated get_frame_offsets
42-
from pydicom.encaps import get_frame_offsets
43-
_use_parse_basic_offsets = False
35+
from pydicom.encaps import encapsulate, parse_basic_offsets
4436
from pydicom.errors import InvalidDicomError
4537
from pydicom.filebase import DicomFileLike
4638
from pydicom.filereader import data_element_offset_to_value, dcmread
@@ -358,13 +350,7 @@ def _read_bot(fp: DicomFileLike) -> np.ndarray:
358350
fp.is_implicit_VR, 'OB'
359351
)
360352
fp.seek(pixel_data_element_value_offset - 4, 1)
361-
362-
# Use parse_basic_offsets for pydicom >= 3.0, get_frame_offsets for < 3.0
363-
if _use_parse_basic_offsets:
364-
offsets = parse_basic_offsets(fp)
365-
else:
366-
is_empty, offsets = get_frame_offsets(fp)
367-
353+
offsets = parse_basic_offsets(fp)
368354
return np.array(offsets, dtype=np.uint32)
369355

370356

tests/test_web.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1285,8 +1285,8 @@ def test_retrieve_instance_frames_rendered_png(httpserver, client, cache_dir):
12851285

12861286
def test_store_instance_error_with_retries(httpserver, client, cache_dir):
12871287
dataset = pydicom.Dataset.from_json({})
1288-
dataset.is_little_endian = True
1289-
dataset.is_implicit_VR = True
1288+
dataset.file_meta = pydicom.dataset.FileMetaDataset()
1289+
dataset.file_meta.TransferSyntaxUID = pydicom.uid.ImplicitVRLittleEndian
12901290
max_attempts = 2
12911291
client.set_http_retry_params(
12921292
retry=True,
@@ -1311,8 +1311,8 @@ def test_store_instance_error_with_retries_and_additional_params(
13111311
httpserver, client, cache_dir
13121312
):
13131313
dataset = pydicom.Dataset.from_json({})
1314-
dataset.is_little_endian = True
1315-
dataset.is_implicit_VR = True
1314+
dataset.file_meta = pydicom.dataset.FileMetaDataset()
1315+
dataset.file_meta.TransferSyntaxUID = pydicom.uid.ImplicitVRLittleEndian
13161316
max_attempts = 2
13171317
client.set_http_retry_params(
13181318
retry=True,
@@ -1339,8 +1339,8 @@ def test_store_instance_error_with_retries_and_additional_params(
13391339

13401340
def test_store_instance_error_with_no_retries(httpserver, client, cache_dir):
13411341
dataset = pydicom.Dataset.from_json({})
1342-
dataset.is_little_endian = True
1343-
dataset.is_implicit_VR = True
1342+
dataset.file_meta = pydicom.dataset.FileMetaDataset()
1343+
dataset.file_meta.TransferSyntaxUID = pydicom.uid.ImplicitVRLittleEndian
13441344
client.set_http_retry_params(retry=False)
13451345
httpserver.serve_content(
13461346
content='',
@@ -1360,8 +1360,8 @@ def test_store_instance_error_with_no_retries_and_additional_params(
13601360
httpserver, client, cache_dir
13611361
):
13621362
dataset = pydicom.Dataset.from_json({})
1363-
dataset.is_little_endian = True
1364-
dataset.is_implicit_VR = True
1363+
dataset.file_meta = pydicom.dataset.FileMetaDataset()
1364+
dataset.file_meta.TransferSyntaxUID = pydicom.uid.ImplicitVRLittleEndian
13651365
client.set_http_retry_params(retry=False)
13661366
httpserver.serve_content(
13671367
content='',

0 commit comments

Comments
 (0)