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] | |