| import atexit | |
| def _encode_string(s): | |
| encoded = s.encode('utf-8') | |
| return encoded | |
| def _decode_string(b): | |
| return b.decode('utf-8') | |
| _encode_string.__doc__ = """Encode a string for use by LLVM.""" | |
| _decode_string.__doc__ = """Decode a LLVM character (byte)string.""" | |
| _shutting_down = [False] | |
| def _at_shutdown(): | |
| _shutting_down[0] = True | |
| atexit.register(_at_shutdown) | |
| def _is_shutting_down(_shutting_down=_shutting_down): | |
| """ | |
| Whether the interpreter is currently shutting down. | |
| For use in finalizers, __del__ methods, and similar; it is advised | |
| to early bind this function rather than look it up when calling it, | |
| since at shutdown module globals may be cleared. | |
| """ | |
| return _shutting_down[0] | |