[Bf-blender-cvs] [cd92f8ea462] master: Fix bpy.msgbus.subscribe_rna argument parsing

Campbell Barton noreply at git.blender.org
Thu Mar 28 01:40:54 CET 2019


Commit: cd92f8ea4626dc93c2b5d822cb0b6358d0b2e507
Author: Campbell Barton
Date:   Thu Mar 28 11:19:48 2019 +1100
Branches: master
https://developer.blender.org/rBcd92f8ea4626dc93c2b5d822cb0b6358d0b2e507

Fix bpy.msgbus.subscribe_rna argument parsing

Also enforce all arguments are keywords and update docstring.

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

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

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

diff --git a/source/blender/python/intern/bpy_msgbus.c b/source/blender/python/intern/bpy_msgbus.c
index 0fedb379a49..08ed60b5073 100644
--- a/source/blender/python/intern/bpy_msgbus.c
+++ b/source/blender/python/intern/bpy_msgbus.c
@@ -215,11 +215,16 @@ static void bpy_msgbus_subscribe_value_free_data(
  * \{ */
 
 PyDoc_STRVAR(bpy_msgbus_subscribe_rna_doc,
-".. function:: subscribe_rna(data, owner, args, notify)\n"
+".. function:: subscribe_rna(data, owner, args, notify, options=set())\n"
 "\n"
 BPY_MSGBUS_RNA_MSGKEY_DOC
 "   :arg owner: Handle for this subscription (compared by identity).\n"
 "   :type owner: Any type.\n"
+"   :arg options: Change the behavior of the subscriber.\n"
+"\n"
+"      - ``PERSISTENT`` when set, the subscriber will be kept when remapping ID data.\n"
+"\n"
+"   :type options: set of str.\n"
 "\n"
 "   Returns a new vector int property definition.\n"
 );
@@ -241,6 +246,13 @@ static PyObject *bpy_msgbus_subscribe_rna(PyObject *UNUSED(self), PyObject *args
 	};
 	int options = 0;
 
+	if (PyTuple_GET_SIZE(args) != 0) {
+			PyErr_Format(
+			        PyExc_TypeError,
+			        "%s: only keyword arguments are supported",
+			        error_prefix);
+			return NULL;
+	}
 	static const char *_keywords[] = {
 		"key",
 		"owner",
@@ -249,7 +261,7 @@ static PyObject *bpy_msgbus_subscribe_rna(PyObject *UNUSED(self), PyObject *args
 		"options",
 		NULL,
 	};
-	static _PyArg_Parser _parser = {"$OOO!O|O!:subscribe_rna", _keywords, 0};
+	static _PyArg_Parser _parser = {"OOO!O|O!:subscribe_rna", _keywords, 0};
 	if (!_PyArg_ParseTupleAndKeywordsFast(
 	        args, kw, &_parser,
 	        &py_sub, &py_owner,
@@ -330,11 +342,18 @@ static PyObject *bpy_msgbus_publish_rna(PyObject *UNUSED(self), PyObject *args,
 	const char *error_prefix = "publish_rna";
 	PyObject *py_sub = NULL;
 
+	if (PyTuple_GET_SIZE(args) != 0) {
+			PyErr_Format(
+			        PyExc_TypeError,
+			        "%s: only keyword arguments are supported",
+			        error_prefix);
+			return NULL;
+	}
 	static const char *_keywords[] = {
 		"key",
 		NULL,
 	};
-	static _PyArg_Parser _parser = {"$O:publish_rna", _keywords, 0};
+	static _PyArg_Parser _parser = {"O:publish_rna", _keywords, 0};
 	if (!_PyArg_ParseTupleAndKeywordsFast(
 	        args, kw, &_parser,
 	        &py_sub))



More information about the Bf-blender-cvs mailing list