diff options
author | Takeshi KOMIYA <i.tkomiya@gmail.com> | 2021-04-11 02:17:55 +0900 |
---|---|---|
committer | Takeshi KOMIYA <i.tkomiya@gmail.com> | 2021-04-11 02:17:55 +0900 |
commit | 1df14a4828dd99fbc89f21a93fe0b7a23bb53c60 (patch) | |
tree | 1beaad77502c75d53a0a1f0b9f659ecace81a504 | |
parent | fcb7d01422fa5fd7540f4ee1dcc2746bb0dec56e (diff) | |
parent | 43dc09175fb00b9bd9fa6ce31ea8082cfb85de91 (diff) | |
download | sphinx-git-1df14a4828dd99fbc89f21a93fe0b7a23bb53c60.tar.gz |
Merge branch '3.5.x' into 3.x
-rw-r--r-- | CHANGES | 7 | ||||
-rw-r--r-- | setup.py | 2 | ||||
-rw-r--r-- | sphinx/environment/adapters/toctree.py | 2 | ||||
-rw-r--r-- | sphinx/themes/basic/static/basic.css_t | 5 | ||||
-rw-r--r-- | sphinx/util/inspect.py | 14 | ||||
-rw-r--r-- | sphinx/writers/html.py | 7 | ||||
-rw-r--r-- | sphinx/writers/html5.py | 7 | ||||
-rw-r--r-- | tests/test_environment_toctree.py | 10 | ||||
-rw-r--r-- | tests/test_intl.py | 7 |
9 files changed, 44 insertions, 17 deletions
@@ -4,6 +4,8 @@ Release 3.5.4 (in development) Dependencies ------------ +* #9071: Restrict docutils to 0.16 + Incompatible changes -------------------- @@ -16,6 +18,11 @@ Features added Bugs fixed ---------- +* #9078: autodoc: Async staticmethods and classmethods are considered as non + async coroutine-functions with Python3.10 +* #8870: The style of toctree captions has been changed with docutils-0.17 +* #9001: The style of ``sidebar`` directive has been changed with docutils-0.17 + Testing -------- @@ -23,7 +23,7 @@ install_requires = [ 'sphinxcontrib-qthelp', 'Jinja2>=2.3', 'Pygments>=2.0', - 'docutils>=0.12', + 'docutils>=0.12,<0.17', 'snowballstemmer>=1.1', 'babel>=1.3', 'alabaster>=0.7,<0.8', diff --git a/sphinx/environment/adapters/toctree.py b/sphinx/environment/adapters/toctree.py index 93555d172..f0a37ab7f 100644 --- a/sphinx/environment/adapters/toctree.py +++ b/sphinx/environment/adapters/toctree.py @@ -237,7 +237,7 @@ class TocTree: newnode = addnodes.compact_paragraph('', '') caption = toctree.attributes.get('caption') if caption: - caption_node = nodes.caption(caption, '', *[nodes.Text(caption)]) + caption_node = nodes.title(caption, '', *[nodes.Text(caption)]) caption_node.line = toctree.line caption_node.source = toctree.source caption_node.rawsource = toctree['rawcaption'] diff --git a/sphinx/themes/basic/static/basic.css_t b/sphinx/themes/basic/static/basic.css_t index 3bb3ea705..5fc83c848 100644 --- a/sphinx/themes/basic/static/basic.css_t +++ b/sphinx/themes/basic/static/basic.css_t @@ -319,7 +319,8 @@ img.align-default, .figure.align-default { /* -- sidebars -------------------------------------------------------------- */ -div.sidebar { +div.sidebar, +aside.sidebar { margin: 0 0 0.5em 1em; border: 1px solid #ddb; padding: 7px; @@ -377,12 +378,14 @@ div.body p.centered { /* -- content of sidebars/topics/admonitions -------------------------------- */ div.sidebar > :last-child, +aside.sidebar > :last-child, div.topic > :last-child, div.admonition > :last-child { margin-bottom: 0; } div.sidebar::after, +aside.sidebar::after, div.topic::after, div.admonition::after, blockquote::after { diff --git a/sphinx/util/inspect.py b/sphinx/util/inspect.py index 5477e64f7..9fcd3df75 100644 --- a/sphinx/util/inspect.py +++ b/sphinx/util/inspect.py @@ -352,8 +352,18 @@ def isroutine(obj: Any) -> bool: def iscoroutinefunction(obj: Any) -> bool: """Check if the object is coroutine-function.""" - # unwrap staticmethod, classmethod and partial (except wrappers) - obj = unwrap_all(obj, stop=lambda o: hasattr(o, '__wrapped__')) + def iswrappedcoroutine(obj: Any) -> bool: + """Check if the object is wrapped coroutine-function.""" + if isstaticmethod(obj) or isclassmethod(obj) or ispartial(obj): + # staticmethod, classmethod and partial method are not a wrapped coroutine-function + # Note: Since 3.10, staticmethod and classmethod becomes a kind of wrappers + return False + elif hasattr(obj, '__wrapped__'): + return True + else: + return False + + obj = unwrap_all(obj, stop=iswrappedcoroutine) if hasattr(obj, '__code__') and inspect.iscoroutinefunction(obj): # check obj.__code__ because iscoroutinefunction() crashes for custom method-like # objects (see https://github.com/sphinx-doc/sphinx/issues/6605) diff --git a/sphinx/writers/html.py b/sphinx/writers/html.py index d3e7e03a4..b3364a68e 100644 --- a/sphinx/writers/html.py +++ b/sphinx/writers/html.py @@ -404,7 +404,12 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator): # overwritten def visit_title(self, node: Element) -> None: - super().visit_title(node) + if isinstance(node.parent, addnodes.compact_paragraph) and node.parent.get('toctree'): + self.body.append(self.starttag(node, 'p', '', CLASS='caption')) + self.body.append('<span class="caption-text">') + self.context.append('</span></p>\n') + else: + super().visit_title(node) self.add_secnumber(node) self.add_fignumber(node.parent) if isinstance(node.parent, nodes.table): diff --git a/sphinx/writers/html5.py b/sphinx/writers/html5.py index 5666e4d02..bdaffe140 100644 --- a/sphinx/writers/html5.py +++ b/sphinx/writers/html5.py @@ -355,7 +355,12 @@ class HTML5Translator(SphinxTranslator, BaseTranslator): # overwritten def visit_title(self, node: Element) -> None: - super().visit_title(node) + if isinstance(node.parent, addnodes.compact_paragraph) and node.parent.get('toctree'): + self.body.append(self.starttag(node, 'p', '', CLASS='caption')) + self.body.append('<span class="caption-text">') + self.context.append('</span></p>\n') + else: + super().visit_title(node) self.add_secnumber(node) self.add_fignumber(node.parent) if isinstance(node.parent, nodes.table): diff --git a/tests/test_environment_toctree.py b/tests/test_environment_toctree.py index 41b3f727c..85a98b61b 100644 --- a/tests/test_environment_toctree.py +++ b/tests/test_environment_toctree.py @@ -10,7 +10,7 @@ import pytest from docutils import nodes -from docutils.nodes import bullet_list, caption, comment, list_item, reference +from docutils.nodes import bullet_list, comment, list_item, reference, title from sphinx import addnodes from sphinx.addnodes import compact_paragraph, only @@ -211,7 +211,7 @@ def test_get_toctree_for(app): app.build() toctree = TocTree(app.env).get_toctree_for('index', app.builder, collapse=False) assert_node(toctree, - [compact_paragraph, ([caption, "Table of Contents"], + [compact_paragraph, ([title, "Table of Contents"], bullet_list, bullet_list, bullet_list)]) @@ -251,7 +251,7 @@ def test_get_toctree_for_collapse(app): app.build() toctree = TocTree(app.env).get_toctree_for('index', app.builder, collapse=True) assert_node(toctree, - [compact_paragraph, ([caption, "Table of Contents"], + [compact_paragraph, ([title, "Table of Contents"], bullet_list, bullet_list, bullet_list)]) @@ -283,7 +283,7 @@ def test_get_toctree_for_maxdepth(app): toctree = TocTree(app.env).get_toctree_for('index', app.builder, collapse=False, maxdepth=3) assert_node(toctree, - [compact_paragraph, ([caption, "Table of Contents"], + [compact_paragraph, ([title, "Table of Contents"], bullet_list, bullet_list, bullet_list)]) @@ -329,7 +329,7 @@ def test_get_toctree_for_includehidden(app): toctree = TocTree(app.env).get_toctree_for('index', app.builder, collapse=False, includehidden=False) assert_node(toctree, - [compact_paragraph, ([caption, "Table of Contents"], + [compact_paragraph, ([title, "Table of Contents"], bullet_list, bullet_list)]) diff --git a/tests/test_intl.py b/tests/test_intl.py index 3a704fd7d..0e4387025 100644 --- a/tests/test_intl.py +++ b/tests/test_intl.py @@ -622,11 +622,8 @@ def test_html_meta(app): assert expected_expr in result expected_expr = '<meta content="I18N, SPHINX, MARKUP" name="keywords" />' assert expected_expr in result - if docutils.__version_info__ < (0, 17): - expected_expr = '<p class="caption"><span class="caption-text">HIDDEN TOC</span></p>' - assert expected_expr in result - else: - expected_expr = '<p><span class="caption-text">HIDDEN TOC</span></p>' + expected_expr = '<p class="caption"><span class="caption-text">HIDDEN TOC</span></p>' + assert expected_expr in result @sphinx_intl |