Introduce `_auto_document_object()` (#14084)

This commit is contained in:
Adam Turner authored and GitHub committed 2025-11-25 04:09:43 +00:00
1 parent adee28606f
commit 0f021c2a3e
4 files changed
+98 -107

No files matched your search

+9 -24
View File
@@ -3,13 +3,10 @@ from __future__ import annotations
from types import SimpleNamespace
from typing import TYPE_CHECKING
from docutils.statemachine import StringList
from sphinx.environment import _CurrentDocument
from sphinx.events import EventManager
from sphinx.ext.autodoc._directive_options import _process_documenter_options
from sphinx.ext.autodoc._generate import _generate_directives
from sphinx.ext.autodoc._loader import _load_object_by_name
from sphinx.ext.autodoc._generate import _auto_document_object
from sphinx.ext.autodoc._shared import _AutodocConfig
from sphinx.util.inspect import safe_getattr
@@ -65,34 +62,22 @@ def do_autodoc(
options=options,
)
props = _load_object_by_name(
content = _auto_document_object(
name=name,
objtype=obj_type,
current_document=current_document,
obj_type=obj_type,
config=config,
current_document=current_document,
events=events,
get_attr=safe_getattr,
more_content=None,
options=doc_options,
record_dependencies=set(),
ref_context=ref_context,
reread_always=reread_always,
)
if expect_import_error:
assert props is None
assert content is None
return []
assert props is not None
result = StringList()
_generate_directives(
config=config,
current_document=current_document,
events=events,
get_attr=safe_getattr,
indent='',
options=doc_options,
props=props,
record_dependencies=set(),
ref_context=ref_context,
reread_always=reread_always,
result=result,
)
return result.data
assert content is not None
return content.data
+7 -21
View File
@@ -14,7 +14,6 @@ from typing import TYPE_CHECKING
from warnings import catch_warnings
import pytest
from docutils.statemachine import StringList
from sphinx.environment import _CurrentDocument
from sphinx.ext.autodoc._directive_options import (
@@ -23,8 +22,7 @@ from sphinx.ext.autodoc._directive_options import (
)
from sphinx.ext.autodoc._docstrings import _get_docstring_lines
from sphinx.ext.autodoc._documenters import Documenter
from sphinx.ext.autodoc._generate import _generate_directives
from sphinx.ext.autodoc._loader import _load_object_by_name
from sphinx.ext.autodoc._generate import _auto_document_object
from sphinx.ext.autodoc._property_types import _ItemProperties
from sphinx.ext.autodoc._sentinels import ALL
from sphinx.ext.autodoc._shared import _AutodocAttrGetter, _AutodocConfig
@@ -217,31 +215,19 @@ def _assert_getter_works(
current_document = _CurrentDocument()
events = FakeEvents()
props = _load_object_by_name(
name=name,
objtype=objtype,
current_document=current_document,
_auto_document_object(
config=config,
current_document=current_document,
events=events,
get_attr=get_attr,
more_content=None,
name=name,
obj_type=objtype,
options=options,
record_dependencies=set(),
ref_context={},
reread_always=set(),
)
if props is not None:
_generate_directives(
config=config,
current_document=current_document,
events=events,
get_attr=get_attr,
indent='',
options=options,
props=props,
record_dependencies=set(),
ref_context={},
reread_always=set(),
result=StringList(),
)
hooked_members = {s[1] for s in getattr_spy}
documented_members = {s[1] for s in processed_signatures}