ChainedDatastore¶
- 
class lsst.daf.butler.datastores.chainedDatastore.ChainedDatastore(config, registry=None, butlerRoot=None)¶
- Bases: - lsst.daf.butler.Datastore- Chained Datastores to allow read and writes from multiple datastores. - A ChainedDatastore is configured with multiple datastore configurations. A - put()is always sent to each datastore. A- get()operation is sent to each datastore in turn and the first datastore to return a valid dataset is used.- Parameters: - config : DatastoreConfigorstr
- Configuration. This configuration must include a - datastoresfield as a sequence of datastore configurations. The order in this sequence indicates the order to use for read operations.
 - Attributes: - config : DatastoreConfig
- Configuration used to create Datastore. 
- storageClassFactory : StorageClassFactory
- Factory for creating storage class instances from name. 
- name : str
- Label associated with this Datastore. 
 - Attributes Summary - containerKey- Key to specify where child datastores are configured. - defaultConfigFile- Path to configuration defaults. - isEphemeral- Methods Summary - exists(ref)- Check if the dataset exists in one of the datastores. - fromConfig(config, registry[, butlerRoot])- Create datastore from type specified in config file. - get(ref[, parameters])- Load an InMemoryDataset from the store. - getLookupKeys()- Return all the lookup keys relevant to this datastore. - getUri(ref[, predict])- URI to the Dataset. - ingest(path, ref[, formatter, transfer])- Add an on-disk file with the given - DatasetRefto the store, possibly transferring it.- put(inMemoryDataset, ref)- Write a InMemoryDataset with a given - DatasetRefto each datastore.- remove(ref)- Indicate to the Datastore that a Dataset can be removed. - setConfigRoot(root, config, full[, overwrite])- Set any filesystem-dependent config options for child Datastores to be appropriate for a new empty repository with the given root. - transaction()- Context manager supporting - Datastoretransactions.- transfer(inputDatastore, ref)- Retrieve a Dataset from an input - Datastore, and store the result in this- Datastore.- validateConfiguration(entities[, logFailures])- Validate some of the configuration for this datastore. - validateKey(lookupKey, entity)- Validate a specific look up key with supplied entity. - Attributes Documentation - 
containerKey= 'datastores'¶
- Key to specify where child datastores are configured. 
 - 
defaultConfigFile= 'datastores/chainedDatastore.yaml'¶
- Path to configuration defaults. Relative to $DAF_BUTLER_DIR/config or absolute path. Can be None if no defaults specified. 
 - 
isEphemeral= False¶
 - Methods Documentation - 
exists(ref)¶
- Check if the dataset exists in one of the datastores. - Parameters: - ref : DatasetRef
- Reference to the required dataset. 
 - Returns: 
- ref : 
 - 
static fromConfig(config, registry, butlerRoot=None)¶
- Create datastore from type specified in config file. - Parameters: - config : Config
- Configuration instance. 
 
- config : 
 - 
get(ref, parameters=None)¶
- Load an InMemoryDataset from the store. - The dataset is returned from the first datastore that has the dataset. - Parameters: - ref : DatasetRef
- Reference to the required Dataset. 
- parameters : dict
- StorageClass-specific parameters that specify, for example, a slice of the Dataset to be loaded.
 - Returns: - inMemoryDataset : object
- Requested Dataset or slice thereof as an InMemoryDataset. 
 - Raises: - FileNotFoundError
- Requested dataset can not be retrieved. 
- TypeError
- Return value from formatter has unexpected type. 
- ValueError
- Formatter failed to process the dataset. 
 
- ref : 
 - 
getLookupKeys()¶
- Return all the lookup keys relevant to this datastore. - Returns: - keys : setofLookupKey
- The keys stored internally for looking up information based on - DatasetTypename or- StorageClass.
 
- keys : 
 - 
getUri(ref, predict=False)¶
- URI to the Dataset. - The returned URI is from the first datastore in the list that has the dataset with preference given to the first dataset coming from a permanent datastore. If no datastores have the dataset and prediction is allowed, the predicted URI for the first datastore in the list will be returned. - Parameters: - Returns: - Raises: - FileNotFoundError
- A URI has been requested for a dataset that does not exist and guessing is not allowed. 
 - Notes - If the datastore does not have entities that relate well to the concept of a URI the returned URI string will be descriptive. The returned URI is not guaranteed to be obtainable. 
 - 
ingest(path, ref, formatter=None, transfer=None)¶
- Add an on-disk file with the given - DatasetRefto the store, possibly transferring it.- This method is forwarded to each of the chained datastores, trapping cases where a datastore has not implemented file ingest and ignoring them. - Parameters: - path : str
- File path. Treated as relative to the repository root of each child datastore if not absolute. 
- ref : DatasetRef
- Reference to the associated Dataset. 
- formatter : Formatter(optional)
- Formatter that should be used to retreive the Dataset. If not provided, the formatter will be constructed according to Datastore configuration. 
- transfer : str (optional)
- If not None, must be one of ‘move’, ‘copy’, ‘hardlink’, or ‘symlink’ indicating how to transfer the file. The new filename and location will be determined via template substitution, as with - put. If the file is outside the datastore root, it must be transferred somehow.
 - Raises: - NotImplementedError
- If all chained datastores have no ingest implemented or if a transfer mode of - Noneis specified.
- DatasetTypeNotSupportedError
- The associated - DatasetTypeis not handled by this datastore.
 - Notes - If an absolute path is given and “move” mode is specified, then we tell the child datastore to use “copy” mode and unlink it at the end. If a relative path is given then it is assumed the file is already inside the child datastore. - A transfer mode of None implies that the file is already within each of the (relevant) child datastores. 
- path : 
 - 
put(inMemoryDataset, ref)¶
- Write a InMemoryDataset with a given - DatasetRefto each datastore.- The put() to child datastores can fail with - DatasetTypeNotSupportedError. The put() for this datastore will be deemed to have succeeded so long as at least one child datastore accepted the inMemoryDataset.- Parameters: - inMemoryDataset : object
- The Dataset to store. 
- ref : DatasetRef
- Reference to the associated Dataset. 
 - Raises: - TypeError
- Supplied object and storage class are inconsistent. 
- DatasetTypeNotSupportedError
- All datastores reported - DatasetTypeNotSupportedError.
 
- inMemoryDataset : 
 - 
remove(ref)¶
- Indicate to the Datastore that a Dataset can be removed. - The dataset will be removed from each datastore. The dataset is not required to exist in every child datastore. - Parameters: - ref : DatasetRef
- Reference to the required Dataset. 
 - Raises: - FileNotFoundError
- Attempt to remove a dataset that does not exist. Raised if none of the child datastores removed the dataset. 
 
- ref : 
 - 
classmethod setConfigRoot(root, config, full, overwrite=True)¶
- Set any filesystem-dependent config options for child Datastores to be appropriate for a new empty repository with the given root. - Parameters: - root : str
- Filesystem path to the root of the data repository. 
- config : Config
- A - Configto update. Only the subset understood by this component will be updated. Will not expand defaults.
- full : Config
- A complete config with all defaults expanded that can be converted to a - DatastoreConfig. Read-only and will not be modified by this method. Repository-specific options that should not be obtained from defaults when Butler instances are constructed should be copied from- fullto- config.
- overwrite : bool, optional
- If - False, do not modify a value in- configif the value already exists. Default is always to overwrite with the provided- root.
 - Notes - If a keyword is explicitly defined in the supplied - configit will not be overridden by this method if- overwriteis- False. This allows explicit values set in external configs to be retained.
- root : 
 - 
transaction()¶
- Context manager supporting - Datastoretransactions.- Transactions can be nested, and are to be used in combination with - Registry.transaction.
 - 
transfer(inputDatastore, ref)¶
- Retrieve a Dataset from an input - Datastore, and store the result in this- Datastore.- Parameters: - inputDatastore : Datastore
- The external - Datastorefrom which to retreive the Dataset.
- ref : DatasetRef
- Reference to the required Dataset in the input data store. 
 - Returns: - results : list
- List containing the return value from the - put()to each child datastore.
 
- inputDatastore : 
 - 
validateConfiguration(entities, logFailures=False)¶
- Validate some of the configuration for this datastore. - Parameters: - Raises: - DatastoreValidationError
- Raised if there is a validation problem with a configuration. All the problems are reported in a single exception. 
 - Notes - This method checks each datastore in turn. 
 - 
validateKey(lookupKey, entity)¶
- Validate a specific look up key with supplied entity. - Parameters: - lookupKey : LookupKey
- Key to use to retrieve information from the datastore configuration. 
- entity : DatasetRef,DatasetType, orStorageClass
- Entity to compare with configuration retrieved using the specified lookup key. 
 - Raises: - DatastoreValidationError
- Raised if there is a problem with the combination of entity and lookup key. 
 - Notes - Bypasses the normal selection priorities by allowing a key that would normally not be selected to be validated. 
- lookupKey : 
 
- config :