""" Generic functions that should be reusable anywhere in pokemontools. """ import os def index(seq, f): """return the index of the first item in seq where f(item) == True.""" return next((i for i in xrange(len(seq)) if f(seq[i])), None) def grouper(some_list, count=2): """splits a list into sublists given: [1, 2, 3, 4] returns: [[1, 2], [3, 4]]""" return [some_list[i:i+count] for i in range(0, len(some_list), count)] def flattener(x): "flattens a list of sublists into just one list (generator)" try: it = iter(x) except TypeError: yield x else: for i in it: for j in flattener(i): yield j def flatten(x): "flattens a list of sublists into just one list" return list(flattener(x)) def mkdir_p(path): """ Make a directory at a given path. """ try: os.makedirs(path) except OSError as exc: # Python >2.5 if exc.errno == errno.EEXIST: pass else: raise exc