mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
shrink mypy whitelist for `sphinx.builders
` (#11396)
Co-authored-by: Adam Turner <9087854+aa-turner@users.noreply.github.com>
This commit is contained in:
parent
edd9ea0a39
commit
d564a8ba11
@ -307,7 +307,6 @@ disallow_any_generics = true
|
|||||||
|
|
||||||
[[tool.mypy.overrides]]
|
[[tool.mypy.overrides]]
|
||||||
module = [
|
module = [
|
||||||
"sphinx.builders",
|
|
||||||
"sphinx.builders.html",
|
"sphinx.builders.html",
|
||||||
"sphinx.builders.latex",
|
"sphinx.builders.latex",
|
||||||
"sphinx.builders.linkcheck",
|
"sphinx.builders.linkcheck",
|
||||||
|
@ -32,10 +32,6 @@ from sphinx.util.typing import NoneType
|
|||||||
# side effect: registers roles and directives
|
# side effect: registers roles and directives
|
||||||
from sphinx import directives # noqa: F401 isort:skip
|
from sphinx import directives # noqa: F401 isort:skip
|
||||||
from sphinx import roles # noqa: F401 isort:skip
|
from sphinx import roles # noqa: F401 isort:skip
|
||||||
try:
|
|
||||||
import multiprocessing
|
|
||||||
except ImportError:
|
|
||||||
multiprocessing = None
|
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from sphinx.application import Sphinx
|
from sphinx.application import Sphinx
|
||||||
@ -60,7 +56,7 @@ class Builder:
|
|||||||
|
|
||||||
#: default translator class for the builder. This can be overridden by
|
#: default translator class for the builder. This can be overridden by
|
||||||
#: :py:meth:`~sphinx.application.Sphinx.set_translator`.
|
#: :py:meth:`~sphinx.application.Sphinx.set_translator`.
|
||||||
default_translator_class: type[nodes.NodeVisitor] = None
|
default_translator_class: type[nodes.NodeVisitor]
|
||||||
# doctree versioning method
|
# doctree versioning method
|
||||||
versioning_method = 'none'
|
versioning_method = 'none'
|
||||||
versioning_compare = False
|
versioning_compare = False
|
||||||
@ -135,7 +131,7 @@ class Builder:
|
|||||||
from sphinx.jinja2glue import BuiltinTemplateLoader
|
from sphinx.jinja2glue import BuiltinTemplateLoader
|
||||||
self.templates = BuiltinTemplateLoader()
|
self.templates = BuiltinTemplateLoader()
|
||||||
|
|
||||||
def get_target_uri(self, docname: str, typ: str = None) -> str:
|
def get_target_uri(self, docname: str, typ: str | None = None) -> str:
|
||||||
"""Return the target URI for a document name.
|
"""Return the target URI for a document name.
|
||||||
|
|
||||||
*typ* can be used to qualify the link characteristic for individual
|
*typ* can be used to qualify the link characteristic for individual
|
||||||
@ -143,7 +139,7 @@ class Builder:
|
|||||||
"""
|
"""
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
def get_relative_uri(self, from_: str, to: str, typ: str = None) -> str:
|
def get_relative_uri(self, from_: str, to: str, typ: str | None = None) -> str:
|
||||||
"""Return a relative URI between two source filenames.
|
"""Return a relative URI between two source filenames.
|
||||||
|
|
||||||
May raise environment.NoUri if there's no way to return a sensible URI.
|
May raise environment.NoUri if there's no way to return a sensible URI.
|
||||||
@ -296,7 +292,10 @@ class Builder:
|
|||||||
len(to_build))
|
len(to_build))
|
||||||
|
|
||||||
def build(
|
def build(
|
||||||
self, docnames: Iterable[str], summary: str | None = None, method: str = 'update',
|
self,
|
||||||
|
docnames: Iterable[str] | None,
|
||||||
|
summary: str | None = None,
|
||||||
|
method: str = 'update',
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Main build method.
|
"""Main build method.
|
||||||
|
|
||||||
@ -509,15 +508,15 @@ class Builder:
|
|||||||
) -> None:
|
) -> None:
|
||||||
"""Write the doctree to a file."""
|
"""Write the doctree to a file."""
|
||||||
# make it picklable
|
# make it picklable
|
||||||
doctree.reporter = None
|
doctree.reporter = None # type: ignore[assignment]
|
||||||
doctree.transformer = None
|
doctree.transformer = None # type: ignore[assignment]
|
||||||
|
|
||||||
# Create a copy of settings object before modification because it is
|
# Create a copy of settings object before modification because it is
|
||||||
# shared with other documents.
|
# shared with other documents.
|
||||||
doctree.settings = doctree.settings.copy()
|
doctree.settings = doctree.settings.copy()
|
||||||
doctree.settings.warning_stream = None
|
doctree.settings.warning_stream = None
|
||||||
doctree.settings.env = None
|
doctree.settings.env = None
|
||||||
doctree.settings.record_dependencies = None
|
doctree.settings.record_dependencies = None # type: ignore[assignment]
|
||||||
|
|
||||||
doctree_filename = path.join(self.doctreedir, docname + '.doctree')
|
doctree_filename = path.join(self.doctreedir, docname + '.doctree')
|
||||||
ensuredir(path.dirname(doctree_filename))
|
ensuredir(path.dirname(doctree_filename))
|
||||||
@ -532,7 +531,7 @@ class Builder:
|
|||||||
|
|
||||||
def write(
|
def write(
|
||||||
self,
|
self,
|
||||||
build_docnames: Iterable[str],
|
build_docnames: Iterable[str] | None,
|
||||||
updated_docnames: Sequence[str],
|
updated_docnames: Sequence[str],
|
||||||
method: str = 'update',
|
method: str = 'update',
|
||||||
) -> None:
|
) -> None:
|
||||||
|
@ -254,7 +254,10 @@ class MessageCatalogBuilder(I18nBuilder):
|
|||||||
raise ThemeError(f'{template}: {exc!r}') from exc
|
raise ThemeError(f'{template}: {exc!r}') from exc
|
||||||
|
|
||||||
def build(
|
def build(
|
||||||
self, docnames: Iterable[str], summary: str | None = None, method: str = 'update',
|
self,
|
||||||
|
docnames: Iterable[str] | None,
|
||||||
|
summary: str | None = None,
|
||||||
|
method: str = 'update',
|
||||||
) -> None:
|
) -> None:
|
||||||
self._extract_from_template()
|
self._extract_from_template()
|
||||||
super().build(docnames, summary, method)
|
super().build(docnames, summary, method)
|
||||||
|
@ -193,6 +193,7 @@ class StandaloneHTMLBuilder(Builder):
|
|||||||
format = 'html'
|
format = 'html'
|
||||||
epilog = __('The HTML pages are in %(outdir)s.')
|
epilog = __('The HTML pages are in %(outdir)s.')
|
||||||
|
|
||||||
|
default_translator_class = HTML5Translator
|
||||||
copysource = True
|
copysource = True
|
||||||
allow_parallel = True
|
allow_parallel = True
|
||||||
out_suffix = '.html'
|
out_suffix = '.html'
|
||||||
@ -372,10 +373,6 @@ class StandaloneHTMLBuilder(Builder):
|
|||||||
|
|
||||||
self.script_files.append(JavaScript(filename, **kwargs))
|
self.script_files.append(JavaScript(filename, **kwargs))
|
||||||
|
|
||||||
@property
|
|
||||||
def default_translator_class(self) -> type[nodes.NodeVisitor]: # type: ignore
|
|
||||||
return HTML5Translator
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def math_renderer_name(self) -> str:
|
def math_renderer_name(self) -> str:
|
||||||
name = self.get_builder_config('math_renderer', 'html')
|
name = self.get_builder_config('math_renderer', 'html')
|
||||||
|
@ -327,12 +327,16 @@ class SphinxComponentRegistry:
|
|||||||
) from exc
|
) from exc
|
||||||
|
|
||||||
def get_translator_class(self, builder: Builder) -> type[nodes.NodeVisitor]:
|
def get_translator_class(self, builder: Builder) -> type[nodes.NodeVisitor]:
|
||||||
return self.translators.get(builder.name,
|
try:
|
||||||
builder.default_translator_class)
|
return self.translators[builder.name]
|
||||||
|
except KeyError:
|
||||||
|
try:
|
||||||
|
return builder.default_translator_class
|
||||||
|
except AttributeError as err:
|
||||||
|
raise AttributeError(f'translator not found for {builder.name}') from err
|
||||||
|
|
||||||
def create_translator(self, builder: Builder, *args: Any) -> nodes.NodeVisitor:
|
def create_translator(self, builder: Builder, *args: Any) -> nodes.NodeVisitor:
|
||||||
translator_class = self.get_translator_class(builder)
|
translator_class = self.get_translator_class(builder)
|
||||||
assert translator_class, "translator not found for %s" % builder.name
|
|
||||||
translator = translator_class(*args)
|
translator = translator_class(*args)
|
||||||
|
|
||||||
# transplant handlers for custom nodes to translator instance
|
# transplant handlers for custom nodes to translator instance
|
||||||
|
@ -236,8 +236,9 @@ class SigElementFallbackTransform(SphinxPostTransform):
|
|||||||
def has_visitor(translator: type[nodes.NodeVisitor], node: type[Element]) -> bool:
|
def has_visitor(translator: type[nodes.NodeVisitor], node: type[Element]) -> bool:
|
||||||
return hasattr(translator, "visit_%s" % node.__name__)
|
return hasattr(translator, "visit_%s" % node.__name__)
|
||||||
|
|
||||||
translator = self.app.builder.get_translator_class()
|
try:
|
||||||
if translator is None:
|
translator = self.app.builder.get_translator_class()
|
||||||
|
except AttributeError:
|
||||||
# do nothing if no translator class is specified (e.g., on a dummy builder)
|
# do nothing if no translator class is specified (e.g., on a dummy builder)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user