Источник пользовательских настроек Pydantic запускается раньше, чем источники по умолчаниюPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Источник пользовательских настроек Pydantic запускается раньше, чем источники по умолчанию

Сообщение Anonymous »

Мне необходимо загрузить данные в мою модель Pydantic тремя различными способами (переменные env, файл .env и Google Secret Manager).

Почему?

Локально -> env vars + файл .env

GCP -> env vars + секретный менеджер

Итак, я создал этот класс

Код: Выделить всё

class Settings(BaseSettings):
"""Settings class."""

VAR1: str
VAR2: str
VAR3: str

model_config = SettingsConfigDict(case_sensitive=True, extra="ignore", env_file=".env", env_file_encoding="utf-8")

@classmethod
def settings_customise_sources(
cls,
settings_cls: type[BaseSettings],
init_settings: InitSettingsSource,
env_settings: EnvSettingsSource,
dotenv_settings: DotEnvSettingsSource,
file_secret_settings: PydanticBaseSettingsSource,
) -> tuple[PydanticBaseSettingsSource, ...]:
return (
init_settings,
env_settings,
dotenv_settings,
GoogleSecretManagerSettingsSource(settings_cls),
)
Но, например, если VAR1 находится не в env_settings, а в init_settings (

Код: Выделить всё

Settings(VAR1="foo")
) или в моем файле .env (dotenv_settings), Pydantic сначала сделает это, чтобы получить доступ к значению в Google Secret Manager, хотя я помещаю GoogleSecretManagerSettingsSource последним.
Любая идея как это решить?
(GoogleSecretManagerSettingsSource основан на этом)

Подробнее здесь: https://stackoverflow.com/questions/786 ... fault-ones
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»