autodoc does not recognize Cython property as such
#7 448 ouverte le 9 avr. 2020
Métriques du dépôt
- Stars
- (5 625 stars)
- Métriques de merge PR
- (Merge moyen 10j 11h) (11 PRs mergées en 30 j)
Description
Because of implementation details, @property of Cython extension types are not the same as created by the builtin property function. For this reason, autodoc doesn't seem to be able to recognize these descriptor as such.
To Reproduce
First create a sample Cython module with the mentioned elements:
getter = property # bypass Cython property hijack
setter = lambda fset: property(fset=fset, doc=fset.__doc__) # noqa
cdef class Spam:
@property
def foo(self) -> int: return 42
@getter
def bar(self) -> float: return 6.9
@setter
def baz(self, value: bool) -> None: pass
as well as a setup.py for compilation
from distutils.core import setup
from Cython.Build import cythonize
setup(name='autospam',
ext_modules=cythonize('cyspam.pyx',
compiler_directives={'binding': True}))
Use pip install . to install and cyspam should be importable.
Now if we create a sample project with the following content (I was a bit lazy to think of the documentations for the properties):
.. autoclass:: cyspam.Spam
:undoc-members:
the rendered HTML looks like this:

Expected behavior
It is expected that foo shows up as a property as well.
Sample project
Environment info
- OS: [e.g. Unix/Linux/Mac/Win/other with version]
- Python version: 3.7.7
- Sphinx version: 3.0.0
- Sphinx extensions: sphinx.ext.autodoc
- Extra tools: Cython