modbuiltins: Add NotImplemented builtin constant.
From https://docs.python.org/3/library/constants.html#NotImplemented : "Special value which should be returned by the binary special methods (e.g. __eq__(), __lt__(), __add__(), __rsub__(), etc.) to indicate that the operation is not implemented with respect to the other type; may be returned by the in-place binary special methods (e.g. __imul__(), __iand__(), etc.) for the same purpose. Its truth value is true." Some people however appear to abuse it to mean "no value" when None is a legitimate value (don't do that).
This commit is contained in:
parent
3d3ef36e97
commit
5ab5ac5448
|
@ -634,6 +634,9 @@ STATIC const mp_map_elem_t mp_module_builtins_globals_table[] = {
|
|||
|
||||
// built-in objects
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_Ellipsis), (mp_obj_t)&mp_const_ellipsis_obj },
|
||||
#if MICROPY_PY_BUILTINS_NOTIMPLEMENTED
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_NotImplemented), MP_OBJ_SENTINEL },
|
||||
#endif
|
||||
|
||||
// built-in user functions
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_abs), (mp_obj_t)&mp_builtin_abs_obj },
|
||||
|
|
|
@ -479,6 +479,11 @@ typedef double mp_float_t;
|
|||
#define MICROPY_PY_BUILTINS_REVERSED (1)
|
||||
#endif
|
||||
|
||||
// Whether to define "NotImplemented" special constant
|
||||
#ifndef MICROPY_PY_BUILTINS_NOTIMPLEMENTED
|
||||
#define MICROPY_PY_BUILTINS_NOTIMPLEMENTED (0)
|
||||
#endif
|
||||
|
||||
// Whether to set __file__ for imported modules
|
||||
#ifndef MICROPY_PY___FILE__
|
||||
#define MICROPY_PY___FILE__ (1)
|
||||
|
|
8
py/obj.c
8
py/obj.c
|
@ -62,6 +62,14 @@ void mp_obj_print_helper(const mp_print_t *print, mp_obj_t o_in, mp_print_kind_t
|
|||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if MICROPY_PY_BUILTINS_NOTIMPLEMENTED
|
||||
if (o_in == MP_OBJ_SENTINEL) {
|
||||
mp_printf(print, "%q", MP_QSTR_NotImplemented);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
mp_obj_type_t *type = mp_obj_get_type(o_in);
|
||||
if (type->print != NULL) {
|
||||
type->print((mp_print_t*)print, o_in, kind);
|
||||
|
|
|
@ -115,6 +115,9 @@ Q(builtins)
|
|||
|
||||
Q(Ellipsis)
|
||||
Q(StopIteration)
|
||||
#if MICROPY_PY_BUILTINS_NOTIMPLEMENTED
|
||||
Q(NotImplemented)
|
||||
#endif
|
||||
|
||||
Q(BaseException)
|
||||
Q(ArithmeticError)
|
||||
|
|
|
@ -64,6 +64,7 @@
|
|||
#define MICROPY_PY_BUILTINS_MEMORYVIEW (1)
|
||||
#define MICROPY_PY_BUILTINS_FROZENSET (1)
|
||||
#define MICROPY_PY_BUILTINS_COMPILE (1)
|
||||
#define MICROPY_PY_BUILTINS_NOTIMPLEMENTED (1)
|
||||
#define MICROPY_PY_MICROPYTHON_MEM_INFO (1)
|
||||
#define MICROPY_PY_ALL_SPECIAL_METHODS (1)
|
||||
#define MICROPY_PY_ARRAY_SLICE_ASSIGN (1)
|
||||
|
|
Loading…
Reference in New Issue