from pydantic import BaseModel from pydantic_settings import ( BaseSettings, SettingsConfigDict, ) from pathlib import Path import logging BASE_DIR = Path(__file__) class RunConfig(BaseModel): host: str = "0.0.0.0" port: int = 8000 reload: bool = True class Settings(BaseSettings): model_config = SettingsConfigDict( env_file=( BASE_DIR / ".env-template", BASE_DIR / ".env", ), case_sensitive=False, env_nested_delimiter="__", env_prefix="NETADM_CONFIG__", ) run: RunConfig = RunConfig() settings = Settings() def config_logging(level=logging.INFO): logging.basicConfig( level=level, datefmt="%Y-%m-%d %H:%M:%S", format="[%(asctime)s.%(msecs)03d] %(module)-25s:%(lineno)4d | %(funcName)-20s| %(levelname)-8s | %(message)s", ) config_logging(level=logging.INFO)