Skip to content

Commit eb9342a

Browse files
fix(brain_qt): fix signal has no connect member
`pylint` detects `Qt` signals as `FunctionDef`s instead of `ClassDef`s, so they are not properly detected in PySide2 5.15.2+ and PySide6. The patch from PR #900 is used to fix this. Fixes PyCQA/pylint #4040 and PyCQA/pylint #5378
1 parent fdf5afa commit eb9342a

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

astroid/brain/brain_qt.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,17 @@ def emit(self, signal): pass
7171
)
7272

7373

74+
def _looks_like_pyside2_or_6_signal(node):
75+
"""Detect a PySide2 or PySide6 signal. These changed locations as of QT 5ish apparently."""
76+
77+
is_pyside_node = node.qname().partition(".")[0] in {"PySide2", "PySide6"}
78+
is_named_signal = any(
79+
cls.qname() == "Signal" for cls in node.instance_attrs.get("__class__", [])
80+
)
81+
82+
return is_pyside_node and is_named_signal
83+
84+
7485
register_module_extender(AstroidManager(), "PyQt4.QtCore", pyqt4_qtcore_transform)
7586
AstroidManager().register_transform(
7687
nodes.FunctionDef, transform_pyqt_signal, _looks_like_signal
@@ -80,3 +91,6 @@ def emit(self, signal): pass
8091
transform_pyside_signal,
8192
lambda node: node.qname() in {"PySide.QtCore.Signal", "PySide2.QtCore.Signal"},
8293
)
94+
AstroidManager().register_transform(
95+
nodes.FunctionDef, transform_pyqt_signal, _looks_like_pyside2_or_6_signal
96+
)

0 commit comments

Comments
 (0)