From 57d807bd0bf5b88f5e240b61610fba6fd086d090 Mon Sep 17 00:00:00 2001
From: David Douard <david.douard@sdfa3.org>
Date: Tue, 21 May 2024 17:42:36 +0200
Subject: [PATCH] Replace usage of pkg_resources by importlib

pkg_resources is now deprecated (as of setuptools 68) so use importlib
instead.
---
 mypy.ini                             | 3 ---
 swh/loader/cli.py                    | 6 +++---
 swh/loader/core/__init__.py          | 9 ++++-----
 swh/loader/core/metadata_fetchers.py | 4 ++--
 4 files changed, 9 insertions(+), 13 deletions(-)

diff --git a/mypy.ini b/mypy.ini
index f963d5d3..9eade790 100644
--- a/mypy.ini
+++ b/mypy.ini
@@ -18,9 +18,6 @@ ignore_missing_imports = True
 [mypy-iso8601.*]
 ignore_missing_imports = True
 
-[mypy-pkg_resources.*]
-ignore_missing_imports = True
-
 [mypy-pkginfo.*]
 ignore_missing_imports = True
 
diff --git a/swh/loader/cli.py b/swh/loader/cli.py
index 13e8bc0c..bff156fe 100644
--- a/swh/loader/cli.py
+++ b/swh/loader/cli.py
@@ -3,13 +3,14 @@
 # License: GNU General Public License version 3, or any later version
 # See top-level LICENSE file for more information
 
+from importlib.metadata import entry_points
+
 # WARNING: do not import unnecessary things here to keep cli startup time under
 # control
 import logging
 from typing import Any
 
 import click
-import pkg_resources
 
 from swh.core.cli import CONTEXT_SETTINGS
 from swh.core.cli import swh as swh_cli_group
@@ -19,11 +20,10 @@ logger = logging.getLogger(__name__)
 
 LOADERS = {
     entry_point.name.split(".", 1)[1]: entry_point
-    for entry_point in pkg_resources.iter_entry_points("swh.workers")
+    for entry_point in entry_points(group="swh.workers")
     if entry_point.name.split(".", 1)[0] == "loader"
 }
 
-
 SUPPORTED_LOADERS = sorted(list(LOADERS))
 
 
diff --git a/swh/loader/core/__init__.py b/swh/loader/core/__init__.py
index 379324a6..2ade7d5b 100644
--- a/swh/loader/core/__init__.py
+++ b/swh/loader/core/__init__.py
@@ -1,15 +1,14 @@
-# Copyright (C) 2022-2023  The Software Heritage developers
+# Copyright (C) 2022-2024  The Software Heritage developers
 # See the AUTHORS file at the top-level directory of this distribution
 # License: GNU General Public License version 3, or any later version
 # See top-level LICENSE file for more information
 
+from importlib.metadata import PackageNotFoundError, version
 from typing import Any, Mapping
 
-import pkg_resources
-
 try:
-    __version__ = pkg_resources.get_distribution("swh.loader.core").version
-except pkg_resources.DistributionNotFound:
+    __version__ = version("swh.loader.core")
+except PackageNotFoundError:
     __version__ = "devel"
 
 
diff --git a/swh/loader/core/metadata_fetchers.py b/swh/loader/core/metadata_fetchers.py
index c03dd6aa..fa1d0d5c 100644
--- a/swh/loader/core/metadata_fetchers.py
+++ b/swh/loader/core/metadata_fetchers.py
@@ -4,9 +4,9 @@
 # See top-level LICENSE file for more information
 
 import functools
+from importlib.metadata import entry_points
 from typing import Dict, List, Optional, Set, Type
 
-import pkg_resources
 from typing_extensions import Protocol, runtime_checkable
 
 from swh.model.model import Origin, RawExtrinsicMetadata
@@ -41,7 +41,7 @@ class MetadataFetcherProtocol(Protocol):
 @functools.lru_cache()
 def _fetchers() -> List[Type[MetadataFetcherProtocol]]:
     classes = []
-    for entry_point in pkg_resources.iter_entry_points("swh.loader.metadata"):
+    for entry_point in entry_points(group="swh.loader.metadata"):
         classes.append(entry_point.load())
 
     return classes
-- 
GitLab