summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Turner <9087854+aa-turner@users.noreply.github.com>2023-02-17 22:11:14 +0000
committerAdam Turner <9087854+aa-turner@users.noreply.github.com>2023-02-18 01:58:05 +0000
commitc8f4a03daceef4470ddbc34d5879ffd01588a116 (patch)
treeb67cbca3c86b239e84e00b2ca5966e3c273ca18a
parent8de6638697b8c785f8022e1f526b549e74d033d1 (diff)
downloadsphinx-git-c8f4a03daceef4470ddbc34d5879ffd01588a116.tar.gz
Fix COM812
-rw-r--r--doc/development/tutorials/examples/autodoc_intenum.py2
-rw-r--r--doc/development/tutorials/examples/recipe.py4
-rw-r--r--sphinx/application.py12
-rw-r--r--sphinx/builders/__init__.py4
-rw-r--r--sphinx/builders/_epub_base.py12
-rw-r--r--sphinx/builders/changes.py2
-rw-r--r--sphinx/builders/epub3.py2
-rw-r--r--sphinx/builders/gettext.py4
-rw-r--r--sphinx/builders/html/__init__.py12
-rw-r--r--sphinx/builders/latex/__init__.py4
-rw-r--r--sphinx/builders/latex/transforms.py2
-rw-r--r--sphinx/builders/texinfo.py4
-rw-r--r--sphinx/cmd/build.py2
-rw-r--r--sphinx/cmd/quickstart.py8
-rw-r--r--sphinx/config.py2
-rw-r--r--sphinx/deprecation.py2
-rw-r--r--sphinx/directives/code.py20
-rw-r--r--sphinx/domains/__init__.py8
-rw-r--r--sphinx/domains/c.py22
-rw-r--r--sphinx/domains/changeset.py2
-rw-r--r--sphinx/domains/citation.py4
-rw-r--r--sphinx/domains/cpp.py58
-rw-r--r--sphinx/domains/javascript.py6
-rw-r--r--sphinx/domains/math.py4
-rw-r--r--sphinx/domains/python.py14
-rw-r--r--sphinx/domains/rst.py4
-rw-r--r--sphinx/domains/std.py18
-rw-r--r--sphinx/environment/__init__.py4
-rw-r--r--sphinx/environment/adapters/indexentries.py2
-rw-r--r--sphinx/environment/adapters/toctree.py2
-rw-r--r--sphinx/environment/collectors/toctree.py4
-rw-r--r--sphinx/errors.py2
-rw-r--r--sphinx/ext/apidoc.py4
-rw-r--r--sphinx/ext/autodoc/__init__.py42
-rw-r--r--sphinx/ext/autodoc/directive.py4
-rw-r--r--sphinx/ext/autodoc/importer.py2
-rw-r--r--sphinx/ext/autodoc/preserve_defaults.py2
-rw-r--r--sphinx/ext/autodoc/typehints.py6
-rw-r--r--sphinx/ext/autosummary/__init__.py4
-rw-r--r--sphinx/ext/autosummary/generate.py4
-rw-r--r--sphinx/ext/doctest.py6
-rw-r--r--sphinx/ext/extlinks.py2
-rw-r--r--sphinx/ext/graphviz.py6
-rw-r--r--sphinx/ext/imgconverter.py2
-rw-r--r--sphinx/ext/imgmath.py4
-rw-r--r--sphinx/ext/inheritance_diagram.py10
-rw-r--r--sphinx/ext/intersphinx.py19
-rw-r--r--sphinx/ext/napoleon/docstring.py26
-rw-r--r--sphinx/ext/todo.py2
-rw-r--r--sphinx/ext/viewcode.py2
-rw-r--r--sphinx/io.py2
-rw-r--r--sphinx/jinja2glue.py2
-rw-r--r--sphinx/pycode/__init__.py2
-rw-r--r--sphinx/pycode/ast.py2
-rw-r--r--sphinx/pycode/parser.py2
-rw-r--r--sphinx/pygments_styles.py2
-rw-r--r--sphinx/registry.py14
-rw-r--r--sphinx/roles.py2
-rw-r--r--sphinx/testing/util.py2
-rw-r--r--sphinx/transforms/__init__.py2
-rw-r--r--sphinx/transforms/i18n.py8
-rw-r--r--sphinx/transforms/post_transforms/__init__.py4
-rw-r--r--sphinx/util/docfields.py2
-rw-r--r--sphinx/util/docutils.py20
-rw-r--r--sphinx/util/i18n.py2
-rw-r--r--sphinx/util/images.py2
-rw-r--r--sphinx/util/inspect.py8
-rw-r--r--sphinx/util/jsdump.py2
-rw-r--r--sphinx/util/logging.py4
-rw-r--r--sphinx/util/nodes.py10
-rw-r--r--sphinx/util/osutil.py2
-rw-r--r--sphinx/util/parallel.py4
-rw-r--r--sphinx/util/template.py4
-rw-r--r--sphinx/util/typing.py4
-rw-r--r--sphinx/writers/_html4.py2
-rw-r--r--sphinx/writers/html5.py2
-rw-r--r--sphinx/writers/latex.py6
-rw-r--r--sphinx/writers/texinfo.py4
-rw-r--r--sphinx/writers/text.py6
-rw-r--r--tests/test_application.py2
-rw-r--r--tests/test_build_epub.py2
-rw-r--r--tests/test_build_html.py6
-rw-r--r--tests/test_build_latex.py12
-rw-r--r--tests/test_build_linkcheck.py32
-rw-r--r--tests/test_config.py6
-rw-r--r--tests/test_domain_cpp.py8
-rw-r--r--tests/test_domain_py.py12
-rw-r--r--tests/test_environment_indexentries.py2
-rw-r--r--tests/test_ext_apidoc.py2
-rw-r--r--tests/test_ext_autodoc.py54
-rw-r--r--tests/test_ext_autodoc_configs.py18
-rw-r--r--tests/test_ext_autosummary.py4
-rw-r--r--tests/test_ext_inheritance_diagram.py10
-rw-r--r--tests/test_ext_napoleon_docstring.py62
-rw-r--r--tests/test_ext_viewcode.py4
-rw-r--r--tests/test_intl.py18
-rw-r--r--tests/test_markup.py8
-rw-r--r--tests/test_quickstart.py4
-rw-r--r--tests/test_search.py6
-rw-r--r--tests/test_util_nodes.py6
-rw-r--r--utils/babel_runner.py2
101 files changed, 405 insertions, 402 deletions
diff --git a/doc/development/tutorials/examples/autodoc_intenum.py b/doc/development/tutorials/examples/autodoc_intenum.py
index 67955600f..6080ca4a5 100644
--- a/doc/development/tutorials/examples/autodoc_intenum.py
+++ b/doc/development/tutorials/examples/autodoc_intenum.py
@@ -31,7 +31,7 @@ class IntEnumDocumenter(ClassDocumenter):
def add_content(self,
more_content: StringList | None,
- no_docstring: bool = False
+ no_docstring: bool = False,
) -> None:
super().add_content(more_content, no_docstring)
diff --git a/doc/development/tutorials/examples/recipe.py b/doc/development/tutorials/examples/recipe.py
index 6bfd99900..c7ebf2a93 100644
--- a/doc/development/tutorials/examples/recipe.py
+++ b/doc/development/tutorials/examples/recipe.py
@@ -102,14 +102,14 @@ class RecipeDomain(Domain):
name = 'recipe'
label = 'Recipe Sample'
roles = {
- 'ref': XRefRole()
+ 'ref': XRefRole(),
}
directives = {
'recipe': RecipeDirective,
}
indices = {
RecipeIndex,
- IngredientIndex
+ IngredientIndex,
}
initial_data = {
'recipes': [], # object list
diff --git a/sphinx/application.py b/sphinx/application.py
index ac36b5ad6..334330c08 100644
--- a/sphinx/application.py
+++ b/sphinx/application.py
@@ -239,7 +239,7 @@ class Sphinx:
raise ConfigError(
__("'setup' as currently defined in conf.py isn't a Python callable. "
"Please modify its definition to make it a callable function. "
- "This is needed for conf.py to behave as a Sphinx extension.")
+ "This is needed for conf.py to behave as a Sphinx extension."),
)
# now that we know all config values, collect them from conf.py
@@ -380,7 +380,7 @@ class Sphinx:
logger.info('')
logger.info(self.builder.epilog % {
'outdir': relpath(self.outdir),
- 'project': self.config.project
+ 'project': self.config.project,
})
self.builder.cleanup()
@@ -778,7 +778,7 @@ class Sphinx:
"""
self.registry.add_role_to_domain(domain, name, role, override=override)
- def add_index_to_domain(self, domain: str, index: type[Index], override: bool = False
+ def add_index_to_domain(self, domain: str, index: type[Index], override: bool = False,
) -> None:
"""Register a custom index for a domain.
@@ -799,7 +799,7 @@ class Sphinx:
def add_object_type(self, directivename: str, rolename: str, indextemplate: str = '',
parse_node: Callable | None = None,
ref_nodeclass: type[TextElement] | None = None,
- objname: str = '', doc_field_types: list = [], override: bool = False
+ objname: str = '', doc_field_types: list = [], override: bool = False,
) -> None:
"""Register a new object type.
@@ -1142,7 +1142,7 @@ class Sphinx:
self.registry.add_documenter(cls.objtype, cls)
self.add_directive('auto' + cls.objtype, AutodocDirective, override=override)
- def add_autodoc_attrgetter(self, typ: type, getter: Callable[[Any, str, Any], Any]
+ def add_autodoc_attrgetter(self, typ: type, getter: Callable[[Any, str, Any], Any],
) -> None:
"""Register a new ``getattr``-like function for the autodoc extension.
@@ -1312,7 +1312,7 @@ class TemplateBridge:
self,
builder: Builder,
theme: Theme | None = None,
- dirs: list[str] | None = None
+ dirs: list[str] | None = None,
) -> None:
"""Called by the builder to initialize the template system.
diff --git a/sphinx/builders/__init__.py b/sphinx/builders/__init__.py
index 20ebfd7d9..bb02058f7 100644
--- a/sphinx/builders/__init__.py
+++ b/sphinx/builders/__init__.py
@@ -313,7 +313,7 @@ class Builder:
len(to_build))
def build(
- self, docnames: Iterable[str], summary: str | None = None, method: str = 'update'
+ self, docnames: Iterable[str], summary: str | None = None, method: str = 'update',
) -> None:
"""Main build method.
@@ -548,7 +548,7 @@ class Builder:
self,
build_docnames: Iterable[str],
updated_docnames: Sequence[str],
- method: str = 'update'
+ method: str = 'update',
) -> None:
if build_docnames is None or build_docnames == ['__all__']:
# build_all
diff --git a/sphinx/builders/_epub_base.py b/sphinx/builders/_epub_base.py
index ca1196770..a64e2fc6c 100644
--- a/sphinx/builders/_epub_base.py
+++ b/sphinx/builders/_epub_base.py
@@ -53,7 +53,7 @@ CSS_LINK_TARGET_CLASS = 'link-target'
# XXX These strings should be localized according to epub_language
GUIDE_TITLES = {
'toc': 'Table of Contents',
- 'cover': 'Cover'
+ 'cover': 'Cover',
}
MEDIA_TYPES = {
@@ -183,7 +183,7 @@ class EpubBuilder(StandaloneHTMLBuilder):
return id
def get_refnodes(
- self, doctree: Node, result: list[dict[str, Any]]
+ self, doctree: Node, result: list[dict[str, Any]],
) -> list[dict[str, Any]]:
"""Collect section titles, their depth in the toc and the refuri."""
# XXX: is there a better way than checking the attribute
@@ -198,7 +198,7 @@ class EpubBuilder(StandaloneHTMLBuilder):
result.append({
'level': level,
'refuri': html.escape(refuri),
- 'text': ssp(html.escape(doctree.astext()))
+ 'text': ssp(html.escape(doctree.astext())),
})
break
elif isinstance(doctree, nodes.Element):
@@ -241,19 +241,19 @@ class EpubBuilder(StandaloneHTMLBuilder):
'level': 1,
'refuri': html.escape(self.config.root_doc + self.out_suffix),
'text': ssp(html.escape(
- self.env.titles[self.config.root_doc].astext()))
+ self.env.titles[self.config.root_doc].astext())),
})
for file, text in reversed(self.config.epub_pre_files):
refnodes.insert(0, {
'level': 1,
'refuri': html.escape(file),
- 'text': ssp(html.escape(text))
+ 'text': ssp(html.escape(text)),
})
for file, text in self.config.epub_post_files:
refnodes.append({
'level': 1,
'refuri': html.escape(file),
- 'text': ssp(html.escape(text))
+ 'text': ssp(html.escape(text)),
})
def fix_fragment(self, prefix: str, fragment: str) -> str:
diff --git a/sphinx/builders/changes.py b/sphinx/builders/changes.py
index b8869c7a0..5c118bef9 100644
--- a/sphinx/builders/changes.py
+++ b/sphinx/builders/changes.py
@@ -128,7 +128,7 @@ class ChangesBuilder(Builder):
text = ''.join(hl(i + 1, line) for (i, line) in enumerate(lines))
ctx = {
'filename': self.env.doc2path(docname, False),
- 'text': text
+ 'text': text,
}
f.write(self.templates.render('changes/rstsource.html', ctx))
themectx = {'theme_' + key: val for (key, val) in
diff --git a/sphinx/builders/epub3.py b/sphinx/builders/epub3.py
index 9b01eec8a..03f4684d1 100644
--- a/sphinx/builders/epub3.py
+++ b/sphinx/builders/epub3.py
@@ -167,7 +167,7 @@ class Epub3Builder(_epub_base.EpubBuilder):
return {
'lang': html.escape(self.config.epub_language),
'toc_locale': html.escape(self.guide_titles['toc']),
- 'navlist': navlist
+ 'navlist': navlist,
}
def build_navigation_doc(self) -> None:
diff --git a/sphinx/builders/gettext.py b/sphinx/builders/gettext.py
index 4385f1318..09869a70f 100644
--- a/sphinx/builders/gettext.py
+++ b/sphinx/builders/gettext.py
@@ -82,7 +82,7 @@ class MsgOrigin:
class GettextRenderer(SphinxRenderer):
def __init__(
- self, template_path: str | None = None, outdir: str | None = None
+ self, template_path: str | None = None, outdir: str | None = None,
) -> None:
self.outdir = outdir
if template_path is None:
@@ -257,7 +257,7 @@ class MessageCatalogBuilder(I18nBuilder):
raise ThemeError(f'{template}: {exc!r}') from exc
def build(
- self, docnames: Iterable[str], summary: str | None = None, method: str = 'update'
+ self, docnames: Iterable[str], summary: str | None = None, method: str = 'update',
) -> None:
self._extract_from_template()
super().build(docnames, summary, method)
diff --git a/sphinx/builders/html/__init__.py b/sphinx/builders/html/__init__.py
index 81fac5870..0bfb594ab 100644
--- a/sphinx/builders/html/__init__.py
+++ b/sphinx/builders/html/__init__.py
@@ -63,7 +63,7 @@ DOMAIN_INDEX_TYPE = Tuple[
# list of (heading string, list of index entries) pairs.
List[Tuple[str, List[IndexEntry]]],
# whether sub-entries should start collapsed
- bool
+ bool,
]
@@ -102,7 +102,7 @@ class Stylesheet(str):
filename: str = None
priority: int = None
- def __new__(cls, filename: str, *args: str, priority: int = 500, **attributes: Any
+ def __new__(cls, filename: str, *args: str, priority: int = 500, **attributes: Any,
) -> Stylesheet:
self = str.__new__(cls, filename)
self.filename = filename
@@ -160,7 +160,7 @@ class BuildInfo:
raise ValueError(__('build info file is broken: %r') % exc) from exc
def __init__(
- self, config: Config = None, tags: Tags = None, config_categories: list[str] = []
+ self, config: Config = None, tags: Tags = None, config_categories: list[str] = [],
) -> None:
self.config_hash = ''
self.tags_hash = ''
@@ -586,7 +586,7 @@ class StandaloneHTMLBuilder(Builder):
try:
next = {
'link': self.get_relative_uri(docname, related[2]),
- 'title': self.render_partial(titles[related[2]])['title']
+ 'title': self.render_partial(titles[related[2]])['title'],
}
rellinks.append((related[2], next['title'], 'N', _('next')))
except KeyError:
@@ -595,7 +595,7 @@ class StandaloneHTMLBuilder(Builder):
try:
prev = {
'link': self.get_relative_uri(docname, related[1]),
- 'title': self.render_partial(titles[related[1]])['title']
+ 'title': self.render_partial(titles[related[1]])['title'],
}
rellinks.append((related[1], prev['title'], 'P', _('previous')))
except KeyError:
@@ -1041,7 +1041,7 @@ class StandaloneHTMLBuilder(Builder):
ctx['pageurl'] = None
def pathto(
- otheruri: str, resource: bool = False, baseuri: str = default_baseuri
+ otheruri: str, resource: bool = False, baseuri: str = default_baseuri,
) -> str:
if resource and '://' in otheruri:
# allow non-local resources given by scheme
diff --git a/sphinx/builders/latex/__init__.py b/sphinx/builders/latex/__init__.py
index 7aebdfcb8..4f948e367 100644
--- a/sphinx/builders/latex/__init__.py
+++ b/sphinx/builders/latex/__init__.py
@@ -325,7 +325,7 @@ class LaTeXBuilder(Builder):
self.context['wrapperclass'] = theme.wrapperclass
def assemble_doctree(
- self, indexfile: str, toctree_only: bool, appendices: list[str]
+ self, indexfile: str, toctree_only: bool, appendices: list[str],
) -> nodes.document:
self.docnames = set([indexfile] + appendices)
logger.info(darkgreen(indexfile) + " ", nonl=True)
@@ -437,7 +437,7 @@ class LaTeXBuilder(Builder):
'addtocaptions': r'\@iden',
'figurename': formats.get('figure', '').split('%s', 1),
'tablename': formats.get('table', '').split('%s', 1),
- 'literalblockname': formats.get('code-block', '').split('%s', 1)
+ 'literalblockname': formats.get('code-block', '').split('%s', 1),
}
if self.context['babel'] or self.context['polyglossia']:
diff --git a/sphinx/builders/latex/transforms.py b/sphinx/builders/latex/transforms.py
index 1d4529735..df678d91f 100644
--- a/sphinx/builders/latex/transforms.py
+++ b/sphinx/builders/latex/transforms.py
@@ -114,7 +114,7 @@ class ShowUrlsTransform(SphinxPostTransform):
raise ValueError(f'Failed to get a docname for source {source!r}!')
def create_footnote(
- self, uri: str, docname: str
+ self, uri: str, docname: str,
) -> tuple[nodes.footnote, nodes.footnote_reference]:
reference = nodes.reference('', nodes.Text(uri), refuri=uri, nolinkurl=True)
footnote = nodes.footnote(uri, auto=1, docname=docname)
diff --git a/sphinx/builders/texinfo.py b/sphinx/builders/texinfo.py
index d2ae72ef7..7076b5352 100644
--- a/sphinx/builders/texinfo.py
+++ b/sphinx/builders/texinfo.py
@@ -126,7 +126,7 @@ class TexinfoBuilder(Builder):
self.copy_image_files(targetname[:-5])
def assemble_doctree(
- self, indexfile: str, toctree_only: bool, appendices: list[str]
+ self, indexfile: str, toctree_only: bool, appendices: list[str],
) -> nodes.document:
self.docnames = set([indexfile] + appendices)
logger.info(darkgreen(indexfile) + " ", nonl=True)
@@ -198,7 +198,7 @@ class TexinfoBuilder(Builder):
def default_texinfo_documents(
- config: Config
+ config: Config,
) -> list[tuple[str, str, str, str, str, str, str]]:
""" Better default texinfo_documents settings. """
filename = make_filename_from_project(config.project)
diff --git a/sphinx/cmd/build.py b/sphinx/cmd/build.py
index 9fc061718..7b29a4672 100644
--- a/sphinx/cmd/build.py
+++ b/sphinx/cmd/build.py
@@ -28,7 +28,7 @@ from sphinx.util.osutil import abspath, ensuredir
def handle_exception(
- app: Sphinx | None, args: Any, exception: BaseException, stderr: TextIO = sys.stderr
+ app: Sphinx | None, args: Any, exception: BaseException, stderr: TextIO = sys.stderr,
) -> None:
if isinstance(exception, bdb.BdbQuit):
return
diff --git a/sphinx/cmd/quickstart.py b/sphinx/cmd/quickstart.py
index 0282eb827..626eb0b78 100644
--- a/sphinx/cmd/quickstart.py
+++ b/sphinx/cmd/quickstart.py
@@ -133,7 +133,7 @@ def ok(x: str) -> str:
def do_prompt(
- text: str, default: str | None = None, validator: Callable[[str], Any] = nonempty
+ text: str, default: str | None = None, validator: Callable[[str], Any] = nonempty,
) -> str | bool:
while True:
if default is not None:
@@ -269,7 +269,7 @@ def ask_user(d: dict[str, Any]) -> None:
'translate text that it generates into that language.\n'
'\n'
'For a list of supported codes, see\n'
- 'https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language.'
+ 'https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language.',
))
d['language'] = do_prompt(__('Project language'), 'en')
if d['language'] == 'en':
@@ -325,7 +325,7 @@ def ask_user(d: dict[str, Any]) -> None:
def generate(
- d: dict, overwrite: bool = True, silent: bool = False, templatedir: str | None = None
+ d: dict, overwrite: bool = True, silent: bool = False, templatedir: str | None = None,
) -> None:
"""Generate project based on values in *d*."""
template = QuickstartRenderer(templatedir or '')
@@ -462,7 +462,7 @@ def get_parser() -> argparse.ArgumentParser:
"\n"
"sphinx-quickstart is an interactive tool that asks some questions about your\n"
"project and then generates a complete documentation directory and sample\n"
- "Makefile to be used with sphinx-build.\n"
+ "Makefile to be used with sphinx-build.\n",
)
parser = argparse.ArgumentParser(
usage='%(prog)s [OPTIONS] <PROJECT_DIR>',
diff --git a/sphinx/config.py b/sphinx/config.py
index 7eb361b1a..81579c522 100644
--- a/sphinx/config.py
+++ b/sphinx/config.py
@@ -163,7 +163,7 @@ class Config:
@classmethod
def read(
- cls, confdir: str, overrides: dict | None = None, tags: Tags | None = None
+ cls, confdir: str, overrides: dict | None = None, tags: Tags | None = None,
) -> Config:
"""Create a Config object from configuration file."""
filename = path.join(confdir, CONFIG_FILENAME)
diff --git a/sphinx/deprecation.py b/sphinx/deprecation.py
index 2a4cf35e3..fbd5463cc 100644
--- a/sphinx/deprecation.py
+++ b/sphinx/deprecation.py
@@ -21,7 +21,7 @@ def _deprecation_warning(
attribute: str,
canonical_name: str,
*,
- remove: tuple[int, int]
+ remove: tuple[int, int],
) -> None:
"""Helper function for module-level deprecations using __getattr__
diff --git a/sphinx/directives/code.py b/sphinx/directives/code.py
index 5d54ef1a9..db8d7de71 100644
--- a/sphinx/directives/code.py
+++ b/sphinx/directives/code.py
@@ -51,7 +51,7 @@ class Highlight(SphinxDirective):
def dedent_lines(
- lines: list[str], dedent: int | None, location: tuple[str, int] | None = None
+ lines: list[str], dedent: int | None, location: tuple[str, int] | None = None,
) -> list[str]:
if dedent is None:
return textwrap.dedent(''.join(lines)).splitlines(True)
@@ -70,7 +70,7 @@ def dedent_lines(
def container_wrapper(
- directive: SphinxDirective, literal_node: Node, caption: str
+ directive: SphinxDirective, literal_node: Node, caption: str,
) -> nodes.container:
container_node = nodes.container('', literal_block=True,
classes=['literal-block-wrapper'])
@@ -207,7 +207,7 @@ class LiteralIncludeReader:
(option1, option2))
def read_file(
- self, filename: str, location: tuple[str, int] | None = None
+ self, filename: str, location: tuple[str, int] | None = None,
) -> list[str]:
try:
with open(filename, encoding=self.encoding, errors='strict') as f:
@@ -249,7 +249,7 @@ class LiteralIncludeReader:
return list(diff)
def pyobject_filter(
- self, lines: list[str], location: tuple[str, int] | None = None
+ self, lines: list[str], location: tuple[str, int] | None = None,
) -> list[str]:
pyobject = self.options.get('pyobject')
if pyobject:
@@ -269,7 +269,7 @@ class LiteralIncludeReader:
return lines
def lines_filter(
- self, lines: list[str], location: tuple[str, int] | None = None
+ self, lines: list[str], location: tuple[str, int] | None = None,
) -> list[str]:
linespec = self.options.get('lines')
if linespec:
@@ -295,7 +295,7 @@ class LiteralIncludeReader:
return lines
def start_filter(
- self, lines: list[str], location: tuple[str, int] | None = None
+ self, lines: list[str], location: tuple[str, int] | None = None,
) -> list[str]:
if 'start-at' in self.options:
start = self.options.get('start-at')
@@ -328,7 +328,7 @@ class LiteralIncludeReader:
return lines
def end_filter(
- self, lines: list[str], location: tuple[str, int] | None = None
+ self, lines: list[str], location: tuple[str, int] | None = None,
) -> list[str]:
if 'end-at' in self.options:
end = self.options.get('end-at')
@@ -357,7 +357,7 @@ class LiteralIncludeReader:
return lines
def prepend_filter(
- self, lines: list[str], location: tuple[str, int] | None = None
+ self, lines: list[str], location: tuple[str, int] | None = None,
) -> list[str]:
prepend = self.options.get('prepend')
if prepend:
@@ -366,7 +366,7 @@ class LiteralIncludeReader:
return lines
def append_filter(
- self, lines: list[str], location: tuple[str, int] | None = None
+ self, lines: list[str], location: tuple[str, int] | None = None,
) -> list[str]:
append = self.options.get('append')
if append:
@@ -375,7 +375,7 @@ class LiteralIncludeReader:
return lines
def dedent_filter(
- self, lines: list[str], location: tuple[str, int] | None = None
+ self, lines: list[str], location: tuple[str, int] | None = None,
) -> list[str]:
if 'dedent' in self.options:
return dedent_lines(lines, self.options.get('dedent'), location=location)
diff --git a/sphinx/domains/__init__.py b/sphinx/domains/__init__.py
index 00556201e..ac61b74f4 100644
--- a/sphinx/domains/__init__.py
+++ b/sphinx/domains/__init__.py
@@ -97,7 +97,7 @@ class Index(ABC):
self.domain = domain
@abstractmethod
- def generate(self, docnames: Iterable[str] | None = None
+ def generate(self, docnames: Iterable[str] | None = None,
) -> tuple[list[tuple[str, list[IndexEntry]]], bool]:
"""Get entries for the index.
@@ -262,7 +262,7 @@ class Domain:
fullname = f'{self.name}:{name}'
def role_adapter(typ: str, rawtext: str, text: str, lineno: int,
- inliner: Inliner, options: dict = {}, content: list[str] = []
+ inliner: Inliner, options: dict = {}, content: list[str] = [],
) -> tuple[list[Node], list[system_message]]:
return self.roles[name](fullname, rawtext, text, lineno,
inliner, options, content)
@@ -317,7 +317,7 @@ class Domain:
pass
def resolve_xref(self, env: BuildEnvironment, fromdocname: str, builder: Builder,
- typ: str, target: str, node: pending_xref, contnode: Element
+ typ: str, target: str, node: pending_xref, contnode: Element,
) -> Element | None:
"""Resolve the pending_xref *node* with the given *typ* and *target*.
@@ -335,7 +335,7 @@ class Domain:
pass
def resolve_any_xref(self, env: BuildEnvironment, fromdocname: str, builder: Builder,
- target: str, node: pending_xref, contnode: Element
+ target: str, node: pending_xref, contnode: Element,
) -> list[tuple[str, Element]]:
"""Resolve the pending_xref *node* with the given *target*.
diff --git a/sphinx/domains/c.py b/sphinx/domains/c.py
index e759dd0fd..8a019206c 100644
--- a/sphinx/domains/c.py
+++ b/sphinx/domains/c.py
@@ -84,7 +84,7 @@ _expression_bin_ops = [
['<<', '>>'],
['+', '-'],
['*', '/', '%'],
- ['.*', '->*']
+ ['.*', '->*'],
]
_expression_unary_ops = ["++", "--", "*", "&", "+", "-", "!", "not", "~", "compl"]
_expression_assignment_ops = ["=", "*=", "/=", "%=", "+=", "-=",
@@ -1766,7 +1766,7 @@ class Symbol:
ancestorLookupType: str | None,
matchSelf: bool,
recurseInAnon: bool,
- searchInSiblings: bool
+ searchInSiblings: bool,
) -> SymbolLookupResult | None:
# TODO: further simplification from C++ to C
# ancestorLookupType: if not None, specifies the target type of the lookup
@@ -2063,7 +2063,7 @@ class Symbol:
return res
def find_identifier(self, ident: ASTIdentifier,
- matchSelf: bool, recurseInAnon: bool, searchInSiblings: bool
+ matchSelf: bool, recurseInAnon: bool, searchInSiblings: bool,
) -> Symbol | None:
if Symbol.debug_lookup:
Symbol.debug_indent += 1
@@ -2275,7 +2275,7 @@ class DefinitionParser(BaseParser):
return ASTIdExpression(nn)
return None
- def _parse_initializer_list(self, name: str, open: str, close: str
+ def _parse_initializer_list(self, name: str, open: str, close: str,
) -> tuple[list[ASTExpression], bool]:
# Parse open and close with the actual initializer-list in between
# -> initializer-clause '...'[opt]
@@ -2683,7 +2683,7 @@ class DefinitionParser(BaseParser):
return ASTParameters(args, attrs)
def _parse_decl_specs_simple(
- self, outer: str | None, typed: bool
+ self, outer: str | None, typed: bool,
) -> ASTDeclSpecsSimple:
"""Just parse the simple ones."""
storage = None
@@ -2757,7 +2757,7 @@ class DefinitionParser(BaseParser):
return ASTDeclSpecs(outer, leftSpecs, rightSpecs, trailing)
def _parse_declarator_name_suffix(
- self, named: bool | str, paramMode: str, typed: bool
+ self, named: bool | str, paramMode: str, typed: bool,
) -> ASTDeclarator:
assert named in (True, False, 'single')
# now we should parse the name, and then suffixes
@@ -2918,7 +2918,7 @@ class DefinitionParser(BaseParser):
header = "Error in declarator or parameters"
raise self._make_multi_error(prevErrors, header) from e
- def _parse_initializer(self, outer: str | None = None, allowFallback: bool = True
+ def _parse_initializer(self, outer: str | None = None, allowFallback: bool = True,
) -> ASTInitializer | None:
self.skip_ws()
if outer == 'member' and False: # NoQA: SIM223 # TODO
@@ -3740,7 +3740,7 @@ class CDomain(Domain):
'namespace-push': CNamespacePushObject,
'namespace-pop': CNamespacePopObject,
# other
- 'alias': CAliasObject
+ 'alias': CAliasObject,
}
roles = {
'member': CXRefRole(),
@@ -3754,7 +3754,7 @@ class CDomain(Domain):
'enumerator': CXRefRole(),
'type': CXRefRole(),
'expr': CExprRole(asCode=True),
- 'texpr': CExprRole(asCode=False)
+ 'texpr': CExprRole(asCode=False),
}
initial_data: dict[str, Symbol | dict[str, tuple[str, str, str]]] = {
'root_symbol': Symbol(None, None, None, None, None),
@@ -3841,7 +3841,7 @@ class CDomain(Domain):
assert docname
return make_refnode(builder, fromdocname, docname,
- declaration.get_newest_id(), contnode, displayName
+ declaration.get_newest_id(), contnode, displayName,
), declaration.objectType
def resolve_xref(self, env: BuildEnvironment, fromdocname: str, builder: Builder,
@@ -3851,7 +3851,7 @@ class CDomain(Domain):
target, node, contnode)[0]
def resolve_any_xref(self, env: BuildEnvironment, fromdocname: str, builder: Builder,
- target: str, node: pending_xref, contnode: Element
+ target: str, node: pending_xref, contnode: Element,
) -> list[tuple[str, Element]]:
with logging.suppress_logging():
retnode, objtype = self._resolve_xref_inner(env, fromdocname, builder,
diff --git a/sphinx/domains/changeset.py b/sphinx/domains/changeset.py
index a39e4366d..1a28aa77e 100644
--- a/sphinx/domains/changeset.py
+++ b/sphinx/domains/changeset.py
@@ -138,7 +138,7 @@ class ChangeSetDomain(Domain):
changes.append(changeset)
def process_doc(
- self, env: BuildEnvironment, docname: str, document: nodes.document
+ self, env: BuildEnvironment, docname: str, document: nodes.document,
) -> None:
pass # nothing to do here. All changesets are registered on calling directive.
diff --git a/sphinx/domains/citation.py b/sphinx/domains/citation.py
index 33b5021ee..638b1cd29 100644
--- a/sphinx/domains/citation.py
+++ b/sphinx/domains/citation.py
@@ -81,7 +81,7 @@ class CitationDomain(Domain):
type='ref', subtype='citation', location=(docname, lineno))
def resolve_xref(self, env: BuildEnvironment, fromdocname: str, builder: Builder,
- typ: str, target: str, node: pending_xref, contnode: Element
+ typ: str, target: str, node: pending_xref, contnode: Element,
) -> Element | None:
docname, labelid, lineno = self.citations.get(target, ('', '', 0))
if not docname:
@@ -91,7 +91,7 @@ class CitationDomain(Domain):
labelid, contnode)
def resolve_any_xref(self, env: BuildEnvironment, fromdocname: str, builder: Builder,
- target: str, node: pending_xref, contnode: Element
+ target: str, node: pending_xref, contnode: Element,
) -> list[tuple[str, Element]]:
refnode = self.resolve_xref(env, fromdocname, builder, 'ref', target, node, contnode)
if refnode is None:
diff --git a/sphinx/domains/cpp.py b/sphinx/domains/cpp.py
index eff74116e..2ff81834e 100644
--- a/sphinx/domains/cpp.py
+++ b/sphinx/domains/cpp.py
@@ -340,7 +340,7 @@ _keywords = [
'static_assert', 'static_cast', 'struct', 'switch', 'template', 'this',
'thread_local', 'throw', 'true', 'try', 'typedef', 'typeid', 'typename',
'union', 'unsigned', 'using', 'virtual', 'void', 'volatile', 'wchar_t',
- 'while', 'xor', 'xor_eq'
+ 'while', 'xor', 'xor_eq',
]
@@ -377,7 +377,7 @@ _id_fundamental_v1 = {
'long': 'l',
'signed long': 'l',
'unsigned long': 'L',
- 'bool': 'b'
+ 'bool': 'b',
}
_id_shorthands_v1 = {
'std::string': 'ss',
@@ -385,7 +385,7 @@ _id_shorthands_v1 = {
'std::istream': 'is',
'std::iostream': 'ios',
'std::vector': 'v',
- 'std::map': 'm'
+ 'std::map': 'm',
}
_id_operator_v1 = {
'new': 'new-operator',
@@ -434,7 +434,7 @@ _id_operator_v1 = {
'->*': 'pointer-by-pointer-operator',
'->': 'pointer-operator',
'()': 'call-operator',
- '[]': 'subscript-operator'
+ '[]': 'subscript-operator',
}
# ------------------------------------------------------------------------------
@@ -492,7 +492,7 @@ _id_fundamental_v2 = {
'_Imaginary long double': 'e',
'auto': 'Da',
'decltype(auto)': 'Dc',
- 'std::nullptr_t': 'Dn'
+ 'std::nullptr_t': 'Dn',
}
_id_operator_v2 = {
'new': 'nw',
@@ -555,11 +555,11 @@ _id_operator_unary_v2 = {
'+': 'ps',
'-': 'ng',
'!': 'nt', 'not': 'nt',
- '~': 'co', 'compl': 'co'
+ '~': 'co', 'compl': 'co',
}
_id_char_from_prefix: dict[str | None, str] = {
None: 'c', 'u8': 'c',
- 'u': 'Ds', 'U': 'Di', 'L': 'w'
+ 'u': 'Ds', 'U': 'Di', 'L': 'w',
}
# these are ordered by preceedence
_expression_bin_ops = [
@@ -573,7 +573,7 @@ _expression_bin_ops = [
['<<', '>>'],
['+', '-'],
['*', '/', '%'],
- ['.*', '->*']
+ ['.*', '->*'],
]
_expression_unary_ops = ["++", "--", "*", "&", "+", "-", "!", "not", "~", "compl"]
_expression_assignment_ops = ["=", "*=", "/=", "%=", "+=", "-=",
@@ -582,7 +582,7 @@ _id_explicit_cast = {
'dynamic_cast': 'dc',
'static_cast': 'sc',
'const_cast': 'cc',
- 'reinterpret_cast': 'rc'
+ 'reinterpret_cast': 'rc',
}
@@ -3661,7 +3661,7 @@ class ASTTemplateParamTemplateType(ASTTemplateParam):
return self.data.get_identifier()
def get_id(
- self, version: int, objectType: str | None = None, symbol: Symbol | None = None
+ self, version: int, objectType: str | None = None, symbol: Symbol | None = None,
) -> str:
assert version >= 2
# this is not part of the normal name mangling in C++
@@ -4405,7 +4405,7 @@ class Symbol:
def _find_first_named_symbol(self, identOrOp: ASTIdentifier | ASTOperator,
templateParams: Any, templateArgs: ASTTemplateArgs,
templateShorthand: bool, matchSelf: bool,
- recurseInAnon: bool, correctPrimaryTemplateArgs: bool
+ recurseInAnon: bool, correctPrimaryTemplateArgs: bool,
) -> Symbol:
if Symbol.debug_lookup:
Symbol.debug_print("_find_first_named_symbol ->")
@@ -4508,12 +4508,12 @@ class Symbol:
nestedName: ASTNestedName,
templateDecls: list[Any],
onMissingQualifiedSymbol: Callable[
- [Symbol, ASTIdentifier | ASTOperator, Any, ASTTemplateArgs], Symbol
+ [Symbol, ASTIdentifier | ASTOperator, Any, ASTTemplateArgs], Symbol,
],
strictTemplateParamArgLists: bool, ancestorLookupType: str,
templateShorthand: bool, matchSelf: bool,
recurseInAnon: bool, correctPrimaryTemplateArgs: bool,
- searchInSiblings: bool
+ searchInSiblings: bool,
) -> SymbolLookupResult:
# ancestorLookupType: if not None, specifies the target type of the lookup
if Symbol.debug_lookup:
@@ -4654,7 +4654,7 @@ class Symbol:
def onMissingQualifiedSymbol(parentSymbol: Symbol,
identOrOp: ASTIdentifier | ASTOperator,
- templateParams: Any, templateArgs: ASTTemplateArgs
+ templateParams: Any, templateArgs: ASTTemplateArgs,
) -> Symbol:
if Symbol.debug_lookup:
Symbol.debug_indent += 1
@@ -4963,7 +4963,7 @@ class Symbol:
return res
def find_identifier(self, identOrOp: ASTIdentifier | ASTOperator,
- matchSelf: bool, recurseInAnon: bool, searchInSiblings: bool
+ matchSelf: bool, recurseInAnon: bool, searchInSiblings: bool,
) -> Symbol:
if Symbol.debug_lookup:
Symbol.debug_indent += 1
@@ -5334,7 +5334,7 @@ class DefinitionParser(BaseParser):
except DefinitionError as eExpr:
raise self._make_multi_error([
(eFold, "If fold expression"),
- (eExpr, "If parenthesized expression")
+ (eExpr, "If parenthesized expression"),
], "Error in fold expression or parenthesized expression.") from eExpr
return ASTParenExpr(res)
# now it definitely is a fold expression
@@ -5374,7 +5374,7 @@ class DefinitionParser(BaseParser):
return ASTIdExpression(nn)
return None
- def _parse_initializer_list(self, name: str, open: str, close: str
+ def _parse_initializer_list(self, name: str, open: str, close: str,
) -> tuple[list[ASTExpression | ASTBracedInitList],
bool]:
# Parse open and close with the actual initializer-list in between
@@ -5435,7 +5435,7 @@ class DefinitionParser(BaseParser):
return ASTBracedInitList(exprs, trailingComma)
def _parse_expression_list_or_braced_init_list(
- self
+ self,
) -> ASTParenExprList | ASTBracedInitList:
paren = self._parse_paren_expression_list()
if paren is not None:
@@ -6375,7 +6375,7 @@ class DefinitionParser(BaseParser):
return ASTDeclSpecs(outer, leftSpecs, rightSpecs, trailing)
def _parse_declarator_name_suffix(
- self, named: bool | str, paramMode: str, typed: bool
+ self, named: bool | str, paramMode: str, typed: bool,
) -> ASTDeclaratorNameParamQual | ASTDeclaratorNameBitField:
# now we should parse the name, and then suffixes
if named == 'maybe':
@@ -6430,7 +6430,7 @@ class DefinitionParser(BaseParser):
paramQual=paramQual)
def _parse_declarator(self, named: bool | str, paramMode: str,
- typed: bool = True
+ typed: bool = True,
) -> ASTDeclarator:
# 'typed' here means 'parse return type stuff'
if paramMode not in ('type', 'function', 'operatorCast', 'new'):
@@ -6544,7 +6544,7 @@ class DefinitionParser(BaseParser):
header = "Error in declarator or parameters-and-qualifiers"
raise self._make_multi_error(prevErrors, header) from e
- def _parse_initializer(self, outer: str = None, allowFallback: bool = True
+ def _parse_initializer(self, outer: str = None, allowFallback: bool = True,
) -> ASTInitializer:
# initializer # global vars
# -> brace-or-equal-initializer
@@ -6990,7 +6990,7 @@ class DefinitionParser(BaseParser):
else:
return ASTRequiresClause(ASTBinOpExpr(orExprs, ops))
- def _parse_template_declaration_prefix(self, objectType: str
+ def _parse_template_declaration_prefix(self, objectType: str,
) -> ASTTemplateDeclarationPrefix | None:
templates: list[ASTTemplateParams | ASTTemplateIntroduction] = []
while 1:
@@ -7025,7 +7025,7 @@ class DefinitionParser(BaseParser):
def _check_template_consistency(self, nestedName: ASTNestedName,
templatePrefix: ASTTemplateDeclarationPrefix,
- fullSpecShorthand: bool, isMember: bool = False
+ fullSpecShorthand: bool, isMember: bool = False,
) -> ASTTemplateDeclarationPrefix:
numArgs = nestedName.num_templates()
isMemberInstantiation = False
@@ -7878,7 +7878,7 @@ class CPPDomain(Domain):
'namespace-push': CPPNamespacePushObject,
'namespace-pop': CPPNamespacePopObject,
# other
- 'alias': CPPAliasObject
+ 'alias': CPPAliasObject,
}
roles = {
'any': CPPXRefRole(),
@@ -7893,11 +7893,11 @@ class CPPDomain(Domain):
'enum': CPPXRefRole(),
'enumerator': CPPXRefRole(),
'expr': CPPExprRole(asCode=True),
- 'texpr': CPPExprRole(asCode=False)
+ 'texpr': CPPExprRole(asCode=False),
}
initial_data = {
'root_symbol': Symbol(None, None, None, None, None, None, None),
- 'names': {} # full name for indexing -> docname
+ 'names': {}, # full name for indexing -> docname
}
def clear_doc(self, docname: str) -> None:
@@ -8098,18 +8098,18 @@ class CPPDomain(Domain):
# and reconstruct the title again
contnode += nodes.Text(title)
res = make_refnode(builder, fromdocname, docname,
- declaration.get_newest_id(), contnode, displayName
+ declaration.get_newest_id(), contnode, displayName,
), declaration.objectType
return res
def resolve_xref(self, env: BuildEnvironment, fromdocname: str, builder: Builder,
- typ: str, target: str, node: pending_xref, contnode: Element
+ typ: str, target: str, node: pending_xref, contnode: Element,
) -> Element | None:
return self._resolve_xref_inner(env, fromdocname, builder, typ,
target, node, contnode)[0]
def resolve_any_xref(self, env: BuildEnvironment, fromdocname: str, builder: Builder,
- target: str, node: pending_xref, contnode: Element
+ target: str, node: pending_xref, contnode: Element,
) -> list[tuple[str, Element]]:
with logging.suppress_logging():
retnode, objtype = self._resolve_xref_inner(env, fromdocname, builder,
diff --git a/sphinx/domains/javascript.py b/sphinx/domains/javascript.py
index 86476582a..7f07c20b5 100644
--- a/sphinx/domains/javascript.py
+++ b/sphinx/domains/javascript.py
@@ -427,7 +427,7 @@ class JavaScriptDomain(Domain):
prefix: str,
name: str,
typ: str | None,
- searchorder: int = 0
+ searchorder: int = 0,
) -> tuple[str | None, tuple[str, str, str] | None]:
if name[-2:] == '()':
name = name[:-2]
@@ -452,7 +452,7 @@ class JavaScriptDomain(Domain):
return newname, self.objects.get(newname)
def resolve_xref(self, env: BuildEnvironment, fromdocname: str, builder: Builder,
- typ: str, target: str, node: pending_xref, contnode: Element
+ typ: str, target: str, node: pending_xref, contnode: Element,
) -> Element | None:
mod_name = node.get('js:module')
prefix = node.get('js:object')
@@ -463,7 +463,7 @@ class JavaScriptDomain(Domain):
return make_refnode(builder, fromdocname, obj[0], obj[1], contnode, name)
def resolve_any_xref(self, env: BuildEnvironment, fromdocname: str, builder: Builder,
- target: str, node: pending_xref, contnode: Element
+ target: str, node: pending_xref, contnode: Element,
) -> list[tuple[str, Element]]:
mod_name = node.get('js:module')
prefix = node.get('js:object')
diff --git a/sphinx/domains/math.py b/sphinx/domains/math.py
index 6623c4ca5..2d9476670 100644
--- a/sphinx/domains/math.py
+++ b/sphinx/domains/math.py
@@ -90,7 +90,7 @@ class MathDomain(Domain):
self.data['has_equations'][docname] = otherdata['has_equations'][docname]
def resolve_xref(self, env: BuildEnvironment, fromdocname: str, builder: Builder,
- typ: str, target: str, node: pending_xref, contnode: Element
+ typ: str, target: str, node: pending_xref, contnode: Element,
) -> Element | None:
assert typ in ('eq', 'numref')
result = self.equations.get(target)
@@ -120,7 +120,7 @@ class MathDomain(Domain):
return None
def resolve_any_xref(self, env: BuildEnvironment, fromdocname: str, builder: Builder,
- target: str, node: pending_xref, contnode: Element
+ target: str, node: pending_xref, contnode: Element,
) -> list[tuple[str, Element]]:
refnode = self.resolve_xref(env, fromdocname, builder, 'eq', target, node, contnode)
if refnode is None:
diff --git a/sphinx/domains/python.py b/sphinx/domains/python.py
index a9632b291..4075277bc 100644
--- a/sphinx/domains/python.py
+++ b/sphinx/domains/python.py
@@ -75,7 +75,7 @@ class ModuleEntry(NamedTuple):
deprecated: bool
-def parse_reftarget(reftarget: str, suppress_prefix: bool = False
+def parse_reftarget(reftarget: str, suppress_prefix: bool = False,
) -> tuple[str, str, str, bool]:
"""Parse a type string and return (reftype, reftarget, title, refspecific flag)"""
refspecific = False
@@ -254,7 +254,7 @@ def _parse_annotation(annotation: str, env: BuildEnvironment | None) -> list[Nod
def _parse_arglist(
- arglist: str, env: BuildEnvironment | None = None
+ arglist: str, env: BuildEnvironment | None = None,
) -> addnodes.desc_parameterlist:
"""Parse a list of arguments using AST parser"""
params = addnodes.desc_parameterlist(arglist)
@@ -366,7 +366,7 @@ class PyXrefMixin:
contnode: Node | None = None,
env: BuildEnvironment | None = None,
inliner: Inliner | None = None,
- location: Node | None = None
+ location: Node | None = None,
) -> Node:
# we use inliner=None to make sure we get the old behaviour with a single
# pending_xref node
@@ -1140,7 +1140,7 @@ class PythonModuleIndex(Index):
localname = _('Python Module Index')
shortname = _('modules')
- def generate(self, docnames: Iterable[str] | None = None
+ def generate(self, docnames: Iterable[str] | None = None,
) -> tuple[list[tuple[str, list[IndexEntry]]], bool]:
content: dict[str, list[IndexEntry]] = {}
# list of prefixes to ignore
@@ -1310,7 +1310,7 @@ class PythonDomain(Domain):
self.modules[modname] = mod
def find_obj(self, env: BuildEnvironment, modname: str, classname: str,
- name: str, type: str | None, searchmode: int = 0
+ name: str, type: str | None, searchmode: int = 0,
) -> list[tuple[str, ObjectEntry]]:
"""Find a Python object for "name", perhaps using the given module
and/or classname. Returns a list of (name, object entry) tuples.
@@ -1366,7 +1366,7 @@ class PythonDomain(Domain):
return matches
def resolve_xref(self, env: BuildEnvironment, fromdocname: str, builder: Builder,
- type: str, target: str, node: pending_xref, contnode: Element
+ type: str, target: str, node: pending_xref, contnode: Element,
) -> Element | None:
modname = node.get('py:module')
clsname = node.get('py:class')
@@ -1413,7 +1413,7 @@ class PythonDomain(Domain):
return make_refnode(builder, fromdocname, obj[0], obj[1], children, name)
def resolve_any_xref(self, env: BuildEnvironment, fromdocname: str, builder: Builder,
- target: str, node: pending_xref, contnode: Element
+ target: str, node: pending_xref, contnode: Element,
) -> list[tuple[str, Element]]:
modname = node.get('py:module')
clsname = node.get('py:class')
diff --git a/sphinx/domains/rst.py b/sphinx/domains/rst.py
index f00598def..030d532cf 100644
--- a/sphinx/domains/rst.py
+++ b/sphinx/domains/rst.py
@@ -263,7 +263,7 @@ class ReSTDomain(Domain):
self.objects[typ, name] = (doc, node_id)
def resolve_xref(self, env: BuildEnvironment, fromdocname: str, builder: Builder,
- typ: str, target: str, node: pending_xref, contnode: Element
+ typ: str, target: str, node: pending_xref, contnode: Element,
) -> Element | None:
objtypes = self.objtypes_for_role(typ)
for objtype in objtypes:
@@ -275,7 +275,7 @@ class ReSTDomain(Domain):
return None
def resolve_any_xref(self, env: BuildEnvironment, fromdocname: str, builder: Builder,
- target: str, node: pending_xref, contnode: Element
+ target: str, node: pending_xref, contnode: Element,
) -> list[tuple[str, Element]]:
results: list[tuple[str, Element]] = []
for objtype in self.object_types:
diff --git a/sphinx/domains/std.py b/sphinx/domains/std.py
index d93f84068..1e2870a8a 100644
--- a/sphinx/domains/std.py
+++ b/sphinx/domains/std.py
@@ -99,7 +99,7 @@ class EnvVarXRefRole(XRefRole):
indexnode = addnodes.index()
indexnode['entries'] = [
('single', varname, tgtid, '', None),
- ('single', _('environment variable; %s') % varname, tgtid, '', None)
+ ('single', _('environment variable; %s') % varname, tgtid, '', None),
]
targetnode = nodes.target('', '', ids=[tgtid])
document.note_explicit_target(targetnode)
@@ -292,7 +292,7 @@ def split_term_classifiers(line: str) -> list[str | None]:
def make_glossary_term(env: BuildEnvironment, textnodes: Iterable[Node], index_key: str,
- source: str, lineno: int, node_id: str | None, document: nodes.document
+ source: str, lineno: int, node_id: str | None, document: nodes.document,
) -> nodes.term:
# get a text-only representation of the term and register it
# as a cross-reference target
@@ -553,7 +553,7 @@ class StandardDomain(Domain):
searchprio=-1),
'envvar': ObjType(_('environment variable'), 'envvar'),
'cmdoption': ObjType(_('program option'), 'option'),
- 'doc': ObjType(_('document'), 'doc', searchprio=-1)
+ 'doc': ObjType(_('document'), 'doc', searchprio=-1),
}
directives: dict[str, type[Directive]] = {
@@ -656,7 +656,7 @@ class StandardDomain(Domain):
def objects(self) -> dict[tuple[str, str], tuple[str, str]]:
return self.data.setdefault('objects', {}) # (objtype, name) -> docname, labelid
- def note_object(self, objtype: str, name: str, labelid: str, location: Any = None
+ def note_object(self, objtype: str, name: str, labelid: str, location: Any = None,
) -> None:
"""Note a generic object for cross reference.
@@ -731,7 +731,7 @@ class StandardDomain(Domain):
self.anonlabels[key] = data
def process_doc(
- self, env: BuildEnvironment, docname: str, document: nodes.document
+ self, env: BuildEnvironment, docname: str, document: nodes.document,
) -> None:
for name, explicit in document.nametypes.items():
if not explicit:
@@ -788,7 +788,7 @@ class StandardDomain(Domain):
self.progoptions[program, name] = (docname, labelid)
def build_reference_node(self, fromdocname: str, builder: Builder, docname: str,
- labelid: str, sectname: str, rolename: str, **options: Any
+ labelid: str, sectname: str, rolename: str, **options: Any,
) -> Element:
nodeclass = options.pop('nodeclass', nodes.reference)
newnode = nodeclass('', '', internal=True, **options)
@@ -813,7 +813,7 @@ class StandardDomain(Domain):
return newnode
def resolve_xref(self, env: BuildEnvironment, fromdocname: str, builder: Builder,
- typ: str, target: str, node: pending_xref, contnode: Element
+ typ: str, target: str, node: pending_xref, contnode: Element,
) -> Element | None:
if typ == 'ref':
resolver = self._resolve_ref_xref
@@ -1090,7 +1090,7 @@ class StandardDomain(Domain):
builder: Builder,
figtype: str,
docname: str,
- target_node: Element
+ target_node: Element,
) -> tuple[int, ...] | None:
if figtype == 'section':
if builder.name == 'latex':
@@ -1128,7 +1128,7 @@ class StandardDomain(Domain):
return None
-def warn_missing_reference(app: Sphinx, domain: Domain, node: pending_xref
+def warn_missing_reference(app: Sphinx, domain: Domain, node: pending_xref,
) -> bool | None:
if (domain and domain.name != 'std') or node['reftype'] != 'ref':
return None
diff --git a/sphinx/environment/__init__.py b/sphinx/environment/__init__.py
index 5fef57f26..3364aac50 100644
--- a/sphinx/environment/__init__.py
+++ b/sphinx/environment/__init__.py
@@ -605,7 +605,7 @@ class BuildEnvironment:
builder: Builder,
doctree: nodes.document | None = None,
prune_toctrees: bool = True,
- includehidden: bool = False
+ includehidden: bool = False,
) -> nodes.document:
"""Read the doctree from the pickle, resolve cross-references and
toctrees and return it.
@@ -676,7 +676,7 @@ class BuildEnvironment:
traversed = set()
def traverse_toctree(
- parent: str | None, docname: str
+ parent: str | None, docname: str,
) -> Iterator[tuple[str | None, str]]:
if parent == docname:
logger.warning(__('self referenced toctree found. Ignored.'),
diff --git a/sphinx/environment/adapters/indexentries.py b/sphinx/environment/adapters/indexentries.py
index a2d41abb4..05c782f3b 100644
--- a/sphinx/environment/adapters/indexentries.py
+++ b/sphinx/environment/adapters/indexentries.py
@@ -22,7 +22,7 @@ class IndexEntries:
self.env = env
def create_index(self, builder: Builder, group_entries: bool = True,
- _fixre: re.Pattern = re.compile(r'(.*) ([(][^()]*[)])')
+ _fixre: re.Pattern = re.compile(r'(.*) ([(][^()]*[)])'),
) -> list[tuple[str, list[tuple[str, Any]]]]:
"""Create the real index from the collected index entries."""
new: dict[str, list] = {}
diff --git a/sphinx/environment/adapters/toctree.py b/sphinx/environment/adapters/toctree.py
index a2299c469..2b02e34c8 100644
--- a/sphinx/environment/adapters/toctree.py
+++ b/sphinx/environment/adapters/toctree.py
@@ -214,7 +214,7 @@ class TocTree:
for i, entry in enumerate(
_entries_from_toctree(sub_toc_node, [refdoc] + parents,
subtree=True),
- start=sub_toc_node.parent.index(sub_toc_node) + 1
+ start=sub_toc_node.parent.index(sub_toc_node) + 1,
):
sub_toc_node.parent.insert(i, entry)
sub_toc_node.parent.remove(sub_toc_node)
diff --git a/sphinx/environment/collectors/toctree.py b/sphinx/environment/collectors/toctree.py
index 9ca40a723..2c30563e9 100644
--- a/sphinx/environment/collectors/toctree.py
+++ b/sphinx/environment/collectors/toctree.py
@@ -58,7 +58,7 @@ class TocTreeCollector(EnvironmentCollector):
def build_toc(
node: Element | Sequence[Element],
- depth: int = 1
+ depth: int = 1,
) -> nodes.bullet_list | None:
# list of table of contents entries
entries: list[Element] = []
@@ -171,7 +171,7 @@ class TocTreeCollector(EnvironmentCollector):
env.toc_secnumbers = {}
def _walk_toc(
- node: Element, secnums: dict, depth: int, titlenode: nodes.title | None = None
+ node: Element, secnums: dict, depth: int, titlenode: nodes.title | None = None,
) -> None:
# titlenode is the title of the document, it will get assigned a
# secnumber too, so that it shows up in next/prev/parent rellinks
diff --git a/sphinx/errors.py b/sphinx/errors.py
index 437e4acd9..9003fc658 100644
--- a/sphinx/errors.py
+++ b/sphinx/errors.py
@@ -42,7 +42,7 @@ class ExtensionError(SphinxError):
"""Extension error."""
def __init__(
- self, message: str, orig_exc: Exception | None = None, modname: str | None = None
+ self, message: str, orig_exc: Exception | None = None, modname: str | None = None,
) -> None:
super().__init__(message)
self.message = message
diff --git a/sphinx/ext/apidoc.py b/sphinx/ext/apidoc.py
index 57ff555ef..839486d55 100644
--- a/sphinx/ext/apidoc.py
+++ b/sphinx/ext/apidoc.py
@@ -108,7 +108,7 @@ def create_module_file(package: str, basename: str, opts: Any,
def create_package_file(root: str, master_package: str, subroot: str, py_files: list[str],
opts: Any, subs: list[str], is_namespace: bool,
- excludes: list[str] = [], user_template_dir: str | None = None
+ excludes: list[str] = [], user_template_dir: str | None = None,
) -> None:
"""Build the text of the file and write the file."""
# build a list of sub packages (directories containing an __init__ file)
@@ -193,7 +193,7 @@ def is_skipped_module(filename: str, opts: Any, excludes: list[str]) -> bool:
return False
-def walk(rootpath: str, excludes: list[str], opts: Any
+def walk(rootpath: str, excludes: list[str], opts: Any,
) -> Generator[tuple[str, list[str], list[str]], None, None]:
"""Walk through the directory and list files and subdirectories up."""
followlinks = getattr(opts, 'followlinks', False)
diff --git a/sphinx/ext/autodoc/__init__.py b/sphinx/ext/autodoc/__init__.py
index 3be90dfbe..dee4ef52d 100644
--- a/sphinx/ext/autodoc/__init__.py
+++ b/sphinx/ext/autodoc/__init__.py
@@ -189,7 +189,7 @@ def cut_lines(pre: int, post: int = 0, what: str | None = None) -> Callable:
This can (and should) be used in place of :confval:`automodule_skip_lines`.
"""
- def process(app: Sphinx, what_: str, name: str, obj: Any, options: Any, lines: list[str]
+ def process(app: Sphinx, what_: str, name: str, obj: Any, options: Any, lines: list[str],
) -> None:
if what and what_ not in what:
return
@@ -209,7 +209,7 @@ def between(
marker: str,
what: Sequence[str] | None = None,
keepempty: bool = False,
- exclude: bool = False
+ exclude: bool = False,
) -> Callable:
"""Return a listener that either keeps, or if *exclude* is True excludes,
lines between lines that match the *marker* regular expression. If no line
@@ -221,7 +221,7 @@ def between(
"""
marker_re = re.compile(marker)
- def process(app: Sphinx, what_: str, name: str, obj: Any, options: Any, lines: list[str]
+ def process(app: Sphinx, what_: str, name: str, obj: Any, options: Any, lines: list[str],
) -> None:
if what and what_ not in what:
return
@@ -316,7 +316,7 @@ class Documenter:
titles_allowed = True
option_spec: OptionSpec = {
- 'noindex': bool_option
+ 'noindex': bool_option,
}
def get_attr(self, obj: Any, name: str, *defargs: Any) -> Any:
@@ -324,7 +324,7 @@ class Documenter:
return autodoc_attrgetter(self.env.app, obj, name, *defargs)
@classmethod
- def can_document_member(cls, member: Any, membername: str, isattr: bool, parent: Any
+ def can_document_member(cls, member: Any, membername: str, isattr: bool, parent: Any,
) -> bool:
"""Called to see if a member can be documented by this Documenter."""
raise NotImplementedError('must be implemented in subclasses')
@@ -366,7 +366,7 @@ class Documenter:
else:
self.directive.result.append('', source, *lineno)
- def resolve_name(self, modname: str, parents: Any, path: str, base: Any
+ def resolve_name(self, modname: str, parents: Any, path: str, base: Any,
) -> tuple[str, list[str]]:
"""Resolve the module and name of the object to document given by the
arguments and the current module/class.
@@ -634,7 +634,7 @@ class Documenter:
"""
raise NotImplementedError('must be implemented in subclasses')
- def filter_members(self, members: ObjectMembers, want_all: bool
+ def filter_members(self, members: ObjectMembers, want_all: bool,
) -> list[tuple[str, Any, bool]]:
"""Filter the given member list.
@@ -856,7 +856,7 @@ class Documenter:
more_content: StringList | None = None,
real_modname: str | None = None,
check_module: bool = False,
- all_members: bool = False
+ all_members: bool = False,
) -> None:
"""Generate reST for the object given by *self.name*, and possibly for
its members.
@@ -984,12 +984,12 @@ class ModuleDocumenter(Documenter):
self.add_line(line, src[0], src[1])
@classmethod
- def can_document_member(cls, member: Any, membername: str, isattr: bool, parent: Any
+ def can_document_member(cls, member: Any, membername: str, isattr: bool, parent: Any,
) -> bool:
# don't document submodules automatically
return False
- def resolve_name(self, modname: str, parents: Any, path: str, base: Any
+ def resolve_name(self, modname: str, parents: Any, path: str, base: Any,
) -> tuple[str, list[str]]:
if modname is not None:
logger.warning(__('"::" in automodule name doesn\'t make sense'),
@@ -1109,7 +1109,7 @@ class ModuleLevelDocumenter(Documenter):
Specialized Documenter subclass for objects on module level (functions,
classes, data/constants).
"""
- def resolve_name(self, modname: str, parents: Any, path: str, base: Any
+ def resolve_name(self, modname: str, parents: Any, path: str, base: Any,
) -> tuple[str, list[str]]:
if modname is None:
if path:
@@ -1130,7 +1130,7 @@ class ClassLevelDocumenter(Documenter):
Specialized Documenter subclass for objects on class level (methods,
attributes).
"""
- def resolve_name(self, modname: str, parents: Any, path: str, base: Any
+ def resolve_name(self, modname: str, parents: Any, path: str, base: Any,
) -> tuple[str, list[str]]:
if modname is None:
if path:
@@ -1265,7 +1265,7 @@ class FunctionDocumenter(DocstringSignatureMixin, ModuleLevelDocumenter): # typ
member_order = 30
@classmethod
- def can_document_member(cls, member: Any, membername: str, isattr: bool, parent: Any
+ def can_document_member(cls, member: Any, membername: str, isattr: bool, parent: Any,
) -> bool:
# supports functions, builtins and bound methods exported at the module level
return (inspect.isfunction(member) or inspect.isbuiltin(member) or
@@ -1454,7 +1454,7 @@ class ClassDocumenter(DocstringSignatureMixin, ModuleLevelDocumenter): # type:
merge_members_option(self.options)
@classmethod
- def can_document_member(cls, member: Any, membername: str, isattr: bool, parent: Any
+ def can_document_member(cls, member: Any, membername: str, isattr: bool, parent: Any,
) -> bool:
return isinstance(member, type) or (
isattr and (inspect.isNewType(member) or isinstance(member, TypeVar)))
@@ -1829,7 +1829,7 @@ class ClassDocumenter(DocstringSignatureMixin, ModuleLevelDocumenter): # type:
more_content = StringList(
[_('alias of TypeVar(%s)') % ", ".join(attrs), ''],
- source=''
+ source='',
)
if self.doc_as_attr and self.modname != self.get_real_modname():
try:
@@ -1861,7 +1861,7 @@ class ClassDocumenter(DocstringSignatureMixin, ModuleLevelDocumenter): # type:
more_content: StringList | None = None,
real_modname: str | None = None,
check_module: bool = False,
- all_members: bool = False
+ all_members: bool = False,
) -> None:
# Do not pass real_modname and use the name from the __module__
# attribute of the class.
@@ -1884,7 +1884,7 @@ class ExceptionDocumenter(ClassDocumenter):
priority = ClassDocumenter.priority + 5
@classmethod
- def can_document_member(cls, member: Any, membername: str, isattr: bool, parent: Any
+ def can_document_member(cls, member: Any, membername: str, isattr: bool, parent: Any,
) -> bool:
return isinstance(member, type) and issubclass(member, BaseException)
@@ -1988,7 +1988,7 @@ class DataDocumenter(GenericAliasMixin,
option_spec["no-value"] = bool_option
@classmethod
- def can_document_member(cls, member: Any, membername: str, isattr: bool, parent: Any
+ def can_document_member(cls, member: Any, membername: str, isattr: bool, parent: Any,
) -> bool:
return isinstance(parent, ModuleDocumenter) and isattr
@@ -2105,7 +2105,7 @@ class MethodDocumenter(DocstringSignatureMixin, ClassLevelDocumenter): # type:
priority = 1 # must be more than FunctionDocumenter
@classmethod
- def can_document_member(cls, member: Any, membername: str, isattr: bool, parent: Any
+ def can_document_member(cls, member: Any, membername: str, isattr: bool, parent: Any,
) -> bool:
return inspect.isroutine(member) and not isinstance(parent, ModuleDocumenter)
@@ -2535,7 +2535,7 @@ class AttributeDocumenter(GenericAliasMixin, SlotsMixin, # type: ignore
return inspect.isfunction(obj) or inspect.isbuiltin(obj) or inspect.ismethod(obj)
@classmethod
- def can_document_member(cls, member: Any, membername: str, isattr: bool, parent: Any
+ def can_document_member(cls, member: Any, membername: str, isattr: bool, parent: Any,
) -> bool:
if isinstance(parent, ModuleDocumenter):
return False
@@ -2681,7 +2681,7 @@ class PropertyDocumenter(DocstringStripSignatureMixin, ClassLevelDocumenter): #
priority = AttributeDocumenter.priority + 1
@classmethod
- def can_document_member(cls, member: Any, membername: str, isattr: bool, parent: Any
+ def can_document_member(cls, member: Any, membername: str, isattr: bool, parent: Any,
) -> bool:
if isinstance(parent, ClassDocumenter):
if inspect.isproperty(member):
diff --git a/sphinx/ext/autodoc/directive.py b/sphinx/ext/autodoc/directive.py
index 8bc075068..dacb740e7 100644
--- a/sphinx/ext/autodoc/directive.py
+++ b/sphinx/ext/autodoc/directive.py
@@ -53,7 +53,7 @@ class DocumenterBridge:
self.state = state
-def process_documenter_options(documenter: type[Documenter], config: Config, options: dict
+def process_documenter_options(documenter: type[Documenter], config: Config, options: dict,
) -> Options:
"""Recognize options of Documenter from user input."""
for name in AUTODOC_DEFAULT_OPTIONS:
@@ -79,7 +79,7 @@ def process_documenter_options(documenter: type[Documenter], config: Config, opt
return Options(assemble_option_dict(options.items(), documenter.option_spec))
-def parse_generated_content(state: RSTState, content: StringList, documenter: Documenter
+def parse_generated_content(state: RSTState, content: StringList, documenter: Documenter,
) -> list[Node]:
"""Parse an item of content generated by Documenter."""
with switch_source_input(state, content):
diff --git a/sphinx/ext/autodoc/importer.py b/sphinx/ext/autodoc/importer.py
index bbe9fef3c..20ab4994b 100644
--- a/sphinx/ext/autodoc/importer.py
+++ b/sphinx/ext/autodoc/importer.py
@@ -153,7 +153,7 @@ def get_object_members(
subject: Any,
objpath: list[str],
attrgetter: Callable,
- analyzer: ModuleAnalyzer | None = None
+ analyzer: ModuleAnalyzer | None = None,
) -> dict[str, Attribute]:
"""Get members and attributes of target object."""
from sphinx.ext.autodoc import INSTANCEATTR
diff --git a/sphinx/ext/autodoc/preserve_defaults.py b/sphinx/ext/autodoc/preserve_defaults.py
index 6571f8189..a0ceb1ac2 100644
--- a/sphinx/ext/autodoc/preserve_defaults.py
+++ b/sphinx/ext/autodoc/preserve_defaults.py
@@ -120,5 +120,5 @@ def setup(app: Sphinx) -> dict[str, Any]:
return {
'version': sphinx.__display_version__,
- 'parallel_read_safe': True
+ 'parallel_read_safe': True,
}
diff --git a/sphinx/ext/autodoc/typehints.py b/sphinx/ext/autodoc/typehints.py
index 903883dce..809736ce0 100644
--- a/sphinx/ext/autodoc/typehints.py
+++ b/sphinx/ext/autodoc/typehints.py
@@ -69,11 +69,11 @@ def merge_typehints(app: Sphinx, domain: str, objtype: str, contentnode: Element
modify_field_list(field_list, annotations[fullname])
elif app.config.autodoc_typehints_description_target == "documented_params":
augment_descriptions_with_types(
- field_list, annotations[fullname], force_rtype=True
+ field_list, annotations[fullname], force_rtype=True,
)
else:
augment_descriptions_with_types(
- field_list, annotations[fullname], force_rtype=False
+ field_list, annotations[fullname], force_rtype=False,
)
@@ -153,7 +153,7 @@ def modify_field_list(node: nodes.field_list, annotations: dict[str, str],
def augment_descriptions_with_types(
node: nodes.field_list,
annotations: dict[str, str],
- force_rtype: bool
+ force_rtype: bool,
) -> None:
fields = cast(Iterable[nodes.field], node)
has_description: set[str] = set()
diff --git a/sphinx/ext/autosummary/__init__.py b/sphinx/ext/autosummary/__init__.py
index c28a01866..a60959c85 100644
--- a/sphinx/ext/autosummary/__init__.py
+++ b/sphinx/ext/autosummary/__init__.py
@@ -270,7 +270,7 @@ class Autosummary(SphinxDirective):
return nodes
def import_by_name(
- self, name: str, prefixes: list[str | None]
+ self, name: str, prefixes: list[str | None],
) -> tuple[str, Any, Any, str]:
with mock(self.config.autosummary_mock_imports):
try:
@@ -627,7 +627,7 @@ def get_import_prefixes_from_env(env: BuildEnvironment) -> list[str | None]:
def import_by_name(
- name: str, prefixes: list[str | None] = [None], grouped_exception: bool = True
+ name: str, prefixes: list[str | None] = [None], grouped_exception: bool = True,
) -> tuple[str, Any, Any, str]:
"""Import a Python object that has the given *name*, under one of the
*prefixes*. The first name that succeeds is used.
diff --git a/sphinx/ext/autosummary/generate.py b/sphinx/ext/autosummary/generate.py
index 3991f9c6b..e9cc4f810 100644
--- a/sphinx/ext/autosummary/generate.py
+++ b/sphinx/ext/autosummary/generate.py
@@ -472,7 +472,7 @@ def find_autosummary_in_files(filenames: list[str]) -> list[AutosummaryEntry]:
def find_autosummary_in_docstring(
- name: str, filename: str | None = None
+ name: str, filename: str | None = None,
) -> list[AutosummaryEntry]:
"""Find out what items are documented in the given object's docstring.
@@ -494,7 +494,7 @@ def find_autosummary_in_docstring(
def find_autosummary_in_lines(
- lines: list[str], module: str | None = None, filename: str | None = None
+ lines: list[str], module: str | None = None, filename: str | None = None,
) -> list[AutosummaryEntry]:
"""Find out what items appear in autosummary:: directives in the
given lines.
diff --git a/sphinx/ext/doctest.py b/sphinx/ext/doctest.py
index e6981848a..7eadce804 100644
--- a/sphinx/ext/doctest.py
+++ b/sphinx/ext/doctest.py
@@ -141,13 +141,13 @@ class TestDirective(SphinxDirective):
class TestsetupDirective(TestDirective):
option_spec: OptionSpec = {
- 'skipif': directives.unchanged_required
+ 'skipif': directives.unchanged_required,
}
class TestcleanupDirective(TestDirective):
option_spec: OptionSpec = {
- 'skipif': directives.unchanged_required
+ 'skipif': directives.unchanged_required,
}
@@ -233,7 +233,7 @@ class TestCode:
class SphinxDocTestRunner(doctest.DocTestRunner):
- def summarize(self, out: Callable, verbose: bool = None # type: ignore
+ def summarize(self, out: Callable, verbose: bool = None, # type: ignore
) -> tuple[int, int]:
string_io = StringIO()
old_stdout = sys.stdout
diff --git a/sphinx/ext/extlinks.py b/sphinx/ext/extlinks.py
index 26fd36cc7..4562a922b 100644
--- a/sphinx/ext/extlinks.py
+++ b/sphinx/ext/extlinks.py
@@ -91,7 +91,7 @@ def make_link_role(name: str, base_url: str, caption: str) -> RoleFunction:
# Remark: It is an implementation detail that we use Pythons %-formatting.
# So far we only expose ``%s`` and require quoting of ``%`` using ``%%``.
def role(typ: str, rawtext: str, text: str, lineno: int,
- inliner: Inliner, options: dict = {}, content: list[str] = []
+ inliner: Inliner, options: dict = {}, content: list[str] = [],
) -> tuple[list[Node], list[system_message]]:
text = utils.unescape(text)
has_explicit_title, title, part = split_explicit_title(text)
diff --git a/sphinx/ext/graphviz.py b/sphinx/ext/graphviz.py
index 8023d6ef8..c0a99be08 100644
--- a/sphinx/ext/graphviz.py
+++ b/sphinx/ext/graphviz.py
@@ -212,7 +212,7 @@ class GraphvizSimple(SphinxDirective):
def render_dot(self: SphinxTranslator, code: str, options: dict, format: str,
- prefix: str = 'graphviz', filename: str | None = None
+ prefix: str = 'graphviz', filename: str | None = None,
) -> tuple[str | None, str | None]:
"""Render graphviz code into a PNG or PDF output file."""
graphviz_dot = options.get('graphviz_dot', self.builder.config.graphviz_dot)
@@ -266,7 +266,7 @@ def render_dot(self: SphinxTranslator, code: str, options: dict, format: str,
def render_dot_html(self: HTML5Translator, node: graphviz, code: str, options: dict,
prefix: str = 'graphviz', imgcls: str | None = None,
- alt: str | None = None, filename: str | None = None
+ alt: str | None = None, filename: str | None = None,
) -> tuple[str, str]:
format = self.builder.config.graphviz_output_format
try:
@@ -322,7 +322,7 @@ def html_visit_graphviz(self: HTML5Translator, node: graphviz) -> None:
def render_dot_latex(self: LaTeXTranslator, node: graphviz, code: str,
- options: dict, prefix: str = 'graphviz', filename: str | None = None
+ options: dict, prefix: str = 'graphviz', filename: str | None = None,
) -> None:
try:
fname, outfn = render_dot(self, code, options, 'pdf', prefix, filename)
diff --git a/sphinx/ext/imgconverter.py b/sphinx/ext/imgconverter.py
index ed2540cc3..511e60404 100644
--- a/sphinx/ext/imgconverter.py
+++ b/sphinx/ext/imgconverter.py
@@ -38,7 +38,7 @@ class ImagemagickConverter(ImageConverter):
"'sphinx.ext.imgconverter' requires ImageMagick by default. "
"Ensure it is installed, or set the 'image_converter' option "
"to a custom conversion command.\n\n"
- "Traceback: %s"
+ "Traceback: %s",
), self.config.image_converter, exc)
return False
except CalledProcessError as exc:
diff --git a/sphinx/ext/imgmath.py b/sphinx/ext/imgmath.py
index 5e8064d1c..e9de17750 100644
--- a/sphinx/ext/imgmath.py
+++ b/sphinx/ext/imgmath.py
@@ -39,7 +39,7 @@ class MathExtError(SphinxError):
category = 'Math extension error'
def __init__(
- self, msg: str, stderr: str | None = None, stdout: str | None = None
+ self, msg: str, stderr: str | None = None, stdout: str | None = None,
) -> None:
if stderr:
msg += '\n[stderr]\n' + stderr
@@ -87,7 +87,7 @@ def generate_latex_macro(image_format: str,
'baselineskip': int(round(config.imgmath_font_size * 1.2)),
'preamble': config.imgmath_latex_preamble,
'tightpage': '' if image_format == 'png' else ',tightpage',
- 'math': math
+ 'math': math,
}
if config.imgmath_use_preview:
diff --git a/sphinx/ext/inheritance_diagram.py b/sphinx/ext/inheritance_diagram.py
index 877fb22d0..8994f578c 100644
--- a/sphinx/ext/inheritance_diagram.py
+++ b/sphinx/ext/inheritance_diagram.py
@@ -139,7 +139,7 @@ class InheritanceGraph:
"""
def __init__(self, class_names: list[str], currmodule: str, show_builtins: bool = False,
private_bases: bool = False, parts: int = 0,
- aliases: dict[str, str] | None = None, top_classes: list[Any] = []
+ aliases: dict[str, str] | None = None, top_classes: list[Any] = [],
) -> None:
"""*class_names* is a list of child classes to show bases from.
@@ -162,7 +162,7 @@ class InheritanceGraph:
return classes
def _class_info(self, classes: list[Any], show_builtins: bool, private_bases: bool,
- parts: int, aliases: dict[str, str], top_classes: list[Any]
+ parts: int, aliases: dict[str, str], top_classes: list[Any],
) -> list[tuple[str, str, list[str], str]]:
"""Return name and bases for all classes that are ancestors of
*classes*.
@@ -221,7 +221,7 @@ class InheritanceGraph:
return list(all_classes.values())
def class_name(
- self, cls: Any, parts: int = 0, aliases: dict[str, str] | None = None
+ self, cls: Any, parts: int = 0, aliases: dict[str, str] | None = None,
) -> str:
"""Given a class object, return a fully-qualified name.
@@ -274,7 +274,7 @@ class InheritanceGraph:
def generate_dot(self, name: str, urls: dict[str, str] = {},
env: BuildEnvironment | None = None,
- graph_attrs: dict = {}, node_attrs: dict = {}, edge_attrs: dict = {}
+ graph_attrs: dict = {}, node_attrs: dict = {}, edge_attrs: dict = {},
) -> str:
"""Generate a graphviz dot graph from the classes that were passed in
to __init__.
@@ -442,7 +442,7 @@ def latex_visit_inheritance_diagram(self: LaTeXTranslator, node: inheritance_dia
raise nodes.SkipNode
-def texinfo_visit_inheritance_diagram(self: TexinfoTranslator, node: inheritance_diagram
+def texinfo_visit_inheritance_diagram(self: TexinfoTranslator, node: inheritance_diagram,
) -> None:
"""
Output the graph for Texinfo. This will insert a PNG.
diff --git a/sphinx/ext/intersphinx.py b/sphinx/ext/intersphinx.py
index 6161b6a3e..0cd5b0c0c 100644
--- a/sphinx/ext/intersphinx.py
+++ b/sphinx/ext/intersphinx.py
@@ -192,7 +192,7 @@ def fetch_inventory(app: Sphinx, uri: str, inv: Any) -> Any:
def fetch_inventory_group(
- name: str, uri: str, invs: Any, cache: Any, app: Any, now: float
+ name: str, uri: str, invs: Any, cache: Any, app: Any, now: float,
) -> bool:
cache_time = now - app.config.intersphinx_cache_limit * 86400
failures = []
@@ -237,7 +237,7 @@ def load_mappings(app: Sphinx) -> None:
futures = []
for name, (uri, invs) in app.config.intersphinx_mapping.values():
futures.append(pool.submit(
- fetch_inventory_group, name, uri, invs, inventories.cache, app, now
+ fetch_inventory_group, name, uri, invs, inventories.cache, app, now,
))
updated = [f.result() for f in concurrent.futures.as_completed(futures)]
@@ -327,7 +327,7 @@ def _resolve_reference_in_domain(env: BuildEnvironment,
inv_name: str | None, inventory: Inventory,
honor_disabled_refs: bool,
domain: Domain, objtypes: list[str],
- node: pending_xref, contnode: TextElement
+ node: pending_xref, contnode: TextElement,
) -> Element | None:
# we adjust the object types for backwards compatibility
if domain.name == 'std' and 'cmdoption' in objtypes:
@@ -406,7 +406,7 @@ def inventory_exists(env: BuildEnvironment, inv_name: str) -> bool:
def resolve_reference_in_inventory(env: BuildEnvironment,
inv_name: str,
- node: pending_xref, contnode: TextElement
+ node: pending_xref, contnode: TextElement,
) -> Element | None:
"""Attempt to resolve a missing reference via intersphinx references.
@@ -421,7 +421,7 @@ def resolve_reference_in_inventory(env: BuildEnvironment,
def resolve_reference_any_inventory(env: BuildEnvironment,
honor_disabled_refs: bool,
- node: pending_xref, contnode: TextElement
+ node: pending_xref, contnode: TextElement,
) -> Element | None:
"""Attempt to resolve a missing reference via intersphinx references.
@@ -433,7 +433,7 @@ def resolve_reference_any_inventory(env: BuildEnvironment,
def resolve_reference_detect_inventory(env: BuildEnvironment,
- node: pending_xref, contnode: TextElement
+ node: pending_xref, contnode: TextElement,
) -> Element | None:
"""Attempt to resolve a missing reference via intersphinx references.
@@ -474,8 +474,9 @@ class IntersphinxDispatcher(CustomReSTDispatcher):
This enables :external:***:/:external+***: roles on parsing reST document.
"""
- def role(self, role_name: str, language_module: ModuleType, lineno: int, reporter: Reporter
- ) -> tuple[RoleFunction, list[system_message]]:
+ def role(
+ self, role_name: str, language_module: ModuleType, lineno: int, reporter: Reporter,
+ ) -> tuple[RoleFunction, list[system_message]]:
if len(role_name) > 9 and role_name.startswith(('external:', 'external+')):
return IntersphinxRole(role_name), []
else:
@@ -640,7 +641,7 @@ def setup(app: Sphinx) -> dict[str, Any]:
return {
'version': sphinx.__display_version__,
'env_version': 1,
- 'parallel_read_safe': True
+ 'parallel_read_safe': True,
}
diff --git a/sphinx/ext/napoleon/docstring.py b/sphinx/ext/napoleon/docstring.py
index c58c091ff..d9d60c20a 100644
--- a/sphinx/ext/napoleon/docstring.py
+++ b/sphinx/ext/napoleon/docstring.py
@@ -25,7 +25,7 @@ _xref_or_code_regex = re.compile(
r'((?::(?:[a-zA-Z0-9]+[\-_+:.])*[a-zA-Z0-9]+:`.+?`)|'
r'(?:``.+?``))')
_xref_regex = re.compile(
- r'(?:(?::(?:[a-zA-Z0-9]+[\-_+:.])*[a-zA-Z0-9]+:)?`.+?`)'
+ r'(?:(?::(?:[a-zA-Z0-9]+[\-_+:.])*[a-zA-Z0-9]+:)?`.+?`)',
)
_bullet_list_regex = re.compile(r'^(\*|\+|\-)(\s+\S|\s*$)')
_enumerated_list_regex = re.compile(
@@ -36,7 +36,7 @@ _token_regex = re.compile(
r"(,\sor\s|\sor\s|\sof\s|:\s|\sto\s|,\sand\s|\sand\s|,\s"
r"|[{]|[}]"
r'|"(?:\\"|[^"])*"'
- r"|'(?:\\'|[^'])*')"
+ r"|'(?:\\'|[^'])*')",
)
_default_regex = re.compile(
r"^default[^_0-9A-Za-z].*$",
@@ -154,7 +154,7 @@ class GoogleDocstring:
what: str = '',
name: str = '',
obj: Any = None,
- options: Any = None
+ options: Any = None,
) -> None:
self._config = config
self._app = app
@@ -278,7 +278,7 @@ class GoogleDocstring:
line = self._lines.get(0)
return lines
- def _consume_field(self, parse_type: bool = True, prefer_type: bool = False
+ def _consume_field(self, parse_type: bool = True, prefer_type: bool = False,
) -> tuple[str, str, list[str]]:
line = self._lines.next()
@@ -327,7 +327,7 @@ class GoogleDocstring:
_descs = self.__class__(_descs, self._config).lines()
return _type, _descs
- def _consume_returns_section(self, preprocess_types: bool = False
+ def _consume_returns_section(self, preprocess_types: bool = False,
) -> list[tuple[str, str, list[str]]]:
lines = self._dedent(self._consume_to_next_section())
if lines:
@@ -417,7 +417,7 @@ class GoogleDocstring:
return ['.. %s::' % admonition, '']
def _format_block(
- self, prefix: str, lines: list[str], padding: str | None = None
+ self, prefix: str, lines: list[str], padding: str | None = None,
) -> list[str]:
if lines:
if padding is None:
@@ -435,7 +435,7 @@ class GoogleDocstring:
return [prefix]
def _format_docutils_params(self, fields: list[tuple[str, str, list[str]]],
- field_role: str = 'param', type_role: str = 'type'
+ field_role: str = 'param', type_role: str = 'type',
) -> list[str]:
lines = []
for _name, _type, _desc in fields:
@@ -480,7 +480,7 @@ class GoogleDocstring:
else:
return [field]
- def _format_fields(self, field_type: str, fields: list[tuple[str, str, list[str]]]
+ def _format_fields(self, field_type: str, fields: list[tuple[str, str, list[str]]],
) -> list[str]:
field_type = ':%s:' % field_type.strip()
padding = ' ' * len(field_type)
@@ -869,7 +869,7 @@ class GoogleDocstring:
if not hasattr(self, "_annotations"):
localns = getattr(self._config, "autodoc_type_aliases", {})
localns.update(getattr(
- self._config, "napoleon_type_aliases", {}
+ self._config, "napoleon_type_aliases", {},
) or {})
self._annotations = get_type_hints(self._obj, None, localns)
if _name in self._annotations:
@@ -1016,7 +1016,7 @@ def _token_type(token: str, location: str | None = None) -> str:
def _convert_numpy_type_spec(
- _type: str, location: str | None = None, translations: dict = {}
+ _type: str, location: str | None = None, translations: dict = {},
) -> str:
def convert_obj(obj, translations, default_translation):
translation = translations.get(obj, obj)
@@ -1154,7 +1154,7 @@ class NumpyDocstring(GoogleDocstring):
what: str = '',
name: str = '',
obj: Any = None,
- options: Any = None
+ options: Any = None,
) -> None:
self._directive_sections = ['.. index::']
super().__init__(docstring, config, app, what, name, obj, options)
@@ -1181,7 +1181,7 @@ class NumpyDocstring(GoogleDocstring):
else:
return func(name)
- def _consume_field(self, parse_type: bool = True, prefer_type: bool = False
+ def _consume_field(self, parse_type: bool = True, prefer_type: bool = False,
) -> tuple[str, str, list[str]]:
line = self._lines.next()
if parse_type:
@@ -1209,7 +1209,7 @@ class NumpyDocstring(GoogleDocstring):
_desc = self.__class__(_desc, self._config).lines()
return _name, _type, _desc
- def _consume_returns_section(self, preprocess_types: bool = False
+ def _consume_returns_section(self, preprocess_types: bool = False,
) -> list[tuple[str, str, list[str]]]:
return self._consume_fields(prefer_type=True)
diff --git a/sphinx/ext/todo.py b/sphinx/ext/todo.py
index a21f36ec1..589ff4e10 100644
--- a/sphinx/ext/todo.py
+++ b/sphinx/ext/todo.py
@@ -239,5 +239,5 @@ def setup(app: Sphinx) -> dict[str, Any]:
return {
'version': sphinx.__display_version__,
'env_version': 2,
- 'parallel_read_safe': True
+ 'parallel_read_safe': True,
}
diff --git a/sphinx/ext/viewcode.py b/sphinx/ext/viewcode.py
index 321c390ca..232363d6d 100644
--- a/sphinx/ext/viewcode.py
+++ b/sphinx/ext/viewcode.py
@@ -336,5 +336,5 @@ def setup(app: Sphinx) -> dict[str, Any]:
return {
'version': sphinx.__display_version__,
'env_version': 1,
- 'parallel_read_safe': True
+ 'parallel_read_safe': True,
}
diff --git a/sphinx/io.py b/sphinx/io.py
index b9e6147ff..f2a0369ad 100644
--- a/sphinx/io.py
+++ b/sphinx/io.py
@@ -212,7 +212,7 @@ def create_publisher(app: Sphinx, filetype: str) -> Publisher:
parser=parser,
writer=SphinxDummyWriter(),
source_class=SphinxFileInput,
- destination=NullOutput()
+ destination=NullOutput(),
)
# Propagate exceptions by default when used programmatically:
defaults = {"traceback": True, **app.env.settings}
diff --git a/sphinx/jinja2glue.py b/sphinx/jinja2glue.py
index 47670c925..8a25ed6b2 100644
--- a/sphinx/jinja2glue.py
+++ b/sphinx/jinja2glue.py
@@ -148,7 +148,7 @@ class BuiltinTemplateLoader(TemplateBridge, BaseLoader):
self,
builder: Builder,
theme: Theme | None = None,
- dirs: list[str] | None = None
+ dirs: list[str] | None = None,
) -> None:
# create a chain of paths to search
if theme:
diff --git a/sphinx/pycode/__init__.py b/sphinx/pycode/__init__.py
index 9ffb607db..c899410bd 100644
--- a/sphinx/pycode/__init__.py
+++ b/sphinx/pycode/__init__.py
@@ -77,7 +77,7 @@ class ModuleAnalyzer:
return filename, None
@classmethod
- def for_string(cls, string: str, modname: str, srcname: str = '<string>'
+ def for_string(cls, string: str, modname: str, srcname: str = '<string>',
) -> ModuleAnalyzer:
return cls(string, modname, srcname)
diff --git a/sphinx/pycode/ast.py b/sphinx/pycode/ast.py
index 702006817..58c0fc056 100644
--- a/sphinx/pycode/ast.py
+++ b/sphinx/pycode/ast.py
@@ -35,7 +35,7 @@ def parse(code: str, mode: str = 'exec') -> ast.AST:
"""Parse the *code* using the built-in ast module."""
warnings.warn(
"'sphinx.pycode.ast.parse' is deprecated, use 'ast.parse' instead.",
- RemovedInSphinx70Warning, stacklevel=2
+ RemovedInSphinx70Warning, stacklevel=2,
)
try:
return ast.parse(code, mode=mode, type_comments=True)
diff --git a/sphinx/pycode/parser.py b/sphinx/pycode/parser.py
index 49ef4f7ff..cddb8bcf5 100644
--- a/sphinx/pycode/parser.py
+++ b/sphinx/pycode/parser.py
@@ -349,7 +349,7 @@ class VariableCommentPicker(ast.NodeVisitor):
try:
targets = get_assign_targets(node)
varnames: list[str] = sum(
- [get_lvar_names(t, self=self.get_self()) for t in targets], []
+ [get_lvar_names(t, self=self.get_self()) for t in targets], [],
)
current_line = self.get_line(node.lineno)
except TypeError:
diff --git a/sphinx/pygments_styles.py b/sphinx/pygments_styles.py
index 327799b82..f0bc60519 100644
--- a/sphinx/pygments_styles.py
+++ b/sphinx/pygments_styles.py
@@ -92,5 +92,5 @@ class PyramidStyle(Style):
Generic.Output: "#888",
Generic.Traceback: "#04D",
- Error: "#a40000 bg:#fbe3e4"
+ Error: "#a40000 bg:#fbe3e4",
}
diff --git a/sphinx/registry.py b/sphinx/registry.py
index f0dfefe24..be70e117b 100644
--- a/sphinx/registry.py
+++ b/sphinx/registry.py
@@ -45,7 +45,7 @@ logger = logging.getLogger(__name__)
# list of deprecated extensions. Keys are extension name.
# Values are Sphinx version that merge the extension.
EXTENSION_BLACKLIST = {
- "sphinxjp.themecore": "1.2"
+ "sphinxjp.themecore": "1.2",
}
@@ -203,7 +203,7 @@ class SphinxComponentRegistry:
directives[name] = cls
def add_role_to_domain(self, domain: str, name: str,
- role: RoleFunction | XRefRole, override: bool = False
+ role: RoleFunction | XRefRole, override: bool = False,
) -> None:
logger.debug('[app] adding role to domain: %r', (domain, name, role))
if domain not in self.domains:
@@ -234,7 +234,7 @@ class SphinxComponentRegistry:
ref_nodeclass: type[TextElement] | None = None,
objname: str = '',
doc_field_types: list = [],
- override: bool = False
+ override: bool = False,
) -> None:
logger.debug('[app] adding object type: %r',
(directivename, rolename, indextemplate, parse_node,
@@ -263,7 +263,7 @@ class SphinxComponentRegistry:
indextemplate: str = '',
ref_nodeclass: type[TextElement] | None = None,
objname: str = '',
- override: bool = False
+ override: bool = False,
) -> None:
logger.debug('[app] adding crossref type: %r',
(directivename, rolename, indextemplate, ref_nodeclass, objname))
@@ -334,7 +334,7 @@ class SphinxComponentRegistry:
except ValueError as exc:
raise ExtensionError(
__('kwargs for add_node() must be a (visit, depart) '
- 'function tuple: %r=%r') % (builder_name, handlers)
+ 'function tuple: %r=%r') % (builder_name, handlers),
) from exc
def get_translator_class(self, builder: Builder) -> type[nodes.NodeVisitor]:
@@ -405,7 +405,7 @@ class SphinxComponentRegistry:
self,
node: type[Node],
figtype: str,
- title_getter: TitleGetter | None = None, override: bool = False
+ title_getter: TitleGetter | None = None, override: bool = False,
) -> None:
logger.debug('[app] adding enumerable node: (%r, %r, %r)', node, figtype, title_getter)
if node in self.enumerable_nodes and not override:
@@ -459,7 +459,7 @@ class SphinxComponentRegistry:
raise VersionRequirementError(
__('The %s extension used by this project needs at least '
'Sphinx v%s; it therefore cannot be built with this '
- 'version.') % (extname, err)
+ 'version.') % (extname, err),
) from err
if metadata is None:
diff --git a/sphinx/roles.py b/sphinx/roles.py
index fa80defb7..6a3558f02 100644
--- a/sphinx/roles.py
+++ b/sphinx/roles.py
@@ -365,7 +365,7 @@ class Abbreviation(SphinxRole):
# TODO: Change to use `SphinxRole` once SphinxRole is fixed to support options.
def code_role(name: str, rawtext: str, text: str, lineno: int,
inliner: docutils.parsers.rst.states.Inliner,
- options: dict = {}, content: list[str] = []
+ options: dict = {}, content: list[str] = [],
) -> tuple[list[Node], list[system_message]]:
options = options.copy()
docutils.parsers.rst.roles.set_classes(options)
diff --git a/sphinx/testing/util.py b/sphinx/testing/util.py
index 960eef761..4722f9dc5 100644
--- a/sphinx/testing/util.py
+++ b/sphinx/testing/util.py
@@ -109,7 +109,7 @@ class SphinxTestApp(application.Sphinx):
warning: IO | None = None,
tags: list[str] | None = None,
docutilsconf: str | None = None,
- parallel: int = 0
+ parallel: int = 0,
) -> None:
if docutilsconf is not None:
diff --git a/sphinx/transforms/__init__.py b/sphinx/transforms/__init__.py
index da102f942..f36473084 100644
--- a/sphinx/transforms/__init__.py
+++ b/sphinx/transforms/__init__.py
@@ -390,7 +390,7 @@ class GlossarySorter(SphinxTransform):
definition_list,
key=lambda item: unicodedata.normalize(
'NFD',
- cast(nodes.term, item)[0].astext().lower())
+ cast(nodes.term, item)[0].astext().lower()),
)
diff --git a/sphinx/transforms/i18n.py b/sphinx/transforms/i18n.py
index 240d29594..ae59a9f80 100644
--- a/sphinx/transforms/i18n.py
+++ b/sphinx/transforms/i18n.py
@@ -299,7 +299,7 @@ class Locale(SphinxTransform):
# ignore unexpected markups in translation message
unexpected: tuple[type[Element], ...] = (
nodes.paragraph, # expected form of translation
- nodes.title # generated by above "Subelements phase2"
+ nodes.title, # generated by above "Subelements phase2"
)
# following types are expected if
@@ -319,10 +319,10 @@ class Locale(SphinxTransform):
is_autofootnote_ref = NodeMatcher(nodes.footnote_reference, auto=Any)
old_foot_refs: list[nodes.footnote_reference] = list(
- node.findall(is_autofootnote_ref)
+ node.findall(is_autofootnote_ref),
)
new_foot_refs: list[nodes.footnote_reference] = list(
- patch.findall(is_autofootnote_ref)
+ patch.findall(is_autofootnote_ref),
)
if not noqa and len(old_foot_refs) != len(new_foot_refs):
old_foot_ref_rawsources = [ref.rawsource for ref in old_foot_refs]
@@ -413,7 +413,7 @@ class Locale(SphinxTransform):
is_citation_ref = NodeMatcher(nodes.citation_reference, refname=Any)
old_cite_refs: list[nodes.citation_reference] = list(node.findall(is_citation_ref))
new_cite_refs: list[nodes.citation_reference] = list(
- patch.findall(is_citation_ref)
+ patch.findall(is_citation_ref),
)
refname_ids_map = {}
if not noqa and len(old_cite_refs) != len(new_cite_refs):
diff --git a/sphinx/transforms/post_transforms/__init__.py b/sphinx/transforms/post_transforms/__init__.py
index 2fabf509a..adc380a62 100644
--- a/sphinx/transforms/post_transforms/__init__.py
+++ b/sphinx/transforms/post_transforms/__init__.py
@@ -115,7 +115,7 @@ class ReferencesResolver(SphinxPostTransform):
node.replace_self(newnodes)
def resolve_anyref(
- self, refdoc: str, node: pending_xref, contnode: Element
+ self, refdoc: str, node: pending_xref, contnode: Element,
) -> Element | None:
"""Resolve reference generated by the "any" role."""
stddomain = self.env.get_domain('std')
@@ -208,7 +208,7 @@ class ReferencesResolver(SphinxPostTransform):
msg = __('%r reference target not found: %s') % (typ, target)
logger.warning(msg, location=node, type='ref', subtype=typ)
- def find_pending_xref_condition(self, node: pending_xref, conditions: Sequence[str]
+ def find_pending_xref_condition(self, node: pending_xref, conditions: Sequence[str],
) -> list[Node] | None:
for condition in conditions:
matched = find_pending_xref_condition(node, condition)
diff --git a/sphinx/util/docfields.py b/sphinx/util/docfields.py
index 299fd1fbb..84905fea4 100644
--- a/sphinx/util/docfields.py
+++ b/sphinx/util/docfields.py
@@ -295,7 +295,7 @@ class DocFieldTransformer:
self.directive.domain,
target,
contnode=content[0],
- env=self.directive.state.document.settings.env
+ env=self.directive.state.document.settings.env,
)
if _is_single_paragraph(field_body):
paragraph = cast(nodes.paragraph, field_body[0])
diff --git a/sphinx/util/docutils.py b/sphinx/util/docutils.py
index 6006c02e9..b603923b7 100644
--- a/sphinx/util/docutils.py
+++ b/sphinx/util/docutils.py
@@ -253,7 +253,7 @@ class CustomReSTDispatcher:
self.enable()
def __exit__(
- self, exc_type: type[Exception], exc_value: Exception, traceback: Any
+ self, exc_type: type[Exception], exc_value: Exception, traceback: Any,
) -> None:
self.disable()
@@ -269,12 +269,13 @@ class CustomReSTDispatcher:
roles.role = self.role_func
def directive(self,
- directive_name: str, language_module: ModuleType, document: nodes.document
+ directive_name: str, language_module: ModuleType, document: nodes.document,
) -> tuple[type[Directive] | None, list[system_message]]:
return self.directive_func(directive_name, language_module, document)
- def role(self, role_name: str, language_module: ModuleType, lineno: int, reporter: Reporter
- ) -> tuple[RoleFunction, list[system_message]]:
+ def role(
+ self, role_name: str, language_module: ModuleType, lineno: int, reporter: Reporter,
+ ) -> tuple[RoleFunction, list[system_message]]:
return self.role_func(role_name, language_module, lineno, reporter)
@@ -321,15 +322,16 @@ class sphinx_domains(CustomReSTDispatcher):
raise ElementLookupError
def directive(self,
- directive_name: str, language_module: ModuleType, document: nodes.document
+ directive_name: str, language_module: ModuleType, document: nodes.document,
) -> tuple[type[Directive] | None, list[system_message]]:
try:
return self.lookup_domain_element('directive', directive_name)
except ElementLookupError:
return super().directive(directive_name, language_module, document)
- def role(self, role_name: str, language_module: ModuleType, lineno: int, reporter: Reporter
- ) -> tuple[RoleFunction, list[system_message]]:
+ def role(
+ self, role_name: str, language_module: ModuleType, lineno: int, reporter: Reporter,
+ ) -> tuple[RoleFunction, list[system_message]]:
try:
return self.lookup_domain_element('role', role_name)
except ElementLookupError:
@@ -465,7 +467,7 @@ class SphinxRole:
#: (from the "role" directive).
def __call__(self, name: str, rawtext: str, text: str, lineno: int,
- inliner: Inliner, options: dict = {}, content: list[str] = []
+ inliner: Inliner, options: dict = {}, content: list[str] = [],
) -> tuple[list[Node], list[system_message]]:
self.rawtext = rawtext
self.text = unescape(text)
@@ -528,7 +530,7 @@ class ReferenceRole(SphinxRole):
explicit_title_re = re.compile(r'^(.+?)\s*(?<!\x00)<(.*?)>$', re.DOTALL)
def __call__(self, name: str, rawtext: str, text: str, lineno: int,
- inliner: Inliner, options: dict = {}, content: list[str] = []
+ inliner: Inliner, options: dict = {}, content: list[str] = [],
) -> tuple[list[Node], list[system_message]]:
# if the first character is a bang, don't cross-reference at all
self.disabled = text.startswith('!')
diff --git a/sphinx/util/i18n.py b/sphinx/util/i18n.py
index b20fc016b..3069b5458 100644
--- a/sphinx/util/i18n.py
+++ b/sphinx/util/i18n.py
@@ -193,7 +193,7 @@ def babel_format_date(date: datetime, format: str, locale: str,
def format_date(
- format: str, date: datetime | None = None, language: str | None = None
+ format: str, date: datetime | None = None, language: str | None = None,
) -> str:
if date is None:
# If time is not specified, try to use $SOURCE_DATE_EPOCH variable
diff --git a/sphinx/util/images.py b/sphinx/util/images.py
index 8e9c8bc7c..7297e1699 100644
--- a/sphinx/util/images.py
+++ b/sphinx/util/images.py
@@ -23,7 +23,7 @@ mime_suffixes = {
'.pdf': 'application/pdf',
'.svg': 'image/svg+xml',
'.svgz': 'image/svg+xml',
- '.ai': 'application/illustrator'
+ '.ai': 'application/illustrator',
}
_suffix_from_mime = {v: k for k, v in reversed(mime_suffixes.items())}
diff --git a/sphinx/util/inspect.py b/sphinx/util/inspect.py
index 47776d65b..8e98ca447 100644
--- a/sphinx/util/inspect.py
+++ b/sphinx/util/inspect.py
@@ -522,7 +522,7 @@ def _should_unwrap(subject: Callable) -> bool:
return False
-def signature(subject: Callable, bound_method: bool = False, type_aliases: dict = {}
+def signature(subject: Callable, bound_method: bool = False, type_aliases: dict = {},
) -> inspect.Signature:
"""Return a Signature object for the given *subject*.
@@ -579,7 +579,7 @@ def signature(subject: Callable, bound_method: bool = False, type_aliases: dict
def evaluate_signature(sig: inspect.Signature, globalns: dict | None = None,
- localns: dict | None = None
+ localns: dict | None = None,
) -> inspect.Signature:
"""Evaluate unresolved type annotations in a signature object."""
def evaluate_forwardref(ref: ForwardRef, globalns: dict, localns: dict) -> Any:
@@ -728,7 +728,7 @@ def signature_from_ast(node: ast.FunctionDef, code: str = '') -> inspect.Signatu
default = Parameter.empty
else:
default = DefaultValue(
- ast_unparse(defaults[i + posonlyargs], code) # type: ignore
+ ast_unparse(defaults[i + posonlyargs], code), # type: ignore
)
annotation = ast_unparse(arg.annotation, code) or Parameter.empty
@@ -764,7 +764,7 @@ def getdoc(
attrgetter: Callable = safe_getattr,
allow_inherited: bool = False,
cls: Any = None,
- name: str | None = None
+ name: str | None = None,
) -> str | None:
"""Get the docstring for the object.
diff --git a/sphinx/util/jsdump.py b/sphinx/util/jsdump.py
index e2014716b..4a14fbf6c 100644
--- a/sphinx/util/jsdump.py
+++ b/sphinx/util/jsdump.py
@@ -90,7 +90,7 @@ def dumps(obj: Any, key: bool = False) -> str:
return str(obj)
elif isinstance(obj, dict):
return '{%s}' % ','.join(
- sorted(f'{dumps(key, True)}:{dumps(value)}' for key, value in obj.items())
+ sorted(f'{dumps(key, True)}:{dumps(value)}' for key, value in obj.items()),
)
elif isinstance(obj, set):
return '[%s]' % ','.join(sorted(dumps(x) for x in obj))
diff --git a/sphinx/util/logging.py b/sphinx/util/logging.py
index 6804dd3ca..da7f01ba0 100644
--- a/sphinx/util/logging.py
+++ b/sphinx/util/logging.py
@@ -45,7 +45,7 @@ COLOR_MAP = defaultdict(lambda: 'blue',
{
logging.ERROR: 'darkred',
logging.WARNING: 'red',
- logging.DEBUG: 'darkgray'
+ logging.DEBUG: 'darkgray',
})
@@ -121,7 +121,7 @@ class SphinxLoggerAdapter(logging.LoggerAdapter):
KEYWORDS = ['type', 'subtype', 'location', 'nonl', 'color', 'once']
def log( # type: ignore[override]
- self, level: int | str, msg: str, *args: Any, **kwargs: Any
+ self, level: int | str, msg: str, *args: Any, **kwargs: Any,
) -> None:
if isinstance(level, int):
super().log(level, msg, *args, **kwargs)
diff --git a/sphinx/util/nodes.py b/sphinx/util/nodes.py
index 95ff063c4..1b43bd72e 100644
--- a/sphinx/util/nodes.py
+++ b/sphinx/util/nodes.py
@@ -299,7 +299,7 @@ def get_prev_node(node: Node) -> Node | None:
def traverse_translatable_index(
- doctree: Element
+ doctree: Element,
) -> Iterable[tuple[Element, list[IndexEntry]]]:
"""Traverse translatable index node from a document tree."""
matcher = NodeMatcher(addnodes.index, inline=False)
@@ -354,7 +354,7 @@ indextypes = [
]
-def process_index_entry(entry: str, targetid: str
+def process_index_entry(entry: str, targetid: str,
) -> list[tuple[str, str, str, str, str | None]]:
from sphinx.domains.python import pairindextypes
@@ -394,7 +394,7 @@ def process_index_entry(entry: str, targetid: str
def inline_all_toctrees(builder: Builder, docnameset: set[str], docname: str,
- tree: nodes.document, colorfunc: Callable, traversed: list[str]
+ tree: nodes.document, colorfunc: Callable, traversed: list[str],
) -> nodes.document:
"""Inline all toctrees in the *tree*.
@@ -526,7 +526,7 @@ def make_id(env: BuildEnvironment, document: nodes.document,
return node_id
-def find_pending_xref_condition(node: addnodes.pending_xref, condition: str
+def find_pending_xref_condition(node: addnodes.pending_xref, condition: str,
) -> Element | None:
"""Pick matched pending_xref_condition node up from the pending_xref."""
for subnode in node:
@@ -537,7 +537,7 @@ def find_pending_xref_condition(node: addnodes.pending_xref, condition: str
def make_refnode(builder: Builder, fromdocname: str, todocname: str, targetid: str | None,
- child: Node | list[Node], title: str | None = None
+ child: Node | list[Node], title: str | None = None,
) -> nodes.reference:
"""Shortcut to create a reference node."""
node = nodes.reference('', '', internal=True)
diff --git a/sphinx/util/osutil.py b/sphinx/util/osutil.py
index f6b13c899..15f5b408a 100644
--- a/sphinx/util/osutil.py
+++ b/sphinx/util/osutil.py
@@ -200,7 +200,7 @@ class FileAvoidWrite:
return self
def __exit__(
- self, exc_type: type[Exception], exc_value: Exception, traceback: Any
+ self, exc_type: type[Exception], exc_value: Exception, traceback: Any,
) -> bool:
self.close()
return True
diff --git a/sphinx/util/parallel.py b/sphinx/util/parallel.py
index 16bb5f200..928d5b0dc 100644
--- a/sphinx/util/parallel.py
+++ b/sphinx/util/parallel.py
@@ -30,7 +30,7 @@ class SerialTasks:
pass
def add_task(
- self, task_func: Callable, arg: Any = None, result_func: Callable | None = None
+ self, task_func: Callable, arg: Any = None, result_func: Callable | None = None,
) -> None:
if arg is not None:
res = task_func(arg)
@@ -80,7 +80,7 @@ class ParallelTasks:
pipe.send((failed, collector.logs, ret))
def add_task(
- self, task_func: Callable, arg: Any = None, result_func: Callable | None = None
+ self, task_func: Callable, arg: Any = None, result_func: Callable | None = None,
) -> None:
tid = self._taskid
self._taskid += 1
diff --git a/sphinx/util/template.py b/sphinx/util/template.py
index 557795053..2bcfd28fc 100644
--- a/sphinx/util/template.py
+++ b/sphinx/util/template.py
@@ -62,7 +62,7 @@ class SphinxRenderer(FileRenderer):
class LaTeXRenderer(SphinxRenderer):
def __init__(
- self, template_path: str | None = None, latex_engine: str | None = None
+ self, template_path: str | None = None, latex_engine: str | None = None,
) -> None:
if template_path is None:
template_path = os.path.join(package_dir, 'templates', 'latex')
@@ -86,7 +86,7 @@ class LaTeXRenderer(SphinxRenderer):
class ReSTRenderer(SphinxRenderer):
def __init__(
- self, template_path: None | str | list[str] = None, language: str | None = None
+ self, template_path: None | str | list[str] = None, language: str | None = None,
) -> None:
super().__init__(template_path)
diff --git a/sphinx/util/typing.py b/sphinx/util/typing.py
index e49e084b1..3f2acb822 100644
--- a/sphinx/util/typing.py
+++ b/sphinx/util/typing.py
@@ -56,7 +56,7 @@ Inventory = Dict[str, Dict[str, InventoryItem]]
def get_type_hints(
- obj: Any, globalns: dict[str, Any] | None = None, localns: dict | None = None
+ obj: Any, globalns: dict[str, Any] | None = None, localns: dict | None = None,
) -> dict[str, Any]:
"""Return a dictionary containing type hints for a function, method, module or class
object.
@@ -299,7 +299,7 @@ def stringify_annotation(
qualname = annotation_qualname
else:
qualname = stringify_annotation(
- annotation.__origin__, 'fully-qualified-except-typing'
+ annotation.__origin__, 'fully-qualified-except-typing',
).replace('typing.', '') # ex. Union
elif annotation_qualname:
qualname = annotation_qualname
diff --git a/sphinx/writers/_html4.py b/sphinx/writers/_html4.py
index 347dec78f..927309fca 100644
--- a/sphinx/writers/_html4.py
+++ b/sphinx/writers/_html4.py
@@ -429,7 +429,7 @@ class HTML4Translator(SphinxTranslator, BaseTranslator):
highlighted = self.highlighter.highlight_block(
node.rawsource, lang, opts=opts, linenos=linenos,
- location=node, **highlight_args
+ location=node, **highlight_args,
)
starttag = self.starttag(node, 'div', suffix='',
CLASS='highlight-%s notranslate' % lang)
diff --git a/sphinx/writers/html5.py b/sphinx/writers/html5.py
index 8cccfd2dd..afd873908 100644
--- a/sphinx/writers/html5.py
+++ b/sphinx/writers/html5.py
@@ -415,7 +415,7 @@ class HTML5Translator(SphinxTranslator, BaseTranslator):
highlighted = self.highlighter.highlight_block(
node.rawsource, lang, opts=opts, linenos=linenos,
- location=node, **highlight_args
+ location=node, **highlight_args,
)
starttag = self.starttag(node, 'div', suffix='',
CLASS='highlight-%s notranslate' % lang)
diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py
index 8f19e0946..5af951661 100644
--- a/sphinx/writers/latex.py
+++ b/sphinx/writers/latex.py
@@ -198,7 +198,7 @@ class Table:
self.cells[(self.row + row, self.col + col)] = self.cell_id
def cell(
- self, row: int | None = None, col: int | None = None
+ self, row: int | None = None, col: int | None = None,
) -> TableCell | None:
"""Returns a cell object (i.e. rectangular area) containing given position.
@@ -433,7 +433,7 @@ class LaTeXTranslator(SphinxTranslator):
def astext(self) -> str:
self.elements.update({
'body': ''.join(self.body),
- 'indices': self.generate_indices()
+ 'indices': self.generate_indices(),
})
return self.render('latex.tex_t', self.elements)
@@ -1824,7 +1824,7 @@ class LaTeXTranslator(SphinxTranslator):
hlcode = self.highlighter.highlight_block(
node.rawsource, lang, opts=opts, linenos=linenos,
- location=node, **highlight_args
+ location=node, **highlight_args,
)
if self.in_footnote:
self.body.append(CR + r'\sphinxSetupCodeBlockInFootnote')
diff --git a/sphinx/writers/texinfo.py b/sphinx/writers/texinfo.py
index 1d72e4130..22817b03c 100644
--- a/sphinx/writers/texinfo.py
+++ b/sphinx/writers/texinfo.py
@@ -221,7 +221,7 @@ class TexinfoTranslator(SphinxTranslator):
'copyright': self.escape(self.config.copyright),
'date': self.escape(self.config.today or
format_date(self.config.today_fmt or _('%b %d, %Y'),
- language=self.config.language))
+ language=self.config.language)),
})
# title
title: str = self.settings.title
@@ -495,7 +495,7 @@ class TexinfoTranslator(SphinxTranslator):
# TODO: move this to sphinx.util
def collect_footnotes(
- self, node: Element
+ self, node: Element,
) -> dict[str, list[collected_footnote | bool]]:
def footnotes_under(n: Element) -> Iterator[nodes.footnote]:
if isinstance(n, nodes.footnote):
diff --git a/sphinx/writers/text.py b/sphinx/writers/text.py
index 976ba504a..3bce03ac6 100644
--- a/sphinx/writers/text.py
+++ b/sphinx/writers/text.py
@@ -233,8 +233,8 @@ class Table:
linestr.append(
" " +
physical_text.ljust(
- self.cell_width(cell, self.measured_widths) + 1 + adjust_len
- ) + "|"
+ self.cell_width(cell, self.measured_widths) + 1 + adjust_len,
+ ) + "|",
)
out.append("".join(linestr))
out.append(writesep("-"))
@@ -759,7 +759,7 @@ class TextTranslator(SphinxTranslator):
def visit_entry(self, node: Element) -> None:
self.entry = Cell(
- rowspan=node.get("morerows", 0) + 1, colspan=node.get("morecols", 0) + 1
+ rowspan=node.get("morerows", 0) + 1, colspan=node.get("morecols", 0) + 1,
)
self.new_state(0)
diff --git a/tests/test_application.py b/tests/test_application.py
index e297effce..a7a4e7093 100644
--- a/tests/test_application.py
+++ b/tests/test_application.py
@@ -32,7 +32,7 @@ def test_instantiation(tmp_path_factory, rootdir: str, monkeypatch):
app_ = SphinxTestApp(
srcdir=path(src_dir),
status=StringIO(),
- warning=StringIO()
+ warning=StringIO(),
)
sys.path[:] = syspath
app_.cleanup()
diff --git a/tests/test_build_epub.py b/tests/test_build_epub.py
index e183c9c17..1827233a3 100644
--- a/tests/test_build_epub.py
+++ b/tests/test_build_epub.py
@@ -28,7 +28,7 @@ class EPUBElementTree:
'ibooks': 'http://vocabulary.itunes.apple.com/rdf/ibooks/vocabulary-extensions-1.0/',
'ncx': 'http://www.daisy.org/z3986/2005/ncx/',
'xhtml': 'http://www.w3.org/1999/xhtml',
- 'epub': 'http://www.idpf.org/2007/ops'
+ 'epub': 'http://www.idpf.org/2007/ops',
}
def __init__(self, tree):
diff --git a/tests/test_build_html.py b/tests/test_build_html.py
index 5a0ca59fe..2b4143d87 100644
--- a/tests/test_build_html.py
+++ b/tests/test_build_html.py
@@ -60,7 +60,7 @@ def flat_dict(d):
[
zip(cycle([fname]), values)
for fname, values in d.items()
- ]
+ ],
)
@@ -396,7 +396,7 @@ def test_html4_deprecation(make_app, tempdir):
'otherext.html': [
(".//h1", "Generated section"),
(".//a[@href='_sources/otherext.foo.txt']", ''),
- ]
+ ],
}))
@pytest.mark.sphinx('html', tags=['testtag'],
confoverrides={'html_context.hckey_co': 'hcval_co'})
@@ -1434,7 +1434,7 @@ def test_html_sidebar(app, status, warning):
@pytest.mark.parametrize('fname,expect', flat_dict({
'index.html': [(".//em/a[@href='https://example.com/man.1']", "", True),
(".//em/a[@href='https://example.com/ls.1']", "", True),
- (".//em/a[@href='https://example.com/sphinx.']", "", True)]
+ (".//em/a[@href='https://example.com/sphinx.']", "", True)],
}))
@pytest.mark.sphinx('html', testroot='manpage_url', confoverrides={
diff --git a/tests/test_build_latex.py b/tests/test_build_latex.py
index 0a56282b4..946e6ded2 100644
--- a/tests/test_build_latex.py
+++ b/tests/test_build_latex.py
@@ -178,7 +178,7 @@ def test_latex_basic(app, status, warning):
@pytest.mark.sphinx('latex', testroot='basic',
confoverrides={
- 'latex_documents': [('index', 'test.tex', 'title', 'author', 'manual')]
+ 'latex_documents': [('index', 'test.tex', 'title', 'author', 'manual')],
})
def test_latex_basic_manual(app, status, warning):
app.builder.build_all()
@@ -190,7 +190,7 @@ def test_latex_basic_manual(app, status, warning):
@pytest.mark.sphinx('latex', testroot='basic',
confoverrides={
- 'latex_documents': [('index', 'test.tex', 'title', 'author', 'howto')]
+ 'latex_documents': [('index', 'test.tex', 'title', 'author', 'howto')],
})
def test_latex_basic_howto(app, status, warning):
app.builder.build_all()
@@ -203,7 +203,7 @@ def test_latex_basic_howto(app, status, warning):
@pytest.mark.sphinx('latex', testroot='basic',
confoverrides={
'language': 'ja',
- 'latex_documents': [('index', 'test.tex', 'title', 'author', 'manual')]
+ 'latex_documents': [('index', 'test.tex', 'title', 'author', 'manual')],
})
def test_latex_basic_manual_ja(app, status, warning):
app.builder.build_all()
@@ -216,7 +216,7 @@ def test_latex_basic_manual_ja(app, status, warning):
@pytest.mark.sphinx('latex', testroot='basic',
confoverrides={
'language': 'ja',
- 'latex_documents': [('index', 'test.tex', 'title', 'author', 'howto')]
+ 'latex_documents': [('index', 'test.tex', 'title', 'author', 'howto')],
})
def test_latex_basic_howto_ja(app, status, warning):
app.builder.build_all()
@@ -1119,7 +1119,7 @@ def test_latex_toplevel_sectioning_is_part(app, status, warning):
confoverrides={'latex_toplevel_sectioning': 'part',
'latex_documents': [
('index', 'python.tex', 'Sphinx Tests Documentation',
- 'Georg Brandl', 'howto')
+ 'Georg Brandl', 'howto'),
]})
def test_latex_toplevel_sectioning_is_part_with_howto(app, status, warning):
app.builder.build_all()
@@ -1149,7 +1149,7 @@ def test_latex_toplevel_sectioning_is_chapter(app, status, warning):
confoverrides={'latex_toplevel_sectioning': 'chapter',
'latex_documents': [
('index', 'python.tex', 'Sphinx Tests Documentation',
- 'Georg Brandl', 'howto')
+ 'Georg Brandl', 'howto'),
]})
def test_latex_toplevel_sectioning_is_chapter_with_howto(app, status, warning):
app.builder.build_all()
diff --git a/tests/test_build_linkcheck.py b/tests/test_build_linkcheck.py
index 0374e5d3f..57a4075b9 100644
--- a/tests/test_build_linkcheck.py
+++ b/tests/test_build_linkcheck.py
@@ -2,6 +2,7 @@
from __future__ import annotations
+import base64
import http.server
import json
import re
@@ -13,7 +14,6 @@ from queue import Queue
from unittest import mock
import pytest
-import requests
from sphinx.builders.linkcheck import HyperlinkAvailabilityCheckWorker, RateLimit
from sphinx.testing.util import strip_escseq
@@ -70,7 +70,7 @@ def test_defaults_json(app):
'status': 'working',
'code': 0,
'uri': 'https://www.google.com#!bar',
- 'info': ''
+ 'info': '',
}
# looking for non-existent URL should fail
dnerow = rowsby['https://localhost:7777/doesnotexist']
@@ -85,7 +85,7 @@ def test_defaults_json(app):
'status': 'broken',
'code': 0,
'uri': 'https://www.google.com/image2.png',
- 'info': '404 Client Error: Not Found for url: https://www.google.com/image2.png'
+ 'info': '404 Client Error: Not Found for url: https://www.google.com/image2.png',
}
# looking for '#top' and '#does-not-exist' not found should fail
assert rowsby["https://www.google.com/#top"]["info"] == "Anchor 'top' not found"
@@ -100,7 +100,7 @@ def test_defaults_json(app):
'status': 'redirected',
'code': 302,
'uri': 'https://www.sphinx-doc.org/',
- 'info': 'https://www.sphinx-doc.org/en/master/'
+ 'info': 'https://www.sphinx-doc.org/en/master/',
}
@@ -113,7 +113,7 @@ def test_defaults_json(app):
'https://www.sphinx-doc.org/',
'https://www.google.com/image.png',
'https://www.google.com/image2.png',
- 'path/to/notfound']
+ 'path/to/notfound'],
})
def test_anchors_ignored(app):
app.build()
@@ -162,8 +162,8 @@ def test_auth_header_uses_first_match(app, capsys):
with http_server(HeadersDumperHandler):
app.build()
stdout, stderr = capsys.readouterr()
- auth = requests.auth._basic_auth_str('user1', 'password')
- assert "Authorization: %s\n" % auth in stdout
+ encoded_auth = base64.b64encode(b'user1:password').decode('ascii')
+ assert f"Authorization: Basic {encoded_auth}\n" in stdout
@pytest.mark.sphinx(
@@ -184,7 +184,7 @@ def test_auth_header_no_match(app, capsys):
},
"*": {
"X-Secret": "open sesami",
- }
+ },
}})
def test_linkcheck_request_headers(app, capsys):
with http_server(HeadersDumperHandler):
@@ -200,7 +200,7 @@ def test_linkcheck_request_headers(app, capsys):
'linkcheck', testroot='linkcheck-localserver', freshenv=True,
confoverrides={'linkcheck_request_headers': {
"http://localhost:7777": {"Accept": "application/json"},
- "*": {"X-Secret": "open sesami"}
+ "*": {"X-Secret": "open sesami"},
}})
def test_linkcheck_request_headers_no_slash(app, capsys):
with http_server(HeadersDumperHandler):
@@ -216,7 +216,7 @@ def test_linkcheck_request_headers_no_slash(app, capsys):
'linkcheck', testroot='linkcheck-localserver', freshenv=True,
confoverrides={'linkcheck_request_headers': {
"http://do.not.match.org": {"Accept": "application/json"},
- "*": {"X-Secret": "open sesami"}
+ "*": {"X-Secret": "open sesami"},
}})
def test_linkcheck_request_headers_default(app, capsys):
with http_server(HeadersDumperHandler):
@@ -265,7 +265,7 @@ def test_follows_redirects_on_HEAD(app, capsys, warning):
"""\
127.0.0.1 - - [] "HEAD / HTTP/1.1" 302 -
127.0.0.1 - - [] "HEAD /?redirected=1 HTTP/1.1" 204 -
- """
+ """,
)
assert warning.getvalue() == ''
@@ -285,14 +285,14 @@ def test_follows_redirects_on_GET(app, capsys, warning):
127.0.0.1 - - [] "HEAD / HTTP/1.1" 405 -
127.0.0.1 - - [] "GET / HTTP/1.1" 302 -
127.0.0.1 - - [] "GET /?redirected=1 HTTP/1.1" 204 -
- """
+ """,
)
assert warning.getvalue() == ''
@pytest.mark.sphinx('linkcheck', testroot='linkcheck-localserver-warn-redirects',
freshenv=True, confoverrides={
- 'linkcheck_allowed_redirects': {'http://localhost:7777/.*1': '.*'}
+ 'linkcheck_allowed_redirects': {'http://localhost:7777/.*1': '.*'},
})
def test_linkcheck_allowed_redirects(app, warning):
with http_server(make_redirect_handler(support_head=False)):
@@ -488,7 +488,7 @@ def test_too_many_requests_retry_after_int_delay(app, capsys, status):
"""\
127.0.0.1 - - [] "HEAD / HTTP/1.1" 429 -
127.0.0.1 - - [] "HEAD / HTTP/1.1" 200 -
- """
+ """,
)
@@ -512,7 +512,7 @@ def test_too_many_requests_retry_after_HTTP_date(app, capsys):
"""\
127.0.0.1 - - [] "HEAD / HTTP/1.1" 429 -
127.0.0.1 - - [] "HEAD / HTTP/1.1" 200 -
- """
+ """,
)
@@ -535,7 +535,7 @@ def test_too_many_requests_retry_after_without_header(app, capsys):
"""\
127.0.0.1 - - [] "HEAD / HTTP/1.1" 429 -
127.0.0.1 - - [] "HEAD / HTTP/1.1" 200 -
- """
+ """,
)
diff --git a/tests/test_config.py b/tests/test_config.py
index b0e2112a5..900fc1984 100644
--- a/tests/test_config.py
+++ b/tests/test_config.py
@@ -344,7 +344,7 @@ def test_nitpick_ignore(app, status, warning):
'nitpick_ignore_regex': [
(r'py:.*', r'.*postfix'),
(r'.*:class', r'prefix.*'),
- ]
+ ],
})
def test_nitpick_ignore_regex1(app, status, warning):
app.builder.build_all()
@@ -355,7 +355,7 @@ def test_nitpick_ignore_regex1(app, status, warning):
'nitpick_ignore_regex': [
(r'py:.*', r'prefix.*'),
(r'.*:class', r'.*postfix'),
- ]
+ ],
})
def test_nitpick_ignore_regex2(app, status, warning):
app.builder.build_all()
@@ -372,7 +372,7 @@ def test_nitpick_ignore_regex2(app, status, warning):
(r'.*', r'prefix'),
(r'.*', r'postfix'),
(r'.*', r''),
- ]
+ ],
})
def test_nitpick_ignore_regex_fullmatch(app, status, warning):
app.builder.build_all()
diff --git a/tests/test_domain_cpp.py b/tests/test_domain_cpp.py
index cddf41c31..55542e655 100644
--- a/tests/test_domain_cpp.py
+++ b/tests/test_domain_cpp.py
@@ -1212,7 +1212,7 @@ def test_domain_cpp_build_with_add_function_parentheses_is_True(app, status, war
('', 'Sphinx::version'),
('', 'version'),
('', 'List'),
- ('', 'MyEnum')
+ ('', 'MyEnum'),
]
parenPatterns = [
('ref function without parens ', r'paren_1\(\)'),
@@ -1222,7 +1222,7 @@ def test_domain_cpp_build_with_add_function_parentheses_is_True(app, status, war
('ref op call without parens ', r'paren_5::operator\(\)\(\)'),
('ref op call with parens ', r'paren_6::operator\(\)\(\)'),
('ref op call without parens, explicit title ', 'paren_7_title'),
- ('ref op call with parens, explicit title ', 'paren_8_title')
+ ('ref op call with parens, explicit title ', 'paren_8_title'),
]
f = 'roles.html'
@@ -1253,7 +1253,7 @@ def test_domain_cpp_build_with_add_function_parentheses_is_False(app, status, wa
('', 'Sphinx::version'),
('', 'version'),
('', 'List'),
- ('', 'MyEnum')
+ ('', 'MyEnum'),
]
parenPatterns = [
('ref function without parens ', 'paren_1'),
@@ -1263,7 +1263,7 @@ def test_domain_cpp_build_with_add_function_parentheses_is_False(app, status, wa
('ref op call without parens ', r'paren_5::operator\(\)'),
('ref op call with parens ', r'paren_6::operator\(\)'),
('ref op call without parens, explicit title ', 'paren_7_title'),
- ('ref op call with parens, explicit title ', 'paren_8_title')
+ ('ref op call with parens, explicit title ', 'paren_8_title'),
]
f = 'roles.html'
diff --git a/tests/test_domain_py.py b/tests/test_domain_py.py
index 8343c5157..66204e69e 100644
--- a/tests/test_domain_py.py
+++ b/tests/test_domain_py.py
@@ -597,7 +597,7 @@ def test_pydata_signature(app):
desc_sig_space,
[desc_sig_punctuation, '='],
desc_sig_space,
- "1")]
+ "1")],
)],
desc_content)]))
assert_node(doctree[1], addnodes.desc, desctype="data",
@@ -893,7 +893,7 @@ def test_pyattribute(app):
[desc_annotation, (desc_sig_space,
[desc_sig_punctuation, '='],
desc_sig_space,
- "''")]
+ "''")],
)],
[desc_content, ()]))
assert_node(doctree[1][1][1][0][1][2], pending_xref, **{"py:class": "Class"})
@@ -1346,7 +1346,7 @@ def test_module_index(app):
IndexEntry('sphinx.builders.html', 2, 'index', 'module-sphinx.builders.html', '', '', ''),
IndexEntry('sphinx.config', 2, 'index', 'module-sphinx.config', '', '', ''),
IndexEntry('sphinx_intl', 0, 'index', 'module-sphinx_intl', '', '', '')])],
- False
+ False,
)
@@ -1358,7 +1358,7 @@ def test_module_index_submodule(app):
assert index.generate() == (
[('s', [IndexEntry('sphinx', 1, '', '', '', '', ''),
IndexEntry('sphinx.config', 2, 'index', 'module-sphinx.config', '', '', '')])],
- False
+ False,
)
@@ -1371,7 +1371,7 @@ def test_module_index_not_collapsed(app):
assert index.generate() == (
[('d', [IndexEntry('docutils', 0, 'index', 'module-docutils', '', '', '')]),
('s', [IndexEntry('sphinx', 0, 'index', 'module-sphinx', '', '', '')])],
- True
+ True,
)
@@ -1392,7 +1392,7 @@ def test_modindex_common_prefix(app):
('d', [IndexEntry('docutils', 0, 'index', 'module-docutils', '', '', '')]),
('s', [IndexEntry('sphinx', 0, 'index', 'module-sphinx', '', '', ''),
IndexEntry('sphinx_intl', 0, 'index', 'module-sphinx_intl', '', '', '')])],
- True
+ True,
)
diff --git a/tests/test_environment_indexentries.py b/tests/test_environment_indexentries.py
index 1cba7f2cf..2fb7faee0 100644
--- a/tests/test_environment_indexentries.py
+++ b/tests/test_environment_indexentries.py
@@ -37,7 +37,7 @@ def test_create_single_index(app):
# ignored when getting the first letter.
assert index[5] == ('\u05e2', [(
'\N{RIGHT-TO-LEFT MARK}\u05e2\u05d1\u05e8\u05d9\u05ea\N{LEFT-TO-RIGHT MARK}',
- [[('', '#index-7')], [], None]
+ [[('', '#index-7')], [], None],
)])
diff --git a/tests/test_ext_apidoc.py b/tests/test_ext_apidoc.py
index 66b106fe6..75208b0d5 100644
--- a/tests/test_ext_apidoc.py
+++ b/tests/test_ext_apidoc.py
@@ -375,7 +375,7 @@ def extract_toc(path):
@pytest.mark.apidoc(
coderoot='test-apidoc-subpackage-in-toc',
- options=['--separate']
+ options=['--separate'],
)
def test_subpackage_in_toc(make_app, apidoc):
"""Make sure that empty subpackages with non-empty subpackages in them
diff --git a/tests/test_ext_autodoc.py b/tests/test_ext_autodoc.py
index 99d56b27b..6ac42a595 100644
--- a/tests/test_ext_autodoc.py
+++ b/tests/test_ext_autodoc.py
@@ -532,7 +532,7 @@ def test_autodoc_attributes(app):
' :synopsis: Synopsis',
' :platform: Platform',
' :deprecated:',
- ''
+ '',
]
@@ -552,7 +552,7 @@ def test_autodoc_members(app):
' .. py:attribute:: Base.inheritedattr',
' .. py:method:: Base.inheritedclassmeth()',
' .. py:method:: Base.inheritedmeth()',
- ' .. py:method:: Base.inheritedstaticmeth(cls)'
+ ' .. py:method:: Base.inheritedstaticmeth(cls)',
]
# default specific-members
@@ -561,7 +561,7 @@ def test_autodoc_members(app):
assert list(filter(lambda l: '::' in l, actual)) == [
'.. py:class:: Base()',
' .. py:method:: Base.inheritedmeth()',
- ' .. py:method:: Base.inheritedstaticmeth(cls)'
+ ' .. py:method:: Base.inheritedstaticmeth(cls)',
]
# ALL-members override autodoc_default_options
@@ -573,7 +573,7 @@ def test_autodoc_members(app):
' .. py:attribute:: Base.inheritedattr',
' .. py:method:: Base.inheritedclassmeth()',
' .. py:method:: Base.inheritedmeth()',
- ' .. py:method:: Base.inheritedstaticmeth(cls)'
+ ' .. py:method:: Base.inheritedstaticmeth(cls)',
]
# members override autodoc_default_options
@@ -592,7 +592,7 @@ def test_autodoc_members(app):
assert list(filter(lambda l: '::' in l, actual)) == [
'.. py:class:: Base()',
' .. py:method:: Base.inheritedmeth()',
- ' .. py:method:: Base.inheritedstaticmeth(cls)'
+ ' .. py:method:: Base.inheritedstaticmeth(cls)',
]
@@ -604,7 +604,7 @@ def test_autodoc_exclude_members(app):
assert list(filter(lambda l: '::' in l, actual)) == [
'.. py:class:: Base()',
' .. py:attribute:: Base.inheritedattr',
- ' .. py:method:: Base.inheritedclassmeth()'
+ ' .. py:method:: Base.inheritedclassmeth()',
]
# members vs exclude-members
@@ -622,7 +622,7 @@ def test_autodoc_exclude_members(app):
assert list(filter(lambda l: '::' in l, actual)) == [
'.. py:class:: Base()',
' .. py:attribute:: Base.inheritedattr',
- ' .. py:method:: Base.inheritedclassmeth()'
+ ' .. py:method:: Base.inheritedclassmeth()',
]
# exclude-members overrides autodoc_default_options
@@ -634,7 +634,7 @@ def test_autodoc_exclude_members(app):
'.. py:class:: Base()',
' .. py:attribute:: Base.inheritedattr',
' .. py:method:: Base.inheritedclassmeth()',
- ' .. py:method:: Base.inheritedstaticmeth(cls)'
+ ' .. py:method:: Base.inheritedstaticmeth(cls)',
]
# exclude-members extends autodoc_default_options
@@ -668,7 +668,7 @@ def test_autodoc_exclude_members(app):
' .. py:attribute:: Base.inheritedattr',
' .. py:method:: Base.inheritedclassmeth()',
' .. py:method:: Base.inheritedmeth()',
- ' .. py:method:: Base.inheritedstaticmeth(cls)'
+ ' .. py:method:: Base.inheritedstaticmeth(cls)',
]
@@ -692,7 +692,7 @@ def test_autodoc_undoc_members(app):
' .. py:attribute:: Class.skipattr',
' .. py:method:: Class.skipmeth()',
' .. py:attribute:: Class.udocattr',
- ' .. py:method:: Class.undocmeth()'
+ ' .. py:method:: Class.undocmeth()',
]
# use autodoc_default_options
@@ -714,7 +714,7 @@ def test_autodoc_undoc_members(app):
' .. py:attribute:: Class.skipattr',
' .. py:method:: Class.skipmeth()',
' .. py:attribute:: Class.udocattr',
- ' .. py:method:: Class.undocmeth()'
+ ' .. py:method:: Class.undocmeth()',
]
# options negation work check
@@ -863,7 +863,7 @@ def test_autodoc_special_members(app):
' .. py:attribute:: Class.skipattr',
' .. py:method:: Class.skipmeth()',
' .. py:attribute:: Class.udocattr',
- ' .. py:method:: Class.undocmeth()'
+ ' .. py:method:: Class.undocmeth()',
]
# specific special methods from autodoc_default_options
@@ -919,7 +919,7 @@ def test_autodoc_ignore_module_all(app):
'.. py:class:: InstAttCls()',
'.. py:class:: Outer()',
' .. py:class:: Outer.Inner()',
- '.. py:class:: StrRepr'
+ '.. py:class:: StrRepr',
]
@@ -931,7 +931,7 @@ def test_autodoc_noindex(app):
'',
'.. py:module:: target',
' :noindex:',
- ''
+ '',
]
# TODO: :noindex: should be propagated to children of target item.
@@ -942,7 +942,7 @@ def test_autodoc_noindex(app):
'.. py:class:: Base()',
' :noindex:',
' :module: target.inheritance',
- ''
+ '',
]
@@ -987,7 +987,7 @@ def test_autodoc_inner_class(app):
' .. py:attribute:: Outer.factory',
' :module: target',
'',
- ' alias of :py:class:`dict`'
+ ' alias of :py:class:`dict`',
]
actual = do_autodoc(app, 'class', 'target.Outer.Inner', options)
@@ -1068,7 +1068,7 @@ def test_autodoc_descriptor(app):
' :module: target.descriptor',
'',
' Property.',
- ''
+ '',
]
@@ -1114,7 +1114,7 @@ def test_autodoc_member_order(app):
' .. py:attribute:: Class.inst_attr_inline',
' .. py:attribute:: Class.inst_attr_comment',
' .. py:attribute:: Class.inst_attr_string',
- ' .. py:attribute:: Class._private_inst_attr'
+ ' .. py:attribute:: Class._private_inst_attr',
]
# case member-order='groupwise'
@@ -1139,7 +1139,7 @@ def test_autodoc_member_order(app):
' .. py:attribute:: Class.inst_attr_string',
' .. py:attribute:: Class.mdocattr',
' .. py:attribute:: Class.skipattr',
- ' .. py:attribute:: Class.udocattr'
+ ' .. py:attribute:: Class.udocattr',
]
# case member-order=None
@@ -1163,7 +1163,7 @@ def test_autodoc_member_order(app):
' .. py:attribute:: Class.skipattr',
' .. py:method:: Class.skipmeth()',
' .. py:attribute:: Class.udocattr',
- ' .. py:method:: Class.undocmeth()'
+ ' .. py:method:: Class.undocmeth()',
]
@@ -1251,7 +1251,7 @@ def test_class_attributes(app):
' .. py:attribute:: AttCls.a2',
' :module: target',
' :value: None',
- ''
+ '',
]
@@ -1299,7 +1299,7 @@ def test_autoclass_instance_attributes(app):
' :module: target',
'',
' Docstring for instance attribute InstAttCls.ia2.',
- ''
+ '',
]
# pick up arbitrary attributes
@@ -1325,7 +1325,7 @@ def test_autoclass_instance_attributes(app):
' :module: target',
'',
' Doc comment for instance attribute InstAttCls.ia1',
- ''
+ '',
]
@@ -1338,7 +1338,7 @@ def test_autoattribute_instance_attributes(app):
' :module: target',
'',
' Doc comment for instance attribute InstAttCls.ia1',
- ''
+ '',
]
@@ -1463,7 +1463,7 @@ def test_enum_class(app):
' :value: 12',
'',
' doc for val1',
- ''
+ '',
]
@@ -1610,7 +1610,7 @@ def test_imported_partialfunction_should_not_shown_without_imported_members(app)
assert list(actual) == [
'',
'.. py:module:: target.imported_members',
- ''
+ '',
]
@@ -2035,7 +2035,7 @@ def test_autodoc_for_egged_code(app):
'',
'.. py:function:: hello(s)',
' :module: sample',
- ''
+ '',
]
diff --git a/tests/test_ext_autodoc_configs.py b/tests/test_ext_autodoc_configs.py
index ed7fa00c1..590992c03 100644
--- a/tests/test_ext_autodoc_configs.py
+++ b/tests/test_ext_autodoc_configs.py
@@ -273,7 +273,7 @@ def test_autodoc_inherit_docstrings(app):
'',
'.. py:method:: Derived.inheritedmeth()',
' :module: target.inheritance',
- ''
+ '',
]
@@ -997,7 +997,7 @@ def test_autodoc_typehints_description_no_undoc(app):
'\n'
' :param x: arg\n'
' :return: another tuple\n',
- encoding='utf8'
+ encoding='utf8',
)
app.build()
context = (app.outdir / 'index.txt').read_text(encoding='utf8')
@@ -1050,7 +1050,7 @@ def test_autodoc_typehints_description_no_undoc_doc_rtype(app):
'.. autofunction:: target.typehints.Math.horse\n'
'\n'
' :return: nothing\n',
- encoding='utf8'
+ encoding='utf8',
)
app.build()
context = (app.outdir / 'index.txt').read_text(encoding='utf8')
@@ -1097,7 +1097,7 @@ def test_autodoc_typehints_description_with_documented_init(app):
(app.srcdir / 'index.rst').write_text(
'.. autoclass:: target.typehints._ClassWithDocumentedInit\n'
' :special-members: __init__\n',
- encoding='utf8'
+ encoding='utf8',
)
app.build()
context = (app.outdir / 'index.txt').read_text(encoding='utf8')
@@ -1136,7 +1136,7 @@ def test_autodoc_typehints_description_with_documented_init_no_undoc(app):
(app.srcdir / 'index.rst').write_text(
'.. autoclass:: target.typehints._ClassWithDocumentedInit\n'
' :special-members: __init__\n',
- encoding='utf8'
+ encoding='utf8',
)
app.build()
context = (app.outdir / 'index.txt').read_text(encoding='utf8')
@@ -1168,7 +1168,7 @@ def test_autodoc_typehints_description_with_documented_init_no_undoc_doc_rtype(a
(app.srcdir / 'index.rst').write_text(
'.. autoclass:: target.typehints._ClassWithDocumentedInit\n'
' :special-members: __init__\n',
- encoding='utf8'
+ encoding='utf8',
)
app.build()
context = (app.outdir / 'index.txt').read_text(encoding='utf8')
@@ -1206,7 +1206,7 @@ def test_autodoc_typehints_both(app):
'.. autofunction:: target.typehints.tuple_args\n'
'\n'
'.. autofunction:: target.overload.sum\n',
- encoding='utf8'
+ encoding='utf8',
)
app.build()
context = (app.outdir / 'index.txt').read_text(encoding='utf8')
@@ -1613,7 +1613,7 @@ def test_autodoc_default_options(app):
# Note that :members: must be *on* for :special-members: to work.
app.config.autodoc_default_options = {
'members': None,
- 'special-members': None
+ 'special-members': None,
}
actual = do_autodoc(app, 'class', 'target.CustomIter')
assert ' .. py:method:: CustomIter.__init__()' in actual
@@ -1698,7 +1698,7 @@ def test_autodoc_default_options_with_values(app):
# with :exclude-members:
app.config.autodoc_default_options = {
'members': None,
- 'exclude-members': 'val1'
+ 'exclude-members': 'val1',
}
actual = do_autodoc(app, 'class', 'target.enums.EnumCls')
assert ' .. py:attribute:: EnumCls.val1' not in actual
diff --git a/tests/test_ext_autosummary.py b/tests/test_ext_autosummary.py
index 0fc7fe573..b8e39c9cf 100644
--- a/tests/test_ext_autosummary.py
+++ b/tests/test_ext_autosummary.py
@@ -34,8 +34,8 @@ default_kw = {
'extensions': ['sphinx.ext.autosummary'],
'autosummary_generate': True,
'autosummary_generate_overwrite': False,
- 'source_suffix': '.rst'
- }
+ 'source_suffix': '.rst',
+ },
}
diff --git a/tests/test_ext_inheritance_diagram.py b/tests/test_ext_inheritance_diagram.py
index cb5e9eaba..00b1d6897 100644
--- a/tests/test_ext_inheritance_diagram.py
+++ b/tests/test_ext_inheritance_diagram.py
@@ -52,7 +52,7 @@ def test_inheritance_diagram(app, status, warning):
('dummy.test.C', 'dummy.test.C', ['dummy.test.A'], None),
('dummy.test.E', 'dummy.test.E', ['dummy.test.B'], None),
('dummy.test.D', 'dummy.test.D', ['dummy.test.B', 'dummy.test.C'], None),
- ('dummy.test.B', 'dummy.test.B', ['dummy.test.A'], None)
+ ('dummy.test.B', 'dummy.test.B', ['dummy.test.A'], None),
]
# inheritance diagram using :parts: 1 option
@@ -63,7 +63,7 @@ def test_inheritance_diagram(app, status, warning):
('C', 'dummy.test.C', ['A'], None),
('E', 'dummy.test.E', ['B'], None),
('D', 'dummy.test.D', ['B', 'C'], None),
- ('B', 'dummy.test.B', ['A'], None)
+ ('B', 'dummy.test.B', ['A'], None),
]
# inheritance diagram with 1 top class
@@ -82,7 +82,7 @@ def test_inheritance_diagram(app, status, warning):
('dummy.test.C', 'dummy.test.C', ['dummy.test.A'], None),
('dummy.test.E', 'dummy.test.E', ['dummy.test.B'], None),
('dummy.test.D', 'dummy.test.D', ['dummy.test.B', 'dummy.test.C'], None),
- ('dummy.test.B', 'dummy.test.B', [], None)
+ ('dummy.test.B', 'dummy.test.B', [], None),
]
# inheritance diagram with 2 top classes
@@ -100,7 +100,7 @@ def test_inheritance_diagram(app, status, warning):
('dummy.test.C', 'dummy.test.C', [], None),
('dummy.test.E', 'dummy.test.E', ['dummy.test.B'], None),
('dummy.test.D', 'dummy.test.D', ['dummy.test.B', 'dummy.test.C'], None),
- ('dummy.test.B', 'dummy.test.B', [], None)
+ ('dummy.test.B', 'dummy.test.B', [], None),
]
# inheritance diagram with 2 top classes and specifying the entire module
@@ -131,7 +131,7 @@ def test_inheritance_diagram(app, status, warning):
assert cls in [
('dummy.test_nested.A', 'dummy.test_nested.A', [], None),
('dummy.test_nested.C', 'dummy.test_nested.C', ['dummy.test_nested.A.B'], None),
- ('dummy.test_nested.A.B', 'dummy.test_nested.A.B', [], None)
+ ('dummy.test_nested.A.B', 'dummy.test_nested.A.B', [], None),
]
diff --git a/tests/test_ext_napoleon_docstring.py b/tests/test_ext_napoleon_docstring.py
index 33a59b711..b203e987e 100644
--- a/tests/test_ext_napoleon_docstring.py
+++ b/tests/test_ext_napoleon_docstring.py
@@ -132,7 +132,7 @@ class InlineAttributeTest(BaseDocstringTest):
class GoogleDocstringTest(BaseDocstringTest):
docstrings = [(
"""Single line summary""",
- """Single line summary"""
+ """Single line summary""",
), (
"""
Single line summary
@@ -144,7 +144,7 @@ class GoogleDocstringTest(BaseDocstringTest):
Single line summary
Extended description
- """
+ """,
), (
"""
Single line summary
@@ -158,7 +158,7 @@ class GoogleDocstringTest(BaseDocstringTest):
:Parameters: **arg1** (*str*) -- Extended
description of arg1
- """
+ """,
), (
"""
Single line summary
@@ -186,7 +186,7 @@ class GoogleDocstringTest(BaseDocstringTest):
description of kwarg1
* **kwarg2** (*int*) -- Extended
description of kwarg2
- """
+ """,
), (
"""
Single line summary
@@ -214,7 +214,7 @@ class GoogleDocstringTest(BaseDocstringTest):
description of kwarg1
* **kwarg2** (*int*) -- Extended
description of kwarg2
- """
+ """,
), (
"""
Single line summary
@@ -228,7 +228,7 @@ class GoogleDocstringTest(BaseDocstringTest):
:returns: *str* -- Extended
description of return value
- """
+ """,
), (
"""
Single line summary
@@ -242,7 +242,7 @@ class GoogleDocstringTest(BaseDocstringTest):
:returns: *str* -- Extended
description of return value
- """
+ """,
), (
"""
Single line summary
@@ -256,7 +256,7 @@ class GoogleDocstringTest(BaseDocstringTest):
:returns: Extended
description of return value
- """
+ """,
), (
"""
Single line summary
@@ -268,7 +268,7 @@ class GoogleDocstringTest(BaseDocstringTest):
Single line summary
:returns: Extended
- """
+ """,
), (
"""
Single line summary
@@ -286,7 +286,7 @@ class GoogleDocstringTest(BaseDocstringTest):
description of arg1
* **\\*args** -- Variable length argument list.
* **\\*\\*kwargs** -- Arbitrary keyword arguments.
- """
+ """,
), (
"""
Single line summary
@@ -304,7 +304,7 @@ class GoogleDocstringTest(BaseDocstringTest):
* **arg2** (*list[int]*) -- Description
* **arg3** (*dict(str, int)*) -- Description
* **arg4** (*dict[str, int]*) -- Description
- """
+ """,
), (
"""
Single line summary
@@ -318,7 +318,7 @@ class GoogleDocstringTest(BaseDocstringTest):
:Receives: * **arg1** (*list(int)*) -- Description
* **arg2** (*list[int]*) -- Description
- """
+ """,
), (
"""
Single line summary
@@ -332,7 +332,7 @@ class GoogleDocstringTest(BaseDocstringTest):
:Receives: * **arg1** (*list(int)*) -- Description
* **arg2** (*list[int]*) -- Description
- """
+ """,
), (
"""
Single line summary
@@ -346,7 +346,7 @@ class GoogleDocstringTest(BaseDocstringTest):
:Yields: *str* -- Extended
description of yielded value
- """
+ """,
), (
"""
Single line summary
@@ -360,7 +360,7 @@ class GoogleDocstringTest(BaseDocstringTest):
:Yields: Extended
description of yielded value
- """
+ """,
), (
"""
Single line summary
@@ -395,7 +395,7 @@ class GoogleDocstringTest(BaseDocstringTest):
description of arg5.
* **arg6** (*list of int or float*) -- Extended
description of arg6.
- """
+ """,
)]
def test_sphinx_admonitions(self):
@@ -439,7 +439,7 @@ class GoogleDocstringTest(BaseDocstringTest):
config = Config(
napoleon_use_param=False,
napoleon_use_rtype=False,
- napoleon_use_keyword=False
+ napoleon_use_keyword=False,
)
for docstring, expected in self.docstrings:
actual = str(GoogleDocstring(dedent(docstring), config))
@@ -1201,7 +1201,7 @@ Do as you please
def test_pep526_annotations(self):
# Test class attributes annotations
config = Config(
- napoleon_attr_annotations=True
+ napoleon_attr_annotations=True,
)
actual = str(GoogleDocstring(cleandoc(PEP526GoogleClass.__doc__), config, app=None, what="class",
obj=PEP526GoogleClass))
@@ -1250,7 +1250,7 @@ Do as you please
class NumpyDocstringTest(BaseDocstringTest):
docstrings = [(
"""Single line summary""",
- """Single line summary"""
+ """Single line summary""",
), (
"""
Single line summary
@@ -1262,7 +1262,7 @@ class NumpyDocstringTest(BaseDocstringTest):
Single line summary
Extended description
- """
+ """,
), (
"""
Single line summary
@@ -1278,7 +1278,7 @@ class NumpyDocstringTest(BaseDocstringTest):
:Parameters: **arg1** (:class:`str`) -- Extended
description of arg1
- """
+ """,
), (
"""
Single line summary
@@ -1313,7 +1313,7 @@ class NumpyDocstringTest(BaseDocstringTest):
description of kwarg1
* **kwarg2** (:class:`int`) -- Extended
description of kwarg2
- """
+ """,
), (
"""
Single line summary
@@ -1329,7 +1329,7 @@ class NumpyDocstringTest(BaseDocstringTest):
:returns: :class:`str` -- Extended
description of return value
- """
+ """,
), (
"""
Single line summary
@@ -1345,7 +1345,7 @@ class NumpyDocstringTest(BaseDocstringTest):
:returns: :class:`str` -- Extended
description of return value
- """
+ """,
), (
"""
Single line summary
@@ -1365,7 +1365,7 @@ class NumpyDocstringTest(BaseDocstringTest):
:Parameters: * **arg1** (:class:`str`) -- Extended description of arg1
* **\\*args** -- Variable length argument list.
* **\\*\\*kwargs** -- Arbitrary keyword arguments.
- """
+ """,
), (
"""
Single line summary
@@ -1382,7 +1382,7 @@ class NumpyDocstringTest(BaseDocstringTest):
:Parameters: * **arg1** (:class:`str`) -- Extended description of arg1
* **\\*args, \\*\\*kwargs** -- Variable length argument list and arbitrary keyword arguments.
- """
+ """,
), (
"""
Single line summary
@@ -1403,7 +1403,7 @@ class NumpyDocstringTest(BaseDocstringTest):
description of arg1
* **arg2** (:class:`int`) -- Extended
description of arg2
- """
+ """,
), (
"""
Single line summary
@@ -1424,7 +1424,7 @@ class NumpyDocstringTest(BaseDocstringTest):
description of arg1
* **arg2** (:class:`int`) -- Extended
description of arg2
- """
+ """,
), (
"""
Single line summary
@@ -1440,7 +1440,7 @@ class NumpyDocstringTest(BaseDocstringTest):
:Yields: :class:`str` -- Extended
description of yielded value
- """
+ """,
), (
"""
Single line summary
@@ -1456,7 +1456,7 @@ class NumpyDocstringTest(BaseDocstringTest):
:Yields: :class:`str` -- Extended
description of yielded value
- """
+ """,
)]
def test_sphinx_admonitions(self):
@@ -2620,7 +2620,7 @@ class TestNumpyDocstring:
def test_pep526_annotations(self):
# test class attributes annotations
config = Config(
- napoleon_attr_annotations=True
+ napoleon_attr_annotations=True,
)
actual = str(NumpyDocstring(cleandoc(PEP526NumpyClass.__doc__), config, app=None, what="class",
obj=PEP526NumpyClass))
diff --git a/tests/test_ext_viewcode.py b/tests/test_ext_viewcode.py
index ff53e5d37..6f2c9ce80 100644
--- a/tests/test_ext_viewcode.py
+++ b/tests/test_ext_viewcode.py
@@ -14,7 +14,7 @@ def test_viewcode(app, status, warning):
assert re.findall(
r"index.rst:\d+: WARNING: Object named 'func1' not found in include " +
r"file .*/spam/__init__.py'",
- warnings
+ warnings,
)
result = (app.outdir / 'index.html').read_text(encoding='utf8')
@@ -112,7 +112,7 @@ def test_local_source_files(app, status, warning):
assert re.findall(
r"index.rst:\d+: WARNING: Object named 'func1' not found in include " +
r"file .*/not_a_package/__init__.py'",
- warnings
+ warnings,
)
result = (app.outdir / 'index.html').read_text(encoding='utf8')
diff --git a/tests/test_intl.py b/tests/test_intl.py
index c72df1162..bed425b26 100644
--- a/tests/test_intl.py
+++ b/tests/test_intl.py
@@ -165,22 +165,22 @@ def test_text_inconsistency_warnings(app, warning):
warning_fmt % {
'reftype': 'footnote references',
'original': "\\['\\[#\\]_'\\]",
- 'translated': "\\[\\]"
+ 'translated': "\\[\\]",
} +
warning_fmt % {
'reftype': 'footnote references',
'original': "\\['\\[100\\]_'\\]",
- 'translated': "\\[\\]"
+ 'translated': "\\[\\]",
} +
warning_fmt % {
'reftype': 'references',
'original': "\\['reference_'\\]",
- 'translated': "\\['reference_', 'reference_'\\]"
+ 'translated': "\\['reference_', 'reference_'\\]",
} +
warning_fmt % {
'reftype': 'references',
'original': "\\[\\]",
- 'translated': "\\['`I18N WITH REFS INCONSISTENCY`_'\\]"
+ 'translated': "\\['`I18N WITH REFS INCONSISTENCY`_'\\]",
})
assert_re_search(expected_warning_expr, warnings)
@@ -1161,7 +1161,7 @@ def test_additional_targets_should_not_be_translated(app):
'raw',
'image',
],
- }
+ },
)
def test_additional_targets_should_be_translated(app):
app.build()
@@ -1242,7 +1242,7 @@ def test_text_references(app, warning):
@pytest.mark.sphinx(
'dummy', testroot='images',
srcdir='test_intl_images',
- confoverrides={'language': 'xx'}
+ confoverrides={'language': 'xx'},
)
@pytest.mark.xfail(os.name != 'posix', reason="Not working on windows")
def test_image_glob_intl(app):
@@ -1289,7 +1289,7 @@ def test_image_glob_intl(app):
confoverrides={
'language': 'xx',
'figure_language_filename': '{root}{ext}.{language}',
- }
+ },
)
@pytest.mark.xfail(os.name != 'posix', reason="Not working on windows")
def test_image_glob_intl_using_figure_language_filename(app):
@@ -1338,7 +1338,7 @@ def getwarning(warnings):
srcdir='gettext_allow_fuzzy_translations',
confoverrides={
'language': 'de',
- 'gettext_allow_fuzzy_translations': True
+ 'gettext_allow_fuzzy_translations': True,
})
def test_gettext_allow_fuzzy_translations(app):
locale_dir = app.srcdir / 'locales' / 'de' / 'LC_MESSAGES'
@@ -1357,7 +1357,7 @@ def test_gettext_allow_fuzzy_translations(app):
srcdir='gettext_disallow_fuzzy_translations',
confoverrides={
'language': 'de',
- 'gettext_allow_fuzzy_translations': False
+ 'gettext_allow_fuzzy_translations': False,
})
def test_gettext_disallow_fuzzy_translations(app):
locale_dir = app.srcdir / 'locales' / 'de' / 'LC_MESSAGES'
diff --git a/tests/test_markup.py b/tests/test_markup.py
index 0bb630223..ecc540fcf 100644
--- a/tests/test_markup.py
+++ b/tests/test_markup.py
@@ -158,7 +158,7 @@ def get_verifier(verify, verify_re):
('\\sphinxAtStartPar\n'
'\\index{Python Enhancement Proposals@\\spxentry{Python Enhancement Proposals}'
'!PEP 8@\\spxentry{PEP 8}}\\sphinxhref{https://peps.python.org/pep-0008/}'
- '{\\sphinxstylestrong{PEP 8}}')
+ '{\\sphinxstylestrong{PEP 8}}'),
),
(
# pep role with anchor
@@ -171,7 +171,7 @@ def get_verifier(verify, verify_re):
'\\index{Python Enhancement Proposals@\\spxentry{Python Enhancement Proposals}'
'!PEP 8\\#id1@\\spxentry{PEP 8\\#id1}}\\sphinxhref'
'{https://peps.python.org/pep-0008/\\#id1}'
- '{\\sphinxstylestrong{PEP 8\\#id1}}')
+ '{\\sphinxstylestrong{PEP 8\\#id1}}'),
),
(
# rfc role
@@ -182,7 +182,7 @@ def get_verifier(verify, verify_re):
('\\sphinxAtStartPar\n'
'\\index{RFC@\\spxentry{RFC}!RFC 2324@\\spxentry{RFC 2324}}'
'\\sphinxhref{https://datatracker.ietf.org/doc/html/rfc2324.html}'
- '{\\sphinxstylestrong{RFC 2324}}')
+ '{\\sphinxstylestrong{RFC 2324}}'),
),
(
# rfc role with anchor
@@ -194,7 +194,7 @@ def get_verifier(verify, verify_re):
('\\sphinxAtStartPar\n'
'\\index{RFC@\\spxentry{RFC}!RFC 2324\\#id1@\\spxentry{RFC 2324\\#id1}}'
'\\sphinxhref{https://datatracker.ietf.org/doc/html/rfc2324.html\\#id1}'
- '{\\sphinxstylestrong{RFC 2324\\#id1}}')
+ '{\\sphinxstylestrong{RFC 2324\\#id1}}'),
),
(
# correct interpretation of code with whitespace
diff --git a/tests/test_quickstart.py b/tests/test_quickstart.py
index d95a314c7..ae364367d 100644
--- a/tests/test_quickstart.py
+++ b/tests/test_quickstart.py
@@ -152,7 +152,7 @@ def test_quickstart_all_answers(tempdir):
ns = {}
exec(conffile.read_text(encoding='utf8'), ns) # NoQA: S102
assert ns['extensions'] == [
- 'sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.todo'
+ 'sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.todo',
]
assert ns['templates_path'] == ['.templates']
assert ns['source_suffix'] == '.txt'
@@ -253,7 +253,7 @@ def test_exits_when_existing_confpy(monkeypatch):
monkeypatch.setattr(path, 'isfile', mock_isfile)
qs.term_input = mock_input({
- 'Please enter a new root path (or just Enter to exit)': ''
+ 'Please enter a new root path (or just Enter to exit)': '',
})
d = {}
with pytest.raises(SystemExit):
diff --git a/tests/test_search.py b/tests/test_search.py
index d0172df6b..8f314af0a 100644
--- a/tests/test_search.py
+++ b/tests/test_search.py
@@ -160,7 +160,7 @@ def test_IndexBuilder():
'comment': {'docname1_1', 'docname1_2', 'docname2_1', 'docname2_2'},
'non': {'docname1_1', 'docname1_2', 'docname2_1', 'docname2_2'},
'index': {'docname1_1', 'docname1_2', 'docname2_1', 'docname2_2'},
- 'test': {'docname1_1', 'docname1_2', 'docname2_1', 'docname2_2'}
+ 'test': {'docname1_1', 'docname1_2', 'docname2_1', 'docname2_2'},
}
assert index._title_mapping == {'section_titl': {'docname1_1', 'docname1_2', 'docname2_1', 'docname2_2'}}
assert index._objtypes == {}
@@ -222,7 +222,7 @@ def test_IndexBuilder():
'comment': {'docname1_2', 'docname2_2'},
'non': {'docname1_2', 'docname2_2'},
'index': {'docname1_2', 'docname2_2'},
- 'test': {'docname1_2', 'docname2_2'}
+ 'test': {'docname1_2', 'docname2_2'},
}
assert index._title_mapping == {'section_titl': {'docname1_2', 'docname2_2'}}
assert index._objtypes == {('dummy1', 'objtype1'): 0, ('dummy2', 'objtype1'): 1}
@@ -267,7 +267,7 @@ def test_IndexBuilder_lookup():
@pytest.mark.sphinx(
testroot='search',
confoverrides={'html_search_language': 'zh'},
- srcdir='search_zh'
+ srcdir='search_zh',
)
def test_search_index_gen_zh(app, status, warning):
app.builder.build_all()
diff --git a/tests/test_util_nodes.py b/tests/test_util_nodes.py
index 082a46b75..6dc7f0ead 100644
--- a/tests/test_util_nodes.py
+++ b/tests/test_util_nodes.py
@@ -101,7 +101,7 @@ def test_NodeMatcher():
admonition body
""",
- nodes.title, 1
+ nodes.title, 1,
),
(
"""
@@ -144,7 +144,7 @@ def test_NodeMatcher():
nodes.line, 2,
),
- ]
+ ],
)
def test_extract_messages(rst, node_cls, count):
msg = extract_messages(_get_doctree(dedent(rst)))
@@ -228,7 +228,7 @@ def test_make_id_sequential(app):
('hello <world>', (True, 'hello', 'world')),
# explicit (title having angle brackets)
('hello <world> <sphinx>', (True, 'hello <world>', 'sphinx')),
- ]
+ ],
)
def test_split_explicit_target(title, expected):
assert expected == split_explicit_title(title)
diff --git a/utils/babel_runner.py b/utils/babel_runner.py
index 32e6fe642..0f0a438e4 100644
--- a/utils/babel_runner.py
+++ b/utils/babel_runner.py
@@ -97,7 +97,7 @@ class compile_catalog_plusjs(compile_catalog):
obj = json.dumps({
'messages': jscatalog,
'plural_expr': catalog.plural_expr,
- 'locale': f'{catalog.locale!s}'
+ 'locale': f'{catalog.locale!s}',
}, sort_keys=True, indent=4)
with open(js_file, 'w', encoding='utf8') as outfile:
outfile.write(f'Documentation.addTranslations({obj});')