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.
|
* #11373: Removed deprecated ``sphinx.util.get_matching_files()`` function.
|
||||||
* #11378: Remove deprecated ``sphinx.util.docutils.is_html5_writer_available()``
|
* #11378: Remove deprecated ``sphinx.util.docutils.is_html5_writer_available()``
|
||||||
function.
|
function.
|
||||||
|
* #11379: Make the ``env`` argument to ``Builder`` subclasses required.
|
||||||
|
|
||||||
Deprecated
|
Deprecated
|
||||||
----------
|
----------
|
||||||
|
@ -335,8 +335,6 @@ class Sphinx:
|
|||||||
return self.registry.create_builder(self, name, self.env)
|
return self.registry.create_builder(self, name, self.env)
|
||||||
|
|
||||||
def _init_builder(self) -> None:
|
def _init_builder(self) -> None:
|
||||||
if not hasattr(self.builder, "env"):
|
|
||||||
self.builder.set_environment(self.env)
|
|
||||||
self.builder.init()
|
self.builder.init()
|
||||||
self.events.emit('builder-inited')
|
self.events.emit('builder-inited')
|
||||||
|
|
||||||
|
@ -5,7 +5,6 @@ from __future__ import annotations
|
|||||||
import codecs
|
import codecs
|
||||||
import pickle
|
import pickle
|
||||||
import time
|
import time
|
||||||
import warnings
|
|
||||||
from os import path
|
from os import path
|
||||||
from typing import TYPE_CHECKING, Any, Iterable, Sequence
|
from typing import TYPE_CHECKING, Any, Iterable, Sequence
|
||||||
|
|
||||||
@ -14,7 +13,6 @@ from docutils.nodes import Node
|
|||||||
from docutils.utils import DependencyList
|
from docutils.utils import DependencyList
|
||||||
|
|
||||||
from sphinx.config import Config
|
from sphinx.config import Config
|
||||||
from sphinx.deprecation import RemovedInSphinx70Warning
|
|
||||||
from sphinx.environment import CONFIG_CHANGED_REASON, CONFIG_OK, BuildEnvironment
|
from sphinx.environment import CONFIG_CHANGED_REASON, CONFIG_OK, BuildEnvironment
|
||||||
from sphinx.environment.adapters.asset import ImageAdapter
|
from sphinx.environment.adapters.asset import ImageAdapter
|
||||||
from sphinx.errors import SphinxError
|
from sphinx.errors import SphinxError
|
||||||
@ -79,7 +77,7 @@ class Builder:
|
|||||||
#: The builder supports data URIs or not.
|
#: The builder supports data URIs or not.
|
||||||
supported_data_uri_images = False
|
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.srcdir = app.srcdir
|
||||||
self.confdir = app.confdir
|
self.confdir = app.confdir
|
||||||
self.outdir = app.outdir
|
self.outdir = app.outdir
|
||||||
@ -87,15 +85,9 @@ class Builder:
|
|||||||
ensuredir(self.doctreedir)
|
ensuredir(self.doctreedir)
|
||||||
|
|
||||||
self.app: Sphinx = app
|
self.app: Sphinx = app
|
||||||
if env is not None:
|
self.env: BuildEnvironment = env
|
||||||
self.env: BuildEnvironment = env
|
self.env.set_versioning_method(self.versioning_method,
|
||||||
self.env.set_versioning_method(self.versioning_method,
|
self.versioning_compare)
|
||||||
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.events: EventManager = app.events
|
||||||
self.config: Config = app.config
|
self.config: Config = app.config
|
||||||
self.tags: Tags = app.tags
|
self.tags: Tags = app.tags
|
||||||
@ -115,15 +107,6 @@ class Builder:
|
|||||||
self.parallel_ok = False
|
self.parallel_ok = False
|
||||||
self.finish_tasks: Any = None
|
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]:
|
def get_translator_class(self, *args: Any) -> type[nodes.NodeVisitor]:
|
||||||
"""Return a class of translator."""
|
"""Return a class of translator."""
|
||||||
return self.app.registry.get_translator_class(self)
|
return self.app.registry.get_translator_class(self)
|
||||||
|
@ -4,7 +4,6 @@ from __future__ import annotations
|
|||||||
|
|
||||||
import sys
|
import sys
|
||||||
import traceback
|
import traceback
|
||||||
import warnings
|
|
||||||
from importlib import import_module
|
from importlib import import_module
|
||||||
from types import MethodType
|
from types import MethodType
|
||||||
from typing import TYPE_CHECKING, Any, Callable, Iterator
|
from typing import TYPE_CHECKING, Any, Callable, Iterator
|
||||||
@ -23,7 +22,6 @@ else:
|
|||||||
|
|
||||||
from sphinx.builders import Builder
|
from sphinx.builders import Builder
|
||||||
from sphinx.config import Config
|
from sphinx.config import Config
|
||||||
from sphinx.deprecation import RemovedInSphinx70Warning
|
|
||||||
from sphinx.domains import Domain, Index, ObjType
|
from sphinx.domains import Domain, Index, ObjType
|
||||||
from sphinx.domains.std import GenericObject, Target
|
from sphinx.domains.std import GenericObject, Target
|
||||||
from sphinx.environment import BuildEnvironment
|
from sphinx.environment import BuildEnvironment
|
||||||
@ -156,18 +154,7 @@ class SphinxComponentRegistry:
|
|||||||
if name not in self.builders:
|
if name not in self.builders:
|
||||||
raise SphinxError(__('Builder name %s not registered') % name)
|
raise SphinxError(__('Builder name %s not registered') % name)
|
||||||
|
|
||||||
try:
|
return self.builders[name](app, env)
|
||||||
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:
|
def add_domain(self, domain: type[Domain], override: bool = False) -> None:
|
||||||
logger.debug('[app] adding domain: %r', domain)
|
logger.debug('[app] adding domain: %r', domain)
|
||||||
|
Loading…
Reference in New Issue
Block a user