Add functionality to specify config file and app prefix

This commit is contained in:
James C. Palmer 2024-03-23 16:37:37 -07:00
parent c0ed82c465
commit 94edb8e001
1 changed files with 9 additions and 10 deletions

View File

@ -2,15 +2,16 @@
Application configuration models. Application configuration models.
""" """
import os
from pydantic import BaseModel from pydantic import BaseModel
from pydantic_settings import ( from pydantic_settings import (
BaseSettings, BaseSettings,
PydanticBaseSettingsSource, PydanticBaseSettingsSource,
SettingsConfigDict,
YamlConfigSettingsSource, YamlConfigSettingsSource,
) )
APP_PREFIX = "01_" APP_PREFIX: str = os.getenv("01_APP_PREFIX", "01_")
class Client(BaseModel): class Client(BaseModel):
@ -95,13 +96,6 @@ class Config(BaseSettings):
tts: TTS = TTS() tts: TTS = TTS()
tunnel: Tunnel = Tunnel() tunnel: Tunnel = Tunnel()
model_config = SettingsConfigDict(
env_prefix=APP_PREFIX,
env_file=".env",
env_file_encoding="utf-8",
yaml_file="config.yaml",
)
@classmethod @classmethod
def settings_customise_sources( def settings_customise_sources(
cls, cls,
@ -114,4 +108,9 @@ class Config(BaseSettings):
""" """
Modify the order of precedence for settings sources. Modify the order of precedence for settings sources.
""" """
return (YamlConfigSettingsSource(settings_cls),) return (
YamlConfigSettingsSource(
settings_cls,
yaml_file=os.getenv(f"{APP_PREFIX}CONFIG_FILE", "config.yaml"),
),
)