diff options
author | Pierre Sassoulas <pierre.sassoulas@gmail.com> | 2021-08-15 11:57:18 +0200 |
---|---|---|
committer | Pierre Sassoulas <pierre.sassoulas@gmail.com> | 2021-08-15 20:55:02 +0200 |
commit | 74ea1458b0bed7ef4371531e8392fa78421dcbf7 (patch) | |
tree | 4a95709abf325dfa64daa537e7e9c7038d9ab0ac /pylint | |
parent | cd8af0da8272c081872a3bb17a42d32a2bb7d453 (diff) | |
download | pylint-git-74ea1458b0bed7ef4371531e8392fa78421dcbf7.tar.gz |
Fix crash on relative import beyond top-level package
Diffstat (limited to 'pylint')
-rw-r--r-- | pylint/checkers/utils.py | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/pylint/checkers/utils.py b/pylint/checkers/utils.py index 9136419fa..47de79d25 100644 --- a/pylint/checkers/utils.py +++ b/pylint/checkers/utils.py @@ -73,6 +73,7 @@ from typing import ( import _string import astroid import astroid.objects +from astroid import TooManyLevelsError from pylint.constants import BUILTINS @@ -1550,13 +1551,13 @@ def get_import_name( :returns: absolute qualified module name of the module used in import. """ - if isinstance(importnode, astroid.ImportFrom): - if importnode.level: - root = importnode.root() - if isinstance(root, astroid.Module): - modname = root.relative_to_absolute_name( - modname, level=importnode.level - ) + if isinstance(importnode, astroid.ImportFrom) and importnode.level: + root = importnode.root() + if isinstance(root, astroid.Module): + try: + return root.relative_to_absolute_name(modname, level=importnode.level) + except TooManyLevelsError: + return modname return modname |