[Bf-blender-cvs] [d9e567d3657] master: PyAPI: support methods for collection properties

Campbell Barton noreply at git.blender.org
Thu Mar 4 13:15:54 CET 2021


Commit: d9e567d36573bf81549ea5c4914a65b3a21dafcc
Author: Campbell Barton
Date:   Thu Mar 4 23:09:11 2021 +1100
Branches: master
https://developer.blender.org/rBd9e567d36573bf81549ea5c4914a65b3a21dafcc

PyAPI: support methods for collection properties

Previously only static methods were supported.

Now C/API functions added to collections can receive a 'self' argument.

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

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 a006b81cb60..bad6c4b4b56 100644
--- a/source/blender/python/intern/bpy_rna.c
+++ b/source/blender/python/intern/bpy_rna.c
@@ -4622,6 +4622,19 @@ static PyObject *pyrna_prop_collection_getattro(BPy_PropertyRNA *self, PyObject
         if (ret == NULL) {
           PyErr_Restore(error_type, error_value, error_traceback);
         }
+        else {
+          if (Py_TYPE(ret) == &PyMethodDescr_Type) {
+            PyMethodDef *m = ((PyMethodDescrObject *)ret)->d_method;
+            /* TODO: #METH_CLASS */
+            if (m->ml_flags & METH_STATIC) {
+              /* Keep 'ret' as-is. */
+            }
+            else {
+              Py_DECREF(ret);
+              ret = PyCMethod_New(m, (PyObject *)self, NULL, NULL);
+            }
+          }
+        }
       }
     }



More information about the Bf-blender-cvs mailing list