[py-svn] r36355 - py/dist/py/c-extension/greenlet

cfbolz at codespeak.net cfbolz at codespeak.net
Tue Jan 9 14:41:27 CET 2007


Author: cfbolz
Date: Tue Jan  9 14:41:26 2007
New Revision: 36355

Modified:
   py/dist/py/c-extension/greenlet/greenlet.c
Log:
(cfbolz, arigo with a watchful eye on him) add docstrings to greenlets.


Modified: py/dist/py/c-extension/greenlet/greenlet.c
==============================================================================
--- py/dist/py/c-extension/greenlet/greenlet.c	(original)
+++ py/dist/py/c-extension/greenlet/greenlet.c	Tue Jan  9 14:41:26 2007
@@ -845,7 +845,10 @@
 	0,					/* tp_setattro */
 	0,					/* tp_as_buffer*/
 	Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,  /* tp_flags */
-	0,					/* tp_doc */
+	"greenlet(run=None, parent=None)\n\
+Create a new greenlet object (without running it).  \"run\" is the\n\
+callable to invoke, and \"parent\" is the parent greenlet, which\n\
+defaults to the current greenlet.",		/* tp_doc */
  	0,					/* tp_traverse */
 	0,					/* tp_clear */
 	0,					/* tp_richcompare */
@@ -876,8 +879,11 @@
 }
 
 static PyMethodDef GreenMethods[] = {
-	{"getcurrent", (PyCFunction)mod_getcurrent, METH_NOARGS, /*XXX*/ NULL},
-	{NULL,     NULL}        /* Sentinel */
+	{"getcurrent", (PyCFunction)mod_getcurrent, METH_NOARGS,
+	"greenlet.getcurrent()\n\
+Returns the current greenlet (i.e. the one which called this\n\
+function)."},
+	{NULL,     NULL}	/* Sentinel */
 };
 
 static char* copy_on_greentype[] = {
@@ -887,6 +893,9 @@
 void initgreenlet(void)
 {
 	PyObject* m;
+	PyObject* greenletexit_doc;
+	PyObject* greenleterror_doc;
+	int error;
 	char** p;
 	_PyGreen_switchstack = g_switchstack;
 	_PyGreen_slp_switch = slp_switch;
@@ -902,10 +911,28 @@
 	PyExc_GreenletError = PyErr_NewException("greenlet.error", NULL, NULL);
 	if (PyExc_GreenletError == NULL)
 		return;
+	greenleterror_doc = PyString_FromString("internal greenlet error");
+	if (greenleterror_doc == NULL)
+		return;
+	error = PyObject_SetAttrString(
+		PyExc_GreenletError, "__doc__", greenleterror_doc);
+	Py_DECREF(greenleterror_doc);
+	if (error == -1)
+		return;
 	PyExc_GreenletExit = PyErr_NewException("greenlet.GreenletExit",
 						NULL, NULL);
 	if (PyExc_GreenletExit == NULL)
 		return;
+	greenletexit_doc = PyString_FromString("greenlet.GreenletExit\n\
+This special exception does not propagate to the parent greenlet; it\n\
+can be used to kill a single greenlet.\n");
+	if (greenletexit_doc == NULL)
+		return;
+	error = PyObject_SetAttrString(
+		PyExc_GreenletExit, "__doc__", greenletexit_doc);
+	Py_DECREF(greenletexit_doc);
+	if (error == -1)
+		return;
 
 	ts_current = green_create_main();
 	if (ts_current == NULL)
@@ -918,7 +945,7 @@
 	Py_INCREF(PyExc_GreenletExit);
 	PyModule_AddObject(m, "GreenletExit", PyExc_GreenletExit);
 
-        /* also publish module-level data as attributes of the greentype. */
+	/* also publish module-level data as attributes of the greentype. */
 	for (p=copy_on_greentype; *p; p++) {
 		PyObject* o = PyObject_GetAttrString(m, *p);
 		if (!o) continue;



More information about the pytest-commit mailing list