Merge pull request #837 from godlygeek/human_readable_oserror
Human readable OSError messages
This commit is contained in:
commit
54293397c5
@ -188,6 +188,8 @@ extern const struct _mp_obj_module_t usb_hid_module;
|
||||
#define MICROPY_PY_BUILTINS_FROZENSET (1)
|
||||
#define MICROPY_PY_BUILTINS_STR_SPLITLINES (1)
|
||||
#define MICROPY_PY_BUILTINS_REVERSED (1)
|
||||
#define MICROPY_PY_UERRNO (1)
|
||||
#define MICROPY_PY_UERRNO_ERRORCODE (0)
|
||||
#define MICROPY_PY_URE (1)
|
||||
#define MICROPY_PY_MICROPYTHON_MEM_INFO (1)
|
||||
#define MICROPY_PY_FRAMEBUF (1)
|
||||
|
@ -100,6 +100,20 @@ const mp_obj_module_t mp_module_uerrno = {
|
||||
};
|
||||
|
||||
qstr mp_errno_to_str(mp_obj_t errno_val) {
|
||||
// For commonly encountered errors, return human readable strings
|
||||
if (MP_OBJ_IS_SMALL_INT(errno_val)) {
|
||||
switch (MP_OBJ_SMALL_INT_VALUE(errno_val)) {
|
||||
case EPERM: return MP_QSTR_Permission_space_denied;
|
||||
case ENOENT: return MP_QSTR_No_space_such_space_file_slash_directory;
|
||||
case EIO: return MP_QSTR_Input_slash_output_space_error;
|
||||
case EACCES: return MP_QSTR_Permission_space_denied;
|
||||
case EEXIST: return MP_QSTR_File_space_exists;
|
||||
case ENODEV: return MP_QSTR_Unsupported_space_operation;
|
||||
case EINVAL: return MP_QSTR_Invalid_space_argument;
|
||||
}
|
||||
}
|
||||
|
||||
// Otherwise, return the Exxxx string for that error code
|
||||
#if MICROPY_PY_UERRNO_ERRORCODE
|
||||
// We have the errorcode dict so can do a lookup using the hash map
|
||||
mp_map_elem_t *elem = mp_map_lookup((mp_map_t*)&errorcode_dict.map, errno_val, MP_MAP_LOOKUP);
|
||||
|
@ -11,7 +11,10 @@ print(type(uerrno.EIO))
|
||||
|
||||
# check that errors are rendered in a nice way
|
||||
msg = str(OSError(uerrno.EIO))
|
||||
print(msg[:7], msg[-5:])
|
||||
print(msg[:7], msg[msg.find(']'):])
|
||||
|
||||
msg = str(OSError(uerrno.ENOBUFS))
|
||||
print(msg[:7], msg[msg.find(']'):])
|
||||
|
||||
# check that unknown errno is still rendered
|
||||
print(str(OSError(9999)))
|
||||
|
@ -1,3 +1,4 @@
|
||||
<class 'int'>
|
||||
[Errno ] EIO
|
||||
[Errno ] Input/output error
|
||||
[Errno ] ENOBUFS
|
||||
9999
|
||||
|
Loading…
x
Reference in New Issue
Block a user