Español
Abrir en Telegram

Mensaje✴️ Клас для налаштувань за допомогою pydantic_settings

17 de octubre de 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 ·

Cerca en el feed

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 BeginnersEncuesta
este mensaje
PPython Materials For Beginners✳️ Телеграм боти. Dependency Injection Доопрацюємо нашого бота: зробимо різні привітання для звичайних користувачів та адміністраторів. ID адміністраторів у насPPython Materials For BeginnersEncuesta

Un feed público abierto del índice de búsqueda ChatCrawler — el “Google del Telegram público”; se actualiza a medida que se rastrea la comunidad. Las horas se muestran en UTC.

Solo contenido público, API oficial de Telegram. Acerca de · Preguntas frecuentes · Límites del índice · Eliminar una página · Catálogo · Búsqueda · Cómo contamos