"""Output base class."""importtypingastimportnumpyasnpimportnumpy.typingasnptfromtaurex.logimportLoggerfromtaurex.typesimportAnyValTypefromtaurex.typesimportArrayTypefromtaurex.typesimportScalarTypeMetadataType=t.Dict[str,AnyValType]"""Type for metadata."""
[docs]classOutputGroup(Logger):"""Stores output data in a hierarchical structure."""def__init__(self,name:str):"""Initialize OutputGroup."""super().__init__(name)self._name=name
[docs]defcreate_group(self,group_name:str)->"OutputGroup":"""Create a group."""raiseNotImplementedError
[docs]defstore_dictionary(self,dictionary:t.Dict[str,t.Any],group_name:t.Optional[str]=None)->None:"""Store a dictionary in the output."""fromtaurex.utilimportrecursively_save_dict_contents_to_outputgroup=selfifgroup_nameisnotNone:group=self.create_group(group_name)recursively_save_dict_contents_to_output(group,dictionary)
[docs]classOutput(OutputGroup):"""Base class for handling outputs from Taurex3."""def__init__(self,name:str)->None:"""Initialize output. Parameters ---------- name : str Name for logging purposes. """super().__init__(name)
[docs]defstore_dictionary(self,dictionary:t.Dict[str,t.Any],group_name:t.Optional[str]=None)->None:"""Store a dictionary in the output."""fromtaurex.utilimportrecursively_save_dict_contents_to_outputout=selfifgroup_nameisnotNone:out=self.create_group(group_name)recursively_save_dict_contents_to_output(out,dictionary)