Source code for ExposoGraph.config

"""Runtime configuration helpers for app deployment modes."""

from __future__ import annotations

import os
from enum import Enum
from typing import Mapping


[docs] class AppMode(str, Enum): STATELESS = "stateless" LOCAL = "local"
class LLMProvider(str, Enum): OPENAI = "openai" OLLAMA = "ollama"
[docs] class GraphMode(str, Enum): EXPLORATORY = "exploratory" STRICT = "strict"
[docs] class GraphVisibility(str, Enum): ALL = "all" VALIDATED_ONLY = "validated_only" EXPLORATORY_ONLY = "exploratory_only"
[docs] def normalize_app_mode(value: str | None) -> AppMode: """Normalize environment/config values into a supported app mode.""" if value is None: return AppMode.STATELESS cleaned = value.strip().lower() aliases = { "stateless": AppMode.STATELESS, "public": AppMode.STATELESS, "web": AppMode.STATELESS, "local": AppMode.LOCAL, "curation": AppMode.LOCAL, "persistent": AppMode.LOCAL, } return aliases.get(cleaned, AppMode.STATELESS)
[docs] def normalize_graph_mode(value: str | None) -> GraphMode: """Normalize graph-validation mode values.""" if value is None: return GraphMode.EXPLORATORY cleaned = value.strip().lower() aliases = { "exploratory": GraphMode.EXPLORATORY, "draft": GraphMode.EXPLORATORY, "flexible": GraphMode.EXPLORATORY, "strict": GraphMode.STRICT, "validated": GraphMode.STRICT, "canonical": GraphMode.STRICT, } return aliases.get(cleaned, GraphMode.EXPLORATORY)
[docs] def normalize_graph_visibility(value: str | None) -> GraphVisibility: """Normalize graph-view visibility mode values.""" if value is None: return GraphVisibility.ALL cleaned = value.strip().lower() aliases = { "all": GraphVisibility.ALL, "full": GraphVisibility.ALL, "validated": GraphVisibility.VALIDATED_ONLY, "validated_only": GraphVisibility.VALIDATED_ONLY, "canonical": GraphVisibility.VALIDATED_ONLY, "strict": GraphVisibility.VALIDATED_ONLY, "exploratory": GraphVisibility.EXPLORATORY_ONLY, "exploratory_only": GraphVisibility.EXPLORATORY_ONLY, "provisional": GraphVisibility.EXPLORATORY_ONLY, } return aliases.get(cleaned, GraphVisibility.ALL)
[docs] def get_app_mode(env: Mapping[str, str] | None = None) -> AppMode: """Resolve the current app mode from the environment.""" source = env if env is not None else os.environ return normalize_app_mode(source.get("ExposoGraph_MODE"))
[docs] def persistence_enabled(mode: AppMode | str) -> bool: """Whether server-side persistence features are allowed.""" normalized = mode if isinstance(mode, AppMode) else normalize_app_mode(mode) return normalized == AppMode.LOCAL