"""Module to store the pipeline configuration."""fromenergytrackr.config.config_modelimportPipelineConfigfromenergytrackr.utils.exceptionsimportConfigurationSingletonAlreadySetError,ConfigurationSingletonNotSetError
[docs]classConfig:"""Class to retrieve the unique configuration of the pipeline."""_instance:"Config | None"=None_pipeline_config:PipelineConfig|None=Nonedef__new__(cls)->"Config":"""Creates a new instance of the Config class. Returns: Config: The singleton instance of the Config class. """ifcls._instanceisNone:cls._instance=super().__new__(cls)returncls._instance
[docs]@classmethoddefset_config(cls,new_config:PipelineConfig)->None:"""Sets the pipeline configuration. Args: new_config (PipelineConfig): The new pipeline configuration to set. Raises: ConfigurationSingletonAlreadySetError: If the configuration has already been set. """ifcls._pipeline_configisnotNone:raiseConfigurationSingletonAlreadySetError()cls._pipeline_config=new_config
[docs]@classmethoddefget_config(cls)->PipelineConfig:"""Gets the pipeline configuration. Returns: PipelineConfig: The pipeline configuration. Raises: ConfigurationSingletonNotSetError: If the configuration has not been set. """ifcls._pipeline_configisNone:raiseConfigurationSingletonNotSetError()returncls._pipeline_config
[docs]@classmethoddefreset(cls)->None:"""Reset the singleton (for testing purposes only)."""cls._pipeline_config=Nonecls._instance=None