easydel.utils.registery#
- class easydel.utils.registery.Registry[source]#
Bases:
objectThread-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 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
- 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