Skip to content

Commit 8d95852

Browse files
authored
refactor: replace pkg_resources with importlib (fixes #1521) (#1542)
* fixes #1521
1 parent 62ae407 commit 8d95852

File tree

5 files changed

+23
-9
lines changed

5 files changed

+23
-9
lines changed

cve_bin_tool/cli.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@
2323
from collections import ChainMap
2424
from typing import Dict
2525

26-
import pkg_resources
27-
2826
from cve_bin_tool.available_fix import (
2927
AvailableFixReport,
3028
get_available_fix_supported_distros,
@@ -51,6 +49,11 @@
5149
from cve_bin_tool.version import VERSION
5250
from cve_bin_tool.version_scanner import VersionScanner
5351

52+
if sys.version_info >= (3, 8):
53+
from importlib import metadata as importlib_metadata
54+
else:
55+
import importlib_metadata
56+
5457
sys.excepthook = excepthook # Always install excepthook for entrypoint module.
5558

5659

@@ -500,7 +503,7 @@ def main(argv=None):
500503
lambda checker: checker.name,
501504
filter(
502505
lambda checker: checker.name not in runs,
503-
pkg_resources.iter_entry_points("cve_bin_tool.checker"),
506+
importlib_metadata.entry_points()["cve_bin_tool.checker"],
504507
),
505508
)
506509
)

cve_bin_tool/version_scanner.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
from re import MULTILINE, compile, search
88

99
import defusedxml.ElementTree as ET
10-
import pkg_resources
1110

1211
from cve_bin_tool.cvedb import CVEDB
1312
from cve_bin_tool.egg_updater import IS_DEVELOP, update_egg
@@ -18,6 +17,11 @@
1817
from cve_bin_tool.strings import Strings
1918
from cve_bin_tool.util import DirWalk, ProductInfo, inpath
2019

20+
if sys.version_info >= (3, 8):
21+
from importlib import metadata as importlib_metadata
22+
else:
23+
import importlib_metadata
24+
2125

2226
class InvalidFileError(Exception):
2327
"""Filepath is invalid for scanning."""
@@ -67,14 +71,14 @@ def load_checkers(cls):
6771
checkers = dict(
6872
map(
6973
lambda checker: (checker.name, checker.load()),
70-
pkg_resources.iter_entry_points(cls.CHECKER_ENTRYPOINT),
74+
importlib_metadata.entry_points()[cls.CHECKER_ENTRYPOINT],
7175
)
7276
)
7377
return checkers
7478

7579
@classmethod
7680
def available_checkers(cls):
77-
checkers = pkg_resources.iter_entry_points(cls.CHECKER_ENTRYPOINT)
81+
checkers = importlib_metadata.entry_points()[cls.CHECKER_ENTRYPOINT]
7882
checker_list = [item.name for item in checkers]
7983
return checker_list
8084

requirements.csv

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,4 @@ srossross_not_in_db,rpmfile
1818
indygreg_not_in_db,zstandard
1919
nir0s_not_in_db,distro
2020
tiran_not_in_db,defusedxml
21+
python_not_in_db,importlib_metadata

requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,4 @@ zstandard; python_version >= "3.4"
1717
reportlab
1818
distro
1919
defusedxml
20+
importlib_metadata; python_version < "3.8"

test/test_checkers.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,19 @@
22
# SPDX-License-Identifier: GPL-3.0-or-later
33

44
import re
5+
import sys
56

6-
import pkg_resources
77
import pytest
88

99
from cve_bin_tool.checkers import Checker, VendorProductPair
1010
from cve_bin_tool.egg_updater import IS_DEVELOP, update_egg
1111
from cve_bin_tool.log import LOGGER
1212

13+
if sys.version_info >= (3, 8):
14+
from importlib import metadata as importlib_metadata
15+
else:
16+
import importlib_metadata
17+
1318
Pattern = type(re.compile("", 0))
1419

1520

@@ -113,7 +118,7 @@ def setup_class(cls):
113118
)
114119
def test_filename_is(self, checker_name, file_name, expected_results):
115120
"""Test a checker's filename detection"""
116-
checkers = pkg_resources.iter_entry_points("cve_bin_tool.checker")
121+
checkers = importlib_metadata.entry_points()["cve_bin_tool.checker"]
117122
for checker in checkers:
118123
if checker.name == checker_name:
119124
Checker = checker.load()
@@ -162,7 +167,7 @@ def test_glibc_latest_version(self):
162167
"2.30",
163168
]
164169
file_name = "libc.so.6"
165-
checkers = pkg_resources.iter_entry_points("cve_bin_tool.checker")
170+
checkers = importlib_metadata.entry_points()["cve_bin_tool.checker"]
166171
result = None
167172
for checker in checkers:
168173
if checker.name == "glibc":

0 commit comments

Comments
 (0)