mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Make the `env
argument to
Builder
` subclasses required (#11379)
This commit is contained in:
parent
d22e660347
commit
a464c5851d
1
CHANGES
1
CHANGES
@ -23,6 +23,7 @@ Incompatible changes
|
||||
* #11373: Removed deprecated ``sphinx.util.get_matching_files()`` function.
|
||||
* #11378: Remove deprecated ``sphinx.util.docutils.is_html5_writer_available()``
|
||||
function.
|
||||
* #11379: Make the ``env`` argument to ``Builder`` subclasses required.
|
||||
|
||||
Deprecated
|
||||
----------
|
||||
|
@ -335,8 +335,6 @@ class Sphinx:
|
||||
return self.registry.create_builder(self, name, self.env)
|
||||
|
||||
def _init_builder(self) -> None:
|
||||
if not hasattr(self.builder, "env"):
|
||||
self.builder.set_environment(self.env)
|
||||
self.builder.init()
|
||||
self.events.emit('builder-inited')
|
||||
|
||||
|
@ -5,7 +5,6 @@ from __future__ import annotations
|
||||
import codecs
|
||||
import pickle
|
||||
import time
|
||||
import warnings
|
||||
from os import path
|
||||
from typing import TYPE_CHECKING, Any, Iterable, Sequence
|
||||
|
||||
@ -14,7 +13,6 @@ from docutils.nodes import Node
|
||||
from docutils.utils import DependencyList
|
||||
|
||||
from sphinx.config import Config
|
||||
from sphinx.deprecation import RemovedInSphinx70Warning
|
||||
from sphinx.environment import CONFIG_CHANGED_REASON, CONFIG_OK, BuildEnvironment
|
||||
from sphinx.environment.adapters.asset import ImageAdapter
|
||||
from sphinx.errors import SphinxError
|
||||
@ -79,7 +77,7 @@ class Builder:
|
||||
#: The builder supports data URIs or not.
|
||||
supported_data_uri_images = False
|
||||
|
||||
def __init__(self, app: Sphinx, env: BuildEnvironment = None) -> None:
|
||||
def __init__(self, app: Sphinx, env: BuildEnvironment) -> None:
|
||||
self.srcdir = app.srcdir
|
||||
self.confdir = app.confdir
|
||||
self.outdir = app.outdir
|
||||
@ -87,15 +85,9 @@ class Builder:
|
||||
ensuredir(self.doctreedir)
|
||||
|
||||
self.app: Sphinx = app
|
||||
if env is not None:
|
||||
self.env: BuildEnvironment = env
|
||||
self.env.set_versioning_method(self.versioning_method,
|
||||
self.versioning_compare)
|
||||
else:
|
||||
# ... is passed by SphinxComponentRegistry.create_builder to not show two warnings.
|
||||
warnings.warn("The 'env' argument to Builder will be required from Sphinx 7.",
|
||||
RemovedInSphinx70Warning, stacklevel=2)
|
||||
self.env = None
|
||||
self.events: EventManager = app.events
|
||||
self.config: Config = app.config
|
||||
self.tags: Tags = app.tags
|
||||
@ -115,15 +107,6 @@ class Builder:
|
||||
self.parallel_ok = False
|
||||
self.finish_tasks: Any = None
|
||||
|
||||
def set_environment(self, env: BuildEnvironment) -> None:
|
||||
"""Store BuildEnvironment object."""
|
||||
warnings.warn("Builder.set_environment is deprecated, pass env to "
|
||||
"'Builder.__init__()' instead.",
|
||||
RemovedInSphinx70Warning, stacklevel=2)
|
||||
self.env = env
|
||||
self.env.set_versioning_method(self.versioning_method,
|
||||
self.versioning_compare)
|
||||
|
||||
def get_translator_class(self, *args: Any) -> type[nodes.NodeVisitor]:
|
||||
"""Return a class of translator."""
|
||||
return self.app.registry.get_translator_class(self)
|
||||
|
@ -4,7 +4,6 @@ from __future__ import annotations
|
||||
|
||||
import sys
|
||||
import traceback
|
||||
import warnings
|
||||
from importlib import import_module
|
||||
from types import MethodType
|
||||
from typing import TYPE_CHECKING, Any, Callable, Iterator
|
||||
@ -23,7 +22,6 @@ else:
|
||||
|
||||
from sphinx.builders import Builder
|
||||
from sphinx.config import Config
|
||||
from sphinx.deprecation import RemovedInSphinx70Warning
|
||||
from sphinx.domains import Domain, Index, ObjType
|
||||
from sphinx.domains.std import GenericObject, Target
|
||||
from sphinx.environment import BuildEnvironment
|
||||
@ -156,18 +154,7 @@ class SphinxComponentRegistry:
|
||||
if name not in self.builders:
|
||||
raise SphinxError(__('Builder name %s not registered') % name)
|
||||
|
||||
try:
|
||||
return self.builders[name](app, env)
|
||||
except TypeError:
|
||||
warnings.warn(
|
||||
f"The custom builder {name} defines a custom __init__ method without the "
|
||||
f"'env'argument. Report this bug to the developers of your custom builder, "
|
||||
f"this is likely not a issue with Sphinx. The 'env' argument will be required "
|
||||
f"from Sphinx 7.", RemovedInSphinx70Warning, stacklevel=2)
|
||||
builder = self.builders[name](app)
|
||||
if env is not None:
|
||||
builder.set_environment(env)
|
||||
return builder
|
||||
|
||||
def add_domain(self, domain: type[Domain], override: bool = False) -> None:
|
||||
logger.debug('[app] adding domain: %r', domain)
|
||||
|
Loading…
Reference in New Issue
Block a user