Files
trading-journal/backend/settings.py

35 lines
883 B
Python
Raw Normal View History

2025-09-22 14:54:29 +02:00
from __future__ import annotations
2025-09-11 18:24:36 +00:00
import os
from pathlib import Path
from typing import Any
import yaml
from pydantic import ConfigDict
from pydantic_settings import BaseSettings
class Settings(BaseSettings):
host: str = "0.0.0.0" # noqa: S104
port: int = 8000
workers: int = 1
log_level: str = "info"
2025-09-22 14:33:32 +02:00
database_url: str = "sqlite:///:memory:"
2025-09-22 17:35:10 +02:00
api_base: str = "/api/v1"
session_expiry_seconds: int = 3600 * 24 * 7 # 7 days
2025-09-22 14:54:29 +02:00
hmac_key: str | None = None
2025-09-11 18:24:36 +00:00
model_config = ConfigDict(env_file=".env", env_file_encoding="utf-8")
def load_settings() -> Settings:
cfg_path = os.getenv("CONFIG_FILE")
if cfg_path and Path(cfg_path).exists():
with Path(cfg_path).open(encoding="utf-8") as f:
data: dict[str, Any] = yaml.safe_load(f) or {}
return Settings(**data)
return Settings()
settings = load_settings()