DimensionRecord¶
- class lsst.daf.butler.DimensionRecord(**kwargs: Any)¶
Bases:
object
Base class for the Python representation of database records.
- Parameters:
- **kwargs
Field values for this record. Unrecognized keys are ignored. If this is the record for a
Dimension
, its primary key value may be provided with the actual name of the field (e.g. “id” or “name”), the name of theDimension
, or both. If this record class has a “timespan” attribute, “datetime_begin” and “datetime_end” keyword arguments may be provided instead of a single “timespan” keyword argument (but are ignored if a “timespan” argument is provided).
Notes
DimensionRecord
subclasses are created dynamically for eachDimensionElement
in aDimensionUniverse
, and are accessible via theDimensionElement.RecordClass
attribute. TheDimensionRecord
base class itself is pure abstract, but does not use theabc
module to indicate this because it does not have overridable methods.Record classes have attributes that correspond exactly to the
standard
fields in the related database table, plus “region” and “timespan” attributes for spatial and/or temporal elements (respectively).Instances are usually obtained from a
Registry
, but can be constructed directly from Python as well.DimensionRecord
instances are immutable.Attributes Summary
A dict-like identifier for this record's primary keys (
DataCoordinate
).Methods Summary
deserialize_key
(raw)Deserialize just the key slice of the raw
list
serializeation of a dimension record.deserialize_value
(key, raw_value)Deserialize the value slice of the raw
list
form of serialized dimension record.from_json
(json_str[, universe, registry])Convert from JSON to a pydantic model.
from_simple
(simple[, universe, registry, ...])Construct a new object from the simplified form.
get
(name)Return a single metadata value associated with this record.
Serialize this record to a
list
that can be sliced into a key (data ID values) / value (everything else) pair.toDict
([splitTimespan])Return a vanilla
dict
representation of this record.to_json
([minimal])Convert this class to JSON assuming that the
to_simple()
returns a pydantic model.to_simple
([minimal])Convert this class to a simple python type.
Attributes Documentation
- dataId: DataCoordinate¶
A dict-like identifier for this record’s primary keys (
DataCoordinate
).
Methods Documentation
- classmethod deserialize_key(raw: list[Any]) tuple[tuple[int | str, ...], list[Any]] ¶
Deserialize just the key slice of the raw
list
serializeation of a dimension record.- Parameters:
- raw
list
Serialized list with JSON-compatible types, as returned by
serialize_key_value
.
- raw
- Returns:
- classmethod deserialize_value(key: tuple[int | str, ...], raw_value: list[Any]) DimensionRecord ¶
Deserialize the value slice of the raw
list
form of serialized dimension record.- Parameters:
- key
tuple
Validated tuple of required data ID values that uniquely identify this record, as returned by
deserialize_key
.- raw_value
list
Serialized list with JSON-compatible types, with just the non-key items, as returned by
deserialize_key
.
- key
- Returns:
- record
DimensionRecord
A fully-validated
DimensionRecord
with this subclass.
- record
- classmethod from_json(json_str: str, universe: DimensionUniverse | None = None, registry: Registry | None = None) SupportsSimple ¶
Convert from JSON to a pydantic model.
- Parameters:
- cls_
type
ofSupportsSimple
The Python type being created.
- json_str
str
The JSON string representing this object.
- universe
DimensionUniverse
orNone
, optional The universe required to instantiate some models. Required if
registry
isNone
.- registry
Registry
orNone
, optional Registry from which to obtain the dimension universe if an explicit universe has not been given.
- cls_
- Returns:
- model
SupportsSimple
Pydantic model constructed from JSON and validated.
- model
- classmethod from_simple(simple: SerializedDimensionRecord, universe: DimensionUniverse | None = None, registry: Registry | None = None, cacheKey: Hashable | None = None) DimensionRecord ¶
Construct a new object from the simplified form.
This is generally data returned from the
to_simple
method.- Parameters:
- simple
SerializedDimensionRecord
Value return from
to_simple
.- universe
DimensionUniverse
The special graph of all known dimensions of which this graph will be a subset. Can be
None
ifRegistry
is provided.- registry
lsst.daf.butler.Registry
, optional Registry from which a universe can be extracted. Can be
None
if universe is provided explicitly.- cacheKey
Hashable
orNone
If this is not None, it will be used as a key for any cached reconstruction instead of calculating a value from the serialized format.
- simple
- Returns:
- record
DimensionRecord
Newly-constructed object.
- record
- get(name: str) Any ¶
Return a single metadata value associated with this record.
- Parameters:
- name
str
Key of the metadata value to be retrieved.
- name
- Returns:
- value
The metadata value.
- Raises:
- KeyError
If the given name is not a valid key in this dimension record.
- serialize_key_value() list[Any] ¶
Serialize this record to a
list
that can be sliced into a key (data ID values) / value (everything else) pair.- Returns:
- raw
list
List of values with JSON-compatible types.
- raw
Notes
Unlike
to_simple
/from_simple
, this serialization approach does not encode thedefinition
element in the serialized form. This is expected to be serialized separately (e.g. as part of a homogeneous set of dimension records).
- toDict(splitTimespan: bool = False) dict[str, Any] ¶
Return a vanilla
dict
representation of this record.
- to_json(minimal: bool = False) str ¶
Convert this class to JSON assuming that the
to_simple()
returns a pydantic model.- Parameters:
- minimal
bool
Return minimal possible representation.
- minimal
- to_simple(minimal: bool = False) SerializedDimensionRecord ¶
Convert this class to a simple python type.
This makes it suitable for serialization.