Skip to content

Commit 314b4a4

Browse files
committed
bpo-37444: Update differing exception between builtins and importlib
1 parent 5623ac8 commit 314b4a4

File tree

7 files changed

+106
-105
lines changed

7 files changed

+106
-105
lines changed

Lib/importlib/_bootstrap.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -873,7 +873,7 @@ def _resolve_name(name, package, level):
873873
"""Resolve a relative module name to an absolute one."""
874874
bits = package.rsplit('.', level - 1)
875875
if len(bits) < level:
876-
raise ValueError('attempted relative import beyond top-level package')
876+
raise ImportError('attempted relative import beyond top-level package')
877877
base = bits[0]
878878
return '{}.{}'.format(base, name) if name else base
879879

Lib/importlib/util.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ def resolve_name(name, package):
2929
if not name.startswith('.'):
3030
return name
3131
elif not package:
32-
raise ValueError(f'no package specified for {repr(name)} '
33-
'(required for relative module names)')
32+
raise ImportError(f'no package specified for {repr(name)} '
33+
'(required for relative module names)')
3434
level = 0
3535
for character in name:
3636
if character != '.':

Lib/test/test_importlib/import_/test_relative_imports.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ def test_too_high_from_package(self):
156156
{'__name__': 'pkg', '__path__': ['blah']})
157157
def callback(global_):
158158
self.__import__('pkg')
159-
with self.assertRaises(ValueError):
159+
with self.assertRaises(ImportError):
160160
self.__import__('', global_, fromlist=['top_level'],
161161
level=2)
162162
self.relative_import_test(create, globals_, callback)
@@ -167,7 +167,7 @@ def test_too_high_from_module(self):
167167
globals_ = {'__package__': 'pkg'}, {'__name__': 'pkg.module'}
168168
def callback(global_):
169169
self.__import__('pkg')
170-
with self.assertRaises(ValueError):
170+
with self.assertRaises(ImportError):
171171
self.__import__('', global_, fromlist=['top_level'],
172172
level=2)
173173
self.relative_import_test(create, globals_, callback)

Lib/test/test_importlib/test_util.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -375,7 +375,7 @@ def test_absolute_within_package(self):
375375

376376
def test_no_package(self):
377377
# .bacon in ''
378-
with self.assertRaises(ValueError):
378+
with self.assertRaises(ImportError):
379379
self.util.resolve_name('.bacon', '')
380380

381381
def test_in_package(self):
@@ -390,7 +390,7 @@ def test_other_package(self):
390390

391391
def test_escape(self):
392392
# ..bacon in spam
393-
with self.assertRaises(ValueError):
393+
with self.assertRaises(ImportError):
394394
self.util.resolve_name('..bacon', 'spam')
395395

396396

@@ -518,7 +518,7 @@ def test_find_relative_module_missing_package(self):
518518
with util.temp_module(name, pkg=True) as pkg_dir:
519519
fullname, _ = util.submodule(name, subname, pkg_dir)
520520
relname = '.' + subname
521-
with self.assertRaises(ValueError):
521+
with self.assertRaises(ImportError):
522522
self.util.find_spec(relname)
523523
self.assertNotIn(name, sorted(sys.modules))
524524
self.assertNotIn(fullname, sorted(sys.modules))
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Update differing exception between buildints and importlib

Python/import.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1671,7 +1671,7 @@ resolve_name(PyThreadState *tstate, PyObject *name, PyObject *globals, int level
16711671
goto error;
16721672
}
16731673
else if (last_dot == -1) {
1674-
_PyErr_SetString(tstate, PyExc_ValueError,
1674+
_PyErr_SetString(tstate, PyExc_ImportError,
16751675
"attempted relative import beyond top-level "
16761676
"package");
16771677
goto error;

Python/importlib.h

Lines changed: 96 additions & 96 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)