Package: pygobject Followup-For: Bug #484024 Content-Type: multipart/mixed; boundary="===============2093913649==" MIME-Version: 1.0 From: =?utf-8?q?Santiago_Ruano_Rinc=C3=B3n?= <[EMAIL PROTECTED]> To: Debian Bug Tracking System <[EMAIL PROTECTED]> Subject: patch Message-ID: <[EMAIL PROTECTED]> X-Mailer: reportbug 3.40 Date: Mon, 02 Jun 2008 23:44:20 +0200
This is a multi-part MIME message sent by reportbug. --===============2093913649== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline Package: pygobject Followup-For: Bug #484024 Attached is the patch that solves the problem, taken from: https://bugs.launchpad.net/ubuntu/+source/pygobject/+bug/234810 regards, Santiago -- System Information: Debian Release: lenny/sid APT prefers unstable APT policy: (990, 'unstable'), (500, 'testing'), (1, 'experimental') Architecture: i386 (i686) Kernel: Linux 2.6.25-2-686 (SMP w/1 CPU core) Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash --===============2093913649== Content-Type: text/x-c++; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="484024.diff" diff -urN pygobject-2.14.1.old/gobject/__init__.py pygobject-2.14.1/gobject/__init__.py --- pygobject-2.14.1.old/gobject/__init__.py 2007-11-05 17:47:52.000000000 +0100 +++ pygobject-2.14.1/gobject/__init__.py 2008-06-02 23:27:26.000000000 +0200 @@ -57,15 +57,16 @@ cls.__gproperties__ = gproperties - if (hasattr(cls, 'do_get_property') or - hasattr(cls, 'do_set_property')): + if ('do_get_property' in cls.__dict__ or + 'do_set_property' in cls.__dict__): for prop in props: if (prop.getter != prop._default_getter or prop.setter != prop._default_setter): raise TypeError( "GObject subclass %r defines do_get/set_property" " and it also uses a property which a custom setter" - " or getter. This is not allowed" % (cls,)) + " or getter. This is not allowed" % ( + cls.__name__,)) def obj_get_property(self, pspec): name = pspec.name.replace('-', '_') @@ -92,7 +93,6 @@ return type_register(cls, namespace.get('__gtype_name__')) - _gobject._install_metaclass(GObjectMeta) del _gobject diff -urN pygobject-2.14.1.old/tests/test_properties.py pygobject-2.14.1/tests/test_properties.py --- pygobject-2.14.1.old/tests/test_properties.py 2007-11-05 17:47:52.000000000 +0100 +++ pygobject-2.14.1/tests/test_properties.py 2008-06-02 23:27:26.000000000 +0200 @@ -327,6 +327,41 @@ b.prop1 = 20 self.assertEquals(b.prop1, 20) + def testPropertySubclassCustomSetter(self): + # test for #523352 + class A(GObject): + def get_first(self): + return 'first' + first = gobject.property(type=str, getter=get_first) + + class B(A): + def get_second(self): + return 'second' + second = gobject.property(type=str, getter=get_second) + + a = A() + self.assertEquals(a.first, 'first') + self.assertRaises(TypeError, setattr, a, 'first', 'foo') + + b = B() + self.assertEquals(b.first, 'first') + self.assertRaises(TypeError, setattr, b, 'first', 'foo') + self.assertEquals(b.second, 'second') + self.assertRaises(TypeError, setattr, b, 'second', 'foo') + + def testPropertySubclassCustomSetterError(self): + try: + class A(GObject): + def get_first(self): + return 'first' + first = gobject.property(type=str, getter=get_first) + + def do_get_property(self, pspec): + pass + except TypeError: + pass + else: + raise AssertionError if __name__ == '__main__': unittest.main() --===============2093913649==-- -- System Information: Debian Release: lenny/sid APT prefers unstable APT policy: (990, 'unstable'), (500, 'testing'), (1, 'experimental') Architecture: i386 (i686) Kernel: Linux 2.6.25-2-686 (SMP w/1 CPU core) Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]