| |
| """Compatibility tricks for Python 3. Mainly to do with unicode. |
| |
| This file is deprecated and will be removed in a future version. |
| """ |
| import platform |
| import builtins as builtin_mod |
|
|
| from .encoding import DEFAULT_ENCODING |
|
|
|
|
| def decode(s, encoding=None): |
| encoding = encoding or DEFAULT_ENCODING |
| return s.decode(encoding, "replace") |
|
|
|
|
| def encode(u, encoding=None): |
| encoding = encoding or DEFAULT_ENCODING |
| return u.encode(encoding, "replace") |
|
|
|
|
| def cast_unicode(s, encoding=None): |
| if isinstance(s, bytes): |
| return decode(s, encoding) |
| return s |
|
|
|
|
| def safe_unicode(e): |
| """unicode(e) with various fallbacks. Used for exceptions, which may not be |
| safe to call unicode() on. |
| """ |
| try: |
| return str(e) |
| except UnicodeError: |
| pass |
|
|
| try: |
| return repr(e) |
| except UnicodeError: |
| pass |
|
|
| return "Unrecoverably corrupt evalue" |
|
|
|
|
| |
| |
| def input(prompt=""): |
| return builtin_mod.input(prompt) |
|
|
|
|
| def execfile(fname, glob, loc=None, compiler=None): |
| loc = loc if (loc is not None) else glob |
| with open(fname, "rb") as f: |
| compiler = compiler or compile |
| exec(compiler(f.read(), fname, "exec"), glob, loc) |
|
|
|
|
| PYPY = platform.python_implementation() == "PyPy" |
|
|
|
|
| |
| |
| |
| def no_code(x, encoding=None): |
| return x |
|
|
|
|
| unicode_to_str = cast_bytes_py2 = no_code |
|
|