Исходный код configs.config

"""
Модуль конфигурации приложения.

Загружает переменные окружения из файла .env и системных переменных,
используя библиотеку `environs`, и предоставляет централизованный доступ
к настройкам через класс `Config`.
"""

from pathlib import Path

from environs import Env

env = Env()
env.read_env()  # читает из .env и системных переменных


[документация] class Config: """ Глобальная конфигурация приложения. Все параметры считываются из переменных окружения и используются для настройки различных аспектов проекта: базы данных, кэша, API, телеграм-бота, email, логирования, безопасности и т.д. """ # --- Общие настройки --- (имя приложения, уровень логирования, путь к корню проекта, часовой пояс, кол-во воркеров) APP_NAME: str = env.str("APP_NAME", "MyApp") LOG_LEVEL: str = env.str("LOG_LEVEL", "INFO") PROJECT_ROOT: Path = Path(__file__).parent.parent TIMEZONE: str = env.str("TIMEZONE", "UTC") MAX_WORKERS: int = env.int("MAX_WORKERS", 5) # --- Базовые директории проекта --- GITHUB_WORKFLOWS_DIR = PROJECT_ROOT / ".github" / "workflows" CONFIGS_DIR: Path = PROJECT_ROOT / "configs" DIAGRAMS_DIR: Path = PROJECT_ROOT / "diagrams" DOCS_DIR: Path = PROJECT_ROOT / "docs" LOGS_DIR: Path = PROJECT_ROOT / "logs" NOTES_DIR: Path = PROJECT_ROOT / "notes" SRC_DIR: Path = PROJECT_ROOT / "src" TESTS_DIR: Path = PROJECT_ROOT / "tests" TOOLS_DIR: Path = PROJECT_ROOT / "tools" # --- Docker --- DOCKER_ENV: str = env.str("DOCKER_ENV", "development") DOCKER_IMAGE_NAME: str = env.str("DOCKER_IMAGE_NAME", "myapp-image") DOCKER_CONTAINER_NAME: str = env.str("DOCKER_CONTAINER_NAME", "myapp-container") # --- Telegram Bot --- TELEGRAM_BOT_TOKEN: str = env.str("TELEGRAM_BOT_TOKEN", None) TELEGRAM_CHAT_ID: str = env.str("TELEGRAM_CHAT_ID", None) TELEGRAM_ADMIN_IDS: list[int] = [int(x) for x in env.list("TELEGRAM_ADMIN_IDS", [])] # --- Google API --- GOOGLE_API_KEY: str = env.str("GOOGLE_API_KEY", None) GOOGLE_CLIENT_ID: str = env.str("GOOGLE_CLIENT_ID", None) GOOGLE_CLIENT_SECRET: str = env.str("GOOGLE_CLIENT_SECRET", None) GOOGLE_REDIRECT_URI: str = env.str("GOOGLE_REDIRECT_URI", None)
config = Config()