Skip to content

Commit 9e866aa

Browse files
committed
ENH: Replace pydicom deprecated usage of get_frame_offsets
1 parent 32e4049 commit 9e866aa

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

src/dicomweb_client/file.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,15 @@
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, get_frame_offsets
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
3644
from pydicom.errors import InvalidDicomError
3745
from pydicom.filebase import DicomFileLike
3846
from pydicom.filereader import data_element_offset_to_value, dcmread
@@ -350,7 +358,13 @@ def _read_bot(fp: DicomFileLike) -> np.ndarray:
350358
fp.is_implicit_VR, 'OB'
351359
)
352360
fp.seek(pixel_data_element_value_offset - 4, 1)
353-
is_empty, offsets = get_frame_offsets(fp)
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+
354368
return np.array(offsets, dtype=np.uint32)
355369

356370

0 commit comments

Comments
 (0)