"""Status and error codes as they cross the ABI. Non-negative is a status, negative is an error. The union of both cdylibs' codes; each uses a subset. """ AWAITING = 0 COMPLETE = 1 STALLED = 2 BUSY = -1 FINISHED = -2 PANICKED = -4 BAD_HANDLE = -5 BAD_INPUT = -6 _NAMES = { AWAITING: "AWAITING", COMPLETE: "COMPLETE", STALLED: "STALLED", BUSY: "BUSY", FINISHED: "FINISHED", PANICKED: "PANICKED", BAD_HANDLE: "BAD_HANDLE", BAD_INPUT: "BAD_INPUT", } def describe(code: int) -> str: return _NAMES.get(code, f"code {code}")