Skip to content

Commit 44b9286

Browse files
committed
replacement of pkg_resources with packaging.requirements for parsing requirements files
1 parent 9408388 commit 44b9286

File tree

1 file changed

+9
-10
lines changed

1 file changed

+9
-10
lines changed

guarddog/scanners/pypi_project_scanner.py

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import re
44
from typing import List
55

6-
import pkg_resources
6+
from packaging.requirements import Requirement
77
import requests
88
from packaging.specifiers import Specifier, Version
99

@@ -111,12 +111,11 @@ def safe_parse_requirements(req):
111111
"""
112112
This helper function yields one valid requirement line at a time
113113
"""
114-
parsed = pkg_resources.parse_requirements(req)
115-
while True:
114+
for req_line in req:
115+
if not req_line.strip():
116+
continue
116117
try:
117-
yield next(parsed)
118-
except StopIteration:
119-
break
118+
yield Requirement(req_line)
120119
except Exception as e:
121120
log.error(
122121
f"Error when parsing requirements, received error {str(e)}. This entry will be "
@@ -130,7 +129,7 @@ def safe_parse_requirements(req):
130129
continue
131130

132131
versions = get_matched_versions(
133-
find_all_versions(requirement.project_name),
132+
find_all_versions(requirement.name),
134133
(
135134
requirement.url
136135
if requirement.url
@@ -140,7 +139,7 @@ def safe_parse_requirements(req):
140139

141140
if len(versions) == 0:
142141
log.error(
143-
f"Package/Version {requirement.project_name} not on PyPI\n"
142+
f"Package/Version {requirement.name} not on PyPI\n"
144143
)
145144
continue
146145

@@ -165,13 +164,13 @@ def safe_parse_requirements(req):
165164
# find the dep with the same name or create a new one
166165
dep = next(
167166
filter(
168-
lambda d: d.name == requirement.project_name,
167+
lambda d: d.name == requirement.name,
169168
dependencies,
170169
),
171170
None,
172171
)
173172
if not dep:
174-
dep = Dependency(name=requirement.project_name, versions=set())
173+
dep = Dependency(name=requirement.name, versions=set())
175174
dependencies.append(dep)
176175

177176
dep.versions.update(dep_versions)

0 commit comments

Comments
 (0)