Spaces:
Running
Running
from pydantic_settings import BaseSettings | |
from typing import Optional, Dict, Any | |
import os | |
from dotenv import load_dotenv | |
load_dotenv() | |
class Settings(BaseSettings): | |
# Application | |
APP_NAME: str = "TestAuto" | |
DEBUG: bool = False | |
VERSION: str = "1.0.0" | |
# API | |
API_V1_STR: str = "/api/v1" | |
PROJECT_NAME: str = "TestAuto API" | |
# Security | |
SECRET_KEY: str = os.getenv("SECRET_KEY", "your-secret-key") | |
ACCESS_TOKEN_EXPIRE_MINUTES: int = 60 * 24 * 8 # 8 days | |
# Database | |
POSTGRES_SERVER: str = os.getenv("POSTGRES_SERVER", "localhost") | |
POSTGRES_USER: str = os.getenv("POSTGRES_USER", "postgres") | |
POSTGRES_PASSWORD: str = os.getenv("POSTGRES_PASSWORD", "postgres") | |
POSTGRES_DB: str = os.getenv("POSTGRES_DB", "testauto") | |
SQLALCHEMY_DATABASE_URI: Optional[str] = None | |
# AI Providers | |
OPENAI_API_KEY: Optional[str] = os.getenv("OPENAI_API_KEY") | |
OPENROUTER_API_KEY: Optional[str] = os.getenv("OPENROUTER_API_KEY") | |
LOCAL_LLM_PATH: Optional[str] = os.getenv("LOCAL_LLM_PATH") | |
# Message Queue | |
RABBITMQ_HOST: str = os.getenv("RABBITMQ_HOST", "localhost") | |
RABBITMQ_PORT: int = int(os.getenv("RABBITMQ_PORT", "5672")) | |
RABBITMQ_USER: str = os.getenv("RABBITMQ_USER", "guest") | |
RABBITMQ_PASSWORD: str = os.getenv("RABBITMQ_PASSWORD", "guest") | |
# Test Management Tools | |
TESTRAIL_API_KEY: Optional[str] = os.getenv("TESTRAIL_API_KEY") | |
TESTRAIL_URL: Optional[str] = os.getenv("TESTRAIL_URL") | |
JIRA_API_TOKEN: Optional[str] = os.getenv("JIRA_API_TOKEN") | |
JIRA_URL: Optional[str] = os.getenv("JIRA_URL") | |
QTEST_API_TOKEN: Optional[str] = os.getenv("QTEST_API_TOKEN") | |
QTEST_URL: Optional[str] = os.getenv("QTEST_URL") | |
# Document Processing | |
UPLOAD_FOLDER: str = "uploads" | |
MAX_CONTENT_LENGTH: int = 16 * 1024 * 1024 # 16MB | |
ALLOWED_EXTENSIONS: set = {"pdf", "docx", "doc", "txt", "png", "jpg", "jpeg"} | |
# Logging | |
LOG_LEVEL: str = os.getenv("LOG_LEVEL", "INFO") | |
LOG_FILE: str = "logs/testauto.log" | |
# Docker | |
DOCKER_IMAGE: str = "testauto:latest" | |
def __init__(self, **kwargs: Any): | |
super().__init__(**kwargs) | |
self.SQLALCHEMY_DATABASE_URI = ( | |
f"postgresql://{self.POSTGRES_USER}:{self.POSTGRES_PASSWORD}" | |
f"@{self.POSTGRES_SERVER}/{self.POSTGRES_DB}" | |
) | |
settings = Settings() |