DatabaseDict

class lsst.daf.butler.DatabaseDict(config, types, key, value, lengths=None)

Bases: collections.abc.MutableMapping

An abstract base class for dict-like objects with a specific key type and namedtuple 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.

types : dict

A dictionary mapping str field names to type objects, containing all fields to be held in the database.

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 namedtuple. Must have a _fields class attribute that is a tuple of field names (i.e., as defined by namedtuple); these field names must also appear in the types arg, and a _make attribute to construct it from a sequence of values (again, as defined by namedtuple).

lengths : dict, optional

Specific lengths of string fields. Defaults will be used if not specified.

Methods Summary

clear()
fromConfig(config, types, key, value[, …]) 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, types, key, value, lengths=None, 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.

types : dict

A dictionary mapping str field names to Python type objects, containing all fields to be held in the database.

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 namedtuple. Must have a _fields class attribute that is a tuple of field names (i.e., as defined by namedtuple); these field names must also appear in the types arg, and a _make attribute to construct it from a sequence of values (again, as defined by namedtuple).

lengths : dict, optional

Specific lengths of string fields. Defaults will be used if not specified.

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