File tree Expand file tree Collapse file tree 3 files changed +29
-2
lines changed
src/aind_data_schema/components Expand file tree Collapse file tree 3 files changed +29
-2
lines changed Original file line number Diff line number Diff line change @@ -8,7 +8,7 @@ Description of breeding info for subject
88
99| Field | Type | Title (Description) |
1010| -------| ------| -------------|
11- | ` breeding_group ` | ` str ` | Breeding Group |
11+ | < del > ` breeding_group ` </ del > | ` str ` | ** [ DEPRECATED ] ** Field will be removed in future releases. Breeding Group |
1212| ` maternal_id ` | ` str ` | Maternal specimen ID |
1313| ` maternal_genotype ` | ` str ` | Maternal genotype |
1414| ` paternal_id ` | ` str ` | Paternal specimen ID |
Original file line number Diff line number Diff line change @@ -72,12 +72,26 @@ class Housing(DataModel):
7272class BreedingInfo (DataModel ):
7373 """Description of breeding info for subject"""
7474
75- breeding_group : str = Field (..., title = "Breeding Group" )
75+ breeding_group : Optional [str ] = Field (
76+ default = None , title = "Breeding Group" , deprecated = "Field will be removed in future releases"
77+ )
7678 maternal_id : str = Field (..., title = "Maternal specimen ID" )
7779 maternal_genotype : str = Field (..., title = "Maternal genotype" )
7880 paternal_id : str = Field (..., title = "Paternal specimen ID" )
7981 paternal_genotype : str = Field (..., title = "Paternal genotype" )
8082
83+ @field_validator ("breeding_group" , mode = "before" )
84+ def warn_breeding_group_deprecated (cls , v : Optional [str ]) -> Optional [str ]:
85+ """Validator to warn about deprecated breeding_group field"""
86+ if v :
87+ import warnings
88+
89+ warnings .warn (
90+ "The 'breeding_group' field is deprecated and will be removed. The field's value has been cleared." ,
91+ DeprecationWarning ,
92+ )
93+ return None
94+
8195
8296class MouseSubject (DataModel ):
8397 """Description of a mouse subject"""
Original file line number Diff line number Diff line change @@ -54,6 +54,19 @@ def test_constructors(self):
5454 Subject .model_validate_json (s .model_dump_json ())
5555
5656 self .assertIsNotNone (s )
57+ self .assertIsNone (s .subject_details .breeding_info .breeding_group )
58+
59+ def test_breeding_info_deprecated_field (self ):
60+ """test that using deprecated field raises warning"""
61+
62+ with self .assertWarns (DeprecationWarning ):
63+ BreedingInfo (
64+ breeding_group = "Emx1-IRES-Cre(ND)" ,
65+ maternal_id = "546543" ,
66+ maternal_genotype = "Emx1-IRES-Cre/wt; Camk2a-tTa/Camk2a-tTA" ,
67+ paternal_id = "232323" ,
68+ paternal_genotype = "Ai93(TITL-GCaMP6f)/wt" ,
69+ )
5770
5871
5972if __name__ == "__main__" :
You can’t perform that action at this time.
0 commit comments