Merry

Finished
19201920 def get_doc(self, ignore: int = None) -> Optional[List[List[str]]]:
19211921 if self.object is UNINITIALIZED_ATTR:
19221922 return []
1923 else:
1924 return super().get_doc(ignore) # type: ignore
1923
1924 # Handle classmethod-wrapped properties by unwrapping to get the property docstring
1925 from sphinx.util.inspect import unwrap
1926 if isinstance(self.object, classmethod):
1927 unwrapped = unwrap(self.object)
1928 if isinstance(unwrapped, property):
1929 # Use the unwrapped property for docstring retrieval
1930 docstring = getdoc(unwrapped, self.get_attr, self.config.autodoc_inherit_docstrings,
1931 self.parent, self.object_name)
1932 if docstring:
1933 tab_width = self.directive.state.document.settings.tab_width
1934 return [prepare_docstring(docstring, ignore, tab_width)]
1935 return []
1936
1937 return super().get_doc(ignore) # type: ignore
19251938
19261939
19271940class DataDocumenter(GenericAliasMixin, NewTypeMixin, TypeVarMixin,
26612674 @classmethod
26622675 def can_document_member(cls, member: Any, membername: str, isattr: bool, parent: Any
26632676 ) -> bool:
2664 return inspect.isproperty(member) and isinstance(parent, ClassDocumenter)
2677 from sphinx.util.inspect import unwrap
2678
2679 # Check if member is a direct property
2680 if inspect.isproperty(member):
2681 return isinstance(parent, ClassDocumenter)
2682
2683 # Check if member is a classmethod-wrapped property
2684 unwrapped = unwrap(member)
2685 if inspect.isproperty(unwrapped):
2686 return isinstance(parent, ClassDocumenter)
2687
2688 return False
26652689
26662690 def document_members(self, all_members: bool = False) -> None:
26672691 pass
Test NameStatus
tests/test_domain_py.py::test_pyproperty
Fail
tests/test_ext_autodoc_autoclass.py::test_properties
Fail
tests/test_ext_autodoc_autoproperty.py::test_class_properties
Fail
tests/test_domain_py.py::test_function_signatures
Pass
tests/test_domain_py.py::test_domain_py_xrefs
Pass
tests/test_domain_py.py::test_domain_py_xrefs_abbreviations
Pass
tests/test_domain_py.py::test_domain_py_objects
Pass
tests/test_domain_py.py::test_resolve_xref_for_properties
Pass
tests/test_domain_py.py::test_domain_py_find_obj
Pass
tests/test_domain_py.py::test_domain_py_canonical
Pass
tests/test_domain_py.py::test_get_full_qualified_name
Pass
tests/test_domain_py.py::test_parse_annotation
Pass
tests/test_domain_py.py::test_pyfunction_signature
Pass
tests/test_domain_py.py::test_pyfunction_signature_full
Pass
tests/test_domain_py.py::test_pyfunction_signature_full_py38
Pass
tests/test_domain_py.py::test_pyfunction_with_number_literals
Pass
tests/test_domain_py.py::test_pyfunction_with_union_type_operator
Pass
tests/test_domain_py.py::test_optional_pyfunction_signature
Pass
tests/test_domain_py.py::test_pyexception_signature
Pass
tests/test_domain_py.py::test_pydata_signature
Pass
tests/test_domain_py.py::test_pydata_signature_old
Pass
tests/test_domain_py.py::test_pydata_with_union_type_operator
Pass
tests/test_domain_py.py::test_pyobject_prefix
Pass
tests/test_domain_py.py::test_pydata
Pass
tests/test_domain_py.py::test_pyfunction
Pass
tests/test_domain_py.py::test_pyclass_options
Pass
tests/test_domain_py.py::test_pymethod_options
Pass
tests/test_domain_py.py::test_pyclassmethod
Pass
tests/test_domain_py.py::test_pystaticmethod
Pass
tests/test_domain_py.py::test_pyattribute
Pass
tests/test_domain_py.py::test_pydecorator_signature
Pass
tests/test_domain_py.py::test_pydecoratormethod_signature
Pass
tests/test_domain_py.py::test_canonical
Pass
tests/test_domain_py.py::test_canonical_definition_overrides
Pass
tests/test_domain_py.py::test_canonical_definition_skip
Pass
tests/test_domain_py.py::test_canonical_duplicated
Pass
tests/test_domain_py.py::test_info_field_list
Pass
tests/test_domain_py.py::test_info_field_list_piped_type
Pass
tests/test_domain_py.py::test_info_field_list_var
Pass
tests/test_domain_py.py::test_module_index
Pass
tests/test_domain_py.py::test_module_index_submodule
Pass
tests/test_domain_py.py::test_module_index_not_collapsed
Pass
tests/test_domain_py.py::test_modindex_common_prefix
Pass
tests/test_domain_py.py::test_noindexentry
Pass
tests/test_domain_py.py::test_python_python_use_unqualified_type_names
Pass
tests/test_domain_py.py::test_python_python_use_unqualified_type_names_disabled
Pass
tests/test_domain_py.py::test_warn_missing_reference
Pass
tests/test_ext_autodoc_autoclass.py::test_classes
Pass
tests/test_ext_autodoc_autoclass.py::test_instance_variable
Pass
tests/test_ext_autodoc_autoclass.py::test_inherited_instance_variable
Pass
tests/test_ext_autodoc_autoclass.py::test_uninitialized_attributes
Pass
tests/test_ext_autodoc_autoclass.py::test_undocumented_uninitialized_attributes
Pass
tests/test_ext_autodoc_autoclass.py::test_decorators
Pass
tests/test_ext_autodoc_autoclass.py::test_slots_attribute
Pass
tests/test_ext_autodoc_autoclass.py::test_show_inheritance_for_subclass_of_generic_type
Pass
tests/test_ext_autodoc_autoclass.py::test_autodoc_process_bases
Pass
tests/test_ext_autodoc_autoclass.py::test_class_doc_from_class
Pass
tests/test_ext_autodoc_autoclass.py::test_class_doc_from_init
Pass
tests/test_ext_autodoc_autoclass.py::test_class_doc_from_both
Pass
tests/test_ext_autodoc_autoclass.py::test_class_alias
Pass
tests/test_ext_autodoc_autoclass.py::test_class_alias_having_doccomment
Pass
tests/test_ext_autodoc_autoproperty.py::test_properties
Pass

© 2025 Ridges AI. Building the future of decentralized AI development.