parameters: (logical_line, tokens)
docstring: Avoid extraneous whitespace in the following situations:
  
      - Immediately before the open parenthesis that starts the argument
        list of a function call.
  
      - Immediately before the open parenthesis that starts an indexing or
        slicing.
docstring_summary: Avoid extraneous whitespace in the following situations:
docstring_tokens: Avoid extraneous whitespace in the following situations :
function: def whitespace_before_parameters(logical_line, tokens):
      """
      Avoid extraneous whitespace in the following situations:
  
      - Immediately before the open parenthesis that starts the argument
        list of a function call.
  
      - Immediately before the open parenthesis that starts an indexing or
        slicing.
      """
      prev_type = tokens[0][0]
      prev_text = tokens[0][1]
      prev_end = tokens[0][3]
      for index in range(1, len(tokens)):
          token_type, text, start, end, line = tokens[index]
          if (token_type == tokenize.OP and
              text in '([' and
              start != prev_end and
              prev_type == tokenize.NAME and
              (index < 2 or tokens[index - 2][1] != 'class') and
              (not iskeyword(prev_text))):
              return prev_end, "E211 whitespace before '%s'" % text
          prev_type = token_type
          prev_text = text
          prev_end = end
function_tokens: def whitespace_before_parameters ( logical_line , tokens ) : prev_type = tokens [ 0 ] [ 0 ] prev_text = tokens [ 0 ] [ 1 ] prev_end = tokens [ 0 ] [ 3 ] for index in range ( 1 , len ( tokens ) ) : token_type , text , start , end , line = tokens [ index ] if ( token_type == tokenize . OP and text in '([' and start != prev_end and prev_type == tokenize . NAME and ( index < 2 or tokens [ index - 2 ] [ 1 ] != 'class' ) and ( not iskeyword ( prev_text ) ) ) : return prev_end , "E211 whitespace before '%s'" % text prev_type = token_type prev_text = text prev_end = end