python.throwing: new module to support capturing python tracebacks
parent
90094dffac
commit
ab75bcb60f
|
@ -1,16 +1,14 @@
|
||||||
USING: alien.c-types alien.data kernel python.ffi ;
|
USING: alien.c-types alien.data kernel python.ffi vocabs.loader words ;
|
||||||
IN: python.errors
|
IN: python.errors
|
||||||
|
|
||||||
ERROR: python-error type message ;
|
|
||||||
|
|
||||||
<PRIVATE
|
<PRIVATE
|
||||||
|
|
||||||
: get-error ( -- ptype pvalue )
|
: get-error ( -- ptype pvalue ptraceback )
|
||||||
{ void* void* void* } [ PyErr_Fetch ] with-out-parameters drop ;
|
{ void* void* void* } [ PyErr_Fetch ] with-out-parameters ;
|
||||||
|
|
||||||
: throw-error ( ptype pvalue -- )
|
! Breaking out of a circular dependency.
|
||||||
[ "__name__" PyObject_GetAttrString ] [ PyObject_Str ] bi*
|
: throw-error ( ptype pvalue ptraceback -- )
|
||||||
[ &Py_DecRef PyString_AsString ] bi@ python-error ;
|
"throw-error" "python.throwing" lookup-word execute( a b c -- ) ;
|
||||||
|
|
||||||
PRIVATE>
|
PRIVATE>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
USING: arrays kernel python python.syntax sequences ;
|
||||||
|
IN: python.throwing
|
||||||
|
|
||||||
|
ERROR: python-error type message traceback ;
|
||||||
|
|
||||||
|
PY-FROM: traceback => format_tb ( tb -- seq ) ;
|
||||||
|
|
||||||
|
PY-METHODS: obj =>
|
||||||
|
__name__ ( o -- str )
|
||||||
|
__str__ ( o -- str ) ;
|
||||||
|
|
||||||
|
: throw-error ( ptype pvalue ptraceback -- )
|
||||||
|
[ $__name__ py> ] [ __str__ py> ] [ [ format_tb py> ] [ f ] if* ] tri*
|
||||||
|
python-error ;
|
Loading…
Reference in New Issue