Skip to content

Registry

hya.registry

Implement the resolver registry to easily register resolvers.

hya.registry.ResolverRegistry

Implement a resolver registry.

This class manages a collection of resolver functions that can be registered with keys and later used with OmegaConf.

Parameters:

Name Type Description Default
state dict[str, Callable[..., Any]] | None

Optional initial state dictionary containing key-resolver pairs. If provided, a copy is made to prevent external modifications.

None
Example
>>> from hya.registry import ResolverRegistry
>>> registry = ResolverRegistry()
>>> @registry.register("my_key")
... def my_resolver(value):
...     pass
...

hya.registry.ResolverRegistry.state property

state: dict[str, Callable[..., Any]]

The state of the registry.

hya.registry.ResolverRegistry.has_resolver

has_resolver(key: str) -> bool

Check if a resolver is explicitly registered for the given key.

Parameters:

Name Type Description Default
key str

The key to check.

required

Returns:

Type Description
bool

True if a resolver is registered for this key,

bool

False otherwise

Example
>>> from hya.registry import ResolverRegistry
>>> registry = ResolverRegistry()
>>> @registry.register("my_key")
... def my_resolver(value):
...     pass
...
>>> registry.has_resolver("my_key")
True
>>> registry.has_resolver("missing")
False

hya.registry.ResolverRegistry.register

register(
    key: str, exist_ok: bool = False
) -> Callable[[F], F]

Register a resolver to registry with the specified key.

This method returns a decorator that can be used to register resolver functions.

Parameters:

Name Type Description Default
key str

The key used to register the resolver. Must be unique unless exist_ok is True.

required
exist_ok bool

If False, a RuntimeError is raised if you try to register a new resolver with an existing key. If True, the existing resolver will be overridden.

False

Returns:

Type Description
Callable[[F], F]

A decorator function that registers the resolver and returns it unchanged.

Raises:

Type Description
TypeError

If the resolver is not callable.

RuntimeError

If the key already exists and exist_ok is False.

Example
>>> from hya.registry import ResolverRegistry
>>> registry = ResolverRegistry()
>>> @registry.register("my_key")
... def my_resolver(value):
...     return value * 2
...
>>> my_resolver(5)
10

hya.registry.ResolverRegistry.register_resolvers

register_resolvers() -> None

Register the resolvers to OmegaConf.

This method iterates through all registered resolvers and registers them with OmegaConf if they haven't been registered already.

Example
>>> from hya.registry import ResolverRegistry
>>> registry = ResolverRegistry()
>>> @registry.register("multiply")
... def multiply_resolver(x, y):
...     return x * y
...
>>> registry.register_resolvers()

hya.registry.get_default_registry

get_default_registry() -> ResolverRegistry

Get or create the default global resolver registry.

Returns a singleton registry instance using a simple singleton pattern. The registry is initially empty and can be populated with custom resolvers.

This function uses a singleton pattern to ensure the same registry instance is returned on subsequent calls, which is efficient and maintains consistency across an application.

Returns:

Type Description
ResolverRegistry

A ResolverRegistry instance

Notes

The singleton pattern means modifications to the returned registry affect all future calls to this function. If you need an isolated registry, create a new ResolverRegistry instance directly.

Example
>>> from hya.registry import get_default_registry
>>> registry = get_default_registry()
>>> @registry.register("my_key")
... def my_resolver(value):
...     pass
...