akryldigital's picture
demo version (#5)
40b7ffe verified
"""
Path configuration for local vs deployed environments.
This module handles different paths for local development vs deployed (HF Spaces) environments.
"""
import os
from pathlib import Path
# Determine if we're in a deployed environment (HF Spaces/Docker) or local
# Check for environment variable or Docker-like paths
IS_DEPLOYED = (
os.getenv("DEPLOYED", "false").lower() == "true" or
os.path.exists("/app") or
os.getenv("SPACES_ID") is not None or
os.path.exists("/.dockerenv")
)
# PROJECT_DIR: Base directory for application files
# In deployed: /app, in local: current working directory or project root
if IS_DEPLOYED:
PROJECT_DIR = Path("/app")
else:
# For local development, use current working directory or find project root
cwd = Path.cwd()
# Try to find project root (directory containing this src/ folder)
project_root = cwd
while project_root != project_root.parent:
if (project_root / "src" / "config").exists():
break
project_root = project_root.parent
PROJECT_DIR = project_root
# Cache directories - different for local vs deployed
# Local: Use default user cache locations (don't override)
# Deployed: Use PROJECT_DIR/.cache
if IS_DEPLOYED:
CACHE_DIR = PROJECT_DIR / ".cache"
HF_CACHE_DIR = CACHE_DIR / "huggingface"
STREAMLIT_CACHE_DIR = CACHE_DIR / "streamlit"
else:
# For local, use default user cache (let libraries use their defaults)
HF_CACHE_DIR = None # Will use HF defaults (~/.cache/huggingface)
STREAMLIT_CACHE_DIR = None # Will use Streamlit defaults
# Application directories
FEEDBACK_DIR = PROJECT_DIR / "feedback"
CONVERSATIONS_DIR = PROJECT_DIR / "conversations"
STREAMLIT_CONFIG_DIR = PROJECT_DIR / ".streamlit"
# Log the configuration
if __name__ == "__main__":
print(f"IS_DEPLOYED: {IS_DEPLOYED}")
print(f"PROJECT_DIR: {PROJECT_DIR}")
print(f"HF_CACHE_DIR: {HF_CACHE_DIR}")
print(f"FEEDBACK_DIR: {FEEDBACK_DIR}")
print(f"CONVERSATIONS_DIR: {CONVERSATIONS_DIR}")