Skip to content

Commit c4045f5

Browse files
committed
builtinimport: Catch case when relative import happens without active package.
CPython raises SystemError in this case, but we don't have that enabled, so raise ImportError.
1 parent 6557a09 commit c4045f5

1 file changed

Lines changed: 5 additions & 1 deletion

File tree

py/builtinimport.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,11 @@ mp_obj_t mp_builtin___import__(mp_uint_t n_args, const mp_obj_t *args) {
238238
}
239239

240240
qstr new_mod_q = qstr_from_strn(new_mod, new_mod_l);
241-
DEBUG_printf("Resolved relative name: %s\n", qstr_str(new_mod_q));
241+
DEBUG_printf("Resolved base name for relative import: '%s'\n", qstr_str(new_mod_q));
242+
if (new_mod_q == MP_QSTR_) {
243+
// CPython raises SystemError
244+
nlr_raise(mp_obj_new_exception_msg(&mp_type_ImportError, "cannot perform relative import"));
245+
}
242246
module_name = MP_OBJ_NEW_QSTR(new_mod_q);
243247
mod_str = new_mod;
244248
mod_len = new_mod_l;

0 commit comments

Comments
 (0)