[Bf-blender-cvs] [de67e3c0c02] master: PyAPI: expose bpy_prop_deferred function & keywords

Campbell Barton noreply at git.blender.org
Sun Feb 21 11:17:48 CET 2021


Commit: de67e3c0c02e9d08022cff58338099d287505f91
Author: Campbell Barton
Date:   Sun Feb 21 21:15:13 2021 +1100
Branches: master
https://developer.blender.org/rBde67e3c0c02e9d08022cff58338099d287505f91

PyAPI: expose bpy_prop_deferred function & keywords

While not needed for Blender, Animation Nodes uses this information,
expose this information for scripts to access that need it.

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

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

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

diff --git a/source/blender/python/intern/bpy_props.c b/source/blender/python/intern/bpy_props.c
index c596f81a91c..2b3599df86e 100644
--- a/source/blender/python/intern/bpy_props.c
+++ b/source/blender/python/intern/bpy_props.c
@@ -227,6 +227,37 @@ static PyObject *bpy_prop_deferred_repr(BPy_PropDeferred *self)
   return PyUnicode_FromFormat("<%.200s, %R, %R>", Py_TYPE(self)->tp_name, self->fn, self->kw);
 }
 
+/* Get/Set Items. */
+
+/**
+ * Expose the function in case scripts need to introspect this information
+ * (not currently used by Blender it's self).
+ */
+static PyObject *bpy_prop_deferred_function_get(BPy_PropDeferred *self, void *UNUSED(closure))
+{
+  PyObject *ret = self->fn;
+  Py_IncRef(ret);
+  return ret;
+}
+
+/**
+ * Expose keywords in case scripts need to introspect this information
+ * (not currently used by Blender it's self).
+ */
+static PyObject *bpy_prop_deferred_keywords_get(BPy_PropDeferred *self, void *UNUSED(closure))
+{
+  PyObject *ret = self->kw;
+  Py_IncRef(ret);
+  return ret;
+}
+
+static PyGetSetDef bpy_prop_deferred_getset[] = {
+    {"function", (getter)bpy_prop_deferred_function_get, (setter)NULL, NULL, NULL},
+    {"keywords", (getter)bpy_prop_deferred_keywords_get, (setter)NULL, NULL, NULL},
+    {NULL, NULL, NULL, NULL, NULL} /* Sentinel */
+};
+
+
 PyTypeObject bpy_prop_deferred_Type = {
     PyVarObject_HEAD_INIT(NULL, 0)
 
@@ -239,6 +270,8 @@ PyTypeObject bpy_prop_deferred_Type = {
 
     .tp_traverse = (traverseproc)bpy_prop_deferred_traverse,
     .tp_clear = (inquiry)bpy_prop_deferred_clear,
+
+    .tp_getset = bpy_prop_deferred_getset,
 };
 
 static PyObject *bpy_prop_deferred_data_CreatePyObject(PyObject *fn, PyObject *kw)



More information about the Bf-blender-cvs mailing list