def __iter__(self): if self.is_value: return self.data[self.select.name].__iter__() if not self.edges: return list.__iter__([]) if len(self.edges) == 1 and wrap(self.edges[0]).domain.type == "index": # ITERATE AS LIST OF RECORDS keys = list(self.data.keys()) output = (dot.zip(keys, r) for r in zip(*self.data.values())) return output Log.error("This is a multicube")
def index(data, keys=None): # return dict that uses keys to index data o = Index(keys) if isinstance(data, Cube): if data.edges[0].name==keys[0]: #QUICK PATH names = list(data.data.keys()) for d in (set_default(pyDots.zip(names, r), {keys[0]: p}) for r, p in zip(zip(*data.data.values()), data.edges[0].domain.partitions.value)): o.add(d) return o else: Log.error("Can not handle indexing cubes at this time") for d in data: o.add(d) return o
def wrapper(*args, **kwargs): try: if func.func_name in ("__init__", "__new__") and "settings" in kwargs: packed = params_pack(params, kwargs, pyDots.zip(params[1:], args[1:]), kwargs["settings"], defaults) return func(args[0], **packed) elif func.func_name in ("__init__", "__new__") and len(args) == 2 and len(kwargs) == 0 and isinstance(args[1], Mapping): # ASSUME SECOND UNNAMED PARAM IS settings packed = params_pack(params, args[1], defaults) return func(args[0], **packed) elif func.func_name in ("__init__", "__new__"): # DO NOT INCLUDE self IN SETTINGS packed = params_pack(params, kwargs, pyDots.zip(params[1:], args[1:]), defaults) return func(args[0], **packed) elif params[0] == "self" and "settings" in kwargs: packed = params_pack(params, kwargs, pyDots.zip(params[1:], args[1:]), kwargs["settings"], defaults) return func(args[0], **packed) elif params[0] == "self" and len(args) == 2 and len(kwargs) == 0 and isinstance(args[1], Mapping): # ASSUME SECOND UNNAMED PARAM IS settings packed = params_pack(params, args[1], defaults) return func(args[0], **packed) elif params[0] == "self": packed = params_pack(params, kwargs, pyDots.zip(params[1:], args[1:]), defaults) return func(args[0], **packed) elif len(args) == 1 and len(kwargs) == 0 and isinstance(args[0], Mapping): # ASSUME SINGLE PARAMETER IS A SETTING packed = params_pack(params, args[0], defaults) return func(**packed) elif "settings" in kwargs and isinstance(kwargs["settings"], Mapping): # PUT args INTO SETTINGS packed = params_pack(params, kwargs, pyDots.zip(params, args), kwargs["settings"], defaults) return func(**packed) else: # PULL SETTINGS OUT INTO PARAMS packed = params_pack(params, kwargs, pyDots.zip(params, args), defaults) return func(**packed) except TypeError, e: if e.message.find("takes at least") >= 0: missing = [p for p in params if str(p) not in packed] Log.error( "Problem calling {{func_name}}: Expecting parameter {{missing}}", func_name=func.func_name, missing=missing, stack_depth=1 ) Log.error("Unexpected", e)