def apply_fun()

in uimnet/utils/__init__.py [0:0]


def apply_fun(fun, itr):
  "Apply function to iterable"
  if isinstance(itr, dict):
    return {k: apply_fun(fun, v) for k, v in itr.items()}
  elif isinstance(itr, OrderedDict):
    return OrderedDict([(k, apply_fun(fun, v)) for k, v in list(itr)])
  elif isinstance(itr, list) or isinstance(itr, tuple):
    els = [apply_fun(fun, v) for v in itr]
    return tuple(els) if isinstance(itr, tuple) else els
  elif isinstance(itr, types.GeneratorType):
    return (apply_fun(fun, v) for v in itr)
  else:
    return fun(itr)