|
27 | 27 | import requests # type:ignore |
28 | 28 | import logging |
29 | 29 | import operator |
30 | | -import pkg_resources # type:ignore |
31 | | -from pkg_resources import parse_version # type:ignore |
| 30 | +from importlib.metadata import distributions # type:ignore |
| 31 | +from packaging.version import Version # type:ignore |
32 | 32 |
|
33 | 33 | logger = logging.getLogger("measures") |
34 | 34 | logger.setLevel(10) |
@@ -85,16 +85,16 @@ def get_latest_version(package_name): |
85 | 85 |
|
86 | 86 | def compare_versions(version_a, version_b): |
87 | 87 | # default to equals |
88 | | - operator = COMPARATORS["="] |
| 88 | + operator_func = COMPARATORS["="] |
89 | 89 |
|
90 | 90 | # find if it's a different operator |
91 | 91 | find_operator = [c for c in COMPARATORS if version_a.startswith(c)] |
92 | 92 | if len(find_operator): |
93 | 93 | s = find_operator[0] |
94 | | - operator = COMPARATORS[s] |
| 94 | + operator_func = COMPARATORS[s] |
95 | 95 | version_a = version_a.lstrip(s) |
96 | 96 |
|
97 | | - return operator(parse_version(version_b), parse_version(version_a)) |
| 97 | + return operator_func(Version(version_b), Version(version_a)) |
98 | 98 |
|
99 | 99 |
|
100 | 100 | def get_package_summary(package=None, installed_version=None, vuln_details={}): |
@@ -157,11 +157,11 @@ def test(self): |
157 | 157 | results = [] |
158 | 158 |
|
159 | 159 | known_vulns = get_known_vulns() |
160 | | - for package in pkg_resources.working_set: |
| 160 | + for dist in distributions(): |
161 | 161 | package_result = get_package_summary( |
162 | | - package=package.project_name, |
163 | | - installed_version=package.version, |
164 | | - vuln_details=known_vulns.get(package.project_name), |
| 162 | + package=dist.metadata["Name"], |
| 163 | + installed_version=dist.version, |
| 164 | + vuln_details=known_vulns.get(dist.metadata["Name"]), |
165 | 165 | ) |
166 | 166 |
|
167 | 167 | if package_result["state"] == "VULNERABLE": |
|
0 commit comments