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 byMutableMapping
.They must also provide a constructor that takes the same arguments as that of
DatabaseDict
itself, unless they are constructed solely byRegistry.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 bynamedtuple
); these field names must also appear in thetypes
arg, and a_make
attribute to construct it from a sequence of values (again, as defined bynamedtuple
).- 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 fromconfig
.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 fromconfig
.If
config
contains a classcls
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, andconfig
must contain atable
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 bynamedtuple
); these field names must also appear in thetypes
arg, and a_make
attribute to construct it from a sequence of values (again, as defined bynamedtuple
).- 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 ifconfig["cls"]
exists; may be None if it does.
Returns: - dictionary :
DatabaseDict
(subclass) A new
DatabaseDict
subclass instance.
- config :
-
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¶
- config :