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

Reply via email to