Я создаю некоторую логику конфигурации для приложения Python 3 и пытаюсь использовать pydantic и pydantic-settings для управления проверкой и т. д. Я могу загрузить необработанные настройки из файла YAML и создайте из них мой объект настроек. Я также могу прочитать значение из переменной среды. Но я не могу понять, как сделать так, чтобы значение переменной среды имело приоритет над необработанными настройками:
Код: Выделить всё
import os
import yaml as pyyaml
from pydantic_settings import BaseSettings, SettingsConfigDict
class FooSettings(BaseSettings):
foo: int
bar: str
model_config = SettingsConfigDict(env_prefix='FOOCFG__')
raw_yaml = """
foo: 13
bar: baz
"""
os.environ.setdefault("FOOCFG__FOO", "42")
raw_settings = pyyaml.safe_load(raw_yaml)
settings = FooSettings(**raw_settings)
assert settings.foo == 42
Если я закомментирую foo: 13 во входном yaml, утверждение пройдет. Как сделать, чтобы значение env имело приоритет?
Подробнее здесь:
https://stackoverflow.com/questions/790 ... t-variable