def get(self, idx): return self.value[int(idx)] #b = BoxingFactory.box(self.resolve()[int(idx)]) #return b def resolve(self): data = [] for val in self.value: data.append(val.resolve()) return data def __iter__(self): return iter(self.value) def walk(self): for val in self.value: yield val def clone(self): return Sequence([x.clone() for x in self.value]) def box_generator(val): return Sequence(list(BoxingFactory.box(itm) for itm in val)) BoxingFactory.register(inspect.isgenerator, box_generator) BoxingFactory.register(lambda x: isinstance(x, list), box_generator)
return Table(v) def get(self, key): if key in self.tables: return self.tables[key] if self.config.get("model"): tbl = self.tables[key] = self.get_model(key) return tbl self.error("'model' not specified") def error(self, msg): raise RuntimeError(msg) def lazy_isinstance(classname): def _(obj): cls = obj.__class__ if not hasattr(cls, "__mro__"): return False modname, cname = classname.rsplit(".", 1) return any(x.__module__ == modname and x.__name__ == cname for x in cls.__mro__) return _ BoxingFactory.register(lazy_isinstance("django.db.models.base.Model"), Instance) BoxingFactory.register(lazy_isinstance("django.db.models.query.QuerySet"), InstanceList) BoxingFactory.register(lazy_isinstance("django.db.models.manager.Manager"), InstanceList)
return self.tables[key] if self.config.get("model"): tbl = self.tables[key] = self.get_model(key) return tbl self.error("'model' not specified") def error(self, msg): raise RuntimeError(msg) def lazy_isinstance(classname): def _(obj): cls = obj.__class__ if not hasattr(cls, "__mro__"): return False modname, cname = classname.rsplit(".", 1) return any(x.__module__ == modname and x.__name__ == cname for x in cls.__mro__) return _ BoxingFactory.register(lazy_isinstance("django.db.models.base.Model"), Instance) BoxingFactory.register(lazy_isinstance("django.db.models.query.QuerySet"), InstanceList) BoxingFactory.register(lazy_isinstance("django.db.models.manager.Manager"), InstanceList)
data[key] = self.get(key).resolve() return data def walk(self): for itm in self.value.items(): yield itm yield self.predecessor def clone(self): p = None if self.predecessor: p = self.predecessor.clone() m = Mapping(p) for k, v in self.value.items(): m.set(k, v.clone()) return m def __iter__(self): return iter(BoxingFactory.box(v) for v in sorted(self.keys())) def box_dict(val): m = Mapping(None) for k, v in val.items(): m.set(k, BoxingFactory.box(v)) return m BoxingFactory.register(lambda x: isinstance(x, dict), box_dict)
[x.set_parent(self) for x in value] def get(self, idx): return self.value[int(idx)] #b = BoxingFactory.box(self.resolve()[int(idx)]) #return b def resolve(self): data = [] for val in self.value: data.append(val.resolve()) return data def __iter__(self): return iter(self.value) def walk(self): for val in self.value: yield val def clone(self): return Sequence([x.clone() for x in self.value]) def box_generator(val): return Sequence(list(BoxingFactory.box(itm) for itm in val)) BoxingFactory.register(inspect.isgenerator, box_generator) BoxingFactory.register(lambda x: isinstance(x, list), box_generator)