CompositeAssembler¶
-
class
lsst.daf.butler.
CompositeAssembler
(storageClass: StorageClass)¶ Bases:
object
Class for providing assembler and disassembler support for composites.
Parameters: - storageClass :
StorageClass
StorageClass
to be used with this assembler.
Attributes: - storageClass :
StorageClass
Methods Summary
assemble
(components, Any], pytype)Construct an object from components based on storageClass. disassemble
(composite, subset, override)Generic implementation of a disassembler. getComponent
(composite, componentName)Attempt to retrieve component from composite object by heuristic. getValidComponents
(composite)Extract all non-None components from a composite. handleParameters
(inMemoryDataset, …)Modify the in-memory dataset using the supplied parameters, returning a possibly new object. selectResponsibleComponent
(readComponent, …)Given a possible set of components to choose from, return the component that should be used to calculate the requested read component. Methods Documentation
-
assemble
(components: Dict[str, Any], pytype: Optional[Type[CT_co]] = None) → Any¶ Construct an object from components based on storageClass.
This generic implementation assumes that instances of objects can be created either by passing all the components to a constructor or by calling setter methods with the name.
Parameters: - components :
dict
Collection of components from which to assemble a new composite object. Keys correspond to composite names in the
StorageClass
.- pytype :
type
, optional Override the type from the
CompositeAssembler.storageClass
to use when assembling the final object.
Returns: - composite :
object
New composite object assembled from components.
Raises: - ValueError
Some components could not be used to create the object or, alternatively, some components were not defined in the associated StorageClass.
- components :
-
disassemble
(composite: Any, subset: Optional[Iterable[T_co]] = None, override: Optional[bool] = None) → Dict[str, Any]¶ Generic implementation of a disassembler.
This implementation attempts to extract components from the parent by looking for attributes of the same name or getter methods derived from the component name.
Parameters: - composite :
object
Parent composite object consisting of components to be extracted.
- subset : iterable, optional
Iterable containing subset of components to extract from composite. Must be a subset of those defined in
CompositeAssembler.storageClass
.- override :
object
, optional Object to use for disassembly instead of parent. This can be useful when called from subclasses that have composites in a hierarchy.
Returns: - components :
dict
dict
with keys matching the components defined inCompositeAssembler.storageClass
and values beingDatasetComponent
instances describing the component. Returns None if this is not a compositeCompositeAssembler.storageClass
.
Raises: - ValueError
A requested component can not be found in the parent using generic lookups.
- TypeError
The parent object does not match the supplied
CompositeAssembler.storageClass
.
- composite :
-
getComponent
(composite: Any, componentName: str) → Any¶ Attempt to retrieve component from composite object by heuristic.
Will attempt a direct attribute retrieval, or else getter methods of the form “get_componentName” and “getComponentName”.
Parameters: Returns: - component :
object
Component extracted from composite.
Raises: - AttributeError
The attribute could not be read from the composite.
- component :
-
getValidComponents
(composite: Any) → Dict[str, Any]¶ Extract all non-None components from a composite.
Parameters: - composite :
object
Composite from which to extract components.
Returns: - comps :
dict
Non-None components extracted from the composite, indexed by the component name as derived from the
CompositeAssembler.storageClass
.
- composite :
-
handleParameters
(inMemoryDataset: Any, parameters: Optional[Mapping[str, Any]] = None) → Any¶ Modify the in-memory dataset using the supplied parameters, returning a possibly new object.
For safety, if any parameters are given to this method an exception will be raised. This is to protect the user from thinking that parameters have been applied when they have not been applied.
Parameters: - inMemoryDataset :
object
Object to modify based on the parameters.
- parameters :
dict
Parameters to apply. Values are specific to the parameter. Supported parameters are defined in the associated
StorageClass
. If no relevant parameters are specified the inMemoryDataset will be return unchanged.
Returns: - inMemoryDataset :
object
Updated form of supplied in-memory dataset, after parameters have been used.
Raises: - ValueError
Parameters have been provided to this default implementation.
- inMemoryDataset :
-
classmethod
selectResponsibleComponent
(readComponent: str, fromComponents: Set[Optional[str]]) → str¶ Given a possible set of components to choose from, return the component that should be used to calculate the requested read component.
Parameters: Returns: - required :
str
The component that should be used.
Raises: - NotImplementedError
Raised if this assembler refuses to answer the question.
- ValueError
Raised if this assembler can not determine a relevant component from the supplied options.
- required :
- storageClass :