treams.util.AnnotationDict

class treams.util.AnnotationDict(items=(), /, **kwargs)

Dictionary that notifies the user when overwriting keys.

Behaves mostly similar to regular dictionaries, except that when overwriting existing keys a AnnotationWarning is emmitted.

Examples

An AnnotationDict can be created from other mappings, from a list of key-value pairs (note how a warning is emmitted for the duplicate key), and from keyword arguments.

>>> AnnotationDict({"a": 1, "b": 2})
AnnotationDict({'a': 1, 'b': 2})
>>> AnnotationDict([("a", 1), ("b", 2), ("a", 3)])
treams/util.py:74: AnnotationWarning: overwriting key 'a'
warnings.warn(f"overwriting key '{key}'", AnnotationWarning)
AnnotationDict({'a': 3, 'b': 2})
>>> AnnotationDict({"a": 1, "b": 2}, c=3)
AnnotationDict({'a': 1, 'b': 2, 'c': 3})
Warns:

AnnotationWarning

Methods

__eq__(other)

Return self==value.

__ge__(value, /)

Return self>=value.

__getitem__(key)

Get a value by its key.

__gt__(value, /)

Return self>value.

__le__(value, /)

Return self<=value.

__len__()

Number of keys contained.

__lt__(value, /)

Return self<value.

__ne__(value, /)

Return self!=value.

__repr__()

String representation.

__setitem__(key, val)

Set item specified by key to the defined value.

__str__()

Return str(self).

clear()

get(k[,d])

items()

keys()

match(other)

Compare the own keys to another dictionary.

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()

__le__(value, /)

Return self<=value.

__lt__(value, /)

Return self<value.

__str__()

Return str(self).

__ge__(value, /)

Return self>=value.

__gt__(value, /)

Return self>value.

__ne__(value, /)

Return self!=value.

__eq__(other)

Return self==value.