summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--setup.py3
-rw-r--r--sphinx/registry.py13
-rw-r--r--sphinx/theming.py13
3 files changed, 17 insertions, 12 deletions
diff --git a/setup.py b/setup.py
index 8245aacef..31089da18 100644
--- a/setup.py
+++ b/setup.py
@@ -29,8 +29,8 @@ install_requires = [
'alabaster>=0.7,<0.8',
'imagesize',
'requests>=2.5.0',
- 'setuptools',
'packaging',
+ "importlib-metadata>=4.4; python_version < '3.10'",
]
extras_require = {
@@ -47,7 +47,6 @@ extras_require = {
'mypy>=0.920',
'docutils-stubs',
"types-typed-ast",
- "types-pkg_resources",
"types-requests",
],
'test': [
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:
diff --git a/sphinx/theming.py b/sphinx/theming.py
index f5004022d..763a657fb 100644
--- a/sphinx/theming.py
+++ b/sphinx/theming.py
@@ -16,7 +16,10 @@ from os import path
from typing import TYPE_CHECKING, Any, Dict, List
from zipfile import ZipFile
-import pkg_resources
+try: # Python < 3.10 (backport)
+ from importlib_metadata import entry_points
+except ImportError:
+ from importlib.metadata import entry_points
from sphinx import package_dir
from sphinx.errors import ThemeError
@@ -201,12 +204,12 @@ class HTMLThemeFactory:
Sphinx refers to ``sphinx_themes`` entry_points.
"""
# look up for new styled entry_points at first
- entry_points = pkg_resources.iter_entry_points('sphinx.html_themes', name)
+ theme_eps = entry_points(group='sphinx.html_themes')
try:
- entry_point = next(entry_points)
- self.app.registry.load_extension(self.app, entry_point.module_name)
+ entry_point = theme_eps[name]
+ self.app.registry.load_extension(self.app, entry_point.module)
return
- except StopIteration:
+ except KeyError:
pass
def find_themes(self, theme_path: str) -> Dict[str, str]: