DimensionRecord¶
- class lsst.daf.butler.DimensionRecord(**kwargs: Any)¶
Bases:
objectBase 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
DimensionRecordsubclasses are created dynamically for eachDimensionElementin aDimensionUniverse, and are accessible via theDimensionElement.RecordClassattribute. TheDimensionRecordbase class itself is pure abstract, but does not use theabcmodule to indicate this because it does not have overridable methods.Record classes have attributes that correspond exactly to the
standardfields 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.DimensionRecordinstances 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
listserializeation of a dimension record.deserialize_value(key, raw_value)Deserialize the value slice of the raw
listform 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
listthat can be sliced into a key (data ID values) / value (everything else) pair.toDict([splitTimespan])Return a vanilla
dictrepresentation 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
listserializeation 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
listform 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
DimensionRecordwith this subclass.
- record
- classmethod from_json(json_str: str | bytes | bytearray, universe: DimensionUniverse | None = None, registry: Registry | None = None) SupportsSimple¶
Convert from JSON to a pydantic model.
- Parameters:
- cls_
typeofSupportsSimple The Python type being created.
- json_str
strorbytesorbytearray The JSON string representing this object.
- universe
DimensionUniverseorNone, optional The universe required to instantiate some models. Required if
registryisNone.- registry
RegistryorNone, 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_simplemethod.- 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
NoneifRegistryis provided.- registry
lsst.daf.butler.Registry, optional Registry from which a universe can be extracted. Can be
Noneif universe is provided explicitly.- cacheKey
HashableorNone 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
listthat 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 thedefinitionelement 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
dictrepresentation 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.