component#

component(cls=None, **default_params)[source]#

Decorator for creating components with default parameters.

This decorator makes it easier to create components with parameters by: 1. Allowing default parameters to be specified at class definition time 2. Creating a factory function that can be used to create component instances 3. Preserving type hints and docstrings

Parameters:
  • cls (Type[BaseComponent], optional) – The component class to decorate. If None, returns a decorator function.

  • **default_params – Default parameters to use when creating the component instance.

Returns:

If cls is provided, returns a factory function for creating component instances. If cls is None, returns a decorator function.

Return type:

Union[Type[BaseComponent], Callable]

Examples

Basic usage:

>>> @component
... class MyComponent(BaseComponent):
...     def __init__(self, model, verbose=False, param1=1, param2=2):
...         super().__init__(model, verbose)
...         self.param1 = param1
...         self.param2 = param2

With default parameters:

>>> @component(param1=10, param2=20)
... class MyComponent(BaseComponent):
...     def __init__(self, model, verbose=False, param1=1, param2=2):
...         super().__init__(model, verbose)
...         self.param1 = param1
...         self.param2 = param2

Using the factory:

>>> # Create with default parameters
>>> MyComponent.create(model)
>>> # Create with custom parameters
>>> MyComponent.create(model, param1=100, param2=200)