Merge pull request #8488 from tk0miya/deprecate_InstanceAttributeDecorator

refactor: Deprecate InstanceAttributeDocumenter
This commit is contained in:
Takeshi KOMIYA 2020-11-26 20:13:03 +09:00 committed by GitHub
commit e6e23aa45b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 15 additions and 39 deletions

View File

@ -16,6 +16,7 @@ Deprecated
* The ``follow_wrapped`` argument of ``sphinx.util.inspect.signature()`` * The ``follow_wrapped`` argument of ``sphinx.util.inspect.signature()``
* ``sphinx.ext.autodoc.Documenter.get_object_members()`` * ``sphinx.ext.autodoc.Documenter.get_object_members()``
* ``sphinx.ext.autodoc.DataDeclarationDocumenter`` * ``sphinx.ext.autodoc.DataDeclarationDocumenter``
* ``sphinx.ext.autodoc.InstanceAttributeDocumenter``
* ``sphinx.ext.autodoc.SlotsAttributeDocumenter`` * ``sphinx.ext.autodoc.SlotsAttributeDocumenter``
* ``sphinx.ext.autodoc.TypeVarDocumenter`` * ``sphinx.ext.autodoc.TypeVarDocumenter``
* ``sphinx.ext.autodoc.importer._getannotations()`` * ``sphinx.ext.autodoc.importer._getannotations()``

View File

@ -41,6 +41,11 @@ The following is a list of deprecated interfaces.
- 5.0 - 5.0
- ``sphinx.ext.autodoc.DataDocumenter`` - ``sphinx.ext.autodoc.DataDocumenter``
* - ``sphinx.ext.autodoc.InstanceAttributeDocumenter``
- 3.4
- 5.0
- ``sphinx.ext.autodoc.AttributeDocumenter``
* - ``sphinx.ext.autodoc.SlotsAttributeDocumenter`` * - ``sphinx.ext.autodoc.SlotsAttributeDocumenter``
- 3.4 - 3.4
- 5.0 - 5.0

View File

@ -2337,37 +2337,10 @@ class InstanceAttributeDocumenter(AttributeDocumenter):
# must be higher than AttributeDocumenter # must be higher than AttributeDocumenter
priority = 11 priority = 11
@classmethod def __init__(self, *args: Any, **kwargs: Any) -> None:
def can_document_member(cls, member: Any, membername: str, isattr: bool, parent: Any warnings.warn("%s is deprecated." % self.__class__.__name__,
) -> bool: RemovedInSphinx50Warning, stacklevel=2)
"""This documents only INSTANCEATTR members.""" super().__init__(*args, **kwargs)
return (not isinstance(parent, ModuleDocumenter) and
isattr and
member is INSTANCEATTR)
def import_parent(self) -> Any:
try:
parent = importlib.import_module(self.modname)
for name in self.objpath[:-1]:
parent = self.get_attr(parent, name)
return parent
except (ImportError, AttributeError):
return None
def import_object(self, raiseerror: bool = False) -> bool:
"""Never import anything."""
# disguise as an attribute
self.objtype = 'attribute'
self.object = INSTANCEATTR
self.parent = self.import_parent()
self._datadescriptor = False
return True
def add_content(self, more_content: Optional[StringList], no_docstring: bool = False
) -> None:
"""Never try to get a docstring from the object."""
super().add_content(more_content, no_docstring=True)
class SlotsAttributeDocumenter(AttributeDocumenter): class SlotsAttributeDocumenter(AttributeDocumenter):
@ -2441,7 +2414,6 @@ def setup(app: Sphinx) -> Dict[str, Any]:
app.add_autodocumenter(MethodDocumenter) app.add_autodocumenter(MethodDocumenter)
app.add_autodocumenter(AttributeDocumenter) app.add_autodocumenter(AttributeDocumenter)
app.add_autodocumenter(PropertyDocumenter) app.add_autodocumenter(PropertyDocumenter)
app.add_autodocumenter(InstanceAttributeDocumenter)
app.add_autodocumenter(NewTypeAttributeDocumenter) app.add_autodocumenter(NewTypeAttributeDocumenter)
app.add_config_value('autoclass_content', 'class', True, ENUM('both', 'class', 'init')) app.add_config_value('autoclass_content', 'class', True, ENUM('both', 'class', 'init'))

View File

@ -88,16 +88,14 @@ def setup_documenters(app: Any) -> None:
from sphinx.ext.autodoc import (AttributeDocumenter, ClassDocumenter, DataDocumenter, from sphinx.ext.autodoc import (AttributeDocumenter, ClassDocumenter, DataDocumenter,
DecoratorDocumenter, ExceptionDocumenter, DecoratorDocumenter, ExceptionDocumenter,
FunctionDocumenter, GenericAliasDocumenter, FunctionDocumenter, GenericAliasDocumenter,
InstanceAttributeDocumenter, MethodDocumenter, MethodDocumenter, ModuleDocumenter,
ModuleDocumenter, NewTypeAttributeDocumenter, NewTypeAttributeDocumenter, NewTypeDataDocumenter,
NewTypeDataDocumenter, PropertyDocumenter, PropertyDocumenter, SingledispatchFunctionDocumenter)
SingledispatchFunctionDocumenter)
documenters = [ documenters = [
ModuleDocumenter, ClassDocumenter, ExceptionDocumenter, DataDocumenter, ModuleDocumenter, ClassDocumenter, ExceptionDocumenter, DataDocumenter,
FunctionDocumenter, MethodDocumenter, NewTypeAttributeDocumenter, FunctionDocumenter, MethodDocumenter, NewTypeAttributeDocumenter,
NewTypeDataDocumenter, AttributeDocumenter, InstanceAttributeDocumenter, NewTypeDataDocumenter, AttributeDocumenter, DecoratorDocumenter, PropertyDocumenter,
DecoratorDocumenter, PropertyDocumenter, GenericAliasDocumenter, GenericAliasDocumenter, SingledispatchFunctionDocumenter,
SingledispatchFunctionDocumenter,
] # type: List[Type[Documenter]] ] # type: List[Type[Documenter]]
for documenter in documenters: for documenter in documenters:
app.registry.add_documenter(documenter.objtype, documenter) app.registry.add_documenter(documenter.objtype, documenter)