MCPcopy Create free account
hub / github.com/aboutcode-org/vulnerablecode / merge

Method merge

vulnerabilities/importer.py:363–393  ·  view source on GitHub ↗

Return a tuple with all attributes of AffectedPackage as a set for all values in the given iterable of AffectedPackage This is useful where an iterable of AffectedPackage needs to be converted into one tuple of structure similar to AffectedPackage but with m

(
        cls, affected_packages: Iterable
    )

Source from the content-addressed store, hash-verified

361
362 @classmethod
363 def merge(
364 cls, affected_packages: Iterable
365 ) -> Tuple[PackageURL, List[VersionRange], List[Version]]:
366 """
367 Return a tuple with all attributes of AffectedPackage as a set
368 for all values in the given iterable of AffectedPackage
369
370 This is useful where an iterable of AffectedPackage needs to be
371 converted into one tuple of structure similar to AffectedPackage
372 but with multiple fixed_versions, ie
373 package: PackageURL
374 affected_version_range: set(VersionRange)
375 fixed_versions: set(Version)
376 """
377 affected_packages = list(affected_packages)
378 if not affected_packages:
379 raise NoAffectedPackages("No affected packages found")
380 affected_version_ranges = list()
381 fixed_versions = list()
382 purls = set()
383 for pkg in affected_packages:
384 if pkg.affected_version_range:
385 if pkg.affected_version_range not in affected_version_ranges:
386 affected_version_ranges.append(pkg.affected_version_range)
387 if pkg.fixed_version:
388 if pkg.fixed_version not in fixed_versions:
389 fixed_versions.append(pkg.fixed_version)
390 purls.add(pkg.package)
391 if len(purls) > 1:
392 raise UnMergeablePackageError("Cannot merge with different purls", purls)
393 return purls.pop(), list(affected_version_ranges), sorted(fixed_versions)
394
395 def to_dict(self):
396 """

Calls 3

NoAffectedPackagesClass · 0.85
addMethod · 0.80