Beispiel #1
0
    def _p_class(self, dict):
        cls = self.__class__
        d = {'_p_class': cls, '__dict__': dict}

        add_class_properties(cls, Local, d)

        class metacls(type):
            def mro(cls):
                mro = type.mro(cls)
                mro.insert(mro.index(Persistent), Local)
                return tuple(mro)

        return metacls("Local%s" % cls.__name__, (Local, cls), d)
Beispiel #2
0
    def _p_class(self, d):
        items = WorkingCopyDict(self)
        cls = self.__class__
        d = {'_p_class': cls, '_p_items': items, '__dict__': d}

        # copy dictionary methods
        exclude = LocalDict.__dict__
        for key in dict.__dict__:
            if key not in exclude:
                value = getattr(items, key, None)
                if isinstance(value, types.MethodType):
                    d[key] = staticmethod(value)

        add_class_properties(cls, LocalDict, d)
        return type("Local%s" % cls.__name__, (LocalDict, cls), d)