Hi all,

I'm forwarding this at the request of David Nemesky ("savior" on Freenode),
who I've been chatting with on the cython IRC channel. He was having
trouble signing up to the cython-devel mailing list, so I've gone ahead and
sent his bug report in for him. His report follows below.

Apparently this error happens under very specific circumstances, but I
managed to run into them. When wrapping a C++ class, Cython reports a
"'ClassName' redeclared" error, if:
- the name of the .pyx is the same as the name of the .pxd
- the name of the python class is the same as the name of the C++ class

Mismatch in either the file- or the class name results in a successful
compilation.

I have modified my fork of the cython-cpp-test repo to make the issue
easily reproducible. In https://github.com/DavidNemeskey/cython-cpp-test/,
try `python setup.py build_ext --inplace` (do not forget to delete all .cpp
and .so files between calls) in the following branches:
- cython_bug (diff file, diff class) -> OK
- diff_file_same_class -> OK
- same_file_diff_class -> OK
- same_file_same_class -> ERROR (https://bpaste.net/show/2c1af5fa5ee2)

Since Cython compiles xxx.pyx to xxx.cpp in this case, in order to avoid
problems with testclass.cpp being overwritten, I implemented the class in
testclass.hpp (in the original repo, there was a .h and a .cpp file).
However, implementing everything in the header is not a pre-requisite of
the bug, as is evident from branch same_file_same_class_diff_c.
_______________________________________________
cython-devel mailing list
cython-devel@python.org
https://mail.python.org/mailman/listinfo/cython-devel

Reply via email to