Skip to content
Back to top
View this page

# 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(dict=None, /, **kwargs)

  Bases: `UserDict`, `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.

  clear()

    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.

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

    Remove an item.

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

  setdefault(k[, d]) → D.get(k,d), also set D[k]=d if k not in D
  update([E, ]**F) → None.

    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)

  Bases: `UserList`, `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.

  append(item)

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

  clear()

    Remove all items from the list.

    Changed in version 4.5.2: Now marks the list as changed.

  extend(other)

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

  insert(i, item)

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

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

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

  remove(item)

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

  reverse()

    S.reverse() – reverse IN PLACE