py/warning: Support categories for warnings.

Python defines warnings as belonging to categories, where category is a
warning type (descending from exception type). This is useful, as e.g.
allows to disable warnings selectively and provide user-defined warning
types.  So, implement this in MicroPython, except that categories are
represented just with strings.  However, enough hooks are left to implement
categories differently per-port (e.g. as types), without need to patch each
and every usage.
This commit is contained in:
Paul Sokolovsky
2018-12-21 14:20:55 +03:00
committed by Damien George
parent 86f06d6a87
commit 2f5d113fad
8 changed files with 32 additions and 8 deletions

View File

@@ -202,7 +202,7 @@ bool mp_obj_equal(mp_obj_t o1, mp_obj_t o2) {
str_cmp_err:
#if MICROPY_PY_STR_BYTES_CMP_WARN
if (MP_OBJ_IS_TYPE(o1, &mp_type_bytes) || MP_OBJ_IS_TYPE(o2, &mp_type_bytes)) {
mp_warning("Comparison between bytes and str");
mp_warning(MP_WARN_CAT(BytesWarning), "Comparison between bytes and str");
}
#endif
return false;