Make registry use explicit when creating _DomainsContainer

This commit is contained in:
Adam Turner 2024-11-02 21:26:57 +00:00
parent c3968e9be9
commit c6b4114cde
2 changed files with 11 additions and 4 deletions

View File

@ -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]

View File

@ -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()