| #------------------------------------------------------------------------------- |
| # py3compat.py |
| # |
| # Some Python2&3 compatibility code |
| #------------------------------------------------------------------------------- |
| import sys |
| PY3 = sys.version_info[0] == 3 |
| |
| |
| if PY3: |
| import io |
| StringIO = io.StringIO |
| BytesIO = io.BytesIO |
| |
| def bchr(i): |
| """ When iterating over b'...' in Python 2 you get single b'_' chars |
| and in Python 3 you get integers. Call bchr to always turn this |
| to single b'_' chars. |
| """ |
| return bytes((i,)) |
| |
| def u(s): |
| return s |
| |
| def int2byte(i): |
| return bytes((i,)) |
| |
| def byte2int(b): |
| return b |
| |
| def str2bytes(s): |
| return s.encode("latin-1") |
| |
| def str2unicode(s): |
| return s |
| |
| def bytes2str(b): |
| return b.decode('latin-1') |
| |
| def decodebytes(b, encoding): |
| return bytes(b, encoding) |
| |
| advance_iterator = next |
| |
| else: |
| import cStringIO |
| StringIO = BytesIO = cStringIO.StringIO |
| |
| int2byte = chr |
| byte2int = ord |
| bchr = lambda i: i |
| |
| def u(s): |
| return unicode(s, "unicode_escape") |
| |
| def str2bytes(s): |
| return s |
| |
| def str2unicode(s): |
| return unicode(s, "unicode_escape") |
| |
| def bytes2str(b): |
| return b |
| |
| def decodebytes(b, encoding): |
| return b.decode(encoding) |
| |
| def advance_iterator(it): |
| return it.next() |
| |