* Great, thanks very much Phil
* On another issue, pylint identifies instances of QtCore.pyqtSignal (eg QtGui.QPushButton.clicked) as methoddescriptors. The current unpatched release of logilab.astng (which pylint uses) hopes such objects also expose __name__ * Of course they don't have to, but I notice the constructor of pyqtSignal indicates they do have an internal name ... is there any value to this being exposed as __name__ by PyQt4?

(In any case, logilab.astng is being patched to no longer demand a __name__)

Derek.

On 30/07/2009, at 9:27 AM, Phil Thompson wrote:

On Wed, 29 Jul 2009 23:05:52 +1200, Derek Harland
<de...@chocolate-fish.com>
wrote:
Hi Sylvain (and hopefully some helpful PyQt people!)

* As noted earlier, after applying my patch to get pylint to recognise
PyQt4, pylint will Bus Error depending on import order
eg
    from PyQt4 import QtCore, QtGui      # will cause pylint to
BusError
    from PyQt4 import QtGui , QtCore     # pylint is happy ...

* After a long fight of constant crashes I've debugged down to the
statement that actually crashes :-)
* Its because there is something strange about QtCore.QSignalMapper,
and here is the problem replicated ...

from PyQt4 import QtCore
isinstance(QtCore.QSignalMapper, types.MethodType)
Bus error

However this works ...

from PyQt4 import QtCore, QtGui
isinstance(QtCore.QSignalMapper, types.MethodType)
False

pylint sparks a crash (or rather logilab.astng.builder does) as it
will attempt to import and fully analyse QtCore before loading QtGui.
I'm hoping Phil at Riverbank Software might be able to cast some light
on what state QSignalMapper might be in before QtGui exists ...

Kind regards
Derek

[Machine details:
  - OSX10.5 running macports python 2.6.2
  - PyQt4.5.4, sip 4.8.2
  - pylint 0.18, logilab.astng 0.19, logilab.common 0.42
]

This should be fixed in tonight's SIP snapshot.

The problem is that QSignalMapper has a signal that passes a QWidget which, of course, isn't defined in QtCore. SIP has mechanisms for dealing with these sorts of forward references but the code that converts a type as a
string to a generated type object wasn't dealing with it very well.

Thanks,
Phil


_______________________________________________
Python-Projects mailing list
Python-Projects@lists.logilab.org
http://lists.logilab.org/mailman/listinfo/python-projects

Reply via email to