From a3ad9ec1391800961bb29ff1e224721444277d66 Mon Sep 17 00:00:00 2001 From: Remi Rampin Date: Wed, 31 Jan 2024 19:19:02 -0500 Subject: [PATCH] Replace pkg_resources with importlib backports --- reprounzip/reprounzip/main.py | 6 +++--- reprounzip/reprounzip/unpackers/common/misc.py | 9 ++++----- reprounzip/setup.py | 2 ++ reprozip-core/reprozip_core/common.py | 8 +++----- reprozip-core/setup.py | 1 + reprozip/reprozip/tracer/trace.py | 4 ++-- reprozip/setup.py | 1 + 7 files changed, 16 insertions(+), 15 deletions(-) diff --git a/reprounzip/reprounzip/main.py b/reprounzip/reprounzip/main.py index 590776309..fdd310ce4 100644 --- a/reprounzip/reprounzip/main.py +++ b/reprounzip/reprounzip/main.py @@ -7,14 +7,14 @@ This contains :func:`~reprounzip.reprounzip.main`, which is the entry point declared to setuptools. It is also callable directly. -It dispatchs to plugins registered through pkg_resources as entry point +It dispatchs to plugins registered through importlib.metadata as entry point ``reprounzip.unpackers``. """ import argparse +from importlib_metadata import entry_points import locale import logging -from pkg_resources import iter_entry_points import sys import traceback @@ -35,7 +35,7 @@ def get_plugins(entry_point_name): - for entry_point in iter_entry_points(entry_point_name): + for entry_point in entry_points().select(group=entry_point_name): try: func = entry_point.load() except Exception: diff --git a/reprounzip/reprounzip/unpackers/common/misc.py b/reprounzip/reprounzip/unpackers/common/misc.py index 291f00793..77de69c45 100644 --- a/reprounzip/reprounzip/unpackers/common/misc.py +++ b/reprounzip/reprounzip/unpackers/common/misc.py @@ -8,11 +8,11 @@ import copy import functools import logging +import importlib_resources import itertools import os from pathlib import Path, PurePosixPath import pickle -import pkg_resources import random import re import shutil @@ -131,10 +131,9 @@ def busybox_url(arch): def rpzsudo_binary(arch): """Gets the rpzsudo file given the architecture. """ - return pkg_resources.resource_stream( - __name__.split('.', 1)[0], - 'rpzsudo-%s' % arch, - ) + files = importlib_resources.files(__name__.split('.', 1)[0]) + ref = files.joinpath('rpzsudo-%s' % arch) + return ref.open('rb') def rpztar_url(arch): diff --git a/reprounzip/setup.py b/reprounzip/setup.py index 86d81fe75..c2102f57a 100644 --- a/reprounzip/setup.py +++ b/reprounzip/setup.py @@ -9,6 +9,8 @@ with io.open('README.rst', encoding='utf-8') as fp: description = fp.read() req = [ + 'importlib-metadata', + 'importlib-resources', 'packaging', 'PyYAML', 'usagestats>=1.0.1', diff --git a/reprozip-core/reprozip_core/common.py b/reprozip-core/reprozip_core/common.py index 354b98da4..3f167e000 100644 --- a/reprozip-core/reprozip_core/common.py +++ b/reprozip-core/reprozip_core/common.py @@ -50,13 +50,13 @@ from datetime import datetime import functools import gzip +import importlib_resources import json import logging import logging.handlers import os import packaging.version from pathlib import Path, PurePosixPath -import pkg_resources import shutil import sys import tarfile @@ -1001,7 +1001,5 @@ def submit_usage_report(**kwargs): def get_reprozip_ca_certificate(): """Gets the ReproZip CA certificate filename. """ - return Path(pkg_resources.resource_filename( - __name__.split('.', 1)[0], - 'reprozip-ca.crt', - )) + files = importlib_resources.files(__name__.split('.', 1)[0]) + return files.joinpath('reprozip-ca.crt') diff --git a/reprozip-core/setup.py b/reprozip-core/setup.py index f324e86a5..9509b05d6 100644 --- a/reprozip-core/setup.py +++ b/reprozip-core/setup.py @@ -9,6 +9,7 @@ with io.open('README.rst', encoding='utf-8') as fp: description = fp.read() req = [ + 'importlib-resources', 'packaging', 'PyYAML', 'usagestats>=1.0.1', diff --git a/reprozip/reprozip/tracer/trace.py b/reprozip/reprozip/tracer/trace.py index c6fcc44a4..2100dc895 100644 --- a/reprozip/reprozip/tracer/trace.py +++ b/reprozip/reprozip/tracer/trace.py @@ -12,11 +12,11 @@ import contextlib import distro from collections import defaultdict +from importlib_metadata import entry_points from itertools import count import logging import os from pathlib import Path, PurePosixPath -from pkg_resources import iter_entry_points import platform import shutil import sqlite3 @@ -103,7 +103,7 @@ def to_file(self): def run_filter_plugins(files, input_files): - for entry_point in iter_entry_points('reprozip.filters'): + for entry_point in entry_points().select(group='reprozip.filters'): func = entry_point.load() name = entry_point.name diff --git a/reprozip/setup.py b/reprozip/setup.py index e06beeb9a..d6eaac440 100644 --- a/reprozip/setup.py +++ b/reprozip/setup.py @@ -39,6 +39,7 @@ with io.open('README.rst', encoding='utf-8') as fp: description = fp.read() req = [ + 'importlib-metadata', 'PyYAML', 'usagestats>=1.0.1', 'requests',