summaryrefslogtreecommitdiff
path: root/sphinx/registry.py
diff options
context:
space:
mode:
Diffstat (limited to 'sphinx/registry.py')
-rw-r--r--sphinx/registry.py13
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: