summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Turner <9087854+AA-Turner@users.noreply.github.com>2023-04-28 10:25:57 +0100
committerGitHub <noreply@github.com>2023-04-28 10:25:57 +0100
commita464c5851d864fa0fe444ec0c43680bb26c154b8 (patch)
tree692b790e2e7401fe4f9e5e4fb0d31d9a1d3fecaa
parentd22e66034704b9c2e6f4a5e288ec24881f835441 (diff)
downloadsphinx-git-a464c5851d864fa0fe444ec0c43680bb26c154b8.tar.gz
Make the ``env`` argument to ``Builder`` subclasses required (#11379)
-rw-r--r--CHANGES1
-rw-r--r--sphinx/application.py2
-rw-r--r--sphinx/builders/__init__.py25
-rw-r--r--sphinx/registry.py15
4 files changed, 6 insertions, 37 deletions
diff --git a/CHANGES b/CHANGES
index 027473941..af7b50cf1 100644
--- a/CHANGES
+++ b/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
----------
diff --git a/sphinx/application.py b/sphinx/application.py
index 58e61f7ec..67b322693 100644
--- a/sphinx/application.py
+++ b/sphinx/application.py
@@ -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')
diff --git a/sphinx/builders/__init__.py b/sphinx/builders/__init__.py
index 20e0c0af1..852f25259 100644
--- a/sphinx/builders/__init__.py
+++ b/sphinx/builders/__init__.py
@@ -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.env: BuildEnvironment = env
+ self.env.set_versioning_method(self.versioning_method,
+ self.versioning_compare)
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)
diff --git a/sphinx/registry.py b/sphinx/registry.py
index a3134bd2a..eba9f7556 100644
--- a/sphinx/registry.py
+++ b/sphinx/registry.py
@@ -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
+ return self.builders[name](app, env)
def add_domain(self, domain: type[Domain], override: bool = False) -> None:
logger.debug('[app] adding domain: %r', domain)