Skip to content

registry

registry

Decorator-based registry for runtime discovery of pluggable components.

Adapted from IPW's src/ipw/core/registry.py. Each typed subclass gets its own isolated storage so registrations in one registry never leak into another.

Classes

RegistryBase

Bases: Generic[T]

Generic registry base class with class-specific entry isolation.

Functions
register classmethod
register(key: str) -> Callable[[T], T]

Decorator that registers entry under key.

Source code in src/openjarvis/core/registry.py
@classmethod
def register(cls, key: str) -> Callable[[T], T]:
    """Decorator that registers *entry* under *key*."""

    def decorator(entry: T) -> T:
        entries = cls._entries()
        if key in entries:
            raise ValueError(f"{cls.__name__} already has an entry for '{key}'")
        entries[key] = entry
        return entry

    return decorator
register_value classmethod
register_value(key: str, value: T) -> T

Imperatively register a value under key.

Source code in src/openjarvis/core/registry.py
@classmethod
def register_value(cls, key: str, value: T) -> T:
    """Imperatively register a *value* under *key*."""
    entries = cls._entries()
    if key in entries:
        raise ValueError(f"{cls.__name__} already has an entry for '{key}'")
    entries[key] = value
    return value
get classmethod
get(key: str) -> T

Retrieve the entry for key, raising KeyError if missing.

Source code in src/openjarvis/core/registry.py
@classmethod
def get(cls, key: str) -> T:
    """Retrieve the entry for *key*, raising ``KeyError`` if missing."""
    try:
        return cls._entries()[key]
    except KeyError as exc:
        raise KeyError(
            f"{cls.__name__} does not have an entry for '{key}'"
        ) from exc
create classmethod
create(key: str, *args: Any, **kwargs: Any) -> Any

Look up key and instantiate it with the given arguments.

Source code in src/openjarvis/core/registry.py
@classmethod
def create(cls, key: str, *args: Any, **kwargs: Any) -> Any:
    """Look up *key* and instantiate it with the given arguments."""
    entry = cls.get(key)
    if not callable(entry):
        raise TypeError(
            f"{cls.__name__} entry '{key}' is not callable"
            " and cannot be instantiated"
        )
    return entry(*args, **kwargs)
items classmethod
items() -> Tuple[Tuple[str, T], ...]

Return all (key, entry) pairs as a tuple.

Source code in src/openjarvis/core/registry.py
@classmethod
def items(cls) -> Tuple[Tuple[str, T], ...]:
    """Return all ``(key, entry)`` pairs as a tuple."""
    return tuple(cls._entries().items())
keys classmethod
keys() -> Tuple[str, ...]

Return all registered keys as a tuple.

Source code in src/openjarvis/core/registry.py
@classmethod
def keys(cls) -> Tuple[str, ...]:
    """Return all registered keys as a tuple."""
    return tuple(cls._entries().keys())
contains classmethod
contains(key: str) -> bool

Check whether key is registered.

Source code in src/openjarvis/core/registry.py
@classmethod
def contains(cls, key: str) -> bool:
    """Check whether *key* is registered."""
    return key in cls._entries()
clear classmethod
clear() -> None

Remove all entries (useful in tests).

Source code in src/openjarvis/core/registry.py
@classmethod
def clear(cls) -> None:
    """Remove all entries (useful in tests)."""
    cls._entries().clear()

ModelRegistry

Bases: RegistryBase[Any]

Registry for ModelSpec objects.

EngineRegistry

Bases: RegistryBase[Type['InferenceEngine']]

Registry for inference engine backends.

MemoryRegistry

Bases: RegistryBase[Type['MemoryBackend']]

Registry for memory / retrieval backends.

AgentRegistry

Bases: RegistryBase[Type['BaseAgent']]

Registry for agent implementations.

ToolRegistry

Bases: RegistryBase[Any]

Registry for tool specifications.

RouterPolicyRegistry

Bases: RegistryBase[Any]

Registry for router policy implementations.

BenchmarkRegistry

Bases: RegistryBase[Any]

Registry for benchmark implementations.

ChannelRegistry

Bases: RegistryBase[Any]

Registry for channel implementations.

LearningRegistry

Bases: RegistryBase[Any]

Registry for learning policies.

SkillRegistry

Bases: RegistryBase[Any]

Registry for skill manifests.

SpeechRegistry

Bases: RegistryBase[Any]

Registry for speech backend implementations.