@@ -179,7 +179,10 @@ def at_least_one_target_gene_exists(cls, field_value, values):
179179 return field_value
180180
181181 @validator ("score_ranges" )
182- def score_range_labels_must_be_unique (cls , field_value : ScoreRanges ):
182+ def score_range_labels_must_be_unique (cls , field_value : Optional [ScoreRanges ]):
183+ if field_value is None :
184+ return None
185+
183186 existing_labels = []
184187 for i , range_model in enumerate (field_value .ranges ):
185188 range_model .label = range_model .label .strip ()
@@ -195,7 +198,10 @@ def score_range_labels_must_be_unique(cls, field_value: ScoreRanges):
195198 return field_value
196199
197200 @validator ("score_ranges" )
198- def ranges_contain_normal_and_abnormal (cls , field_value : ScoreRanges ):
201+ def ranges_contain_normal_and_abnormal (cls , field_value : Optional [ScoreRanges ]):
202+ if field_value is None :
203+ return None
204+
199205 ranges = set ([range_model .classification for range_model in field_value .ranges ])
200206 if not set (default_ranges ).issubset (ranges ):
201207 raise ValidationError (
@@ -207,7 +213,7 @@ def ranges_contain_normal_and_abnormal(cls, field_value: ScoreRanges):
207213 return field_value
208214
209215 @validator ("score_ranges" )
210- def ranges_do_not_overlap (cls , field_value : ScoreRanges ):
216+ def ranges_do_not_overlap (cls , field_value : Optional [ ScoreRanges ] ):
211217 def test_overlap (tp1 , tp2 ) -> bool :
212218 # Always check the tuple with the lowest lower bound. If we do not check
213219 # overlaps in this manner, checking the overlap of (0,1) and (1,2) will
@@ -226,6 +232,9 @@ def test_overlap(tp1, tp2) -> bool:
226232
227233 return False
228234
235+ if field_value is None :
236+ return None
237+
229238 for i , range_test in enumerate (field_value .ranges ):
230239 for range_check in list (field_value .ranges )[i + 1 :]:
231240 if test_overlap (range_test .range , range_check .range ):
@@ -237,7 +246,10 @@ def test_overlap(tp1, tp2) -> bool:
237246 return field_value
238247
239248 @validator ("score_ranges" )
240- def wild_type_score_in_normal_range (cls , field_value : ScoreRanges ):
249+ def wild_type_score_in_normal_range (cls , field_value : Optional [ScoreRanges ]):
250+ if field_value is None :
251+ return None
252+
241253 normal_ranges = [
242254 range_model .range for range_model in field_value .ranges if range_model .classification == "normal"
243255 ]
0 commit comments