11import sys
22import typing as ty
33from pathlib import Path
4- import pydicom .tag
54from fileformats .core import FileSet , extra_implementation
5+ from fileformats .extras .core import check_optional_dependency
66from fileformats .application import Dicom
7- import medimages4tests .dummy .dicom .mri .t1w .siemens .skyra .syngo_d13c
87from fileformats .core import SampleFileGenerator
98
9+ try :
10+ import pydicom .tag
11+ except ImportError :
12+ pydicom = None # type: ignore[assignment]
13+ try :
14+ import medimages4tests .dummy .dicom .mri .t1w .siemens .skyra .syngo_d13c
15+ except ImportError :
16+ medimages4tests = None # type: ignore[assignment]
17+
1018if sys .version_info <= (3 , 11 ):
1119 from typing_extensions import TypeAlias
1220else :
1624 ty .List [int ],
1725 ty .List [str ],
1826 ty .List [ty .Tuple [int , int ]],
19- ty .List [pydicom .tag .BaseTag ],
27+ ty .List [" pydicom.tag.BaseTag" ],
2028]
2129
2230
@@ -26,6 +34,7 @@ def dicom_read_metadata(
2634 metadata_keys : ty .Optional [TagListType ] = None ,
2735 ** kwargs : ty .Any ,
2836) -> ty .Mapping [str , ty .Any ]:
37+ check_optional_dependency (pydicom )
2938 dcm = pydicom .dcmread (
3039 dicom .fspath , specific_tags = metadata_keys , stop_before_pixels = True
3140 )
@@ -37,6 +46,7 @@ def dicom_generate_sample_data(
3746 dicom : Dicom ,
3847 generator : SampleFileGenerator ,
3948) -> ty .List [Path ]:
49+ check_optional_dependency (medimages4tests )
4050 return next (
4151 medimages4tests .dummy .dicom .mri .t1w .siemens .skyra .syngo_d13c .get_image (
4252 out_dir = generator .dest_dir
@@ -49,15 +59,17 @@ def dicom_load(
4959 dicom : Dicom ,
5060 specific_tags : ty .Optional [TagListType ] = None ,
5161 ** kwargs : ty .Any ,
52- ) -> pydicom .FileDataset :
62+ ) -> "pydicom.FileDataset" :
63+ check_optional_dependency (pydicom )
5364 return pydicom .dcmread (dicom .fspath , specific_tags = specific_tags )
5465
5566
5667@extra_implementation (FileSet .save )
5768def dicom_save (
5869 dicom : Dicom ,
59- data : pydicom .FileDataset ,
70+ data : " pydicom.FileDataset" ,
6071 write_like_original : bool = False ,
6172 ** kwargs : ty .Any ,
6273) -> None :
74+ check_optional_dependency (pydicom )
6375 pydicom .dcmwrite (dicom .fspath , data , write_like_original = write_like_original )
0 commit comments