docs: def _get_args_kwargs(options, module):
      """
      Given an options (including analysis), and module, extract args and kwargs
      """
  
      if module == 'emp':
          options = _emp_extra_options(options)
      arg_names, kw_names = _arg_kwarg_lists(module, options['analysis'])
  
      # Create list of values for arg_names
      args = []
      for arg_name in arg_names:
  
          if arg_name == 'patch':  # For patch arg, append actual patch obj
              args.append(options['patch'])
              continue
          if arg_name == 'self':  # Ignore self from class methods
              continue
          if arg_name == 'k':  # scipy dists use k and x, we always use x
              arg_name = 'x'
  
          try:
              exec 'args.append(eval("%s"))' % options[arg_name]
          except SyntaxError: # eval failing because option is a string
              args.append(options[arg_name])
          except:
              raise ValueError, ("Value for required argument %s not provided"
                                 % arg_name)
  
      # Create dict with vals for kw_names
      kwargs = {}
      for kw_name in kw_names:
          if kw_name in options.keys():  # If a value is given for this kwarg
              try:
                  exec 'kwargs[kw_name] = eval("%s")' % options[kw_name]
              except SyntaxError:  # eval failing because value is a string
                  kwargs[kw_name] = options[kw_name]
              except:
                  raise ValueError, ("Value for optional argument %s is invalid"
                                     % kw_name)
  
      return args, kwargs