| from typing import Any, Dict, Optional |
| from pydantic import BaseSettings, PostgresDsn, HttpUrl, validator |
|
|
| class Settings(BaseSettings): |
| API_V1_STR: str = "/api/v1" |
| POSTGRES_SERVER: str |
| POSTGRES_USER: str |
| POSTGRES_PASSWORD: str |
| POSTGRES_DB: str |
| LABEL_STUDIO_URL: str |
| LABEL_STUDIO_API_KEY: str |
| LABEL_STUDIO_PROJECT_ID: str |
| PROJECT_NAME: Optional[str] = "LangChain" |
| DESCRIPTION: Optional[str] = "LLM chain" |
| SQLALCHEMY_DATABASE_URI: Optional[PostgresDsn] = None |
| SENTRY_DSN: Optional[HttpUrl] = None |
|
|
| @validator("SENTRY_DSN", pre=True) |
| def sentry_dsn_can_be_blank(cls, v: str) -> Optional[str]: |
| if len(v) == 0: |
| return None |
| return v |
|
|
| @validator("SQLALCHEMY_DATABASE_URI", pre=True) |
| def assemble_db_connection(cls, v: Optional[str], values: Dict[str, Any]) -> Any: |
| if isinstance(v, str): |
| return v |
| return PostgresDsn.build( |
| scheme="postgresql", |
| user=values.get("POSTGRES_USER"), |
| password=values.get("POSTGRES_PASSWORD"), |
| host=values.get("POSTGRES_SERVER"), |
| path=f"/{values.get('POSTGRES_DB') or ''}", |
| ) |
|
|
| class Config: |
| case_sensitive = True |
|
|
|
|
| settings = Settings() |
|
|