-
- Notifications
You must be signed in to change notification settings - Fork 307
Closed
Labels
Description
Steps to reproduce
pip install -U pip(especially with a virtualenv, so that a manylinux2014 wheel is found for PyQt rather than pip trying to build from sources)pip install pylint PyQt5- Run
pylint --extension-pkg-whitelist=PyQt5 keytester.pyover this file:
from PyQt5.QtWidgets import QApplication app = QApplication([])(a pretty standard PyQt set-up)
Current behavior
Astroid fails with:
Traceback (most recent call last): File ".venv/bin/pylint", line 10, in <module> sys.exit(run_pylint()) File "/home/florian/tmp/pylint/.venv/lib/python3.8/site-packages/pylint/__init__.py", line 22, in run_pylint PylintRun(sys.argv[1:]) File "/home/florian/tmp/pylint/.venv/lib/python3.8/site-packages/pylint/lint/run.py", line 338, in __init__ linter.check(args) File "/home/florian/tmp/pylint/.venv/lib/python3.8/site-packages/pylint/lint/pylinter.py", line 870, in check self._check_files( File "/home/florian/tmp/pylint/.venv/lib/python3.8/site-packages/pylint/lint/pylinter.py", line 904, in _check_files self._check_file(get_ast, check_astroid_module, name, filepath, modname) File "/home/florian/tmp/pylint/.venv/lib/python3.8/site-packages/pylint/lint/pylinter.py", line 930, in _check_file check_astroid_module(ast_node) File "/home/florian/tmp/pylint/.venv/lib/python3.8/site-packages/pylint/lint/pylinter.py", line 1062, in check_astroid_module retval = self._check_astroid_module( File "/home/florian/tmp/pylint/.venv/lib/python3.8/site-packages/pylint/lint/pylinter.py", line 1107, in _check_astroid_module walker.walk(ast_node) File "/home/florian/tmp/pylint/.venv/lib/python3.8/site-packages/pylint/utils/ast_walker.py", line 75, in walk self.walk(child) File "/home/florian/tmp/pylint/.venv/lib/python3.8/site-packages/pylint/utils/ast_walker.py", line 72, in walk callback(astroid) File "/home/florian/tmp/pylint/.venv/lib/python3.8/site-packages/pylint/checkers/variables.py", line 1197, in visit_importfrom module = self._check_module_attrs(node, module, name_parts[1:]) File "/home/florian/tmp/pylint/.venv/lib/python3.8/site-packages/pylint/checkers/variables.py", line 1868, in _check_module_attrs module = next(module.getattr(name)[0].infer()) File "/home/florian/tmp/pylint/.venv/lib/python3.8/site-packages/astroid/scoped_nodes.py", line 547, in getattr result = [self.import_module(name, relative_only=True)] File "/home/florian/tmp/pylint/.venv/lib/python3.8/site-packages/astroid/scoped_nodes.py", line 642, in import_module return MANAGER.ast_from_module_name(absmodname) File "/home/florian/tmp/pylint/.venv/lib/python3.8/site-packages/astroid/manager.py", line 168, in ast_from_module_name return self.ast_from_module(module, modname) File "/home/florian/tmp/pylint/.venv/lib/python3.8/site-packages/astroid/manager.py", line 262, in ast_from_module return AstroidBuilder(self).module_build(module, modname) File "/home/florian/tmp/pylint/.venv/lib/python3.8/site-packages/astroid/builder.py", line 95, in module_build node = self.inspect_build(module, modname=modname, path=path) File "/home/florian/tmp/pylint/.venv/lib/python3.8/site-packages/astroid/raw_building.py", line 308, in inspect_build self.object_build(node, module) File "/home/florian/tmp/pylint/.venv/lib/python3.8/site-packages/astroid/raw_building.py", line 360, in object_build elif hasattr(member, "__all__"): RuntimeError: wrapped C/C++ object of type QApplication has been deleted That exception is coming from PyQt and usually happens when Qt already deleted an object in C++, but something still holds a Python reference to it. Not sure how that can even happen with a QApplication object, though.
Expected behavior
pylint works successfully, other than the missing-module-docstring and invalid-name errors - this was the case with pylint 2.4.4 and astroid 2.3.3.
python -c "from astroid import __pkginfo__; print(__pkginfo__.version)" output
2.4.0 (and pylint 2.5.0)