X-Git-Url: http://dolda2000.com/gitweb/?p=didex.git;a=blobdiff_plain;f=didex%2Fstore.py;h=cc97a5b5ca83d7e31129a4977cd25b6c01994a27;hp=8481c0f6d6a8fb7ff4c6fac828fc7586483e9c3a;hb=de73859d9c5ba731ad1aa13e36588b798f088656;hpb=6e81ddd5b15da4a82f567fe3c347958e82ef5b2e diff --git a/didex/store.py b/didex/store.py index 8481c0f..cc97a5b 100644 --- a/didex/store.py +++ b/didex/store.py @@ -1,4 +1,4 @@ -import threading, pickle +import threading, pickle, inspect from . import db, index, cache from .db import txnfun @@ -35,12 +35,13 @@ class storedesc(object): def storedescs(obj): t = type(obj) - ret = getattr(t, "__didex_attr", None) + ret = t.__dict__.get("__didex_attr") if ret is None: ret = [] - for nm, val in t.__dict__.items(): - if isinstance(val, storedesc): - ret.append((nm, val)) + for st in inspect.getmro(t): + for nm, val in st.__dict__.items(): + if isinstance(val, storedesc): + ret.append((nm, val)) t.__didex_attr = ret return ret @@ -107,6 +108,7 @@ class autotype(type): def __call__(self, *args, **kwargs): new = super().__call__(*args, **kwargs) new.id = self.store.register(new) + self.store.update(new.id, vfy=new) # This doesn't feel too nice. return new class autostore(object, metaclass=autotype):