TopologicalExtentDatabaseRepresentation¶
-
class
lsst.daf.butler.TopologicalExtentDatabaseRepresentation¶ Bases:
typing.GenericAn abstract base class whose subclasses provide a mapping from the in-memory representation of a
TopologicalSpaceregion to a database-storage representation, and whose instances act like a SQLAlchemy-based column expression.Attributes Summary
nameBase logical name for the topological extent ( str).Methods Summary
extract(mapping, Any], name)Extract a region from a dictionary that represents a database row in this representation. flatten(name)Return the actual column or columns that comprise this logical column. fromSelectable(selectable, name)Construct an instance that represents a logical column (which may actually be backed by multiple columns) in the given table or subquery. getFieldNames(name)Return the actual field names used by this representation. hasExclusionConstraint()Return Trueif this representation supports exclusion constraints.isNull()Return a SQLAlchemy expression that tests whether this region is logically NULL.makeFieldSpecs(nullable, name, **kwargs)Make one or more ddl.FieldSpecobjects that reflect the fields that must be added to a table for this representation.update(extent, name, result, Any]] = None)Add a region to a dictionary that represents a database row in this representation. Attributes Documentation
-
name¶ Base logical name for the topological extent (
str).If the representation uses only one actual column, this should be the full name of the column. In other cases it is an unspecified subset of the column names.
Methods Documentation
-
classmethod
extract(mapping: Mapping[str, Any], name: Optional[str] = None) → Optional[_R]¶ Extract a region from a dictionary that represents a database row in this representation.
Parameters: - mapping :
Mapping[str,Any] A dictionary representing a database row containing a
Timespanin this representation. Should have key(s) equal to the return value ofgetFieldNames.- name :
str, optional Name for the logical column; a part of the name for multi-column representations. Defaults to
cls.NAME.
Returns: - region
Python representation of the region.
- mapping :
-
flatten(name: Optional[str]) → Iterator[sqlalchemy.sql.elements.ColumnElement]¶ Return the actual column or columns that comprise this logical column.
Parameters: - name :
str, optional If provided, a name for the logical column that should be used to label the columns. If not provided, the columns’ native names will be used.
Returns: - columns :
Iterator[sqlalchemy.sql.ColumnElement] The true column or columns that back this object.
- name :
-
classmethod
fromSelectable(selectable: sqlalchemy.sql.selectable.FromClause, name: Optional[str] = None) → _S¶ Construct an instance that represents a logical column (which may actually be backed by multiple columns) in the given table or subquery.
Parameters: - selectable :
sqlalchemy.sql.FromClause SQLAlchemy object representing a table or subquery.
- name :
str, optional Name for the logical column; a part of the name for multi-column representations. Defaults to
cls.NAME.
Returns: - representation :
TopologicalExtentDatabaseRepresentation Object representing a logical column.
- selectable :
-
classmethod
getFieldNames(name: Optional[str] = None) → Tuple[str, ...]¶ Return the actual field names used by this representation.
Parameters: - name :
str, optional Name for the logical column; a part of the name for multi-column representations. Defaults to
cls.NAME.
Returns: - names :
tuple[str] Field name(s). Guaranteed to be the same as the names of the field specifications returned by
makeFieldSpecs.
- name :
-
classmethod
hasExclusionConstraint() → bool¶ Return
Trueif this representation supports exclusion constraints.Returns:
-
isNull() → sqlalchemy.sql.elements.ColumnElement¶ Return a SQLAlchemy expression that tests whether this region is logically
NULL.Returns: - isnull :
sqlalchemy.sql.ColumnElement A boolean SQLAlchemy expression object.
- isnull :
-
classmethod
makeFieldSpecs(nullable: bool, name: Optional[str] = None, **kwargs) → Tuple[lsst.daf.butler.core.ddl.FieldSpec, ...]¶ Make one or more
ddl.FieldSpecobjects that reflect the fields that must be added to a table for this representation.Parameters: - nullable :
bool If
True, the region is permitted to be logicallyNULL(mapped toNonein Python), though the correspoding value(s) in the database are implementation-defined. Nullable region fields default to NULL, while others default to (-∞, ∞).- name :
str, optional Name for the logical column; a part of the name for multi-column representations. Defaults to
cls.NAME.- **kwargs
Keyword arguments are forwarded to the
ddl.FieldSpecconstructor for all fields; implementations only provide thename,dtype, anddefaultarguments themselves.
Returns: - specs :
tuple[ddl.FieldSpec] Field specification objects; length of the tuple is subclass-dependent, but is guaranteed to match the length of the return values of
getFieldNamesandupdate.
- nullable :
-
classmethod
update(extent: Optional[_R], name: Optional[str] = None, result: Optional[Dict[str, Any]] = None) → Dict[str, Any]¶ Add a region to a dictionary that represents a database row in this representation.
Parameters: - extent
An instance of the region type this class provides a database representation for, or
NoneforNULL.- name :
str, optional Name for the logical column; a part of the name for multi-column representations. Defaults to
cls.NAME.- result :
dict[str,Any], optional A dictionary representing a database row that fields should be added to, or
Noneto create and return a new one.
Returns:
-