55import pytest
66from idc_index import index
77
8- from pydcmqi import DcmqiError , SegImage , SegmentData , Triplet
8+ from pydcmqi import DcmqiError , SegImage , SegmentData , Triplet , TripletDict
99
1010TEST_DIR = Path (__file__ ).resolve ().parent / "test_data"
1111
1717# helper function to sort dictionaries
1818# ONLY FOR FILE EXPORT
1919# DICTS ARE NOT PERSISTENTLY ORDERED IN PYTHON
20- def _iterative_dict_sort (d ) :
20+ def _iterative_dict_sort (d : object ) -> object :
2121 if isinstance (d , list ):
2222 return [_iterative_dict_sort (v ) for v in d ]
2323 if isinstance (d , dict ):
@@ -36,7 +36,7 @@ def test_triplet_from_tuple(self):
3636 assert t .valid
3737
3838 def test_triplet_from_dict (self ):
39- d = {
39+ d : TripletDict = {
4040 "CodeMeaning" : "Anatomical Structure" ,
4141 "CodeValue" : "123037004" ,
4242 "CodingSchemeDesignator" : "SCT" ,
@@ -68,7 +68,7 @@ def test_empty_triplet(self):
6868class TestSegmentData :
6969 def test_triplet_property_from_tuple (self ):
7070 d = SegmentData ()
71- d .segmentedPropertyCategory = ("Anatomical Structure" , "123037004" , "SCT" )
71+ d .segmentedPropertyCategory = ("Anatomical Structure" , "123037004" , "SCT" ) # type: ignore[assignment]
7272
7373 assert isinstance (d .segmentedPropertyCategory , Triplet )
7474 assert d .segmentedPropertyCategory .label == "Anatomical Structure"
@@ -170,7 +170,7 @@ def test_tmp_dir(self):
170170 ValueError ,
171171 match = "Invalid tmp_dir, must be either None for default, a Path or a string." ,
172172 ):
173- _ = SegImage (tmp_dir = 1 )
173+ _ = SegImage (tmp_dir = 1 ) # type: ignore[arg-type]
174174
175175
176176class TestSegimageRead :
@@ -189,7 +189,7 @@ def setup_class(self):
189189 self .out_dir .mkdir (parents = True , exist_ok = True )
190190
191191 # initialize a SegImage instance used in multiple tests
192- self .segimg = SegImage (self .tmp_dir )
192+ self .segimg = SegImage (tmp_dir = self .tmp_dir )
193193
194194 # initialize idc index client
195195 client = index .IDCClient ()
@@ -477,12 +477,13 @@ def setup_class(self):
477477 self .lung_seg_file = self .out_dir / "pydcmqi-1.nii.gz"
478478 self .tumor_seg_file = self .out_dir / "pydcmqi-2.nii.gz"
479479
480- # extract nifit files from segmentation if not already done
480+ # extract nifti files from segmentation if not already done
481481 if (
482482 not self .dseg_config_file .exists ()
483483 or not self .lung_seg_file .exists ()
484484 or not self .tumor_seg_file .exists ()
485485 ):
486+ self .segimg = SegImage (tmp_dir = self .tmp_dir )
486487 self .segimg .load (self .seg_file , output_dir = self .out_dir )
487488
488489 def test_write (self ):
@@ -493,7 +494,7 @@ def test_write(self):
493494 config = json .load (f )
494495
495496 # initialize a SegImage instance used in multiple tests
496- segimg = SegImage (self .tmp_dir )
497+ segimg = SegImage (tmp_dir = self .tmp_dir )
497498
498499 # specify segimg data
499500 segimg .data .bodyPartExamined = "LUNG"
@@ -513,13 +514,13 @@ def test_write(self):
513514 lung .data .labelID = 1
514515 lung .data .segmentAlgorithmName = "BAMF-Lung-FDG-PET-CT"
515516 lung .data .segmentAlgorithmType = "AUTOMATIC"
516- lung .data .segmentedPropertyCategory = (
517+ lung .data .segmentedPropertyCategory = ( # type: ignore[assignment]
517518 "Anatomical Structure" ,
518519 "123037004" ,
519520 "SCT" ,
520521 )
521- lung .data .segmentedPropertyType = ("Lung" , "39607008" , "SCT" )
522- lung .data .segmentedPropertyTypeModifier = ("Right and left" , "51440002" , "SCT" )
522+ lung .data .segmentedPropertyType = ("Lung" , "39607008" , "SCT" ) # type: ignore[assignment]
523+ lung .data .segmentedPropertyTypeModifier = ("Right and left" , "51440002" , "SCT" ) # type: ignore[assignment]
523524
524525 lung .setFile (self .lung_seg_file , labelID = 1 )
525526
@@ -531,7 +532,7 @@ def test_write(self):
531532 tumor .data .labelID = 2
532533 tumor .data .segmentAlgorithmName = "BAMF-Lung-FDG-PET-CT"
533534 tumor .data .segmentAlgorithmType = "AUTOMATIC"
534- tumor .data .segmentedPropertyCategory = ("Radiologic Finding" , "C35869" , "NCIt" )
535+ tumor .data .segmentedPropertyCategory = ("Radiologic Finding" , "C35869" , "NCIt" ) # type: ignore[assignment]
535536 tumor .data .segmentedPropertyType .label = "FDG-Avid Tumor"
536537 tumor .data .segmentedPropertyType .code = "C168968"
537538 tumor .data .segmentedPropertyType .scheme = "NCIt"
@@ -574,7 +575,7 @@ def test_triplet_setter_rejects_invalid_type(self):
574575
575576 d = SegmentData ()
576577 with pytest .raises (TypeError , match = "Expected Triplet, tuple, or Code-like" ):
577- d .segmentedPropertyCategory = 42
578+ d .segmentedPropertyCategory = 42 # type: ignore[assignment]
578579
579580 def test_segment_data_validation_error (self ):
580581 d = SegmentData ()
0 commit comments