summaryrefslogtreecommitdiff
path: root/pylint
diff options
context:
space:
mode:
authorPierre Sassoulas <pierre.sassoulas@gmail.com>2021-08-15 11:57:18 +0200
committerPierre Sassoulas <pierre.sassoulas@gmail.com>2021-08-15 20:55:02 +0200
commit74ea1458b0bed7ef4371531e8392fa78421dcbf7 (patch)
tree4a95709abf325dfa64daa537e7e9c7038d9ab0ac /pylint
parentcd8af0da8272c081872a3bb17a42d32a2bb7d453 (diff)
downloadpylint-git-74ea1458b0bed7ef4371531e8392fa78421dcbf7.tar.gz
Fix crash on relative import beyond top-level package
Diffstat (limited to 'pylint')
-rw-r--r--pylint/checkers/utils.py15
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