I suppose the TODO below is referring to the "path" variable which is passed in as an output variable to PyArg_ParseTuple right below. The TODO may be removed, since the code is right. Code using PyArg_ParseTuple will borrow the reference from the calling code, since there's a stack behind the call to the enclosing function (pyzoo_get_children in this case) which won't go away until the function returns.
— src/contrib/zkpython/src/c/zookeeper.c (revision 885582)
+++ src/contrib/zkpython/src/c/zookeeper.c (working copy)
@@ -774,8 +774,6 @@
static PyObject *pyzoo_get_children(PyObject *self, PyObject *args)
- // TO DO: Does Python copy the string or the reference? If it's the former
- // we should free the String_vector
PyObject *watcherfn = Py_None;