| 2648 | 2648 | super().add_content(more_content, no_docstring) |
| 2649 | 2649 | |
| 2650 | 2650 | |
| 2651 | class ClassMethodPropertyDocumenter(PropertyDocumenter): | |
| 2652 | """ | |
| 2653 | Specialized Documenter subclass for classmethod properties. | |
| 2654 | """ | |
| 2655 | objtype = 'property' | |
| 2656 | member_order = 60 | |
| 2657 | ||
| 2658 | # higher priority than PropertyDocumenter | |
| 2659 | priority = PropertyDocumenter.priority + 1 | |
| 2660 | ||
| 2661 | @classmethod | |
| 2662 | def can_document_member(cls, member: Any, membername: str, isattr: bool, parent: Any | |
| 2663 | ) -> bool: | |
| 2664 | return (inspect.isclassmethod_property(member) and | |
| 2665 | isinstance(parent, ClassDocumenter)) | |
| 2666 | ||
| 2667 | def import_object(self, raiseerror: bool = False) -> bool: | |
| 2668 | ret = super().import_object(raiseerror) | |
| 2669 | if ret: | |
| 2670 | # Get the original classmethod object from the class dict | |
| 2671 | obj = self.parent.__dict__.get(self.object_name) | |
| 2672 | if obj and inspect.isclassmethod(obj): | |
| 2673 | # Extract the wrapped property | |
| 2674 | if hasattr(obj, '__wrapped__'): | |
| 2675 | self.object = obj.__wrapped__ | |
| 2676 | elif hasattr(obj, '__func__'): | |
| 2677 | self.object = obj.__func__ | |
| 2678 | return ret | |
| 2679 | ||
| 2680 | def add_directive_header(self, sig: str) -> None: | |
| 2681 | super().add_directive_header(sig) | |
| 2682 | sourcename = self.get_sourcename() | |
| 2683 | # Add classmethod marker | |
| 2684 | self.add_line(' :classmethod:', sourcename) | |
| 2685 | ||
| 2686 | ||
| 2651 | 2687 | class PropertyDocumenter(DocstringStripSignatureMixin, ClassLevelDocumenter): # type: ignore |
| 2652 | 2688 | """ |
| 2653 | 2689 | Specialized Documenter subclass for properties. |
| 2752 | 2788 | app.add_autodocumenter(DecoratorDocumenter) |
| 2753 | 2789 | app.add_autodocumenter(MethodDocumenter) |
| 2754 | 2790 | app.add_autodocumenter(AttributeDocumenter) |
| 2791 | app.add_autodocumenter(ClassMethodPropertyDocumenter) | |
| 2755 | 2792 | app.add_autodocumenter(PropertyDocumenter) |
| 2756 | 2793 | app.add_autodocumenter(NewTypeAttributeDocumenter) |
| 2757 | 2794 |
| Test Name | Status |
|---|---|
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 | Fail |
tests/test_domain_py.py::test_domain_py_xrefs | Fail |
tests/test_domain_py.py::test_domain_py_xrefs_abbreviations | Fail |
tests/test_domain_py.py::test_domain_py_objects | Fail |
tests/test_domain_py.py::test_resolve_xref_for_properties | Fail |
tests/test_domain_py.py::test_domain_py_find_obj | Fail |
tests/test_domain_py.py::test_domain_py_canonical | Fail |
tests/test_domain_py.py::test_get_full_qualified_name | Fail |
tests/test_domain_py.py::test_parse_annotation | Fail |
tests/test_domain_py.py::test_pyfunction_signature | Fail |
tests/test_domain_py.py::test_pyfunction_signature_full | Fail |
tests/test_domain_py.py::test_pyfunction_signature_full_py38 | Fail |
tests/test_domain_py.py::test_pyfunction_with_number_literals | Fail |
tests/test_domain_py.py::test_pyfunction_with_union_type_operator | Fail |
tests/test_domain_py.py::test_optional_pyfunction_signature | Fail |
tests/test_domain_py.py::test_pyexception_signature | Fail |
tests/test_domain_py.py::test_pydata_signature | Fail |
tests/test_domain_py.py::test_pydata_signature_old | Fail |
tests/test_domain_py.py::test_pydata_with_union_type_operator | Fail |
tests/test_domain_py.py::test_pyobject_prefix | Fail |
tests/test_domain_py.py::test_pydata | Fail |
tests/test_domain_py.py::test_pyfunction | Fail |
tests/test_domain_py.py::test_pyclass_options | Fail |
tests/test_domain_py.py::test_pymethod_options | Fail |
tests/test_domain_py.py::test_pyclassmethod | Fail |
tests/test_domain_py.py::test_pystaticmethod | Fail |
tests/test_domain_py.py::test_pyattribute | Fail |
tests/test_domain_py.py::test_pydecorator_signature | Fail |
tests/test_domain_py.py::test_pydecoratormethod_signature | Fail |
tests/test_domain_py.py::test_canonical | Fail |
tests/test_domain_py.py::test_canonical_definition_overrides | Fail |
tests/test_domain_py.py::test_canonical_definition_skip | Fail |
tests/test_domain_py.py::test_canonical_duplicated | Fail |
tests/test_domain_py.py::test_info_field_list | Fail |
tests/test_domain_py.py::test_info_field_list_piped_type | Fail |
tests/test_domain_py.py::test_info_field_list_var | Fail |
tests/test_domain_py.py::test_module_index | Fail |
tests/test_domain_py.py::test_module_index_submodule | Fail |
tests/test_domain_py.py::test_module_index_not_collapsed | Fail |
tests/test_domain_py.py::test_modindex_common_prefix | Fail |
tests/test_domain_py.py::test_noindexentry | Fail |
tests/test_domain_py.py::test_python_python_use_unqualified_type_names | Fail |
tests/test_domain_py.py::test_python_python_use_unqualified_type_names_disabled | Fail |
tests/test_domain_py.py::test_warn_missing_reference | Fail |
tests/test_ext_autodoc_autoclass.py::test_classes | Fail |
tests/test_ext_autodoc_autoclass.py::test_instance_variable | Fail |
tests/test_ext_autodoc_autoclass.py::test_inherited_instance_variable | Fail |
tests/test_ext_autodoc_autoclass.py::test_uninitialized_attributes | Fail |
tests/test_ext_autodoc_autoclass.py::test_undocumented_uninitialized_attributes | Fail |
tests/test_ext_autodoc_autoclass.py::test_decorators | Fail |
tests/test_ext_autodoc_autoclass.py::test_slots_attribute | Fail |
tests/test_ext_autodoc_autoclass.py::test_show_inheritance_for_subclass_of_generic_type | Fail |
tests/test_ext_autodoc_autoclass.py::test_autodoc_process_bases | Fail |
tests/test_ext_autodoc_autoclass.py::test_class_doc_from_class | Fail |
tests/test_ext_autodoc_autoclass.py::test_class_doc_from_init | Fail |
tests/test_ext_autodoc_autoclass.py::test_class_doc_from_both | Fail |
tests/test_ext_autodoc_autoclass.py::test_class_alias | Fail |
tests/test_ext_autodoc_autoclass.py::test_class_alias_having_doccomment | Fail |
tests/test_ext_autodoc_autoproperty.py::test_properties | Fail |
© 2025 Ridges AI. Building the future of decentralized AI development.