SqlRegistry¶
-
class
lsst.daf.butler.registry.SqlRegistry(database: Database, defaults: RegistryDefaults, managers: RegistryManagerInstances)¶ Bases:
lsst.daf.butler.registry.RegistryRegistry implementation based on SQLAlchemy.
- Parameters
- database
Database Database instance to store Registry.
- defaults
RegistryDefaults Default collection search path and/or output
RUNcollection.- managers
RegistryManagerInstances All the managers required for this registry.
- database
Attributes Summary
Path to configuration defaults.
Default collection search path and/or output
RUNcollection (RegistryDefaults).All dimensions recognized by this
Registry(DimensionUniverse).Methods Summary
associate(collection, refs)Add existing datasets to a
TAGGEDcollection.certify(collection, refs, timespan)Associate one or more datasets with a calibration collection and a validity range within it.
copy([defaults])Create a new
Registrybacked by the same data repository and connection as this one, but independent defaults.createFromConfig([config, dimensionConfig, …])Create registry database and return
SqlRegistryinstance.decertify(collection, datasetType, timespan, *)Remove or adjust datasets to clear a validity range within a calibration collection.
deleteOpaqueData(tableName, **where)Remove records from an opaque table.
determineTrampoline(config)Return class to use to instantiate real registry.
disassociate(collection, refs)Remove existing datasets from a
TAGGEDcollection.expandDataId([dataId, graph, records, …])Expand a dimension-based data ID to include additional information.
fetchOpaqueData(tableName, **where)Retrieve records from an opaque table.
findDataset(datasetType[, dataId, …])Find a dataset given its
DatasetTypeand data ID.forceRegistryConfig(config)Force the supplied config to a
RegistryConfig.fromConfig(config[, butlerRoot, writeable, …])Create
Registrysubclass instance fromconfig.getCollectionChain(parent)Return the child collections in a
CHAINEDcollection.getCollectionDocumentation(collection)Retrieve the documentation string for a collection.
getCollectionSummary(collection)Return a summary for the given collection.
getCollectionType(name)Return an enumeration value indicating the type of the given collection.
getDataset(id)Retrieve a Dataset entry.
getDatasetLocations(ref)Retrieve datastore locations for a given dataset.
getDatasetType(name)Get the
DatasetType.Return an object that allows a new
Datastoreinstance to communicate with thisRegistry.insertDatasets(datasetType, dataIds[, run, …])Insert one or more datasets into the
RegistryinsertDimensionData(element, *data[, conform])Insert one or more dimension records into the database.
insertOpaqueData(tableName, *data)Insert records into an opaque table.
Return
Trueif this registry allows write operations, andFalseotherwise.makeQueryBuilder(summary)Return a
QueryBuilderinstance capable of constructing and managing more complex queries than those obtainable viaRegistryinterfaces.queryCollections([expression, datasetType, …])Iterate over the collections whose names match an expression.
queryDataIds(dimensions, *[, dataId, …])Query for data IDs matching user-provided criteria.
queryDatasetAssociations(datasetType[, …])Iterate over dataset-collection combinations where the dataset is in the collection.
queryDatasetTypes([expression, components])Iterate over the dataset types whose names match an expression.
queryDatasets(datasetType, *[, collections, …])Query for and iterate over dataset references matching user-provided criteria.
queryDimensionRecords(element, *[, dataId, …])Query for dimension information matching user-provided criteria.
refresh()Refresh all in-memory state by querying the database.
registerCollection(name[, type, doc])Add a new collection if one with the given name does not exist.
registerDatasetType(datasetType)Add a new
DatasetTypeto the Registry.registerOpaqueTable(tableName, spec)Add an opaque (to the
Registry) table for use by aDatastoreor other data repository client.registerRun(name[, doc])Add a new run if one with the given name does not exist.
removeCollection(name)Completely remove the given collection.
removeDatasetType(name)Remove the named
DatasetTypefrom the registry.removeDatasets(refs)Remove datasets from the Registry.
Reset SQLAlchemy connection pool for
SqlRegistrydatabase.setCollectionChain(parent, children, *[, …])Define or redefine a
CHAINEDcollection.setCollectionDocumentation(collection, doc)Set the documentation string for a collection.
syncDimensionData(element, row[, conform])Synchronize the given dimension record with the database, inserting if it does not already exist and comparing values if it does.
transaction(*[, savepoint])Return a context manager that represents a transaction.
Attributes Documentation
-
defaultConfigFile: Optional[str] = None¶ Path to configuration defaults. Accessed within the
configsresource or relative to a search path. Can be None if no defaults specified.
-
defaults¶ Default collection search path and/or output
RUNcollection (RegistryDefaults).This is an immutable struct whose components may not be set individually, but the entire struct can be set by assigning to this property.
-
dimensions¶
Methods Documentation
-
associate(collection: str, refs: Iterable[lsst.daf.butler.DatasetRef]) → None¶ Add existing datasets to a
TAGGEDcollection.If a DatasetRef with the same exact ID is already in a collection nothing is changed. If a
DatasetRefwith the sameDatasetTypeand data ID but with different ID exists in the collection,ConflictingDefinitionErroris raised.- Parameters
- Raises
- ConflictingDefinitionError
If a Dataset with the given
DatasetRefalready exists in the given collection.- AmbiguousDatasetError
Raised if
any(ref.id is None for ref in refs).- MissingCollectionError
Raised if
collectiondoes not exist in the registry.- TypeError
Raise adding new datasets to the given
collectionis not allowed.
-
certify(collection: str, refs: Iterable[lsst.daf.butler.DatasetRef], timespan:lsst.daf.butler.Timespan) → None¶ Associate one or more datasets with a calibration collection and a validity range within it.
- Parameters
- collection
str The name of an already-registered
CALIBRATIONcollection.- refs
Iterable[DatasetRef] Datasets to be associated.
- timespan
Timespan The validity range for these datasets within the collection.
- collection
- Raises
- AmbiguousDatasetError
Raised if any of the given
DatasetRefinstances is unresolved.- ConflictingDefinitionError
Raised if the collection already contains a different dataset with the same
DatasetTypeand data ID and an overlapping validity range.- TypeError
Raised if
collectionis not aCALIBRATIONcollection or if one or more datasets are of a dataset type for whichDatasetType.isCalibrationreturnsFalse.
-
copy(defaults: Optional[lsst.daf.butler.registry.RegistryDefaults] = None) →lsst.daf.butler.registry.Registry¶ Create a new
Registrybacked by the same data repository and connection as this one, but independent defaults.- Parameters
- defaults
RegistryDefaults, optional Default collections and data ID values for the new registry. If not provided,
self.defaultswill be used (but future changes to either registry’s defaults will not affect the other).
- defaults
- Returns
Notes
Because the new registry shares a connection with the original, they also share transaction state (despite the fact that their
transactioncontext manager methods do not reflect this), and must be used with care.
-
classmethod
createFromConfig(config: Optional[Union[lsst.daf.butler.registry.RegistryConfig, str]] = None, dimensionConfig: Optional[Union[lsst.daf.butler.DimensionConfig, str]] = None, butlerRoot: Optional[str] = None) →lsst.daf.butler.registry.Registry¶ Create registry database and return
SqlRegistryinstance.This method initializes database contents, database must be empty prior to calling this method.
- Parameters
- config
RegistryConfigorstr, optional Registry configuration, if missing then default configuration will be loaded from registry.yaml.
- dimensionConfig
DimensionConfigorstr, optional Dimensions configuration, if missing then default configuration will be loaded from dimensions.yaml.
- butlerRoot
str, optional Path to the repository root this
SqlRegistrywill manage.
- config
- Returns
- registry
SqlRegistry A new
SqlRegistryinstance.
- registry
-
decertify(collection: str, datasetType: Union[str,lsst.daf.butler.DatasetType], timespan:lsst.daf.butler.Timespan, *, dataIds: Optional[Iterable[Union[lsst.daf.butler.DataCoordinate, Mapping[str, Any]]]] = None) → None¶ Remove or adjust datasets to clear a validity range within a calibration collection.
- Parameters
- collection
str The name of an already-registered
CALIBRATIONcollection.- datasetType
strorDatasetType Name or
DatasetTypeinstance for the datasets to be decertified.- timespan
Timespan, optional The validity range to remove datasets from within the collection. Datasets that overlap this range but are not contained by it will have their validity ranges adjusted to not overlap it, which may split a single dataset validity range into two.
- dataIds
Iterable[DataId], optional Data IDs that should be decertified within the given validity range If
None, all data IDs forself.datasetTypewill be decertified.
- collection
- Raises
- TypeError
Raised if
collectionis not aCALIBRATIONcollection or ifdatasetType.isCalibration() is False.
-
deleteOpaqueData(tableName: str, **where: Any) → None¶ Remove records from an opaque table.
- Parameters
- tableName
str Logical name of the opaque table. Must match the name used in a previous call to
registerOpaqueTable.- where
Additional keyword arguments are interpreted as equality constraints that restrict the deleted rows (combined with AND); keyword arguments are column names and values are the values they must have.
- tableName
-
classmethod
determineTrampoline(config: Optional[Union[ButlerConfig, RegistryConfig, Config, str]]) → Tuple[Type[Registry], RegistryConfig]¶ Return class to use to instantiate real registry.
- Parameters
- config
RegistryConfigorstr, optional Registry configuration, if missing then default configuration will be loaded from registry.yaml.
- config
- Returns
- requested_cls
typeofRegistry The real registry class to use.
- registry_config
RegistryConfig The
RegistryConfigto use.
- requested_cls
-
disassociate(collection: str, refs: Iterable[lsst.daf.butler.DatasetRef]) → None¶ Remove existing datasets from a
TAGGEDcollection.collectionandrefcombinations that are not currently associated are silently ignored.- Parameters
- Raises
- AmbiguousDatasetError
Raised if any of the given dataset references is unresolved.
- MissingCollectionError
Raised if
collectiondoes not exist in the registry.- TypeError
Raise adding new datasets to the given
collectionis not allowed.
-
expandDataId(dataId: Optional[Union[lsst.daf.butler.DataCoordinate, Mapping[str, Any]]] = None, *, graph: Optional[lsst.daf.butler.DimensionGraph] = None, records: Optional[Union[lsst.daf.butler.NamedKeyMapping[lsst.daf.butler.DimensionElement, Optional[lsst.daf.butler.DimensionRecord]], Mapping[str, Optional[lsst.daf.butler.DimensionRecord]]]] = None, withDefaults: bool = True, **kwargs: Any) →lsst.daf.butler.DataCoordinate¶ Expand a dimension-based data ID to include additional information.
- Parameters
- dataId
DataCoordinateordict, optional Data ID to be expanded; augmented and overridden by
kwds.- graph
DimensionGraph, optional Set of dimensions for the expanded ID. If
None, the dimensions will be inferred from the keys ofdataIdandkwds. Dimensions that are indataIdorkwdsbut not ingraphare silently ignored, providing a way to extract and expand a subset of a data ID.- records
Mapping[str,DimensionRecord], optional Dimension record data to use before querying the database for that data, keyed by element name.
- withDefaults
bool, optional Utilize
self.defaults.dataIdto fill in missing governor dimension key-value pairs. Defaults toTrue(i.e. defaults are used).- **kwargs
Additional keywords are treated like additional key-value pairs for
dataId, extending and overriding
- dataId
- Returns
- expanded
DataCoordinate A data ID that includes full metadata for all of the dimensions it identifieds, i.e. guarantees that
expanded.hasRecords()andexpanded.hasFull()both returnTrue.
- expanded
-
fetchOpaqueData(tableName: str, **where: Any) → Iterator[dict]¶ Retrieve records from an opaque table.
- Parameters
- tableName
str Logical name of the opaque table. Must match the name used in a previous call to
registerOpaqueTable.- where
Additional keyword arguments are interpreted as equality constraints that restrict the returned rows (combined with AND); keyword arguments are column names and values are the values they must have.
- tableName
- Yields
- row
dict A dictionary representing a single result row.
- row
-
findDataset(datasetType: Union[lsst.daf.butler.DatasetType, str], dataId: Optional[Union[lsst.daf.butler.DataCoordinate, Mapping[str, Any]]] = None, *, collections: Optional[Any] = None, timespan: Optional[lsst.daf.butler.Timespan] = None, **kwargs: Any) → Optional[lsst.daf.butler.DatasetRef]¶ Find a dataset given its
DatasetTypeand data ID.This can be used to obtain a
DatasetRefthat permits the dataset to be read from aDatastore. If the dataset is a component and can not be found using the provided dataset type, a dataset ref for the parent will be returned instead but with the correct dataset type.- Parameters
- datasetType
DatasetTypeorstr A
DatasetTypeor the name of one.- dataId
dictorDataCoordinate, optional A
dict-like object containing theDimensionlinks that identify the dataset within a collection.- collections, optional.
An expression that fully or partially identifies the collections to search for the dataset; see Collection expressions for more information. Defaults to
self.defaults.collections.- timespan
Timespan, optional A timespan that the validity range of the dataset must overlap. If not provided, any
CALIBRATIONcollections matched by thecollectionsargument will not be searched.- **kwargs
Additional keyword arguments passed to
DataCoordinate.standardizeto convertdataIdto a trueDataCoordinateor augment an existing one.
- datasetType
- Returns
- ref
DatasetRef A reference to the dataset, or
Noneif no matching Dataset was found.
- ref
- Raises
Notes
This method simply returns
Noneand does not raise an exception even when the set of collections searched is intrinsically incompatible with the dataset type, e.g. ifdatasetType.isCalibration() is False, but onlyCALIBRATIONcollections are being searched. This may make it harder to debug some lookup failures, but the behavior is intentional; we consider it more important that failed searches are reported consistently, regardless of the reason, and that adding additional collections that do not contain a match to the search path never changes the behavior.
-
classmethod
forceRegistryConfig(config: Optional[Union[ButlerConfig, RegistryConfig, Config, str]]) → RegistryConfig¶ Force the supplied config to a
RegistryConfig.- Parameters
- config
RegistryConfig,ConfigorstrorNone Registry configuration, if missing then default configuration will be loaded from registry.yaml.
- config
- Returns
- registry_config
RegistryConfig A registry config.
- registry_config
-
classmethod
fromConfig(config: Union[ButlerConfig, RegistryConfig, Config, str], butlerRoot: Optional[Union[str, ButlerURI]] = None, writeable: bool = True, defaults: Optional[RegistryDefaults] = None) → Registry¶ Create
Registrysubclass instance fromconfig.Registry database must be inbitialized prior to calling this method.
- Parameters
- config
ButlerConfig,RegistryConfig,Configorstr Registry configuration
- butlerRoot
strorButlerURI, optional Path to the repository root this
Registrywill manage.- writeable
bool, optional If
True(default) create a read-write connection to the database.- defaults
RegistryDefaults, optional Default collection search path and/or output
RUNcollection.
- config
- Returns
- registry
SqlRegistry(subclass) A new
SqlRegistrysubclass instance.
- registry
-
getCollectionChain(parent: str) → lsst.daf.butler.registry.wildcards.CollectionSearch¶ Return the child collections in a
CHAINEDcollection.- Parameters
- parent
str Name of the chained collection. Must have already been added via a call to
Registry.registerCollection.
- parent
- Returns
- children
CollectionSearch An object that defines the search path of the collection. See Collection expressions for more information.
- children
- Raises
-
getCollectionDocumentation(collection: str) → Optional[str]¶ Retrieve the documentation string for a collection.
-
getCollectionSummary(collection: str) → lsst.daf.butler.registry.summaries.CollectionSummary¶ Return a summary for the given collection.
- Parameters
- collection
str Name of the collection for which a summary is to be retrieved.
- collection
- Returns
- summary
CollectionSummary Summary of the dataset types and governor dimension values in this collection.
- summary
-
getCollectionType(name: str) →lsst.daf.butler.registry.CollectionType¶ Return an enumeration value indicating the type of the given collection.
- Parameters
- name
str The name of the collection.
- name
- Returns
- type
CollectionType Enum value indicating the type of this collection.
- type
- Raises
- MissingCollectionError
Raised if no collection with the given name exists.
-
getDataset(id: Union[int, uuid.UUID]) → Optional[lsst.daf.butler.DatasetRef]¶ Retrieve a Dataset entry.
-
getDatasetLocations(ref:lsst.daf.butler.DatasetRef) → Iterable[str]¶ Retrieve datastore locations for a given dataset.
-
getDatasetType(name: str) →lsst.daf.butler.DatasetType¶ Get the
DatasetType.- Parameters
- name
str Name of the type.
- name
- Returns
- type
DatasetType The
DatasetTypeassociated with the given name.
- type
- Raises
- KeyError
Requested named DatasetType could not be found in registry.
-
getDatastoreBridgeManager() → DatastoreRegistryBridgeManager¶ Return an object that allows a new
Datastoreinstance to communicate with thisRegistry.- Returns
- manager
DatastoreRegistryBridgeManager Object that mediates communication between this
Registryand its associated datastores.
- manager
-
insertDatasets(datasetType: Union[lsst.daf.butler.core.datasets.type.DatasetType, str], dataIds: Iterable[Union[lsst.daf.butler.core.dimensions._coordinate.DataCoordinate, Mapping[str, Any]]], run: Optional[str] = None, expand: bool = True, idGenerationMode: lsst.daf.butler.registry.interfaces._datasets.DatasetIdGenEnum = <DatasetIdGenEnum.UNIQUE: 0>) → List[lsst.daf.butler.DatasetRef]¶ Insert one or more datasets into the
RegistryThis always adds new datasets; to associate existing datasets with a new collection, use
associate.- Parameters
- datasetType
DatasetTypeorstr A
DatasetTypeor the name of one.- dataIds
IterableofdictorDataCoordinate Dimension-based identifiers for the new datasets.
- run
str, optional The name of the run that produced the datasets. Defaults to
self.defaults.run.- expand
bool, optional If
True(default), expand data IDs as they are inserted. This is necessary in general to allow datastore to generate file templates, but it may be disabled if the caller can guarantee this is unnecessary.- idGenerationMode
DatasetIdGenEnum, optional Specifies option for generating dataset IDs. By default unique IDs are generated for each inserted dataset.
- datasetType
- Returns
- refs
listofDatasetRef Resolved
DatasetRefinstances for all given data IDs (in the same order).
- refs
- Raises
-
insertDimensionData(element: Union[lsst.daf.butler.DimensionElement, str], *data: Union[Mapping[str, Any],lsst.daf.butler.DimensionRecord], conform: bool = True) → None¶ Insert one or more dimension records into the database.
- Parameters
- element
DimensionElementorstr The
DimensionElementor name thereof that identifies the table records will be inserted into.- data
dictorDimensionRecord(variadic) One or more records to insert.
- conform
bool, optional If
False(Trueis default) perform no checking or conversions, and assume thatelementis aDimensionElementinstance anddatais a one or moreDimensionRecordinstances of the appropriate subclass.
- element
-
insertOpaqueData(tableName: str, *data: dict) → None¶ Insert records into an opaque table.
- Parameters
- tableName
str Logical name of the opaque table. Must match the name used in a previous call to
registerOpaqueTable.- data
Each additional positional argument is a dictionary that represents a single row to be added.
- tableName
-
makeQueryBuilder(summary:lsst.daf.butler.registry.queries.QuerySummary) →lsst.daf.butler.registry.queries.QueryBuilder¶ Return a
QueryBuilderinstance capable of constructing and managing more complex queries than those obtainable viaRegistryinterfaces.This is an advanced interface; downstream code should prefer
Registry.queryDataIdsandRegistry.queryDatasetswhenever those are sufficient.- Parameters
- summary
queries.QuerySummary Object describing and categorizing the full set of dimensions that will be included in the query.
- summary
- Returns
- builder
queries.QueryBuilder Object that can be used to construct and perform advanced queries.
- builder
-
queryCollections(expression: Any = Ellipsis, datasetType: Optional[lsst.daf.butler.core.datasets.type.DatasetType] = None, collectionTypes: Iterable[lsst.daf.butler.registry._collectionType.CollectionType] = frozenset({<CollectionType.RUN: 1>, <CollectionType.TAGGED: 2>, <CollectionType.CHAINED: 3>, <CollectionType.CALIBRATION: 4>}), flattenChains: bool = False, includeChains: Optional[bool] = None) → Iterator[str]¶ Iterate over the collections whose names match an expression.
- Parameters
- expression
Any, optional An expression that identifies the collections to return, such as a
str(for full matches),re.Pattern(for partial matches), or iterable thereof.can be used to return all collections, and is the default. See Collection expressions for more information.- datasetType
DatasetType, optional If provided, only yield collections that may contain datasets of this type. This is a conservative approximation in general; it may yield collections that do not have any such datasets.
- collectionTypes
AbstractSet[CollectionType], optional If provided, only yield collections of these types.
- flattenChains
bool, optional If
True(Falseis default), recursively yield the child collections of matchingCHAINEDcollections.- includeChains
bool, optional If
True, yield records for matchingCHAINEDcollections. Default is the opposite offlattenChains: include either CHAINED collections or their children, but not both.
- expression
- Yields
- collection
str The name of a collection that matches
expression.
- collection
-
queryDataIds(dimensions: Union[Iterable[Union[lsst.daf.butler.Dimension, str]],lsst.daf.butler.Dimension, str], *, dataId: Optional[Union[lsst.daf.butler.DataCoordinate, Mapping[str, Any]]] = None, datasets: Optional[Any] = None, collections: Optional[Any] = None, where: Optional[str] = None, components: Optional[bool] = None, bind: Optional[Mapping[str, Any]] = None, check: bool = True, **kwargs: Any) →lsst.daf.butler.registry.queries.DataCoordinateQueryResults¶ Query for data IDs matching user-provided criteria.
- Parameters
- dimensions
Dimensionorstr, or iterable thereof The dimensions of the data IDs to yield, as either
Dimensioninstances orstr. Will be automatically expanded to a completeDimensionGraph.- dataId
dictorDataCoordinate, optional A data ID whose key-value pairs are used as equality constraints in the query.
- datasets
Any, optional An expression that fully or partially identifies dataset types that should constrain the yielded data IDs. For example, including “raw” here would constrain the yielded
instrument,exposure,detector, andphysical_filtervalues to only those for which at least one “raw” dataset exists incollections. Allowed types includeDatasetType,str,re.Pattern, and iterables thereof. Unlike other dataset type expressions,...is not permitted - it doesn’t make sense to constrain data IDs on the existence of all datasets. See DatasetType expressions for more information.- collections: `Any`, optional
An expression that identifies the collections to search for datasets, such as a
str(for full matches),re.Pattern(for partial matches), or iterable thereof.can be used to search all collections (actually just allRUNcollections, because this will still find all datasets). If not provided,self.default.collectionsis used. Ignored unlessdatasetsis also passed. See Collection expressions for more information.- where
str, optional A string expression similar to a SQL WHERE clause. May involve any column of a dimension table or (as a shortcut for the primary key column of a dimension table) dimension name. See Dimension expressions for more information.
- components
bool, optional If
True, apply all dataset expression patterns to component dataset type names as well. IfFalse, never apply patterns to components. IfNone(default), apply patterns to components only if their parent datasets were not matched by the expression. Fully-specified component datasets (strorDatasetTypeinstances) are always included.- bind
Mapping, optional Mapping containing literal values that should be injected into the
whereexpression, keyed by the identifiers they replace.- check
bool, optional If
True(default) check the query for consistency before executing it. This may reject some valid queries that resemble common mistakes (e.g. queries for visits without specifying an instrument).- **kwargs
Additional keyword arguments are forwarded to
DataCoordinate.standardizewhen processing thedataIdargument (and may be used to provide a constraining data ID even when thedataIdargument isNone).
- dimensions
- Returns
- dataIds
DataCoordinateQueryResults Data IDs matching the given query parameters. These are guaranteed to identify all dimensions (
DataCoordinate.hasFullreturnsTrue), but will not containDimensionRecordobjects (DataCoordinate.hasRecordsreturnsFalse). CallDataCoordinateQueryResults.expandedon the returned object to fetch those (and consider usingDataCoordinateQueryResults.materializeon the returned object first if the expected number of rows is very large). See documentation for those methods for additional information.
- dataIds
- Raises
-
queryDatasetAssociations(datasetType: Union[str, lsst.daf.butler.core.datasets.type.DatasetType], collections: Any = Ellipsis, *, collectionTypes: Iterable[lsst.daf.butler.registry._collectionType.CollectionType] = frozenset({<CollectionType.RUN: 1>, <CollectionType.TAGGED: 2>, <CollectionType.CHAINED: 3>, <CollectionType.CALIBRATION: 4>}), flattenChains: bool = False) → Iterator[lsst.daf.butler.DatasetAssociation]¶ Iterate over dataset-collection combinations where the dataset is in the collection.
This method is a temporary placeholder for better support for assocation results in
queryDatasets. It will probably be removed in the future, and should be avoided in production code whenever possible.- Parameters
- datasetType
DatasetTypeorstr A dataset type object or the name of one.
- collections: `Any`, optional
An expression that identifies the collections to search for datasets, such as a
str(for full matches),re.Pattern(for partial matches), or iterable thereof.can be used to search all collections (actually just allRUNcollections, because this will still find all datasets). If not provided,self.default.collectionsis used. See Collection expressions for more information.- collectionTypes
AbstractSet[CollectionType], optional If provided, only yield associations from collections of these types.
- flattenChains
bool, optional If
True(default) search in the children ofCHAINEDcollections. IfFalse,CHAINEDcollections are ignored.
- datasetType
- Yields
- association
DatasetAssociation Object representing the relationship beween a single dataset and a single collection.
- association
- Raises
-
queryDatasetTypes(expression: Any = Ellipsis, *, components: Optional[bool] = None) → Iterator[lsst.daf.butler.DatasetType]¶ Iterate over the dataset types whose names match an expression.
- Parameters
- expression
Any, optional An expression that fully or partially identifies the dataset types to return, such as a
str,re.Pattern, or iterable thereof.can be used to return all dataset types, and is the default. See DatasetType expressions for more information.- components
bool, optional If
True, apply all expression patterns to component dataset type names as well. IfFalse, never apply patterns to components. IfNone(default), apply patterns to components only if their parent datasets were not matched by the expression. Fully-specified component datasets (strorDatasetTypeinstances) are always included.
- expression
- Yields
- datasetType
DatasetType A
DatasetTypeinstance whose name matchesexpression.
- datasetType
-
queryDatasets(datasetType: Any, *, collections: Optional[Any] = None, dimensions: Optional[Iterable[Union[lsst.daf.butler.Dimension, str]]] = None, dataId: Optional[Union[lsst.daf.butler.DataCoordinate, Mapping[str, Any]]] = None, where: Optional[str] = None, findFirst: bool = False, components: Optional[bool] = None, bind: Optional[Mapping[str, Any]] = None, check: bool = True, **kwargs: Any) →lsst.daf.butler.registry.queries.DatasetQueryResults¶ Query for and iterate over dataset references matching user-provided criteria.
- Parameters
- datasetType
An expression that fully or partially identifies the dataset types to be queried. Allowed types include
DatasetType,str,re.Pattern, and iterables thereof. The special valuecan be used to query all dataset types. See DatasetType expressions for more information.- collections: optional
An expression that identifies the collections to search, such as a
str(for full matches),re.Pattern(for partial matches), or iterable thereof.can be used to search all collections (actually just allRUNcollections, because this will still find all datasets). If not provided,self.default.collectionsis used. See Collection expressions for more information.- dimensions
IterableofDimensionorstr Dimensions to include in the query (in addition to those used to identify the queried dataset type(s)), either to constrain the resulting datasets to those for which a matching dimension exists, or to relate the dataset type’s dimensions to dimensions referenced by the
dataIdorwherearguments.- dataId
dictorDataCoordinate, optional A data ID whose key-value pairs are used as equality constraints in the query.
- where
str, optional A string expression similar to a SQL WHERE clause. May involve any column of a dimension table or (as a shortcut for the primary key column of a dimension table) dimension name. See Dimension expressions for more information.
- findFirst
bool, optional If
True(Falseis default), for each result data ID, only yield oneDatasetRefof eachDatasetType, from the first collection in which a dataset of that dataset type appears (according to the order ofcollectionspassed in). IfTrue,collectionsmust not contain regular expressions and may not be.- components
bool, optional If
True, apply all dataset expression patterns to component dataset type names as well. IfFalse, never apply patterns to components. IfNone(default), apply patterns to components only if their parent datasets were not matched by the expression. Fully-specified component datasets (strorDatasetTypeinstances) are always included.- bind
Mapping, optional Mapping containing literal values that should be injected into the
whereexpression, keyed by the identifiers they replace.- check
bool, optional If
True(default) check the query for consistency before executing it. This may reject some valid queries that resemble common mistakes (e.g. queries for visits without specifying an instrument).- **kwargs
Additional keyword arguments are forwarded to
DataCoordinate.standardizewhen processing thedataIdargument (and may be used to provide a constraining data ID even when thedataIdargument isNone).
- Returns
- refs
queries.DatasetQueryResults Dataset references matching the given query criteria. Nested data IDs are guaranteed to include values for all implied dimensions (i.e.
DataCoordinate.hasFullwill returnTrue), but will not include dimension records (DataCoordinate.hasRecordswill beFalse) unlessexpandedis called on the result object (which returns a new one).
- refs
- Raises
Notes
When multiple dataset types are queried in a single call, the results of this operation are equivalent to querying for each dataset type separately in turn, and no information about the relationships between datasets of different types is included. In contexts where that kind of information is important, the recommended pattern is to use
queryDataIdsto first obtain data IDs (possibly with the desired dataset types and collections passed as constraints to the query), and then use multiple (generally much simpler) calls toqueryDatasetswith the returned data IDs passed as constraints.
-
queryDimensionRecords(element: Union[lsst.daf.butler.DimensionElement, str], *, dataId: Optional[Union[lsst.daf.butler.DataCoordinate, Mapping[str, Any]]] = None, datasets: Optional[Any] = None, collections: Optional[Any] = None, where: Optional[str] = None, components: Optional[bool] = None, bind: Optional[Mapping[str, Any]] = None, check: bool = True, **kwargs: Any) → Iterator[lsst.daf.butler.DimensionRecord]¶ Query for dimension information matching user-provided criteria.
- Parameters
- element
DimensionElementorstr The dimension element to obtain records for.
- dataId
dictorDataCoordinate, optional A data ID whose key-value pairs are used as equality constraints in the query.
- datasets
Any, optional An expression that fully or partially identifies dataset types that should constrain the yielded records. See
queryDataIdsand DatasetType expressions for more information.- collections: `Any`, optional
An expression that identifies the collections to search for datasets, such as a
str(for full matches),re.Pattern(for partial matches), or iterable thereof.can be used to search all collections (actually just allRUNcollections, because this will still find all datasets). If not provided,self.default.collectionsis used. Ignored unlessdatasetsis also passed. See Collection expressions for more information.- where
str, optional A string expression similar to a SQL WHERE clause. See
queryDataIdsand Dimension expressions for more information.- components
bool, optional Whether to apply dataset expressions to components as well. See
queryDataIdsfor more information.- bind
Mapping, optional Mapping containing literal values that should be injected into the
whereexpression, keyed by the identifiers they replace.- check
bool, optional If
True(default) check the query for consistency before executing it. This may reject some valid queries that resemble common mistakes (e.g. queries for visits without specifying an instrument).- **kwargs
Additional keyword arguments are forwarded to
DataCoordinate.standardizewhen processing thedataIdargument (and may be used to provide a constraining data ID even when thedataIdargument isNone).
- element
- Returns
- dataIds
DataCoordinateQueryResults Data IDs matching the given query parameters.
- dataIds
-
refresh() → None¶ Refresh all in-memory state by querying the database.
This may be necessary to enable querying for entities added by other registry instances after this one was constructed.
-
registerCollection(name: str, type: lsst.daf.butler.registry._collectionType.CollectionType = <CollectionType.TAGGED: 2>, doc: Optional[str] = None) → None¶ Add a new collection if one with the given name does not exist.
- Parameters
- name
str The name of the collection to create.
- type
CollectionType Enum value indicating the type of collection to create.
- doc
str, optional Documentation string for the collection.
- name
Notes
This method cannot be called within transactions, as it needs to be able to perform its own transaction to be concurrent.
-
registerDatasetType(datasetType:lsst.daf.butler.DatasetType) → bool¶ Add a new
DatasetTypeto the Registry.It is not an error to register the same
DatasetTypetwice.- Parameters
- datasetType
DatasetType The
DatasetTypeto be added.
- datasetType
- Returns
- Raises
- ValueError
Raised if the dimensions or storage class are invalid.
- ConflictingDefinitionError
Raised if this DatasetType is already registered with a different definition.
Notes
This method cannot be called within transactions, as it needs to be able to perform its own transaction to be concurrent.
-
registerOpaqueTable(tableName: str, spec: lsst.daf.butler.core.ddl.TableSpec) → None¶ Add an opaque (to the
Registry) table for use by aDatastoreor other data repository client.Opaque table records can be added via
insertOpaqueData, retrieved viafetchOpaqueData, and removed viadeleteOpaqueData.- Parameters
- tableName
str Logical name of the opaque table. This may differ from the actual name used in the database by a prefix and/or suffix.
- spec
ddl.TableSpec Specification for the table to be added.
- tableName
-
registerRun(name: str, doc: Optional[str] = None) → None¶ Add a new run if one with the given name does not exist.
- Parameters
Notes
This method cannot be called within transactions, as it needs to be able to perform its own transaction to be concurrent.
-
removeCollection(name: str) → None¶ Completely remove the given collection.
- Parameters
- name
str The name of the collection to remove.
- name
- Raises
- MissingCollectionError
Raised if no collection with the given name exists.
Notes
If this is a
RUNcollection, all datasets and quanta in it are also fully removed. This requires that those datasets be removed (or at least trashed) from any datastores that hold them first.A collection may not be deleted as long as it is referenced by a
CHAINEDcollection; theCHAINEDcollection must be deleted or redefined first.
-
removeDatasetType(name: str) → None¶ Remove the named
DatasetTypefrom the registry.Warning
Registry implementations can cache the dataset type definitions. This means that deleting the dataset type definition may result in unexpected behavior from other butler processes that are active that have not seen the deletion.
- Parameters
- name
str Name of the type to be removed.
- name
- Raises
- lsst.daf.butler.registry.OrphanedRecordError
Raised if an attempt is made to remove the dataset type definition when there are already datasets associated with it.
Notes
If the dataset type is not registered the method will return without action.
-
removeDatasets(refs: Iterable[lsst.daf.butler.DatasetRef]) → None¶ Remove datasets from the Registry.
The datasets will be removed unconditionally from all collections, and any
Quantumthat consumed this dataset will instead be marked with having a NULL input.Datastorerecords will not be deleted; the caller is responsible for ensuring that the dataset has already been removed from all Datastores.- Parameters
- refs
IterableofDatasetRef References to the datasets to be removed. Must include a valid
idattribute, and should be considered invalidated upon return.
- refs
- Raises
- AmbiguousDatasetError
Raised if any
ref.idisNone.- OrphanedRecordError
Raised if any dataset is still present in any
Datastore.
-
resetConnectionPool() → None¶ Reset SQLAlchemy connection pool for
SqlRegistrydatabase.This operation is useful when using registry with fork-based multiprocessing. To use registry across fork boundary one has to make sure that there are no currently active connections (no session or transaction is in progress) and connection pool is reset using this method. This method should be called by the child process immediately after the fork.
-
setCollectionChain(parent: str, children: Any, *, flatten: bool = False) → None¶ Define or redefine a
CHAINEDcollection.- Parameters
- parent
str Name of the chained collection. Must have already been added via a call to
Registry.registerCollection.- children
Any An expression defining an ordered search of child collections, generally an iterable of
str; see Collection expressions for more information.- flatten
bool, optional If
True(Falseis default), recursively flatten out any nestedCHAINEDcollections inchildrenfirst.
- parent
- Raises
-
setCollectionDocumentation(collection: str, doc: Optional[str]) → None¶ Set the documentation string for a collection.
-
syncDimensionData(element: Union[lsst.daf.butler.DimensionElement, str], row: Union[Mapping[str, Any],lsst.daf.butler.DimensionRecord], conform: bool = True) → bool¶ Synchronize the given dimension record with the database, inserting if it does not already exist and comparing values if it does.
- Parameters
- element
DimensionElementorstr The
DimensionElementor name thereof that identifies the table records will be inserted into.- row
dictorDimensionRecord The record to insert.
- conform
bool, optional If
False(Trueis default) perform no checking or conversions, and assume thatelementis aDimensionElementinstance anddatais a one or moreDimensionRecordinstances of the appropriate subclass.
- element
- Returns
- Raises
- ConflictingDefinitionError
Raised if the record exists in the database (according to primary key lookup) but is inconsistent with the given one.