compatibility.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import operator
  2. import sys
  3. PY3 = sys.version_info[0] > 2
  4. PY33 = sys.version_info[0] == 3 and sys.version_info[1] == 3
  5. PY34 = sys.version_info[0] == 3 and sys.version_info[1] == 4
  6. PYPY = hasattr(sys, 'pypy_version_info')
  7. __all__ = ('map', 'filter', 'range', 'zip', 'reduce', 'zip_longest',
  8. 'iteritems', 'iterkeys', 'itervalues', 'filterfalse',
  9. 'PY3', 'PY34', 'PYPY', 'import_module')
  10. if PY3:
  11. map = map
  12. filter = filter
  13. range = range
  14. zip = zip
  15. from functools import reduce
  16. from itertools import zip_longest
  17. from itertools import filterfalse
  18. iteritems = operator.methodcaller('items')
  19. iterkeys = operator.methodcaller('keys')
  20. itervalues = operator.methodcaller('values')
  21. else:
  22. range = xrange
  23. reduce = reduce
  24. from itertools import imap as map
  25. from itertools import ifilter as filter
  26. from itertools import ifilterfalse as filterfalse
  27. from itertools import izip as zip
  28. from itertools import izip_longest as zip_longest
  29. iteritems = operator.methodcaller('iteritems')
  30. iterkeys = operator.methodcaller('iterkeys')
  31. itervalues = operator.methodcaller('itervalues')
  32. try:
  33. from importlib import import_module
  34. except ImportError:
  35. def import_module(name):
  36. __import__(name)
  37. return sys.modules[name]