class_docstr: This is the central parsing class Jinja uses.  It's passed to
  extensions and can be used to parse expressions or statements.
class_docstr_tok: ["This","is","the","central","parsing","class","Jinja","uses",".","It","'s","passed","to","extensions","and","can","be","used","to","parse","expressions","or","statements","."]
docstr: Are we at the end of a tuple?
code: def is_tuple_end(
      self, extra_end_rules: t.Optional[t.Tuple[str, ...]] = None
  ) -> bool:
      """Are we at the end of a tuple?"""
      if self.stream.current.type in (
          "variable_end",
          "block_end",
          "rparen",
      ):
          return True
      elif extra_end_rules is not None:
          return self.stream.current.test_any(extra_end_rules)  # type: ignore
      return False
  
imports: import typing
  import typing
  from .None import nodes
  from .exceptions import TemplateAssertionError
  from .exceptions import TemplateSyntaxError
  from .lexer import describe_token
  from .lexer import describe_token_expr
label_desc: Use image node_id 6 for calling the Parser obj's underlying member method code with example usage: obj.is_tuple_end(extra_end_rules) and returns: False, True, self