Skip to content

Commit f3385a8

Browse files
Improve dependency resolving from lockfiles #1237
Resolves dependency for cases where multiple requirements are resolved by one package and all the version requirements are joined for that package. Reference: #1237 Signed-off-by: Ayan Sinha Mahapatra <ayansmahapatra@gmail.com>
1 parent 04fc0e1 commit f3385a8

2 files changed

Lines changed: 18 additions & 1 deletion

File tree

scanpipe/pipes/scancode.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -602,6 +602,7 @@ def match_and_resolve_dependencies(project):
602602
dependency_data={"purl": dependency.purl},
603603
ignore_nulls=True,
604604
)
605+
605606
matched_dependencies = DiscoveredDependency.objects.filter(
606607
project=project,
607608
extracted_requirement=dependency.extracted_requirement,
@@ -611,6 +612,22 @@ def match_and_resolve_dependencies(project):
611612
other_dependencies = [
612613
dep for dep in matched_dependencies if dep.purl != dependency.purl
613614
]
615+
if not other_dependencies:
616+
# We also have cases where multiple dependency requirements have one
617+
# resolved package and the extracted requirements field is combined
618+
matched_dependencies = DiscoveredDependency.objects.filter(
619+
project=project,
620+
**purl_data,
621+
)
622+
other_dependencies = [
623+
dep
624+
for dep in matched_dependencies
625+
if (
626+
dep.purl != dependency.purl
627+
and dependency.extracted_requirement in dep.extracted_requirement
628+
)
629+
]
630+
614631
if other_dependencies:
615632
resolved_dependency = other_dependencies.pop()
616633
dependency.update(

setup.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ install_requires =
7272
# Docker
7373
container-inspector==33.0.0
7474
# ScanCode-toolkit
75-
scancode-toolkit[packages] @ git+https://github.com/nexB/scancode-toolkit.git@b24b29f5e04b72a723fcc0e55e5d4cb60fc879e4
75+
scancode-toolkit[packages] @ git+https://github.com/nexB/scancode-toolkit.git@ce8e0d1ddc9e8968958313e82481d46498d51f25
7676
extractcode[full]==31.0.0
7777
commoncode==31.2.1
7878
# FetchCode

0 commit comments

Comments
 (0)