From 365444f907f798cba282e1bed106e49cca4d2c49 Mon Sep 17 00:00:00 2001 From: agatha Date: Sat, 14 Mar 2026 15:55:08 -0400 Subject: [PATCH] fix: use .env files and ignore extra for settings subgroups --- src/proxy_pool/config.py | 42 ++++++++++++++++++++++++++++++++++------ 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/src/proxy_pool/config.py b/src/proxy_pool/config.py index 5f04bf0..f725333 100644 --- a/src/proxy_pool/config.py +++ b/src/proxy_pool/config.py @@ -5,7 +5,12 @@ from pydantic_settings import BaseSettings, SettingsConfigDict class DatabaseSettings(BaseSettings): - model_config = SettingsConfigDict(env_prefix="DB_") + model_config = SettingsConfigDict( + env_prefix="DB_", + env_file=".env", + env_file_encoding="utf-8", + extra="ignore", + ) url: str = Field( description="PostgreSQL connection string with asyncpg driver", @@ -25,7 +30,12 @@ class DatabaseSettings(BaseSettings): class RedisSettings(BaseSettings): - model_config = SettingsConfigDict(env_prefix="REDIS_") + model_config = SettingsConfigDict( + env_prefix="REDIS_", + env_file=".env", + env_file_encoding="utf-8", + extra="ignore", + ) url: str = Field( default="redis://localhost:6379", @@ -38,7 +48,12 @@ class RedisSettings(BaseSettings): class ProxyPipelineSettings(BaseSettings): - model_config = SettingsConfigDict(env_prefix="PROXY_") + model_config = SettingsConfigDict( + env_prefix="PROXY_", + env_file=".env", + env_file_encoding="utf-8", + extra="ignore", + ) scrape_timeout_seconds: float = Field( default=30.0, @@ -74,7 +89,12 @@ class ProxyPipelineSettings(BaseSettings): class AccountSettings(BaseSettings): - model_config = SettingsConfigDict(env_prefix="ACCOUNT_") + model_config = SettingsConfigDict( + env_prefix="ACCOUNT_", + env_file=".env", + env_file_encoding="utf-8", + extra="ignore", + ) default_credits: int = Field( default=100, @@ -92,7 +112,12 @@ class AccountSettings(BaseSettings): class NotificationSettings(BaseSettings): - model_config = SettingsConfigDict(env_prefix="NOTIFY_") + model_config = SettingsConfigDict( + env_prefix="NOTIFY_", + env_file=".env", + env_file_encoding="utf-8", + extra="ignore", + ) smtp_host: str | None = Field(default=None) smtp_port: int = Field(default=587) @@ -103,7 +128,12 @@ class NotificationSettings(BaseSettings): class CleanupSettings(BaseSettings): - model_config = SettingsConfigDict(env_prefix="CLEANUP_") + model_config = SettingsConfigDict( + env_prefix="CLEANUP_", + env_file=".env", + env_file_encoding="utf-8", + extra="ignore", + ) prune_dead_after_days: int = Field(default=30) prune_checks_after_days: int = Field(default=7)