summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--py/modsys.c8
-rw-r--r--py/mpconfig.h5
-rw-r--r--tests/basics/sys1.py15
-rw-r--r--tests/unix/extra_coverage.py.exp8
4 files changed, 32 insertions, 4 deletions
diff --git a/py/modsys.c b/py/modsys.c
index 12fa1101b..2af81046f 100644
--- a/py/modsys.c
+++ b/py/modsys.c
@@ -147,6 +147,10 @@ STATIC const MP_DEFINE_STR_OBJ(mp_sys_platform_obj, MICROPY_PY_SYS_PLATFORM);
MP_DEFINE_STR_OBJ(mp_sys_executable_obj, "");
#endif
+#if MICROPY_PY_SYS_INTERN
+MP_DEFINE_CONST_FUN_OBJ_1(mp_sys_intern_obj, mp_obj_str_intern_checked);
+#endif
+
// exit([retval]): raise SystemExit, with optional argument given to the exception
STATIC mp_obj_t mp_sys_exit(size_t n_args, const mp_obj_t *args) {
if (n_args == 0) {
@@ -293,6 +297,10 @@ STATIC const mp_rom_map_elem_t mp_module_sys_globals_table[] = {
#endif
#endif
+ #if MICROPY_PY_SYS_INTERN
+ { MP_ROM_QSTR(MP_QSTR_intern), MP_ROM_PTR(&mp_sys_intern_obj) },
+ #endif
+
#if MICROPY_PY_SYS_EXIT
{ MP_ROM_QSTR(MP_QSTR_exit), MP_ROM_PTR(&mp_sys_exit_obj) },
#endif
diff --git a/py/mpconfig.h b/py/mpconfig.h
index d14b1aa04..c025bca26 100644
--- a/py/mpconfig.h
+++ b/py/mpconfig.h
@@ -1434,6 +1434,11 @@ typedef double mp_float_t;
#define MICROPY_PY_SYS_EXECUTABLE (0)
#endif
+// Whether to provide "sys.intern"
+#ifndef MICROPY_PY_SYS_INTERN
+#define MICROPY_PY_SYS_INTERN (MICROPY_CONFIG_ROM_LEVEL_AT_LEAST_EVERYTHING)
+#endif
+
// Whether to provide "sys.exit" function
#ifndef MICROPY_PY_SYS_EXIT
#define MICROPY_PY_SYS_EXIT (1)
diff --git a/tests/basics/sys1.py b/tests/basics/sys1.py
index 759b9a6ea..95d8905d1 100644
--- a/tests/basics/sys1.py
+++ b/tests/basics/sys1.py
@@ -23,3 +23,18 @@ if hasattr(sys.implementation, '_mpy'):
else:
# Effectively skip subtests
print(int)
+
+try:
+ print(sys.intern('micropython') == 'micropython')
+ has_intern = True
+except AttributeError:
+ has_intern = False
+ print(True)
+
+if has_intern:
+ try:
+ print(sys.intern(0))
+ except TypeError:
+ print(True)
+else:
+ print(True)
diff --git a/tests/unix/extra_coverage.py.exp b/tests/unix/extra_coverage.py.exp
index ec3950074..b7e4c0d76 100644
--- a/tests/unix/extra_coverage.py.exp
+++ b/tests/unix/extra_coverage.py.exp
@@ -66,10 +66,10 @@ micropython machine math
argv atexit byteorder exc_info
executable exit getsizeof implementation
-maxsize modules path platform
-print_exception ps1 ps2
-stderr stdin stdout tracebacklimit
-version version_info
+intern maxsize modules path
+platform print_exception ps1
+ps2 stderr stdin stdout
+tracebacklimit version version_info
ementation
# attrtuple
(start=1, stop=2, step=3)