From 912f982e064b73bee1ae56601f926059efe8c4af Mon Sep 17 00:00:00 2001 From: Pey Lian Lim <2090236+pllim@users.noreply.github.com> Date: Tue, 4 Nov 2025 12:00:24 -0500 Subject: [PATCH 1/2] Compatibility with Sphinx dev for autodoc attribute --- sphinx_automodapi/autodoc_enhancements.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/sphinx_automodapi/autodoc_enhancements.py b/sphinx_automodapi/autodoc_enhancements.py index 8350638..1254637 100644 --- a/sphinx_automodapi/autodoc_enhancements.py +++ b/sphinx_automodapi/autodoc_enhancements.py @@ -3,7 +3,7 @@ """ import dataclasses -from sphinx.ext.autodoc import AttributeDocumenter +from .utils import SPHINX_LT_8_3 __all__ = [] @@ -80,7 +80,12 @@ def setup(app): if 'app.add_directive' not in app.config.suppress_warnings: app.config.suppress_warnings.append('app.add_directive') try: - app.add_autodocumenter(AttributeDocumenter) + if SPHINX_LT_8_3: + from sphinx.ext.autodoc import AttributeDocumenter + app.add_autodocumenter(AttributeDocumenter) + else: + from sphinx.ext.autodoc.directive import AutodocDirective + app.add_directive('autoattribute', AutodocDirective) finally: app.config.suppress_warnings = suppress_warnings_orig From 3ebf7690422c490c60409f9267bf9b601a2dd285 Mon Sep 17 00:00:00 2001 From: Pey Lian Lim <2090236+pllim@users.noreply.github.com> Date: Tue, 4 Nov 2025 12:19:16 -0500 Subject: [PATCH 2/2] Try hacky way now --- sphinx_automodapi/autodoc_enhancements.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/sphinx_automodapi/autodoc_enhancements.py b/sphinx_automodapi/autodoc_enhancements.py index 1254637..74fb143 100644 --- a/sphinx_automodapi/autodoc_enhancements.py +++ b/sphinx_automodapi/autodoc_enhancements.py @@ -82,10 +82,19 @@ def setup(app): try: if SPHINX_LT_8_3: from sphinx.ext.autodoc import AttributeDocumenter - app.add_autodocumenter(AttributeDocumenter) + else: - from sphinx.ext.autodoc.directive import AutodocDirective - app.add_directive('autoattribute', AutodocDirective) + from sphinx.ext.autodoc._directive_options import annotation_option, bool_option + from sphinx.ext.autodoc._documenters import Documenter + + class AttributeDocumenter(Documenter): + """Specialized Documenter subclass for attributes.""" + objtype = 'attribute' + option_spec = dict(Documenter.option_spec) + option_spec['annotation'] = annotation_option + option_spec['no-value'] = bool_option + + app.add_autodocumenter(AttributeDocumenter) finally: app.config.suppress_warnings = suppress_warnings_orig