diff options
Diffstat (limited to 'py')
| -rw-r--r-- | py/builtinimport.c | 11 | ||||
| -rw-r--r-- | py/modarray.c | 2 | ||||
| -rw-r--r-- | py/modcollections.c | 2 | ||||
| -rw-r--r-- | py/moderrno.c | 2 | ||||
| -rw-r--r-- | py/modio.c | 2 | ||||
| -rw-r--r-- | py/modstruct.c | 2 | ||||
| -rw-r--r-- | py/modsys.c | 3 |
7 files changed, 15 insertions, 9 deletions
diff --git a/py/builtinimport.c b/py/builtinimport.c index 15521c77c..8a125fc53 100644 --- a/py/builtinimport.c +++ b/py/builtinimport.c @@ -380,20 +380,23 @@ STATIC mp_obj_t process_import_at_level(qstr full_mod_name, qstr level_mod_name, mp_obj_t module_obj; if (outer_module_obj == MP_OBJ_NULL) { + // First module in the dotted-name path. DEBUG_printf("Searching for top-level module\n"); // An import of a non-extensible built-in will always bypass the - // filesystem. e.g. `import micropython` or `import pyb`. + // filesystem. e.g. `import micropython` or `import pyb`. So try and + // match a non-extensible built-ins first. module_obj = mp_module_get_builtin(level_mod_name, false); if (module_obj != MP_OBJ_NULL) { return module_obj; } - // First module in the dotted-name; search for a directory or file - // relative to all the locations in sys.path. + // Next try the filesystem. Search for a directory or file relative to + // all the locations in sys.path. stat = stat_top_level(level_mod_name, &path); - // TODO: If stat failed, now try extensible built-in modules. + // If filesystem failed, now try and see if it matches an extensible + // built-in module. if (stat == MP_IMPORT_STAT_NO_EXIST) { module_obj = mp_module_get_builtin(level_mod_name, true); if (module_obj != MP_OBJ_NULL) { diff --git a/py/modarray.c b/py/modarray.c index cfed0fbb5..ac2e56ed3 100644 --- a/py/modarray.c +++ b/py/modarray.c @@ -40,6 +40,6 @@ const mp_obj_module_t mp_module_array = { .globals = (mp_obj_dict_t *)&mp_module_array_globals, }; -MP_REGISTER_MODULE(MP_QSTR_array, mp_module_array); +MP_REGISTER_EXTENSIBLE_MODULE(MP_QSTR_array, mp_module_array); #endif diff --git a/py/modcollections.c b/py/modcollections.c index a56fe069e..30a5881bc 100644 --- a/py/modcollections.c +++ b/py/modcollections.c @@ -46,6 +46,6 @@ const mp_obj_module_t mp_module_collections = { .globals = (mp_obj_dict_t *)&mp_module_collections_globals, }; -MP_REGISTER_MODULE(MP_QSTR_collections, mp_module_collections); +MP_REGISTER_EXTENSIBLE_MODULE(MP_QSTR_collections, mp_module_collections); #endif // MICROPY_PY_COLLECTIONS diff --git a/py/moderrno.c b/py/moderrno.c index 99ca101bd..4f0673a23 100644 --- a/py/moderrno.c +++ b/py/moderrno.c @@ -99,7 +99,7 @@ const mp_obj_module_t mp_module_errno = { .globals = (mp_obj_dict_t *)&mp_module_errno_globals, }; -MP_REGISTER_MODULE(MP_QSTR_errno, mp_module_errno); +MP_REGISTER_EXTENSIBLE_MODULE(MP_QSTR_errno, mp_module_errno); qstr mp_errno_to_str(mp_obj_t errno_val) { #if MICROPY_PY_ERRNO_ERRORCODE diff --git a/py/modio.c b/py/modio.c index 3462611d7..39317c52d 100644 --- a/py/modio.c +++ b/py/modio.c @@ -226,6 +226,6 @@ const mp_obj_module_t mp_module_io = { .globals = (mp_obj_dict_t *)&mp_module_io_globals, }; -MP_REGISTER_MODULE(MP_QSTR_io, mp_module_io); +MP_REGISTER_EXTENSIBLE_MODULE(MP_QSTR_io, mp_module_io); #endif diff --git a/py/modstruct.c b/py/modstruct.c index e908c73e1..42f91b282 100644 --- a/py/modstruct.c +++ b/py/modstruct.c @@ -266,6 +266,6 @@ const mp_obj_module_t mp_module_struct = { .globals = (mp_obj_dict_t *)&mp_module_struct_globals, }; -MP_REGISTER_MODULE(MP_QSTR_struct, mp_module_struct); +MP_REGISTER_EXTENSIBLE_MODULE(MP_QSTR_struct, mp_module_struct); #endif diff --git a/py/modsys.c b/py/modsys.c index 1cfc09ecf..ddc732e00 100644 --- a/py/modsys.c +++ b/py/modsys.c @@ -294,6 +294,9 @@ const mp_obj_module_t mp_module_sys = { .globals = (mp_obj_dict_t *)&mp_module_sys_globals, }; +// Unlike the other CPython-compatible modules, sys is not extensible from the +// filesystem. We rely on it to work so that things like sys.path are always +// available. MP_REGISTER_MODULE(MP_QSTR_sys, mp_module_sys); // If MICROPY_PY_SYS_PATH_ARGV_DEFAULTS is not enabled then these two lists |
