Предположим, у меня есть два простых класса BaseSettings, каждый из которых загружает значения из своих отдельных файлов среды. Допустим также, что существует комбинированный класс настроек, основанный на первых двух классах.
Settings = DatabaseSettigns + AuthSettings
Как создать комбинированный класс настроек с плоским пространством имен без необходимости создания динамического класса или динамического назначения значений атрибутов, т. е. я хочу, чтобы моя IDE могла выполнять автозаполнение и т. д., зная, что это за атрибуты.
Когда я использую приведенный ниже пример, я получаю ТОЛЬКО значения из ПОСЛЕДНЕГО класса, т. е. AuthSettings, а не ОБА из их.
Как сделать так, чтобы ВСЕ классы настроек компонентов правильно считывались/инициализировались из соответствующих файлов?
import logging
log = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO,
format='%(message)s')
from pydantic import BaseModel
from pydantic_settings import BaseSettings, SettingsConfigDict
class DatabaseSettings(BaseSettings):
model_config = SettingsConfigDict(
env_prefix="APP_",
env_file=".env.database",
env_file_encoding="utf-8",
extra="ignore",
)
db_host: str = "localhost"
class AuthSettings(BaseSettings):
model_config = SettingsConfigDict(
env_prefix="APP_",
env_file=".env.auth",
env_file_encoding="utf-8",
extra="ignore",
)
auth_secret_key: str = "change-me"
class Settings(DatabaseSettings, AuthSettings):
model_config = SettingsConfigDict(
env_prefix='APP_',
extra='ignore'
)
pass
settings = Settings()
log.info(f"Settings: {settings}")
# .env.database
APP_DB_HOST=db.example.com
# .env.auth
APP_AUTH_SECRET_KEY=secret-from-env-file
Текущий результат
Settings: auth_secret_key='secret-from-env-file' db_host='localhost'
Желаемый результат
Settings: auth_secret_key='secret-from-env-file' db_host='db.example.com'
# notice how the db_host value is the one read from the file instead of the default "localhost"
Подробнее здесь: https://stackoverflow.com/questions/798 ... individual
Объединенный класс настроек Pydantic из нескольких классов настроек с отдельными файлами среды. ⇐ Python
Программы на Python
1764016411
Anonymous
Предположим, у меня есть два простых класса BaseSettings, каждый из которых загружает значения из своих отдельных файлов среды. Допустим также, что существует комбинированный класс настроек, основанный на первых двух классах.
Settings = DatabaseSettigns + AuthSettings
Как создать комбинированный класс настроек с плоским пространством имен без необходимости создания динамического класса или динамического назначения значений атрибутов, т. е. я хочу, чтобы моя IDE могла выполнять автозаполнение и т. д., зная, что это за атрибуты.
Когда я использую приведенный ниже пример, я получаю ТОЛЬКО значения из ПОСЛЕДНЕГО класса, т. е. AuthSettings, а не ОБА из их.
Как сделать так, чтобы ВСЕ классы настроек компонентов правильно считывались/инициализировались из соответствующих файлов?
import logging
log = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO,
format='%(message)s')
from pydantic import BaseModel
from pydantic_settings import BaseSettings, SettingsConfigDict
class DatabaseSettings(BaseSettings):
model_config = SettingsConfigDict(
env_prefix="APP_",
env_file=".env.database",
env_file_encoding="utf-8",
extra="ignore",
)
db_host: str = "localhost"
class AuthSettings(BaseSettings):
model_config = SettingsConfigDict(
env_prefix="APP_",
env_file=".env.auth",
env_file_encoding="utf-8",
extra="ignore",
)
auth_secret_key: str = "change-me"
class Settings(DatabaseSettings, AuthSettings):
model_config = SettingsConfigDict(
env_prefix='APP_',
extra='ignore'
)
pass
settings = Settings()
log.info(f"Settings: {settings}")
# .env.database
APP_DB_HOST=db.example.com
# .env.auth
APP_AUTH_SECRET_KEY=secret-from-env-file
Текущий результат
Settings: auth_secret_key='secret-from-env-file' db_host='localhost'
Желаемый результат
Settings: auth_secret_key='secret-from-env-file' db_host='db.example.com'
# notice how the db_host value is the one read from the file instead of the default "localhost"
Подробнее здесь: [url]https://stackoverflow.com/questions/79828952/combined-pydantic-settings-class-from-multiple-settings-classes-with-individual[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия