import sys if sys.version_info < (3,): def isbasestring(s): return isinstance(s, basestring) def open_utf8(filename, mode): return open(filename, mode) def byte_to_str(x): return str(ord(x)) import cStringIO def StringIO(): return cStringIO.StringIO() def encode_utf8(x): return x def iteritems(d): return d.iteritems() else: def isbasestring(s): return isinstance(s, (str, bytes)) def open_utf8(filename, mode): return open(filename, mode, encoding="utf-8") def byte_to_str(x): return str(x) import io def StringIO(): return io.StringIO() import codecs def encode_utf8(x): return codecs.utf_8_encode(x)[0] def iteritems(d): return iter(d.items())