#!/usr/bin/env python """Persistent Modular Storage. Sean B. Palmer. GPL 2""" import sys, os.path, types, shelve class Permod(types.ModuleType): def __init__(self, name, fn): types.ModuleType.__init__(self, name, __doc__) self.__db = shelve.open(fn) for (key, value) in self.__db.iteritems(): setattr(self, key, value) def __setattr__(self, attr, item): if not attr.startswith('_'): self.__db[attr] = item self.__db.sync() object.__setattr__(self, attr, item) if __name__ != "__main__": fn, ext = os.path.splitext(__file__) permod = Permod(__name__, fn + '.data') sys.modules[__name__] = permod else: print __doc__