def createArgs(**kwargs):
  """
  Each kwarg is a list. Return a list of dicts representing all possible
  combinations of the kwargs.
  """
  if len(kwargs) == 0: return [{}]
  kargs = deepcopy(kwargs)
  k1 = kargs.keys()[0]
  values = kargs.pop(k1)
  args = []

  # Get all other combinations
  otherArgs = createArgs(**kargs)

  # Create combinations for values associated with k1
  for v in values:
    newArgs = deepcopy(otherArgs)
    arg = {k1: v}
    for newArg in newArgs:
      newArg.update(arg)
      args.append(newArg)

  return args
Each kwarg is a list. Return a list of dicts representing all possible
  combinations of the kwargs.