Commit 1316eb2d authored by Stefan Behnel's avatar Stefan Behnel

Add test for ticket #1888: mismatching argument names between .pxd and .pyx...

Add test for ticket #1888: mismatching argument names between .pxd and .pyx files are (not great but) actually ok, but the callers must always see the "public" pxd names, and the implementation must see and use the names given by the implementation.
parent f7af42b5
# node: run
# ticket: gh1888
PYTHON setup.py build_ext --inplace
PYTHON -c "import a; a.test()"
######## setup.py ########
from Cython.Build.Dependencies import cythonize
from distutils.core import setup
setup(
ext_modules=cythonize("a.pyx"),
)
######## a.pxd ########
cdef int do_stuff(int foo) except -1
######## a.pyx ########
cdef int do_stuff(int bar) except -1:
if bar == 0:
raise ValueError()
return bar
cdef call_do_stuff(int x):
# The keyword argument name is surprising, but actually correct.
# The caller signature is defined by the .pxd file, not the implementation.
return do_stuff(foo=x)
def test():
assert do_stuff(1) == 1
assert do_stuff(foo=1) == 1
assert call_do_stuff(1) == 1
try:
do_stuff(0)
except ValueError:
pass
else:
assert False, "exception not raised"
try:
call_do_stuff(0)
except ValueError:
pass
else:
assert False, "exception not raised"
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment