Persistent Collections

The persistent package provides two simple collections that are persistent and keep track of when they are mutated in place.

class persistent.mapping.PersistentMapping(**kwargs)[source]

Bases: UserDict.IterableUserDict, persistent.Persistent

A persistent wrapper for mapping objects.

This class allows wrapping of mapping objects so that object changes are registered. As a side effect, mapping objects may be subclassed.

A subclass of PersistentMapping or any code that adds new attributes should not create an attribute named _container. This is reserved for backwards compatibility reasons.


Remove all data from this dictionary.

Changed in version 4.5.2: If there was nothing to remove, this object is no longer marked as modified.


Remove an item.

Changed in version 4.5.2: No longer marks this object as modified if it was empty and an exception raised.

update([E, ]**F) → None.[source]

Changed in version 4.5.2: Now accepts arbitrary keyword arguments. In the special case of a keyword argument named b that is a dictionary, the behaviour will change.

class persistent.list.PersistentList(initlist=None)[source]

Bases: UserList.UserList, persistent.Persistent

A persistent wrapper for list objects.

Mutating instances of this class will cause them to be marked as changed and automatically persisted.

Changed in version 4.5.2: Using the clear method, or deleting a slice (e.g., del inst[:] or del inst[x:x]) now only results in marking the instance as changed if it actually removed items.

Changed in version 4.5.2: The copy method is available on Python 2.


S.append(object) – append object to the end of the sequence


Remove all items from the list.

Changed in version 4.5.2: Now marks the list as changed, and is available on both Python 2 and Python 3.


S.extend(iterable) – extend sequence by appending elements from the iterable

insert(i, item)[source]

S.insert(index, object) – insert object before index

pop([index]) → item -- remove and return item at index (default last).[source]

Raise IndexError if list is empty or index is out of range.


S.remove(value) – remove first occurrence of value. Raise ValueError if the value is not present.


S.reverse() – reverse IN PLACE