StorageClassFactory

class lsst.daf.butler.StorageClassFactory(config: Union[lsst.daf.butler.core.storageClass.StorageClassConfig, str, None] = None)

Bases: object

Factory for StorageClass instances.

This class is a singleton, with each instance sharing the pool of StorageClasses. Since code can not know whether it is the first time the instance has been created, the constructor takes no arguments. To populate the factory with storage classes, a call to addFromConfig() should be made.

Parameters:
config : StorageClassConfig or str, optional

Load configuration. In a ButlerConfig` the relevant configuration is located in the storageClasses section.

Methods Summary

addFromConfig(config, …) Add more StorageClass definitions from a config file.
getStorageClass(storageClassName) Get a StorageClass instance associated with the supplied name.
makeNewStorageClass(name, baseClass, …) Create a new Python class as a subclass of StorageClass.
registerStorageClass(storageClass) Store the StorageClass in the factory.

Methods Documentation

addFromConfig(config: Union[lsst.daf.butler.core.storageClass.StorageClassConfig, lsst.daf.butler.core.config.Config, str]) → None

Add more StorageClass definitions from a config file.

Parameters:
config : StorageClassConfig, Config or str

Storage class configuration. Can contain a storageClasses key if part of a global configuration.

getStorageClass(storageClassName: str) → lsst.daf.butler.core.storageClass.StorageClass

Get a StorageClass instance associated with the supplied name.

Parameters:
storageClassName : str

Name of the storage class to retrieve.

Returns:
instance : StorageClass

Instance of the correct StorageClass.

Raises:
KeyError

The requested storage class name is not registered.

static makeNewStorageClass(name: str, baseClass: Optional[Type[lsst.daf.butler.core.storageClass.StorageClass], None] = <class 'lsst.daf.butler.core.storageClass.StorageClass'>, **kwargs) → Type[lsst.daf.butler.core.storageClass.StorageClass]

Create a new Python class as a subclass of StorageClass.

Parameters:
name : str

Name to use for this class.

baseClass : type, optional

Base class for this StorageClass. Must be either StorageClass or a subclass of StorageClass. If None, StorageClass will be used.

Returns:
newtype : type subclass of StorageClass

Newly created Python type.

registerStorageClass(storageClass: lsst.daf.butler.core.storageClass.StorageClass) → None

Store the StorageClass in the factory.

Will be indexed by StorageClass.name and will return instances of the supplied StorageClass.

Parameters:
storageClass : StorageClass

Type of the Python StorageClass to register.

Raises:
ValueError

If a storage class has already been registered with storageClassName and the previous definition differs.