Persistent sets

Skip Montanaro skip at pobox.com
Fri Jun 6 08:06:23 EDT 2003


Following up my own post...  I later realized I had to be careful not to
wipe out the persistent set's _data attribute because it might then become
non-persistent.  A quick scan of sets.py revealed that the Set.__iand__
method needed to be changed.

    import sets
    import shelve

    class PersistentSet(sets.Set):
        def __init__(self, file, iterable=None):
            self._data = shelve.open(file)
            if iterable is not None:
                self._update(iterable)

        def __iand__(self, other):
            """Update a set with the intersection of itself and another."""
            self._binary_sanity_check(other)
            ia = (self & other)._data
            self._data.clear()
            self._data.update(ia)
            return self

Again, no tests yet.  Maybe I'll get around to adapting some of the tests
from the sets module unit tests...

Skip





More information about the Python-list mailing list