diff options
author | Adam Turner <9087854+AA-Turner@users.noreply.github.com> | 2023-04-28 10:25:57 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-28 10:25:57 +0100 |
commit | a464c5851d864fa0fe444ec0c43680bb26c154b8 (patch) | |
tree | 692b790e2e7401fe4f9e5e4fb0d31d9a1d3fecaa | |
parent | d22e66034704b9c2e6f4a5e288ec24881f835441 (diff) | |
download | sphinx-git-a464c5851d864fa0fe444ec0c43680bb26c154b8.tar.gz |
Make the ``env`` argument to ``Builder`` subclasses required (#11379)
-rw-r--r-- | CHANGES | 1 | ||||
-rw-r--r-- | sphinx/application.py | 2 | ||||
-rw-r--r-- | sphinx/builders/__init__.py | 25 | ||||
-rw-r--r-- | sphinx/registry.py | 15 |
4 files changed, 6 insertions, 37 deletions
@@ -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) |