prmpt-ar-be / config.py
Nikkon
Deploy PromptAR backend to HF Spaces
c840ad0
"""Application configuration.
Loads configuration from .env file.
Environment variables take precedence over .env file values.
"""
import os
from pathlib import Path
from typing import List
from dotenv import dotenv_values
# Load environment variables from .env file
# Look for .env file in the backend directory
env_path = Path(__file__).parent / ".env"
if env_path.exists():
env_vars = dotenv_values(dotenv_path=env_path)
print(f"Loaded configuration from {env_path}")
else:
# Try loading from current directory as fallback
env_vars = dotenv_values()
print("Loaded configuration from .env file in current directory")
# Helper function to get config value (env vars override .env file)
def get_config(key: str, default: str = "") -> str:
"""Get configuration value from environment variable or .env file.
Environment variables take precedence over .env file values.
"""
return os.getenv(key, env_vars.get(key, default))
# API Configuration
API_TITLE = "PromptAR Backend API"
API_VERSION = "1.0.0"
API_DESCRIPTION = "API for generating 3D models from text prompts and serving them for AR visualization"
# Server Configuration
HOST = get_config("HOST", "0.0.0.0")
PORT = int(get_config("PORT", "8000"))
# CORS Configuration
allowed_origins_value = get_config("ALLOWED_ORIGINS", "*")
ALLOWED_ORIGINS: List[str] = (
allowed_origins_value.split(",") if allowed_origins_value != "*" else ["*"]
)
# Model Configuration
MODEL_STORAGE_PATH = get_config("MODEL_STORAGE_PATH", "./models")
# Database Configuration
# Use persistent storage on Hugging Face Spaces (/data), otherwise use local path
# /data is persistent storage on Hugging Face Spaces that survives restarts
_default_db_path = (
"/data/api_requests.db" if Path("/data").exists() else "./api_requests.db"
)
DB_PATH = get_config("DB_PATH", _default_db_path)
# Hugging Face Configuration (Required)
HF_TOKEN = get_config("HF_TOKEN", "")
if not HF_TOKEN:
import warnings
warnings.warn(
"HF_TOKEN is not configured. Set HF_TOKEN in .env file or environment variable to enable model generation.",
UserWarning,
)
# 3D Model Generation Configuration
# Using TRELLIS: https://huggingface.co/spaces/dkatz2391/TRELLIS_TextTo3D_Try2
# Generates textured GLB files directly from text prompts
# Uses texture_size parameter to ensure textures are embedded in GLB files