Coverage for python/lsst/daf/butler/registry/dimensions/table.py : 94%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
# This file is part of daf_butler. # # Developed for the LSST Data Management System. # This product includes software developed by the LSST Project # (http://www.lsst.org). # See the COPYRIGHT file at the top-level directory of this distribution # for details of code ownership. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>.
"""A record storage implementation uses a regular database table.
For spatial dimension elements, use `SpatialDimensionRecordStorage` instead.
Parameters ---------- db : `Database` Interface to the database engine and namespace that will hold these dimension records. element : `DimensionElement` The element whose records this storage will manage. table : `sqlalchemy.schema.Table` The logical table for the element. """
context: Optional[StaticTablesContext] = None) -> DimensionRecordStorage: # Docstring inherited from DimensionRecordStorage. else: table = db.ensureTableExists(element.name, spec)
def element(self) -> DimensionElement: # Docstring inherited from DimensionRecordStorage.element.
# Docstring inherited from DimensionRecordStorage.clearCaches.
self, builder: QueryBuilder, *, regions: Optional[NamedKeyDict[DimensionElement, sqlalchemy.sql.ColumnElement]] = None, timespans: Optional[NamedKeyDict[DimensionElement, Timespan[sqlalchemy.sql.ColumnElement]]] = None, ): # Docstring inherited from DimensionRecordStorage. begin=self._table.columns[TIMESPAN_FIELD_SPECS.begin.name], end=self._table.columns[TIMESPAN_FIELD_SPECS.end.name], ) joinOn.append(timespanInQuery.overlaps(timespanInTable, ops=sqlalchemy.sql))
# Docstring inherited from DimensionRecordStorage.fetch. # I don't know how expensive it is to construct the query below, and # hence how much gain there might be to caching it, so I'm going to # wait for it to appear as a hotspot in a profile before trying that. for fieldName, dimension in zip(RecordClass.__slots__, self.element.graph.required)] [self._table.columns[name] for name in RecordClass.__slots__] ).select_from( self._table ).where(sqlalchemy.sql.and_(*whereTerms))
# Docstring inherited from DimensionRecordStorage.insert. |