import collections def flat_iteration(l): for element in l: if isinstance(element, collections.Iterable): for element2 in flat_iteration(element): yield element2 else: yield element def xdir(obj, return_values=False): for attr in dir(obj): if attr[:2] != "__" and attr[-2:] != "__": if return_values: yield attr, getattr(obj, attr) else: yield attr def autotype(s): if s == "True": return True elif s == "False": return False try: return int(s, 0) except ValueError: pass return s