Русский
Открыть в Telegram

Сообщение✴️ Клас для налаштувань за допомогою pydantic_settings

17 октября 2025
P
✴️ Клас для налаштувань за допомогою pydantic_settings python-dotenv — це добре, але лише тоді, коли налаштувань небагато. Існує бібліотека pydantic_settings яка використовує pydantic та python-dotenv і дозволяє: 1️⃣ Об'єднати всі змінні в один клас. 2️⃣ Конвертувати та валідувати значення змінних із рядків у потрібні типи. 3️⃣ Підтримувати вкладені класи, що дає змогу згрупувати змінні за призначенням. 4️⃣ Зменшити ймовірність розкриття секретних значень при виводі через print або при логувані 5️⃣ Інші тонкі налаштування. 🔗 Pydantic Settings Documentation Уявімо ситуацію, коли нам потрібно зберігати список ID адміністраторів бота та налаштування підключення до бази даних. pydantic_settings уміє працювати з базовими типами, включно зі списками та множинами (парсити їх за допомогою бібліотеки json). Також бібліотека надає широкий простір налаштування процесу валідації під конкретні потреби. Файл .env BOT__TOKEN="Ваш токен" BOT__ADMINS=[1361728070, 1060557517] DB__HOST=localhost DB__PORT=5432 DB__USER=postgres DB__PASSWORD=mysecretpassword DB__NAME=mydatabase Фай main.py # pip insatall pydantic from pydantic import BaseModel, SecretStr # pip insatall pydantic_settings from pydantic_settings import BaseSettings class BotSettings(BaseModel): token: SecretStr # BOT__TOKEN admins: frozenset[int] # BOT__ADMINS class DatabaseSettings(BaseModel): host: str # DB__HOST port: int = 5432 # DB__PORT user: str # DB__USER password: SecretStr # DB__PASSWORD name: str # DB__NAME class Settings(BaseSettings): bot: BotSettings db: DatabaseSettings async def main(): settings = Settings( _env_file=".env", _env_nested_delimiter='__' ) print(repr(settings)) # use: settings.bot.token.get_secret_value() # for get origin token value if __name__ == "__main__": asyncio.run(main()) Вивід: Settings(bot=BotSettings(token=SecretStr('**********'), admins=frozenset({1060557517, 1361728070})), db=DatabaseSettings(host='localhost', port=5432, user='postgres', password=SecretStr('**********'), name='mydatabase')
245 ·

Рядом в ленте

PPython Materials For Beginners❓ Що виведе код: from aiogram import html as aiogram_html # unparse import html as builtin_html # escape nickname = "DeadInside <x_x>" print( aiogram_html.unparPPython Materials For BeginnersОпрос
это сообщение
PPython Materials For Beginners✳️ Телеграм боти. Dependency Injection Доопрацюємо нашого бота: зробимо різні привітання для звичайних користувачів та адміністраторів. ID адміністраторів у насPPython Materials For BeginnersОпрос
PPython Materials For Beginners ChatPython Materials For Beginners Chat@python_code_ua · группа · Технологии
16участников3пишущих за 30 дней
Лента площадки Открыть в Telegram

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Границы индекса · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем