Atom’s containers

Atom uses custom containers to implement type validation and notifications. It implements two list subclasses and one dictionary subclass to this effect.


Currently the typed validated dictionary is not a subclass of the Python builtin dictionary type. This can cause some unexpected issues in particular when assigning the value stored in a Dict member to another Dict which will fail. To circumvent this issue one should call dict on the content of the first member. This is a known problem and will be fixed in a future version of atom.

Usually, users should not instantiate those containers manually, in particular because they need a reference to both the member and the instance to which they are tied.

Atom provides however an alternative mapping type which uses less memory than a regular dictionary in particular when the mapping contain only few objects: sortedmap.


sortedmap can be imported from atom.datastructures.api. Contrary to a regular Python dictionary, sortedmap does not requires the keys to be hashable, however they should be sortable. sortedmap will fall back on the Python 2 behavior to order any Python object based on the class name and the object id if two objects cannot be compared otherwise.

In terms of memory efficiency, here is a quick comparison: +————-+————-+—————+ | | dict | sortedmap | +=============+=============+===============+ | empty | 240 | 72 | +————-+————-+—————+ | 1 key | 240 | 88 | +————-+————-+—————+ | 2 key | 240 | 104 | +————-+————-+—————+ | 100 key | 4704 | 2120 | +————-+————-+—————+

sortedmap is not meant to replace dictionaries but can be valuable when a large number of small containers is necessary.