text: """Handles changes since PY39
  
  handle
  - removal of ast.Index and ast.ExtSlice -- https://bugs.python.org/issue34822 -- more info
      `at<https://docs.python.org/3/whatsnew/3.9.html?highlight=simplified%20ast%20subscription#changes-in-the-python-api>`_.
  """
  
  import ast
  
  from xonsh.parsers.base import Index
  from xonsh.parsers.v38 import Parser as ThreeEightParser
  
  
  class Parser(ThreeEightParser):
      def p_subscript_test(self, p):
          """subscript : test"""
          p1 = p[1]
          p[0] = Index(value=p1)
  
      def p_subscriptlist(self, p):
          """subscriptlist : subscript comma_subscript_list_opt comma_opt"""
  
          p1, p2 = p[1], p[2]
          is_subscript = False
  
          if p2 is not None:
              if isinstance(p1, Index):
                  p1 = p1.value
                  is_subscript = True
              if any((isinstance(p, Index) for p in p2)):
                  is_subscript = True
  
              after_comma = [p.value if isinstance(p, Index) else p for p in p2]
              if (
                  isinstance(p1, ast.Slice)
                  or any([isinstance(x, ast.Slice) for x in after_comma])
                  or is_subscript
              ):
                  p1 = Index(
                      value=ast.Tuple(
                          [p1] + after_comma,
                          ctx=ast.Load(),
                          lineno=p1.lineno,
                          col_offset=p1.col_offset,
                      )
                  )
              else:
                  p1.value = ast.Tuple(
                      elts=[p1.value] + [x.value for x in after_comma],
                      ctx=ast.Load(),
                      lineno=p1.lineno,
                      col_offset=p1.col_offset,
                  )
          p[0] = p1
  