SPB Git

spb/wp45_uqo

Public
1.3 KB · 33 lines python
1from __future__ import annotations2import os, yaml3from pathlib import Path4from .provenance import ROOT, expand56def load(name: str) -> dict:7    with open(ROOT / "config" / f"{name}.yaml") as f:8        return yaml.safe_load(f)910def corpus_root() -> Path:11    env = os.environ.get("JOF250_CORPUS_ROOT")12    return expand(env or load("corpus")["corpus_root"])1314def derived_dir() -> Path:15    d = ROOT / load("corpus")["derived_dir"]; d.mkdir(parents=True, exist_ok=True); return d1617def manifests_dir() -> Path:18    d = ROOT / load("corpus")["manifests_dir"]; d.mkdir(parents=True, exist_ok=True); return d1920def api_key() -> str | None:21    """Read key from env or from a key file (never printed)."""22    if os.environ.get("ANTHROPIC_API_KEY"): return os.environ["ANTHROPIC_API_KEY"]23    env_file = ROOT / ".env"24    kf = os.environ.get("JOF250_ANTHROPIC_KEY_FILE")25    if env_file.exists():26        for line in env_file.read_text().splitlines():27            if line.startswith("JOF250_ANTHROPIC_KEY_FILE="): kf = line.split("=",1)[1].strip()28            if line.startswith("ANTHROPIC_API_KEY="): return line.split("=",1)[1].strip()29    if kf and expand(kf).exists():30        for line in expand(kf).read_text().splitlines():31            if line.startswith("ANTHROPIC_API_KEY="): return line.split("=",1)[1].strip()32    return None33
Files · abe8945aefffa0096080b1470e6c1c6a089f5faa
Menu

Theme