docs: def _get_sql_args(parser, args=None):
      """ Parse a set of %%sql arguments or get the default value of the arguments.
  
      Args:
        parser: the argument parser to use.
        args: the argument flags. May be a string or a list. If omitted the empty string is used so
            we can get the default values for the arguments. These are all used to override the
            arg parser. Alternatively args may be a dictionary, in which case it overrides the
            default values from the arg parser.
      Returns:
        A dictionary of argument names and values.
      """
      overrides = None
      if args is None:
        tokens = []
      elif isinstance(args, basestring):
        command_line = ' '.join(args.split('\n'))
        tokens = shlex.split(command_line)
      elif isinstance(args, dict):
        overrides = args
        tokens = []
      else:
        tokens = args
  
      args = {} if parser is None else vars(parser.parse_args(tokens))
      if overrides:
        args.update(overrides)
  
      # Don't return any args that are None as we don't want to expand to 'None'
      return {arg: value for arg, value in args.items() if value is not None}