# mode: run try: from StringIO import StringIO except ImportError: from io import StringIO def test(int x): """ >>> test(5) 47 >>> test(11) 53 """ with nogil: f(x) x = g(x) return x cdef void f(int x) nogil: cdef int y y = x + 42 g(y) cdef int g(int x) nogil: cdef int y y = x + 42 return y cdef int with_gil_func() except 0 with gil: raise Exception("error!") cdef int nogil_func() nogil except 0: with_gil_func() def test_nogil_exception_propagation(): """ >>> test_nogil_exception_propagation() Traceback (most recent call last): ... Exception: error! """ with nogil: nogil_func() cdef int write_unraisable() nogil: with gil: raise ValueError() def test_unraisable(): """ >>> print(test_unraisable()) # doctest: +ELLIPSIS ValueError Exception...ignored... """ import sys old_stderr = sys.stderr stderr = sys.stderr = StringIO() try: write_unraisable() finally: sys.stderr = old_stderr return stderr.getvalue().strip()