# config.py import os from pydantic_settings import BaseSettings, SettingsConfigDict class Config(BaseSettings): model_config = SettingsConfigDict(env_file=".env", case_sensitive=True) DB_USER: str = os.getenv("DB_USER") DB_PASSWORD: str = os.getenv("DB_PASSWORD") DB_HOST: str = os.getenv("DB_HOST", "localhost") DB_PORT: str = os.getenv("DB_PORT", "3306") DB_NAME: str = os.getenv("DB_NAME", "defaultdb") HF_TOKEN: str = os.environ.get("HF_TOKEN") HF_TTS_DS_REPO: str = os.environ.get("HF_TTS_DS_REPO") FTP_URL: str = os.environ.get("FTP_URL") APP_TITLE: str = "Gooya TTS Annotation Tools" # Sentry Configuration SENTRY_DSN: str = os.environ.get("SENTRY_DSN", "") SENTRY_ENVIRONMENT: str = os.environ.get("SENTRY_ENVIRONMENT", "development") SENTRY_TRACES_SAMPLE_RATE: float = float(os.environ.get("SENTRY_TRACES_SAMPLE_RATE", "0.1")) SENTRY_PROFILES_SAMPLE_RATE: float = float(os.environ.get("SENTRY_PROFILES_SAMPLE_RATE", "0.1")) # Phase 2 Review Mapping: Defines who reviews whose work. # Key: Original annotator's username, Value: Reviewer's username REVIEW_MAPPING: dict[str, str] = { "zahra2": "mohsen", "mohsen": "zahra2", # "mohsen": "sepehr", # "sepehr": "mohammad" } @property def db_url(self) -> str: # If no DB_USER is provided, use SQLite for local testing if not self.DB_USER or not self.DB_PASSWORD: return f"sqlite:///{self.DB_NAME}" else: return f"mysql+pymysql://{self.DB_USER}:{self.DB_PASSWORD}@{self.DB_HOST}:{self.DB_PORT}/{self.DB_NAME}" conf = Config()