Component (autotransform.util.component)
Utilities for handling components, such as importing custom components.
- class autotransform.util.component.ComponentFactory(components: Dict[str, ComponentImport], component_type: Type[T], component_file: str)
Bases:
Generic
[T
],ABC
A factory class that produces instances of components
- _components
A mapping from a component name to the information needed to import and use that component.
- Type:
Dict[str, ComponentImport]
- _custom_components_file
The name of the file containing custom component JSON.
- Type:
str
- _type
The type this factory will produce.
- Type:
Type[T]
- from_console(name: str, previous_value: ~autotransform.util.component.T | None = <object object>, default_value: ~autotransform.util.component.T | None = <object object>, simple: bool = False, allow_none: bool = True) T | None
Gets a component from console inputs.
- Parameters:
name (str) – The name of the component being entered.
previous_value (Optional[T], optional) – A previously used value for the component. Defaults to UNSET_VALUE.
default_value (Optional[T], optional) – A default value for the component. Defaults to UNSET_VALUE.
simple (bool, optional) – Whether to choose simple options. Defaults to False.
allow_none (bool, optional) – Whether None is a valid value. Defaults to True.
- Returns:
The component or None.
- Return type:
Optional[T]
- get_class(component_name: str) Type[T]
Gets the class for a component with the specified type, usually an enum value.
- Parameters:
component_name (str) – The type of the component, usually an enum value. If a custom component is used, the type should start with custom/.
- Raises:
ValueError – If the component could not be found.
- Returns:
The class for the component.
- Return type:
Type[T]
- get_components() Dict[str, ComponentImport]
A simple getter for the factory’s map of components.
- Returns:
The components in the component library.
- Return type:
Dict[str, ComponentImport]
- get_custom_components(strict: bool = False) Dict[str, ComponentImport]
Builds the custom components dictionary if it’s not set, returns it otherwise.
- Parameters:
strict (bool, optional) – Whether to strictly enforce no issues arise during import. Defaults to False
- Returns:
The custom component import info.
- Return type:
Dict[str, ComponentImport]
- static get_custom_components_dict(component_file_name: str, strict: bool = False) Dict[str, ComponentImport]
Builds a custom component dictionary for importing.
- Parameters:
component_file_name (str) – The name of the file that contains the custom components.
strict (bool, optional) – Whether to raise an error if JSON is malformed. Defaults to False.
- Returns:
- The custom component import info. All custom components
start with custom/ for their name.
- Return type:
Dict[str, ComponentImport]
- static get_custom_components_path(component_file_name: str) str
Gets the path for the custom component file.
- Parameters:
component_file_name (str) – The name of the file that contains the custom components.
- Returns:
The path where the custom component JSON is located.
- Return type:
str
- get_instance(data: Dict[str, Any]) T
Simple method to get an instance from a bundle.
- Parameters:
data (Dict[str, Any]) – The bundled component.
- Returns:
An instance of the associated component.
- Return type:
T
- class autotransform.util.component.ComponentImport(*, class_name: str, module: str)
Bases:
ComponentModel
The information required to import and return a component.
- class_name
The name of the class of the component.
- Type:
str
- module
The fully qualified module where the class can be imported.
- Type:
str
- class_name: str
- model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[dict[str, FieldInfo]] = {'class_name': FieldInfo(annotation=str, required=True), 'module': FieldInfo(annotation=str, required=True)}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- module: str
- class autotransform.util.component.ComponentModel
Bases:
BaseModel
A base class for AutoTransform components that need to handle bundling/unbundling for JSON.
- bundle() Dict[str, Any]
Generates a JSON encodable bundle. If a component is not JSON encodable this method should be overridden to provide an encodable version.
- Returns:
The encodable bundle.
- Return type:
Dict[str, Any]
- classmethod from_data(data: Dict[str, Any]) TComponent
Produces an instance of the component from decoded data. Override if the component had to be modified to encode.
- Parameters:
data (Mapping[str, Any]) – The JSON decoded data.
- Returns:
An instance of the component.
- Return type:
TComponent
- model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[dict[str, FieldInfo]] = {}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- class autotransform.util.component.NamedComponent
Bases:
ComponentModel
A base class for AutoTransform components that are produced from a factory using a name to differentiate component classes.
- name
The name of the Component.
- Type:
ClassVar[Enum]
- bundle() Dict[str, Any]
Generates a JSON encodable bundle. If a component is not JSON encodable this method should be overridden to provide an encodable version.
- Returns:
The encodable bundle.
- Return type:
Dict[str, Any]
- model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[dict[str, FieldInfo]] = {}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- name: ClassVar[Enum]