""" 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