From c6b4114cde98c28c9b53b7caab7a9191c99e7afd Mon Sep 17 00:00:00 2001 From: Adam Turner <9087854+aa-turner@users.noreply.github.com> Date: Sat, 2 Nov 2024 21:26:57 +0000 Subject: [PATCH] Make registry use explicit when creating _DomainsContainer --- sphinx/domains/_domains_container.py | 7 +++++-- sphinx/environment/__init__.py | 8 ++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/sphinx/domains/_domains_container.py b/sphinx/domains/_domains_container.py index b8e389c79..5578a9257 100644 --- a/sphinx/domains/_domains_container.py +++ b/sphinx/domains/_domains_container.py @@ -22,6 +22,7 @@ if TYPE_CHECKING: from sphinx.environment import BuildEnvironment from sphinx.ext.duration import DurationDomain from sphinx.ext.todo import TodoDomain + from sphinx.registry import SphinxComponentRegistry class _DomainsContainer: @@ -71,8 +72,10 @@ class _DomainsContainer: }) @classmethod - def _from_environment(cls, env: BuildEnvironment, /) -> Self: - create_domains = env.app.registry.create_domains + def _from_environment( + cls, env: BuildEnvironment, /, *, registry: SphinxComponentRegistry + ) -> Self: + create_domains = registry.create_domains # Initialise domains if domains := {domain.name: domain for domain in create_domains(env)}: return cls(**domains) # type: ignore[arg-type] diff --git a/sphinx/environment/__init__.py b/sphinx/environment/__init__.py index 34ef4cc80..8ecacf257 100644 --- a/sphinx/environment/__init__.py +++ b/sphinx/environment/__init__.py @@ -220,7 +220,9 @@ class BuildEnvironment: self._search_index_objnames: dict[int, tuple[str, str, str]] = {} # all the registered domains, set by the application - self.domains: _DomainsContainer = _DomainsContainer._from_environment(self) + self.domains: _DomainsContainer = _DomainsContainer._from_environment( + self, registry=app.registry + ) # set up environment self.setup(app) @@ -259,7 +261,9 @@ class BuildEnvironment: # initialise domains if self.domains is None: # if we are unpickling an environment, we need to recreate the domains - self.domains = _DomainsContainer._from_environment(self) + self.domains = _DomainsContainer._from_environment( + self, registry=app.registry + ) # setup domains (must do after all initialization) self.domains._setup()