From 53519e322a5a0bb395676cdaa132f5e82de22909 Mon Sep 17 00:00:00 2001 From: Damien George Date: Sun, 30 May 2021 19:25:53 +1000 Subject: [PATCH] py/builtinimport: Change relative import's ValueError to ImportError. Following CPython change, see https://bugs.python.org/issue37444. Signed-off-by: Damien George --- py/builtinimport.c | 2 +- tests/import/import_pkg7.py.exp | 8 ++++++++ tests/import/pkg7/subpkg1/subpkg2/mod3.py | 4 ++-- 3 files changed, 11 insertions(+), 3 deletions(-) create mode 100644 tests/import/import_pkg7.py.exp diff --git a/py/builtinimport.c b/py/builtinimport.c index 874d2dd7f0..abbeefced5 100644 --- a/py/builtinimport.c +++ b/py/builtinimport.c @@ -313,7 +313,7 @@ mp_obj_t mp_builtin___import__(size_t n_args, const mp_obj_t *args) { // We must have some component left over to import from if (p == this_name) { - mp_raise_ValueError(MP_ERROR_TEXT("can't perform relative import")); + mp_raise_msg(&mp_type_ImportError, MP_ERROR_TEXT("can't perform relative import")); } uint new_mod_l = (mod_len == 0 ? (size_t)(p - this_name) : (size_t)(p - this_name) + 1 + mod_len); diff --git a/tests/import/import_pkg7.py.exp b/tests/import/import_pkg7.py.exp new file mode 100644 index 0000000000..8f21a615f6 --- /dev/null +++ b/tests/import/import_pkg7.py.exp @@ -0,0 +1,8 @@ +pkg __name__: pkg7 +pkg __name__: pkg7.subpkg1 +pkg __name__: pkg7.subpkg1.subpkg2 +mod1 +mod2 +mod1.foo +mod2.bar +ImportError diff --git a/tests/import/pkg7/subpkg1/subpkg2/mod3.py b/tests/import/pkg7/subpkg1/subpkg2/mod3.py index 0aa916d208..b0f4279fcf 100644 --- a/tests/import/pkg7/subpkg1/subpkg2/mod3.py +++ b/tests/import/pkg7/subpkg1/subpkg2/mod3.py @@ -7,5 +7,5 @@ print(bar) # attempted relative import beyond top-level package try: from .... import mod1 -except ValueError: - print("ValueError") +except ImportError: + print("ImportError")