[Oops, sorry, send too fast]

Dear Phil,

On Tuesday 01 February 2011, 22:26:43 Hans-Peter Jansen wrote:
>
> Phil, something is badly broken with the current release and the
> snapshots. 

Here's the essence of the issue:

class A(object):
    def __init__(self):
        # catch access a non existing attribute
        try:
            print self.a, type(self.a)
        except AttributeError:
            pass

a = A()

from PyQt4.Qsci import QsciScintilla

# derive from a sip wrapped class
class B(QsciScintilla):
    def __init__(self):
        # access a non existing attribute results in:
        # TypeError: 'sip.methoddescriptor' object is not callable
        try:
            print self.b, type(self.b)
        except AttributeError:
            pass

b = B()

results in:

Traceback (most recent call last):
  File "sipinstance.py", line 22, in <module>
    b = B()
  File "sipinstance.py", line 18, in __init__
    print self.b, type(self.b)
TypeError: 'sip.methoddescriptor' object is not callable

Obviously, accessing non existing attributes in classes wrapped by sip
causes havoc (an unexpected TypeError).

At least for:
python: 2.6
sip: 4.12.1
qt4: 4.6.3
pyqt4: snapshot-4.8.4-278054fd857c


I was able to fix eric with this diff:

--- QScintilla/Editor.py~       2011-02-02 21:31:20.741149390 +0100
+++ QScintilla/Editor.py        2011-02-02 21:31:30.683988621 +0100
@@ -1258,7 +1258,7 @@ class Editor(QsciScintillaCompat):
         """
         try:
             self.supportedEols[self.getLineSeparator()].setChecked(True)
-        except AttributeError:
+        except (AttributeError, TypeError):
             pass
         
     def __eolChanged(self):

Note: self.supportedEols doesn't exist, when this method is called the first
time.

Guess, it's sip 4.12.2 time ;-)

Pete

Attachment: sipinstance.py
Description: application/python

_______________________________________________
PyQt mailing list    PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to