DatabaseDict

class lsst.daf.butler.DatabaseDict(config: lsst.daf.butler.core.config.Config, key: str, value: lsst.daf.butler.core.databaseDict.DatabaseDictRecordBase)

Bases: collections.abc.MutableMapping

An abstract base class for dict-like objects with a specific key type and data class values, backed by a database.

DatabaseDict subclasses must implement the abstract __getitem__, __setitem__, __delitem__`, ``__iter__, and __len__ abstract methods defined by MutableMapping.

They must also provide a constructor that takes the same arguments as that of DatabaseDict itself, unless they are constructed solely by Registry.makeDatabaseDict (in which case any constructor arguments are permitted).

Parameters:
config : Config

Configuration used to identify and construct a subclass.

key : str

The name of the field to be used as the dictionary key. Must not be present in value._fields.

value : type

The type used for the dictionary’s values, typically a DatabaseDictRecordBase. Must have a fields class method that is a tuple of field names; these field names must also appear in the return value of the types() class method, and it must be possible to construct it from a sequence of values. Lengths of string fields must be obtainable as a dict from using the lengths property.

Methods Summary

clear()
fromConfig(config, key, value, registry) Create a DatabaseDict subclass instance from config.
get(k[,d])
items()
keys()
pop(k[,d]) If key is not found, d is returned if given, otherwise KeyError is raised.
popitem() as a 2-tuple; but raise KeyError if D is empty.
setdefault(k[,d])
update([E, ]**F) If E present and has a .keys() method, does: for k in E: D[k] = E[k] If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v In either case, this is followed by: for k, v in F.items(): D[k] = v
values()

Methods Documentation

clear() → None. Remove all items from D.
static fromConfig(config: lsst.daf.butler.core.config.Config, key: str, value: lsst.daf.butler.core.databaseDict.DatabaseDictRecordBase, registry: Optional[lsst.daf.butler.core.registry.Registry] = None)

Create a DatabaseDict subclass instance from config.

If config contains a class cls key, this will be assumed to be the fully-qualified name of a DatabaseDict subclass to construct. If not, registry.makeDatabaseDict will be called instead, and config must contain a table key with the name of the table to use.

Parameters:
config : Config

Configuration used to identify and construct a subclass.

key : str

The name of the field to be used as the dictionary key. Must not be present in value.fields().

value : type

The type used for the dictionary’s values, typically a DatabaseDictRecordBase. Must have a fields class method that is a tuple of field names; these field names must also appear in the return value of the types() class method, and it must be possible to construct it from a sequence of values. Lengths of string fields must be obtainable as a dict from using the lengths property.

registry : Registry, optional

A registry instance from which a DatabaseDict subclass can be obtained. Ignored if config["cls"] exists; may be None if it does.

Returns:
dictionary : DatabaseDict (subclass)

A new DatabaseDict subclass instance.

get(k[, d]) → D[k] if k in D, else d. d defaults to None.
items() → a set-like object providing a view on D's items
keys() → a set-like object providing a view on D's keys
pop(k[, d]) → v, remove specified key and return the corresponding value.

If key is not found, d is returned if given, otherwise KeyError is raised.

popitem() → (k, v), remove and return some (key, value) pair

as a 2-tuple; but raise KeyError if D is empty.

setdefault(k[, d]) → D.get(k,d), also set D[k]=d if k not in D
update([E, ]**F) → None. Update D from mapping/iterable E and F.

If E present and has a .keys() method, does: for k in E: D[k] = E[k] If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v In either case, this is followed by: for k, v in F.items(): D[k] = v

values() → an object providing a view on D's values