class_docstr: A DataShape parser object.
class_docstr_tok: ["A","DataShape","parser","object","."]
docstr: type_arg_list : type_arg COMMA type_arg_list
                | type_kwarg_list
                | type_arg
  type_kwarg_list : type_kwarg COMMA type_kwarg_list
                  | type_kwarg
  
  Returns a tuple (args, kwargs), or (None, None).
docstr_tok: ["type_arg_list",":","type_arg","COMMA","type_arg_list","|","type_kwarg_list","|","type_arg","type_kwarg_list",":","type_kwarg","COMMA","type_kwarg_list","|","type_kwarg","Returns","a","tuple","(","args",",","kwargs",")",",","or","(","None",",","None",")","."]
code: def parse_type_arg_list(self):
      """
      type_arg_list : type_arg COMMA type_arg_list
                    | type_kwarg_list
                    | type_arg
      type_kwarg_list : type_kwarg COMMA type_kwarg_list
                      | type_kwarg
  
      Returns a tuple (args, kwargs), or (None, None).
      """
      # Parse zero or more "type_arg COMMA" repetitions
      args = []
      arg = True
      while arg is not None:
          # Parse the type_arg
          arg = self.parse_type_arg()
          if arg is not None:
              if self.tok.id == lexer.COMMA:
                  # If a comma is next, there are more args
                  self.advance_tok()
                  args.append(arg)
              else:
                  # Otherwise we've reached the end, and there
                  # were no keyword args
                  args.append(arg)
                  return (args, {})
          else:
              break
      kwargs = self.parse_homogeneous_list(
          self.parse_type_kwarg,
          lexer.COMMA,
          "Expected another keyword argument, "
          + "positional arguments cannot follow "
          + "keyword arguments",
      )
      return (args, dict(kwargs) if kwargs else {})
  
imports: from __future__ import absolute_import, division, print_function
  from .None import lexer, error
  from .None import coretypes
label_desc: Use image node_id 11 for calling the DataShapeParser obj's underlying member method code with example usage: obj.parse_type_arg_list() and returns: args,  unknown, args,  dict