[py-dev] greenlet.main_greenlet

Tom Locke tom at livelogix.com
Tue May 17 06:45:26 CEST 2005


Hi,

I had a need to be able to test if the current greenlet was the main 
greenlet. I figured this might be something that crops up now and again, 
so I added a module attribute `main_greeenlet` (also copied to the type 
object), so I can just test for:

    greenlet.getcurrent() == greenlet.main_greenlet

There's two small changes to greenlet.c (see diff)

Tom

Index: greenlet.c
===================================================================
--- greenlet.c  (revision 12401)
+++ greenlet.c  (working copy)
@@ -758,7 +758,7 @@
 };

 static char* copy_on_greentype[] = {
-       "getcurrent", "error", "GreenletExit", NULL
+       "getcurrent", "error", "GreenletExit", "main_greenlet", NULL
 };

 void initgreenlet(void)
@@ -787,6 +787,8 @@
        if (ts_current == NULL)
                return;

+       Py_INCREF(ts_current);
+       PyModule_AddObject(m, "main_greenlet", (PyObject*)ts_current);
        Py_INCREF(&PyGreen_Type);
        PyModule_AddObject(m, "greenlet", (PyObject*) &PyGreen_Type);
        Py_INCREF(PyExc_GreenletError);




More information about the Pytest-dev mailing list