Hi all, since PEP 484 type annotations are scheduled for the next release now, I wonder if we should take the opportunity to change the defaults for the exception handling of typed cdef functions.
Currently, if you define a function like this: cdef int func(): raise ValueError() It will not actually raise the error but print and ignore it. In order to make it safe, you have to say cdef int func() except -1: raise ValueError() It has always been like this, but with PEP 484 type annotations, it becomes much nicer to keep Cython code Python compatible and actually running in Python, so that the following is safe when interpreted but not when compiled: @cython.cfunc def func(x: cython.int) -> cython.int: if x < 0: raise ValueError() return x * 2 Since this is new syntax, and no code exists yet that uses it, it would be safe to change the default here, and to automatically declare this function as "except? -MIN_INT", for example. The same applies to functions returning pointers ("except? NULL") or even structs, which could be declared "except *". This would lead to inconsistencies within Cython, but I think the use case of Python compatible behaviour is important enough to consider this, and for code using this syntax, it also feels less likely that the caller is actual C code that couldn't handle that exception. Opinions? Stefan _______________________________________________ cython-devel mailing list cython-devel@python.org https://mail.python.org/mailman/listinfo/cython-devel