couple

Finished
26912691 return None
26922692
26932693
2694class ClassMethodPropertyDocumenter(PropertyDocumenter):
2695 """
2696 Specialized Documenter subclass for classmethod properties (Python 3.9+).
2697
2698 Handles @classmethod@property combinations where a classmethod wraps a property.
2699 """
2700 objtype = 'classmethod_property'
2701 directivetype = 'property'
2702 member_order = 60
2703
2704 # before PropertyDocumenter
2705 priority = PropertyDocumenter.priority + 1
2706
2707 @classmethod
2708 def can_document_member(cls, member: Any, membername: str, isattr: bool, parent: Any
2709 ) -> bool:
2710 return inspect.isclassmethodproperty(member) and isinstance(parent, ClassDocumenter)
2711
2712 def import_object(self, raiseerror: bool = False) -> bool:
2713 ret = super().import_object(raiseerror)
2714 if ret:
2715 # For classmethod properties, we need to unwrap to get the actual property
2716 if inspect.isclassmethodproperty(self.object):
2717 self.object = self.object.__func__
2718 return ret
2719
2720 def add_directive_header(self, sig: str) -> None:
2721 super().add_directive_header(sig)
2722 sourcename = self.get_sourcename()
2723
2724 # Check if the original classmethod object is abstract
2725 original_obj = self.parent.__dict__.get(self.object_name, self.object)
2726 if inspect.isabstractmethod(original_obj):
2727 self.add_line(' :abstractmethod:', sourcename)
2728
2729 # Add classmethod indicator
2730 self.add_line(' :classmethod:', sourcename)
2731
2732 if safe_getattr(self.object, 'fget', None) and self.config.autodoc_typehints != 'none':
2733 try:
2734 signature = inspect.signature(self.object.fget,
2735 type_aliases=self.config.autodoc_type_aliases)
2736 if signature.return_annotation is not Parameter.empty:
2737 objrepr = stringify_typehint(signature.return_annotation)
2738 self.add_line(' :type: ' + objrepr, sourcename)
2739 except TypeError as exc:
2740 logger.warning(__("Failed to get a function signature for %s: %s"),
2741 self.fullname, exc)
2742 return None
2743 except ValueError:
2744 return None
2745
2746
26942747class NewTypeAttributeDocumenter(AttributeDocumenter):
26952748 """
26962749 Specialized Documenter subclass for NewTypes.
27532806 app.add_autodocumenter(MethodDocumenter)
27542807 app.add_autodocumenter(AttributeDocumenter)
27552808 app.add_autodocumenter(PropertyDocumenter)
2809 app.add_autodocumenter(ClassMethodPropertyDocumenter)
27562810 app.add_autodocumenter(NewTypeAttributeDocumenter)
27572811
27582812 app.add_config_value('autoclass_content', 'class', True, ENUM('both', 'class', 'init'))
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.