NOVA / ui /paths.py
S-4-G-4-R's picture
Initial commit
20b15f3
Raw
History Blame Contribute Delete
1.56 kB
"""
ui/paths.py
-----------
Filesystem + import-path wiring for NOVA.
This module MUST be the first `ui` import in nova_app.py. It does the sys.path
+ chdir + .env side effects that make `import app...` (the agent package) and
`from vectorizeer import ...` / `from Qa import ...` (the chatbot) resolve
later -- so it has to run before any other `ui` module that needs BASE,
DOWNLOADS_DIR, VECTORSTORES_DIR, or PDF_UA. Once nova_app.py imports this
first, every other module gets the same path setup for free via Python's module
cache (re-importing `ui.paths` elsewhere just returns the already-initialized
module, it doesn't re-run this file).
"""
import os
import sys
from pathlib import Path
# ---------------------------------------------------------------------------
# PATHS — make both sub-projects importable without touching their code
# ---------------------------------------------------------------------------
BASE = Path(__file__).resolve().parent.parent
os.chdir(BASE) # ./vectorstores, ./downloads resolve under NOVA/
sys.path.insert(0, str(BASE)) # `import app...` (the agent package)
sys.path.insert(0, str(BASE / "chatbot_core")) # `import Qa`, `from vectorizeer import ...`
from dotenv import load_dotenv
load_dotenv(BASE / ".env")
DOWNLOADS_DIR = BASE / "downloads"
DOWNLOADS_DIR.mkdir(exist_ok=True)
VECTORSTORES_DIR = BASE / "vectorstores"
ASSETS_DIR = BASE / "assets"
ASSETS_DIR.mkdir(exist_ok=True)
PDF_UA = {"User-Agent": "Mozilla/5.0 (compatible; NOVA-research/1.0)"}