diff options
Diffstat (limited to 'sphinx/registry.py')
-rw-r--r-- | sphinx/registry.py | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/sphinx/registry.py b/sphinx/registry.py index 543e5802b..cc2db06e5 100644 --- a/sphinx/registry.py +++ b/sphinx/registry.py @@ -21,7 +21,10 @@ from docutils.nodes import Element, Node, TextElement from docutils.parsers import Parser from docutils.parsers.rst import Directive from docutils.transforms import Transform -from pkg_resources import iter_entry_points +try: + from importlib_metadata import entry_points +except ImportError: + from importlib.metadata import entry_points from sphinx.builders import Builder from sphinx.config import Config @@ -143,14 +146,14 @@ class SphinxComponentRegistry: return if name not in self.builders: - entry_points = iter_entry_points('sphinx.builders', name) + builder_eps = entry_points(group='sphinx.builders') try: - entry_point = next(entry_points) - except StopIteration as exc: + entry_point = builder_eps[name] + except KeyError as exc: raise SphinxError(__('Builder name %s not registered or available' ' through entry point') % name) from exc - self.load_extension(app, entry_point.module_name) + self.load_extension(app, entry_point.module) def create_builder(self, app: "Sphinx", name: str) -> Builder: if name not in self.builders: |