On Tue, Apr 21, 2009 at 3:33 PM, Robert Bradshaw <[email protected]> wrote: > On Apr 21, 2009, at 6:17 AM, Lisandro Dalcin wrote: > >> Robert, your main() implementation needs more work IMHO. > > Thanks for the feedback. I just did the basic embedding, as on David > McNab's site.
>>>import this ... Now is better than never. Although never is often better than *right* now. ... Or perhaps Cython should have its own Zen ;-) ??? > It would be good to have it behave more like python -m > http://trac.cython.org/cython_trac/ticket/291 > Mmm... I´m not sure python -m will be equivalent to your embeding... Py_Main() does a lot of things other thanInitialize() && SetArgv(), I do not remember right now, but IIRC some environ vars are inspected in Py_Main() > >> 1) For Py2, you need to if(PyErr_Occurred()) >> PyErr_WriteUnraisable(PyErr_Occurred()). > > Actually, it might be nice to dump the whole traceback here. > OK, of course... you want the equivalent to "import traceback; traceback.print_exc()". I do not remember right now if there is a direct C-API call for this. >> 2) In Py3, you have to save the return of PyInit_<modname>, if NULL, >> report error (WriteUnraisable again?), if not, decref it. > > Is PyErr_Occurred not a good enough check here? Yes, I should > probably get and decref the module (though it won't matter much as I > call Py_Finalize next. > Well, I would ask to maintain Cython-generated code valgrind-friendly if possible :-) >> 3) In case of errors, process return value should match what core >> CPython returns en case of unhandled execptions. > > Do you know of a good list? (Otherwise, I'll just try some.) > Do not remember right now, but I rememberd "-1" as a hard-wired return value in core CPython (likely in pythonrun.c). >> 3) However, a SystemExit exceptions should need some special >> consideration, as you should extract the process return value from it, >> as it could be 0 (zero). > > Good point. > In short, I would check for SystemExit and honor its return code, or just return "-1" > - Robert > _______________________________________________ > Cython-dev mailing list > [email protected] > http://codespeak.net/mailman/listinfo/cython-dev > -- Lisandro Dalcín --------------- Centro Internacional de Métodos Computacionales en Ingeniería (CIMEC) Instituto de Desarrollo Tecnológico para la Industria Química (INTEC) Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET) PTLC - Güemes 3450, (3000) Santa Fe, Argentina Tel/Fax: +54-(0)342-451.1594 _______________________________________________ Cython-dev mailing list [email protected] http://codespeak.net/mailman/listinfo/cython-dev
