summaryrefslogtreecommitdiffstatshomepage
path: root/py
diff options
context:
space:
mode:
Diffstat (limited to 'py')
-rw-r--r--py/modbuiltins.c3
-rw-r--r--py/mpconfig.h5
-rw-r--r--py/obj.c8
-rw-r--r--py/qstrdefs.h3
4 files changed, 19 insertions, 0 deletions
diff --git a/py/modbuiltins.c b/py/modbuiltins.c
index 455e1cc1b6..9b5bd4c5ed 100644
--- a/py/modbuiltins.c
+++ b/py/modbuiltins.c
@@ -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 },
diff --git a/py/mpconfig.h b/py/mpconfig.h
index a5aacc8b0e..560fdce9ce 100644
--- a/py/mpconfig.h
+++ b/py/mpconfig.h
@@ -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)
diff --git a/py/obj.c b/py/obj.c
index 81adbe3933..1928fad98f 100644
--- a/py/obj.c
+++ b/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);
diff --git a/py/qstrdefs.h b/py/qstrdefs.h
index 77277c095f..5d0dc9d274 100644
--- a/py/qstrdefs.h
+++ b/py/qstrdefs.h
@@ -115,6 +115,9 @@ Q(builtins)
Q(Ellipsis)
Q(StopIteration)
+#if MICROPY_PY_BUILTINS_NOTIMPLEMENTED
+Q(NotImplemented)
+#endif
Q(BaseException)
Q(ArithmeticError)