import logging from pydantic import field_validator from pydantic_settings import BaseSettings, SettingsConfigDict logging.basicConfig( format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', ) _logger = logging.getLogger(__name__) _logger.setLevel(logging.INFO) class Settings(BaseSettings): proxy_url: str = "http://localhost:8787" port: int = 8025 imap_port: int = 11143 basic_password: str = "" smtp_tls_cert: str = "" smtp_tls_key: str = "" imap_tls_cert: str = "" imap_tls_key: str = "" imap_cache_size: int = 500 imap_http_timeout: float = 30.0 model_config = SettingsConfigDict(env_file=".env") @field_validator("imap_cache_size") @classmethod def cache_size_positive(cls, v): if v <= 0: raise ValueError("imap_cache_size must be > 0") return v @field_validator("imap_http_timeout") @classmethod def timeout_positive(cls, v): if v <= 0: raise ValueError("imap_http_timeout must be > 0") return v settings = Settings()