Spaces:
Sleeping
Sleeping
import logging | |
from typing import Any, Dict, Optional, Union | |
import yaml | |
from pydantic import Field | |
from pydantic_settings import BaseSettings | |
from obsei.misc.utils import dict_to_object | |
logger = logging.getLogger(__name__) | |
class ObseiConfiguration(BaseSettings): | |
configuration: Optional[Dict[str, Any]] = None | |
config_path: Optional[str] = Field(None, env="obsei_config_path") | |
config_filename: Optional[str] = Field(None, env="obsei_config_filename") | |
def __init__(self, **data: Any): | |
super().__init__(**data) | |
if self.configuration is None: | |
self.configuration = yaml.load( | |
open(f"{self.config_path}/{self.config_filename}", "r"), | |
Loader=yaml.FullLoader, | |
) | |
logger.debug(f"Configuration: {self.configuration}") | |
def initialize_instance(self, key_name: Optional[str] = None) -> Union[Any]: | |
if ( | |
key_name is None | |
or self.configuration is None | |
or key_name not in self.configuration | |
or not self.configuration[key_name] | |
): | |
logger.warning(f"{key_name} not exist in configuration") | |
return None | |
return dict_to_object(self.configuration[key_name]) | |