| def any_true(list, predicate): |
| for i in list: |
| if predicate(i): |
| return True |
| return False |
| |
| def any_false(list, predicate): |
| return any_true(list, lambda x: not predicate(x)) |
| |
| def all_true(list, predicate): |
| return not any_false(list, predicate) |
| |
| def all_false(list, predicate): |
| return not any_true(list, predicate) |
| |
| def prependLines(prependStr, str): |
| return ('\n'+prependStr).join(str.splitlines()) |
| |
| def pprint(object, useRepr=True): |
| def recur(ob): |
| return pprint(ob, useRepr) |
| def wrapString(prefix, string, suffix): |
| return '%s%s%s' % (prefix, |
| prependLines(' ' * len(prefix), |
| string), |
| suffix) |
| def pprintArgs(name, args): |
| return wrapString(name + '(', ',\n'.join(map(recur,args)), ')') |
| |
| if isinstance(object, tuple): |
| return wrapString('(', ',\n'.join(map(recur,object)), |
| [')',',)'][len(object) == 1]) |
| elif isinstance(object, list): |
| return wrapString('[', ',\n'.join(map(recur,object)), ']') |
| elif isinstance(object, set): |
| return pprintArgs('set', list(object)) |
| elif isinstance(object, dict): |
| elts = [] |
| for k,v in object.items(): |
| kr = recur(k) |
| vr = recur(v) |
| elts.append('%s : %s' % (kr, |
| prependLines(' ' * (3 + len(kr.splitlines()[-1])), |
| vr))) |
| return wrapString('{', ',\n'.join(elts), '}') |
| else: |
| if useRepr: |
| return repr(object) |
| return str(object) |
| |
| def prefixAndPPrint(prefix, object, useRepr=True): |
| return prefix + prependLines(' '*len(prefix), pprint(object, useRepr)) |