
I wish that there would be a 3rd option: ship C code generated by Cython *but* run Cython if this C code "looks" outdated, for example if building the C code fails with a compiler error.
So people using stable Python versions like Python 3.10 would not need Cython, but people testing the "next Python" (Python 3.11) would not have to manually removed generated C code.
--
In Fedora RPM packages of Python projects, we have to force manually running Cython. For example, the numpy package does: "rm PKG-INFO" with the comment: "Force re-cythonization (ifed for PKG-INFO presence in setup.py)". https://src.fedoraproject.org/rpms/numpy/blob/rawhide/f/numpy.spec#_107
In my pythonci project, I use a worse hack, I search for generated C files and remove them manually with this shell command:
rm -f -v $(grep -rl '/\* Generated by Cython') PKG-INFO
This command searchs for the pattern "/* Generated by Cython".
Victor