code: def createArgs(**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
docs: Each kwarg is a list. Return a list of dicts representing all possible
    combinations of the kwargs.