98 lines
2.1 KiB
Python
98 lines
2.1 KiB
Python
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 decode_utf8(x):
|
|
return x
|
|
|
|
def iteritems(d):
|
|
return d.iteritems()
|
|
|
|
def itervalues(d):
|
|
return d.itervalues()
|
|
|
|
def escape_string(s):
|
|
if isinstance(s, unicode):
|
|
s = s.encode("ascii")
|
|
result = ""
|
|
for c in s:
|
|
if not (32 <= ord(c) < 127) or c in ("\\", '"'):
|
|
result += "\\%03o" % ord(c)
|
|
else:
|
|
result += c
|
|
return result
|
|
|
|
def qualname(obj):
|
|
# Not properly equivalent to __qualname__ in py3, but it doesn't matter.
|
|
return obj.__name__
|
|
|
|
|
|
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 decode_utf8(x):
|
|
return codecs.utf_8_decode(x)[0]
|
|
|
|
def iteritems(d):
|
|
return iter(d.items())
|
|
|
|
def itervalues(d):
|
|
return iter(d.values())
|
|
|
|
def charcode_to_c_escapes(c):
|
|
rev_result = []
|
|
while c >= 256:
|
|
c, low = (c // 256, c % 256)
|
|
rev_result.append("\\%03o" % low)
|
|
rev_result.append("\\%03o" % c)
|
|
return "".join(reversed(rev_result))
|
|
|
|
def escape_string(s):
|
|
result = ""
|
|
if isinstance(s, str):
|
|
s = s.encode("utf-8")
|
|
for c in s:
|
|
if not (32 <= c < 127) or c in (ord("\\"), ord('"')):
|
|
result += charcode_to_c_escapes(c)
|
|
else:
|
|
result += chr(c)
|
|
return result
|
|
|
|
def qualname(obj):
|
|
return obj.__qualname__
|