Spaces:
Sleeping
Sleeping
File size: 1,239 Bytes
dbaa71b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
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])
|