diff options
Diffstat (limited to 'astroid/brain/brain_qt.py')
-rw-r--r-- | astroid/brain/brain_qt.py | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/astroid/brain/brain_qt.py b/astroid/brain/brain_qt.py new file mode 100644 index 0000000..f568b65 --- /dev/null +++ b/astroid/brain/brain_qt.py @@ -0,0 +1,44 @@ +"""Astroid hooks for the PyQT library.""" + +from astroid import MANAGER, register_module_extender +from astroid.builder import AstroidBuilder +from astroid import nodes +from astroid import parse + + +def _looks_like_signal(node, signal_name='pyqtSignal'): + if '__class__' in node.instance_attrs: + cls = node.instance_attrs['__class__'][0] + return cls.name == signal_name + return False + + +def transform_pyqt_signal(node): + module = parse(''' + class pyqtSignal(object): + def connect(self, slot, type=None, no_receiver_check=False): + pass + def disconnect(self, slot): + pass + def emit(self, *args): + pass + ''') + signal_cls = module['pyqtSignal'] + node.instance_attrs['emit'] = signal_cls['emit'] + node.instance_attrs['disconnect'] = signal_cls['disconnect'] + node.instance_attrs['connect'] = signal_cls['connect'] + + +def pyqt4_qtcore_transform(): + return AstroidBuilder(MANAGER).string_build(''' + +def SIGNAL(signal_name): pass + +class QObject(object): + def emit(self, signal): pass +''') + + +register_module_extender(MANAGER, 'PyQt4.QtCore', pyqt4_qtcore_transform) +MANAGER.register_transform(nodes.FunctionDef, transform_pyqt_signal, + _looks_like_signal)
\ No newline at end of file |