_compat.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. # -*- coding: utf-8 -*-
  2. """
  3. internal gevent python 2/python 3 bridges. Not for external use.
  4. """
  5. from __future__ import print_function, absolute_import, division
  6. import sys
  7. PY2 = sys.version_info[0] == 2
  8. PY3 = sys.version_info[0] >= 3
  9. PYPY = hasattr(sys, 'pypy_version_info')
  10. ## Types
  11. if PY3:
  12. string_types = (str,)
  13. integer_types = (int,)
  14. text_type = str
  15. else:
  16. import __builtin__ # pylint:disable=import-error
  17. string_types = __builtin__.basestring,
  18. text_type = __builtin__.unicode
  19. integer_types = (int, __builtin__.long)
  20. ## Exceptions
  21. if PY3:
  22. def reraise(t, value, tb=None): # pylint:disable=unused-argument
  23. if value.__traceback__ is not tb and tb is not None:
  24. raise value.with_traceback(tb)
  25. raise value
  26. else:
  27. from gevent._util_py2 import reraise # pylint:disable=import-error,no-name-in-module
  28. reraise = reraise # export
  29. ## Functions
  30. if PY3:
  31. iteritems = dict.items
  32. itervalues = dict.values
  33. xrange = range
  34. else:
  35. iteritems = dict.iteritems # python 3: pylint:disable=no-member
  36. itervalues = dict.itervalues # python 3: pylint:disable=no-member
  37. xrange = __builtin__.xrange