diff options
Diffstat (limited to 'sphinx/ext/autodoc/__init__.py')
-rw-r--r-- | sphinx/ext/autodoc/__init__.py | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/sphinx/ext/autodoc/__init__.py b/sphinx/ext/autodoc/__init__.py index 2abe41234..2410ccec3 100644 --- a/sphinx/ext/autodoc/__init__.py +++ b/sphinx/ext/autodoc/__init__.py @@ -2528,7 +2528,6 @@ class PropertyDocumenter(DocstringStripSignatureMixin, ClassLevelDocumenter): # Specialized Documenter subclass for properties. """ objtype = 'property' - directivetype = 'method' member_order = 60 # before AttributeDocumenter @@ -2551,7 +2550,20 @@ class PropertyDocumenter(DocstringStripSignatureMixin, ClassLevelDocumenter): # sourcename = self.get_sourcename() if inspect.isabstractmethod(self.object): self.add_line(' :abstractmethod:', sourcename) - self.add_line(' :property:', sourcename) + + if safe_getattr(self.object, 'fget', None): + try: + signature = inspect.signature(self.object.fget, + type_aliases=self.config.autodoc_type_aliases) + if signature.return_annotation is not Parameter.empty: + objrepr = stringify_typehint(signature.return_annotation) + self.add_line(' :type: ' + objrepr, sourcename) + except TypeError as exc: + logger.warning(__("Failed to get a function signature for %s: %s"), + self.fullname, exc) + return None + except ValueError: + raise class NewTypeAttributeDocumenter(AttributeDocumenter): |