text: """Internal module for Python 2 backwards compatibility."""
  import sys
  
  
  if sys.version_info[0] < 3:
      from urllib import unquote
      from urlparse import parse_qs, urlparse
      from itertools import imap, izip
      from string import letters as ascii_letters
      from Queue import Queue
      try:
          from cStringIO import StringIO as BytesIO
      except ImportError:
          from StringIO import StringIO as BytesIO
  
      # special unicode handling for python2 to avoid UnicodeDecodeError
      def safe_unicode(obj, *args):
          """ return the unicode representation of obj """
          try:
              return unicode(obj, *args)
          except UnicodeDecodeError:
              # obj is byte string
              ascii_text = str(obj).encode('string_escape')
              return unicode(ascii_text)
  
      iteritems = lambda x: x.iteritems()
      iterkeys = lambda x: x.iterkeys()
      itervalues = lambda x: x.itervalues()
      nativestr = lambda x: \
          x if isinstance(x, str) else x.encode('utf-8', 'replace')
      u = lambda x: x.decode()
      b = lambda x: x
      next = lambda x: x.next()
      byte_to_chr = lambda x: x
      unichr = unichr
      xrange = xrange
      basestring = basestring
      unicode = unicode
      bytes = str
      long = long
  else:
      from urllib.parse import parse_qs, unquote, urlparse
      from io import BytesIO
      from string import ascii_letters
      from queue import Queue
  
      iteritems = lambda x: iter(x.items())
      iterkeys = lambda x: iter(x.keys())
      itervalues = lambda x: iter(x.values())
      byte_to_chr = lambda x: chr(x)
      nativestr = lambda x: \
          x if isinstance(x, str) else x.decode('utf-8', 'replace')
      u = lambda x: x
      b = lambda x: x.encode('latin-1') if not isinstance(x, bytes) else x
      next = next
      unichr = chr
      imap = map
      izip = zip
      xrange = range
      basestring = str
      unicode = str
      safe_unicode = str
      bytes = bytes
      long = int
  
  try:  # Python 3
      from queue import LifoQueue, Empty, Full
  except ImportError:
      from Queue import Empty, Full
      try:  # Python 2.6 - 2.7
          from Queue import LifoQueue
      except ImportError:  # Python 2.5
          from Queue import Queue
          # From the Python 2.7 lib. Python 2.5 already extracted the core
          # methods to aid implementating different queue organisations.
  
          class LifoQueue(Queue):
              "Override queue methods to implement a last-in first-out queue."
  
              def _init(self, maxsize):
                  self.maxsize = maxsize
                  self.queue = []
  
              def _qsize(self, len=len):
                  return len(self.queue)
  
              def _put(self, item):
                  self.queue.append(item)
  
              def _get(self):
                  return self.queue.pop()
  