SaarthiAI / app /config.py
parthmax24's picture
working proto 5
8b96826
Raw
History Blame Contribute Delete
1.84 kB
"""Central configuration: loads .env files and exposes API keys + constants."""
import os
from pathlib import Path
from dotenv import load_dotenv
PROJECT_ROOT = Path(__file__).resolve().parent.parent
# Keys may live in the root .env or the older code/.env — load both.
load_dotenv(PROJECT_ROOT / ".env")
load_dotenv(PROJECT_ROOT / "code" / ".env")
def _get_key(*names):
for name in names:
value = os.getenv(name)
if value:
value = value.strip().strip('"').strip("'")
# .env.example placeholders like "your_gemini_key..." are not keys
if value and not value.lower().startswith("your_"):
return value
return None
def tomtom_key():
return _get_key("TomTom_api_key", "TOMTOM_API_KEY", "tomtom_api_key", "tomtom_api")
def calendarific_key():
return _get_key("calendarific_api_key", "CALENDARIFIC_API_KEY")
def geoapify_key():
return _get_key("Geoapify_API", "GEOAPIFY_API", "GEOAPIFY_API_KEY")
def ticketmaster_key():
return _get_key("Ticketmaster_API", "TICKETMASTER_API", "TICKETMASTER_API_KEY")
def gemini_key():
return _get_key("GEMINI_API_KEY", "GOOGLE_API_KEY", "gemini_api_key")
def groq_key():
return _get_key("GROQ_API_KEY", "groq_api_key")
def mongodb_uri():
return _get_key("MONGODB_URI", "MONGO_URI")
# City scope: Lucknow only (MVP)
CITY_NAME = "Lucknow"
CITY_STATE = "Uttar Pradesh"
CITY_CENTER = {"lat": 26.8467, "lon": 80.9462}
TIMEZONE = "Asia/Kolkata"
# Fallback chains: each provider tries its strong model first, then a
# lighter one (different rate-limit buckets), then moves to the next provider.
GEMINI_MODELS = ["gemini-2.5-flash", "gemini-2.5-flash-lite"]
GROQ_MODELS = ["llama-3.3-70b-versatile", "llama-3.1-8b-instant"]
# Departure sweep settings
SWEEP_WINDOW_MIN = 90
SWEEP_STEP_MIN = 15