-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Closed
Labels
Crash 💥A bug that makes pylint crashA bug that makes pylint crashNeeds PRThis issue is accepted, sufficiently specified and now needs an implementationThis issue is accepted, sufficiently specified and now needs an implementation
Milestone
Description
Bug description
When parsing the following file:
"""Fatal error while checking."""
class Meta(type(object), type(object)):
pass
class Class(metaclass=Meta):
pass
pylint crashed with a AstroidError
and with the following stacktrace:
Traceback (most recent call last):
File "C:\Users\bers\.pyenv-win-venv\envs\project_3.11\Lib\site-packages\pylint\lint\pylinter.py", line 811, in _lint_file
check_astroid_module(module)
File "C:\Users\bers\.pyenv-win-venv\envs\project_3.11\Lib\site-packages\pylint\lint\pylinter.py", line 1085, in check_astroid_module
retval = self._check_astroid_module(
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\bers\.pyenv-win-venv\envs\project_3.11\Lib\site-packages\pylint\lint\pylinter.py", line 1135, in _check_astroid_module
walker.walk(node)
File "C:\Users\bers\.pyenv-win-venv\envs\project_3.11\Lib\site-packages\pylint\utils\ast_walker.py", line 94, in walk
self.walk(child)
File "C:\Users\bers\.pyenv-win-venv\envs\project_3.11\Lib\site-packages\pylint\utils\ast_walker.py", line 91, in walk
callback(astroid)
File "C:\Users\bers\.pyenv-win-venv\envs\project_3.11\Lib\site-packages\pylint\checkers\typecheck.py", line 1040, in visit_classdef
if _is_invalid_metaclass(metaclass):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\bers\.pyenv-win-venv\envs\project_3.11\Lib\site-packages\pylint\checkers\typecheck.py", line 748, in _is_invalid_metaclass
mro = metaclass.mro()
^^^^^^^^^^^^^^^
File "C:\Users\bers\.pyenv-win-venv\envs\project_3.11\Lib\site-packages\astroid\nodes\scoped_nodes\scoped_nodes.py", line 3066, in mro
return self._compute_mro(context=context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\bers\.pyenv-win-venv\envs\project_3.11\Lib\site-packages\astroid\nodes\scoped_nodes\scoped_nodes.py", line 3054, in _compute_mro
unmerged_mro = list(clean_duplicates_mro(unmerged_mro, self, context))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\bers\.pyenv-win-venv\envs\project_3.11\Lib\site-packages\astroid\nodes\scoped_nodes\scoped_nodes.py", line 155, in clean_duplicates_mro
raise DuplicateBasesError(
astroid.exceptions.DuplicateBasesError: Duplicates found in MROs (Meta), (type, object), (type, object), (type, type) for <ClassDef.Meta l.2 at 0x26ca8902bd0>.
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\bers\.pyenv-win-venv\envs\project_3.11\Lib\site-packages\pylint\lint\pylinter.py", line 775, in _lint_files
self._lint_file(fileitem, module, check_astroid_module)
File "C:\Users\bers\.pyenv-win-venv\envs\project_3.11\Lib\site-packages\pylint\lint\pylinter.py", line 813, in _lint_file
raise astroid.AstroidError from e
astroid.exceptions.AstroidError
Configuration
No response
Command used
pylint bug.py
Pylint output
************* Module bug
bug.py:2:0: C0115: Missing class docstring (missing-class-docstring)
bug.py:2:0: E0241: Duplicate bases for class 'Meta' (duplicate-bases)
bug.py:5:0: C0115: Missing class docstring (missing-class-docstring)
Exception on node <ClassDef.Class l.5 at 0x26ca8903410> in file 'C:\Code\Bug\bug.py'
Traceback (most recent call last):
File "C:\Users\bers\.pyenv-win-venv\envs\project_3.11\Lib\site-packages\pylint\utils\ast_walker.py", line 91, in walk
callback(astroid)
File "C:\Users\bers\.pyenv-win-venv\envs\project_3.11\Lib\site-packages\pylint\checkers\typecheck.py", line 1040, in visit_classdef
if _is_invalid_metaclass(metaclass):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\bers\.pyenv-win-venv\envs\project_3.11\Lib\site-packages\pylint\checkers\typecheck.py", line 748, in _is_invalid_metaclass
mro = metaclass.mro()
^^^^^^^^^^^^^^^
File "C:\Users\bers\.pyenv-win-venv\envs\project_3.11\Lib\site-packages\astroid\nodes\scoped_nodes\scoped_nodes.py", line 3066, in mro
return self._compute_mro(context=context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\bers\.pyenv-win-venv\envs\project_3.11\Lib\site-packages\astroid\nodes\scoped_nodes\scoped_nodes.py", line 3054, in _compute_mro
unmerged_mro = list(clean_duplicates_mro(unmerged_mro, self, context))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\bers\.pyenv-win-venv\envs\project_3.11\Lib\site-packages\astroid\nodes\scoped_nodes\scoped_nodes.py", line 155, in clean_duplicates_mro
raise DuplicateBasesError(
astroid.exceptions.DuplicateBasesError: Duplicates found in MROs (Meta), (type, object), (type, object), (type, type) for <ClassDef.Meta l.2 at 0x26ca8902bd0>.
bug.py:1:0: F0002: bug.py: Fatal error while checking 'bug.py'. Please open an issue in our bug tracker so we address this. There is a pre-filled template that you can use in 'C:\Users\bers\AppData\Local\pylint\pylint\Cache\pylint-crash-2023-05-18-09-05-35.txt'. (astroid-error)
------------------------------------------------------------------
Your code has been rated at 0.00/10 (previous run: 7.14/10, -7.14)
Expected behavior
I have no idea if the code examples makes any sense, but pylint
should not crash.
Pylint version
pylint 2.17.4
astroid 2.15.5
Python 3.11.3 (tags/v3.11.3:f3909b8, Apr 4 2023, 23:49:59) [MSC v.1934 64 bit (AMD64)]
OS / Environment
Windows 10 21H2
Additional dependencies
No response
Metadata
Metadata
Assignees
Labels
Crash 💥A bug that makes pylint crashA bug that makes pylint crashNeeds PRThis issue is accepted, sufficiently specified and now needs an implementationThis issue is accepted, sufficiently specified and now needs an implementation