easydel.utils.registery#

class easydel.utils.registery.Registry[source]#

Bases: object

Thread-safe registry for managing implementations across different categories.

Example

>>> # Direct registration
>>> Registry.register("trainer", "my_trainer", MyTrainerClass)
>>>
>>> # Decorator registration
>>> @Registry.register_as("model", ["bert", "bert-base"])
>>> class BertModel:
>>>     pass
>>>
>>> # Get implementation
>>> model_cls = Registry.get("model", "bert")
>>> model = model_cls()
classmethod clear(category: Optional[Union[str, Literal['trainer', 'trainer-arguments', 'serve', 'model', 'optimizer', 'scheduler']]] = None) None[source]#

Clear registry.

Parameters

category – Specific category to clear, or None to clear all

classmethod create(category: Union[str, Literal['trainer', 'trainer-arguments', 'serve', 'model', 'optimizer', 'scheduler']], impl_name: str, *args, **kwargs) Any[source]#

Create an instance of a registered implementation.

Parameters
  • category – Category to get from

  • impl_name – Name of implementation to instantiate

  • *args – Positional arguments for constructor

  • **kwargs – Keyword arguments for constructor

Returns

Instance of the implementation

Raises

RegistryError – If implementation not found

classmethod do_register(category: Union[str, Literal['trainer', 'trainer-arguments', 'serve', 'model', 'optimizer', 'scheduler']], impl_names: str | collections.abc.Sequence[str], impl_cls: type[_T], metadata: dict[str, Any] | None = None, overwrite: bool = False) type[_T][source]#

Register an implementation under one or more names in a category.

Parameters
  • category – Category to register under

  • impl_names – Name(s) to register the implementation as

  • impl_cls – Implementation class to register

  • metadata – Optional metadata to associate with the registration

  • overwrite – Whether to allow overwriting existing registrations

Returns

The registered implementation class

Raises
  • RegistryError – If registration already exists and overwrite=False

  • ValueError – If invalid arguments provided

classmethod exists(category: Union[str, Literal['trainer', 'trainer-arguments', 'serve', 'model', 'optimizer', 'scheduler']], impl_name: str) bool[source]#

Check if an implementation exists.

classmethod get(category: Union[str, Literal['trainer', 'trainer-arguments', 'serve', 'model', 'optimizer', 'scheduler']], impl_name: str, default: type[_T] | None = None) type[_T] | None[source]#

Get a registered implementation.

Parameters
  • category – Category to get from

  • impl_name – Name of implementation to get

  • default – Default value if not found

Returns

The implementation class, or default if not found

classmethod get_category_registry(category: Union[str, Literal['trainer', 'trainer-arguments', 'serve', 'model', 'optimizer', 'scheduler']], wakeup: bool = True) dict[str, type][source]#

Get all implementations in a category.

classmethod get_metadata(category: Union[str, Literal['trainer', 'trainer-arguments', 'serve', 'model', 'optimizer', 'scheduler']], impl_name: str) dict[str, Any] | None[source]#

Get metadata for a registered implementation.

classmethod get_or_raise(category: Union[str, Literal['trainer', 'trainer-arguments', 'serve', 'model', 'optimizer', 'scheduler']], impl_name: str, wakeup: bool = True) type[source]#

Get a registered implementation or raise error.

Parameters
  • category – Category to get from

  • impl_name – Name of implementation to get

Returns

The implementation class

Raises

RegistryError – If implementation not found

classmethod info() dict[str, Any][source]#

Get information about the registry state.

classmethod list_categories() list[Union[str, Literal['trainer', 'trainer-arguments', 'serve', 'model', 'optimizer', 'scheduler']]][source]#

List all registered categories.

classmethod list_implementations(category: Union[str, Literal['trainer', 'trainer-arguments', 'serve', 'model', 'optimizer', 'scheduler']]) list[str][source]#

List all implementations in a category.

classmethod register(category: Union[str, Literal['trainer', 'trainer-arguments', 'serve', 'model', 'optimizer', 'scheduler']], impl_names: str | collections.abc.Sequence[str] | None = None, metadata: dict[str, Any] | None = None, overwrite: bool = False) Callable[[type[_T]], type[_T]][source]#

Decorator for registering implementations with the Registry.

Can be used in two ways: 1. With explicit implementation names:

>>> @register("optimizer", "adam")
>>> class AdamOptimizer:
>>>     pass
  1. Using the class name (when impl_names is None):
    >>> @register("optimizer")
    >>> class AdamOptimizer:  # Will be registered as "AdamOptimizer"
    >>>     pass
    
Parameters
  • category – Category to register under

  • impl_names – Name(s) to register as. If None, uses the class name

  • metadata – Optional metadata to associate with the registration

  • overwrite – Whether to allow overwriting existing registrations

Returns

Decorator function that registers the class

classmethod register_as(category: Union[str, Literal['trainer', 'trainer-arguments', 'serve', 'model', 'optimizer', 'scheduler']], impl_names: str | collections.abc.Sequence[str], metadata: dict[str, Any] | None = None, overwrite: bool = False) Callable[[type[_T]], type[_T]][source]#

Decorator for registering implementations.

Parameters
  • category – Category to register under

  • impl_names – Name(s) to register the implementation as

  • metadata – Optional metadata to associate with the registration

  • overwrite – Whether to allow overwriting existing registrations

Returns

Decorator function

Example

>>> @Registry.register_as("model", "gpt2")
>>> class GPT2Model:
>>>     pass
classmethod unregister(category: Union[str, Literal['trainer', 'trainer-arguments', 'serve', 'model', 'optimizer', 'scheduler']], impl_name: str, raise_if_missing: bool = True) type | None[source]#

Unregister an implementation.

Parameters
  • category – Category to unregister from

  • impl_name – Name of implementation to unregister

  • raise_if_missing – Whether to raise error if not found

Returns

The unregistered implementation class, or None if not found

Raises

RegistryError – If implementation not found and raise_if_missing=True

exception easydel.utils.registery.RegistryError[source]#

Bases: Exception

Base exception for Registry errors.