finai / apps /api /mbf /config.py
Sandy-sys's picture
Deploy FinAI
db7ef8e verified
Raw History Blame Contribute Delete
1.75 kB
"""Centralized config loaded from .env.local."""
from __future__ import annotations
from functools import lru_cache
from pathlib import Path
from pydantic_settings import BaseSettings, SettingsConfigDict
ROOT = Path(__file__).resolve().parents[3]
class Settings(BaseSettings):
model_config = SettingsConfigDict(
env_file=str(ROOT / ".env.local"),
env_file_encoding="utf-8",
extra="ignore",
)
# LLM (Groq)
deepseek_base_url: str = "https://api.groq.com/openai/v1"
deepseek_chat_model: str = "llama-3.3-70b-versatile"
deepseek_reasoner_model: str = "llama-3.3-70b-versatile"
# MySQL
mysql_host: str = "127.0.0.1"
mysql_port: int = 3307
mysql_database: str = "magicbusDB"
mysql_ro_user: str = "mbf_ro"
mysql_ro_password: str = ""
# Postgres
pg_host: str = "127.0.0.1"
pg_port: int = 5433
pg_database: str = "mbf_pg"
pg_user: str = "mbf"
pg_password: str = ""
redis_url: str = "redis://127.0.0.1:6380/0"
api_host: str = "127.0.0.1"
api_port: int = 8000
duckdb_path: str = str(ROOT / "data" / "mbf.duckdb")
schema_path: str = str(ROOT / "data" / "schema.json")
@property
def mysql_ro_url(self) -> str:
return (
f"mysql+pymysql://{self.mysql_ro_user}:{self.mysql_ro_password}"
f"@{self.mysql_host}:{self.mysql_port}/{self.mysql_database}"
)
@property
def pg_url(self) -> str:
return (
f"postgresql+psycopg2://{self.pg_user}:{self.pg_password}"
f"@{self.pg_host}:{self.pg_port}/{self.pg_database}"
)
@lru_cache
def get_settings() -> Settings:
return Settings()