Coverage for app \ settings.py: 100%

28 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-04-28 20:58 -0400

1from pathlib import Path 

2import os 

3 

4from dotenv import load_dotenv 

5 

6# Load env vars from .env (if present) and .env.txt (explicit file requested by user) 

7load_dotenv() 

8load_dotenv(".env.txt") 

9 

10BASE_DIR = Path(__file__).resolve().parent.parent 

11TEMPLATES_DIR = BASE_DIR / "templates" 

12PUBLIC_ASSETS_DIR = BASE_DIR / "public" / "assets" 

13PACKAGED_DOWNLOADS_DIR = BASE_DIR / "downloads" 

14STORAGE_ROOT = Path( 

15 os.getenv("APP_STORAGE_ROOT") 

16 or os.getenv("RAILWAY_VOLUME_MOUNT_PATH") 

17 or str(BASE_DIR) 

18) 

19DOWNLOADS_DIR = Path(os.getenv("DOWNLOADS_DIR", str(STORAGE_ROOT / "downloads"))) 

20PRELOAD_DOWNLOAD_IDS = tuple( 

21 item.strip() 

22 for item in (os.getenv("PRELOAD_DOWNLOAD_IDS") or "IxX_QHay02M,jzWPkKvO7v4,17o2rPGryuk").split(",") 

23 if item.strip() 

24) 

25 

26#Where SQLite file goes 

27DATA_DIR = Path(os.getenv("DATA_DIR", str(STORAGE_ROOT / "data"))) 

28DOWNLOADS_DIR.mkdir(parents=True, exist_ok=True) 

29DATA_DIR.mkdir(parents=True, exist_ok=True) 

30 

31SESSION_SECRET = os.getenv("SESSION_SECRET", "change-this-session-secret") 

32#For expert logins 

33SQLITE_PATH = Path(os.getenv("SQLITE_PATH", str(DATA_DIR / "piggyback.db"))) 

34 

35ADMIN_PASSWORD = os.getenv("ADMIN_PASSWORD", "admin123") 

36EXPERT_PASSWORD = os.getenv("EXPERT_PASSWORD", "expert123") 

37GEMINI_API_KEY = os.getenv("GEMINI_API_KEY", "").strip() 

38ANTHROPIC_API_KEY = os.getenv("ANTHROPIC_API_KEY", "").strip() 

39QUESTION_PROVIDER_DEFAULT = os.getenv("QUESTION_PROVIDER_DEFAULT", "openai").strip().lower() 

40 

41HUME_API_KEY = os.getenv("HUME_API_KEY", "").strip() 

42HUME_VOICE_IDS = { 

43 "blossom": os.getenv("HUME_VOICE_BLOSSOM", "").strip(), 

44 "pippa": os.getenv("HUME_VOICE_PIPPA", "").strip(), 

45 "ash": os.getenv("HUME_VOICE_ASH", "").strip(), 

46} 

47 

48VIDEO_EXTENSIONS = (".mp4",".webm",".mkv",".mov") 

49 

50EXPERT_QUESTION_TYPES = [ 

51 ("character","Character"), 

52 ("settings","Setting"), 

53 ("feeling","Feeling"), 

54 ("action","Action"), 

55 ("causal","Causal"), 

56 ("outcome","Outcome"), 

57 ("prediction","Prediction"), 

58] 

59 

60EXPERT_QUESTION_TYPE_VALUES = {value for value, _ in EXPERT_QUESTION_TYPES} 

61EXPERT_QUESTION_TYPE_LABELS = {value: label for value, label in EXPERT_QUESTION_TYPES}