Source code for olo._namespaces
"""Robot namespace resolution helpers."""
from dataclasses import dataclass
from olo.errors import OloAmbiguousNamespace, OloNotFound
[docs]
@dataclass(frozen=True, slots=True)
class RobotNamespaces:
"""Robot namespaces available through the appliance."""
has_global: bool = False
namespaces: tuple[str, ...] = ()
[docs]
def resolve_default(self) -> str:
"""Return the unambiguous default robot namespace, or raise."""
if len(self.namespaces) == 1:
return self.namespaces[0]
if not self.namespaces and self.has_global:
return ""
if not self.namespaces:
raise OloNotFound("No robot namespace found")
raise OloAmbiguousNamespace(
"Multiple robot namespaces available "
f"({', '.join(self.namespaces)}); pass one explicitly"
)
__all__ = ["RobotNamespaces"]