def tracemessage(self, maxlen=6): """ if maxlen > 0, the message is shortened to maxlen traces. """ result = "\nFormula traceback:\n" for i, frame in enumerate(self): result += "{0}: {1}".format(i, get_node_repr(frame[0])) if frame[1]: result += ", line %s" % frame[1] result += "\n" result = result.rstrip("\n") lines = result.split("\n") if maxlen and len(lines) > maxlen: i = int(maxlen / 2) lines = lines[:i] + ["..."] + lines[-(maxlen - i):] result = "\n".join(lines) # last formula src = "\nFormula source:\n" src += self[-1][0][OBJ].formula.source result += "\n" + src return result
def _store_value(self, key, value): if value is not None: self.data[key] = value elif self.get_property("allow_none"): self.data[key] = value else: raise NoneReturnedError(get_node_repr((self, key, None))) return value
def tracemessage(self, maxlen=6): """ if maxlen > 0, the message is shortened to maxlen traces. """ result = "" for i, value in enumerate(self): result += "{0}: {1}\n".format(i, get_node_repr(value)) result = result.strip("\n") lines = result.split("\n") if maxlen and len(lines) > maxlen: i = int(maxlen / 2) lines = lines[:i] + ["..."] + lines[-(maxlen - i):] result = "\n".join(lines) return result
def find_match(self, args, kwargs): node = get_node(self, args, kwargs) key = node[KEY] keylen = len(key) if not self.get_property("allow_none"): raise NoneReturnedError(get_node_repr(node)) for match_len in range(keylen, -1, -1): for idxs in combinations(range(keylen), match_len): masked = [None] * keylen for idx in idxs: masked[idx] = key[idx] value = self.get_value(masked) if value is not None: return ArgsValuePair(tuple(masked), value) return ArgsValuePair(None, None)
def __init__(self, node, trace_msg): msg = self.message_template.format(get_node_repr(node), trace_msg) ValueError.__init__(self, msg)