Source code for leads.registry

from typing import TypeVar as _TypeVar

from leads.context import Context
from leads.types import OnRegister as _OnRegister, OnRegisterChain as _OnRegisterChain

T = _TypeVar("T", bound=Context)

_context_instance: T | None = None

_on_register_context: _OnRegister[T] = lambda _: None


[docs] def set_on_register_context(callback: _OnRegisterChain[T]) -> None: global _on_register_context _on_register_context = callback(_on_register_context)
[docs] def register_context(context: T) -> None: global _context_instance if _context_instance: raise RuntimeError("Another context is already registered") _on_register_context(context) _context_instance = context
[docs] def get_context() -> T | None: return _context_instance
[docs] def require_context() -> T: if _context_instance: return _context_instance raise RuntimeError("No context registered")