code: def python_parser(version, co, out=sys.stdout, showasm=False,
                    parser_debug=PARSER_DEFAULT_DEBUG, is_pypy=False):
      
  
      assert iscode(co)
      from uncompyle6.scanner import get_scanner
      scanner = get_scanner(version, is_pypy)
      tokens, customize = scanner.ingest(co)
      maybe_show_asm(showasm, tokens)
  
      # For heavy grammar debugging
      # parser_debug = {'rules': True, 'transition': True, 'reduce' : True,
      #                 'showstack': 'full'}
      p = get_python_parser(version, parser_debug)
      return parse(p, tokens, customize)
docs: Parse a code object to an abstract syntax tree representation.
  
      :param version:         The python version this code is from as a float, for
                              example 2.6, 2.7, 3.2, 3.3, 3.4, 3.5 etc.
      :param co:              The code object to parse.
      :param out:             File like object to write the output to.
      :param showasm:         Flag which determines whether the disassembled and
                              ingested code is written to sys.stdout or not.
      :param parser_debug:    dict containing debug flags for the spark parser.
  
      :return: Abstract syntax tree representation of the code object.