from __future__ import absolute_import, division, print_function import sys __all__ = ['PY3', 'b', 'basestring_', 'bytes', 'next', 'is_unicode', 'iteritems'] PY3 = True if sys.version_info[0] == 3 else False if sys.version_info[0] < 3: def next(obj): return obj.next() def iteritems(d, **kw): return d.iteritems(**kw) b = bytes = str basestring_ = basestring else: def b(s): if isinstance(s, str): return s.encode('latin1') return bytes(s) def iteritems(d, **kw): return iter(d.items(**kw)) next = next basestring_ = (bytes, str) bytes = bytes text = str def is_unicode(obj): if sys.version_info[0] < 3: return isinstance(obj, unicode) else: return isinstance(obj, str) def coerce_text(v): if not isinstance(v, basestring_): if sys.version_info[0] < 3: attr = '__unicode__' else: attr = '__str__' if hasattr(v, attr): return unicode(v) else: return bytes(v) return v