Commit: 81d7ff84769b6991b2414bf2593a7694e355b4d0
Author: Campbell Barton
Date:   Mon Jun 5 16:05:36 2017 +1000
Branches: master
https://developer.blender.org/rB81d7ff84769b6991b2414bf2593a7694e355b4d0

PyAPI: is_staticmethod used for classmethods's too

Add note to investigate this, don't change so close to release.

===================================================================

M       source/blender/python/intern/bpy_rna.c

===================================================================

diff --git a/source/blender/python/intern/bpy_rna.c 
b/source/blender/python/intern/bpy_rna.c
index b84fca84f11..cfbb4ccdc38 100644
--- a/source/blender/python/intern/bpy_rna.c
+++ b/source/blender/python/intern/bpy_rna.c
@@ -7265,15 +7265,12 @@ static int bpy_class_validate_recursive(PointerRNA 
*dummyptr, StructRNA *srna, v
 {
        const ListBase *lb;
        Link *link;
-       FunctionRNA *func;
-       PropertyRNA *prop;
        const char *class_type = RNA_struct_identifier(srna);
        StructRNA *srna_base = RNA_struct_base(srna);
        PyObject *py_class = (PyObject *)py_data;
        PyObject *base_class = RNA_struct_py_type_get(srna);
        PyObject *item;
-       int i, flag, arg_count, func_arg_count, func_arg_min_count = 0;
-       bool is_staticmethod;
+       int i, arg_count, func_arg_count, func_arg_min_count = 0;
        const char *py_class_name = ((PyTypeObject *)py_class)->tp_name;  /* 
__name__ */
 
        if (srna_base) {
@@ -7294,9 +7291,12 @@ static int bpy_class_validate_recursive(PointerRNA 
*dummyptr, StructRNA *srna, v
        lb = RNA_struct_type_functions(srna);
        i = 0;
        for (link = lb->first; link; link = link->next) {
-               func = (FunctionRNA *)link;
-               flag = RNA_function_flag(func);
-               is_staticmethod = (flag & FUNC_NO_SELF) && !(flag & 
FUNC_USE_SELF_TYPE);
+               FunctionRNA *func = (FunctionRNA *)link;
+               const int flag = RNA_function_flag(func);
+               /* TODO(campbell): this is used for classmethod's too,
+                * even though class methods should have 'FUNC_USE_SELF_TYPE' 
set, see Operator.poll for eg.
+                * Keep this as-is since its working but we should be using 
'FUNC_USE_SELF_TYPE' for many functions. */
+               const bool is_staticmethod = (flag & FUNC_NO_SELF) && !(flag & 
FUNC_USE_SELF_TYPE);
 
                if (!(flag & FUNC_REGISTER))
                        continue;
@@ -7323,7 +7323,7 @@ static int bpy_class_validate_recursive(PointerRNA 
*dummyptr, StructRNA *srna, v
                                if (PyMethod_Check(item) == 0) {
                                        PyErr_Format(PyExc_TypeError,
                                                     "expected %.200s, %.200s 
class \"%.200s\" "
-                                                    "attribute to be a 
staticmethod, not a %.200s",
+                                                    "attribute to be a 
static/class method, not a %.200s",
                                                     class_type, py_class_name, 
RNA_function_identifier(func), Py_TYPE(item)->tp_name);
                                        return -1;
                                }
@@ -7376,8 +7376,8 @@ static int bpy_class_validate_recursive(PointerRNA 
*dummyptr, StructRNA *srna, v
        lb = RNA_struct_type_properties(srna);
        for (link = lb->first; link; link = link->next) {
                const char *identifier;
-               prop = (PropertyRNA *)link;
-               flag = RNA_property_flag(prop);
+               PropertyRNA *prop = (PropertyRNA *)link;
+               const int flag = RNA_property_flag(prop);
 
                if (!(flag & PROP_REGISTER))
                        continue;

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to