akryldigital's picture
demo version (#5)
40b7ffe verified
raw
history blame
2.03 kB
"""
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}")