1from __future__ import absolute_import, division, unicode_literals 2import sys 3import types 4import base64 5 6PY_MAJOR = sys.version_info[0] 7PY2 = PY_MAJOR == 2 8PY3 = PY_MAJOR == 3 9PY3_ORDERED_DICT = PY3 and sys.version_info[1] >= 6 # Python 3.6+ 10 11class_types = (type,) 12iterator_types = (type(iter('')),) 13 14if PY3: 15 import builtins 16 import queue 17 from base64 import encodebytes, decodebytes 18 from collections.abc import Iterator as abc_iterator 19 20 string_types = (str,) 21 numeric_types = (int, float) 22 ustr = str 23else: 24 from collections import Iterator as abc_iterator # noqa 25 26 builtins = __import__('__builtin__') 27 class_types += (types.ClassType,) 28 encodebytes = base64.encodestring 29 decodebytes = base64.decodestring 30 string_types = (builtins.basestring,) 31 numeric_types = (int, float, builtins.long) 32 queue = __import__('Queue') 33 ustr = builtins.unicode 34 35 36def iterator(class_): 37 if PY2 and hasattr(class_, '__next__'): 38 class_.next = class_.__next__ 39 return class_ 40