def __call__(self): self.alreadyCalled = True result = Bag() result.obj = self.obj obj = self.obj if isinstance(obj, BagResolver): obj = obj() for name, x in obj.items(): if isinstance(x, GnrStructObj): tag = x.getTag() attr = {'tag': tag} attr.update(x.attributes) result.setItem(name, StructObjResolver(x), _attributes=attr) # attributes are lost, we should take from parent node, but it can be a structobj... elif isinstance(x, Bag) or isinstance(x, BagResolver): result.setItem(name, StructObjResolver(x), tag=x.getTag()) else: result.setItem(name, x, tag=x.getTag()) return result
def __call__(self): self.alreadyCalled = True result = Bag() #result.clear() result.obj = self.obj #obj = self.obj() obj = self.obj if isinstance(obj, BagResolver): obj = obj() for name, x in obj.items(): if isinstance(x, GnrStructObj): tag = x.getTag() attr = {'tag': tag} attr.update(x.attributes) result.setItem(name, StructObjResolver(x), _attributes=attr) elif isinstance(x, Bag) or isinstance(x, BagResolver):# attributes are lost, we should take from parent node, but it can be a structobj... result.setItem(name, StructObjResolver(x), tag=x.getTag()) else: result.setItem(name, x, tag=x.getTag()) return result