Files
monitor-shared-utils/monitor_utils/config.py
T
2026-06-16 18:53:49 -07:00

50 lines
1.3 KiB
Python

import json
from enum import Enum
from functools import cache
from pydantic_settings import BaseSettings, SettingsConfigDict
from monitor_utils.constants import PROXIES_PATH, PROJECT_ROOT
class DevelopmentMode(str, Enum):
PRODUCTION = "PRODUCTION"
DEVELOPMENT = "DEVELOPMENT"
class Settings(BaseSettings):
mongo_url: str
mongo_database_name: str
production_bot_token: str
profit_api_key: str
development_bot_token: str | None = None
logging_level: str = "INFO"
development_mode: DevelopmentMode = DevelopmentMode.PRODUCTION
model_config = SettingsConfigDict(env_file=(".env", ".env.local"), extra="ignore")
@cache
def get_settings() -> Settings:
return Settings()
@cache
def get_proxies() -> list[str]:
with PROXIES_PATH.open() as f:
proxies = [f"http://{p.strip()}" for p in f if p.strip()]
if not proxies:
raise ValueError("Proxy list cannot be empty")
return proxies
def get_config(config_name: str, use_production_path: bool = False) -> dict:
config_name = config_name.replace(".json", "")
if use_production_path:
config_path = PROJECT_ROOT / "configs" / f"{config_name}.json"
else:
config_path = PROJECT_ROOT / "tests" / "configs" / f"{config_name}.json"
with open(config_path) as config:
return json.load(config)