@@ -53,7 +53,7 @@ class Option:
53
53
label : Optional [Union [str , int ]] = None
54
54
schema_id : Optional [str ] = None
55
55
feature_schema_id : Optional [FeatureSchemaId ] = None
56
- options : List ["Classification" ] = field (default_factory = list )
56
+ options : Union [ List ["Classification" ], List [ "PromptResponseClassification" ] ] = field (default_factory = list )
57
57
58
58
def __post_init__ (self ):
59
59
if self .label is None :
@@ -82,7 +82,7 @@ def asdict(self) -> Dict[str, Any]:
82
82
"options" : [o .asdict (is_subclass = True ) for o in self .options ]
83
83
}
84
84
85
- def add_option (self , option : ' Classification' ) -> None :
85
+ def add_option (self , option : Union [ " Classification" , "PromptResponseClassification" ] ) -> None :
86
86
if option .name in (o .name for o in self .options ):
87
87
raise InconsistentOntologyException (
88
88
f"Duplicate nested classification '{ option .name } ' "
@@ -239,7 +239,20 @@ class ResponseOption(Option):
239
239
feature_schema_id: (str)
240
240
options: (list)
241
241
"""
242
- pass
242
+
243
+ @classmethod
244
+ def from_dict (
245
+ cls ,
246
+ dictionary : Dict [str ,
247
+ Any ]) -> Dict [Union [str , int ], Union [str , int ]]:
248
+ return cls (value = dictionary ["value" ],
249
+ label = dictionary ["label" ],
250
+ schema_id = dictionary .get ("schemaNodeId" , None ),
251
+ feature_schema_id = dictionary .get ("featureSchemaId" , None ),
252
+ options = [
253
+ PromptResponseClassification .from_dict (o )
254
+ for o in dictionary .get ("options" , [])
255
+ ])
243
256
244
257
245
258
@dataclass
0 commit comments