Fix for an obscure bpy_types bug: When attempting to define __setattr__ in a metaclas...
authorLukas Toenne <lukas.toenne@googlemail.com>
Fri, 23 Aug 2013 15:39:25 +0000 (15:39 +0000)
committerLukas Toenne <lukas.toenne@googlemail.com>
Fri, 23 Aug 2013 15:39:25 +0000 (15:39 +0000)
builtin classes. This was done in Python 2.3 to prevent changes to the 'object' type definition and similar issues. As explained by Guido van Rossum in the following mail, the python check will look for
the *closest* base class, which fails for RNAMetaPropGroup because its first base is RNAMeta, which is in turn a subclass of 'type'.

http://code.activestate.com/lists/python-dev/34489/

The easiest and safest way to prevent this issue therefore seems to be
to swap the base class order for RNAMetaPropGroup, so that StructMetaPropGroup is the first base, which has a perfectly valid setattr implementation.

release/scripts/modules/bpy_types.py

index d3ac5a6093c12c476f3558878ce8a838338e5343..f8870cbe7059de337e55ac35908ca7c3df402809 100644 (file)
@@ -547,7 +547,7 @@ class OrderedDictMini(dict):
         self.order.remove(key)
 
 
-class RNAMetaPropGroup(RNAMeta, StructMetaPropGroup):
+class RNAMetaPropGroup(StructMetaPropGroup, RNAMeta):
     pass