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

Function get_exact_purls_v2

vulnerabilities/pipes/univers_utils.py:47–95  ·  view source on GitHub ↗

Return a list of affected purls and the fixed package found in the ``affected_package`` AffectedPackageV2 disregarding any ranges. Only exact version constraints (ie with an equality) are considered For eg: >>> purl = {"type": "turtle", "name": "green"} >>> vers = "vers:npm

(
    affected_package: AffectedPackageV2,
    logger: Callable = None,
)

Source from the content-addressed store, hash-verified

45
46
47def get_exact_purls_v2(
48 affected_package: AffectedPackageV2,
49 logger: Callable = None,
50) -> Tuple[List[PackageURL], PackageURL]:
51 """
52 Return a list of affected purls and the fixed package found in the ``affected_package``
53 AffectedPackageV2 disregarding any ranges.
54
55 Only exact version constraints (ie with an equality) are considered
56 For eg:
57 >>> purl = {"type": "turtle", "name": "green"}
58 >>> vers = "vers:npm/<1.0.0 | >=2.0.0 | <3.0.0"
59 >>> vers2 = "vers:npm/5.0.0"
60 >>> affected_package = AffectedPackageV2.from_dict({
61 ... "package": purl,
62 ... "affected_version_range": vers,
63 ... "fixed_version_range": vers2
64 ... })
65 >>> got = get_exact_purls_v2(affected_package)
66 >>> expected = (
67 ... [PackageURL(type='turtle', namespace=None, name='green', version='2.0.0', qualifiers={}, subpath=None)],
68 ... [PackageURL(type='turtle', namespace=None, name='green', version='5.0.0', qualifiers={}, subpath=None)]
69 ... )
70 >>> assert expected == got
71 """
72 if not affected_package:
73 return [], []
74
75 try:
76 affected_purls, fixed_purls = get_exact_purl_from_vers(
77 version_range=affected_package.affected_version_range,
78 base_purl=affected_package.package,
79 )
80
81 fixed_purls_2, affected_purls_2 = get_exact_purl_from_vers(
82 version_range=affected_package.fixed_version_range,
83 base_purl=affected_package.package,
84 )
85
86 affected_purls.extend(affected_purls_2)
87 fixed_purls.extend(fixed_purls_2)
88
89 return affected_purls, fixed_purls
90 except Exception as e:
91 logger(
92 f"Failed to get exact purls for: {affected_package!r} with error: {e!r} \n{traceback_format_exc()}",
93 level=logging.ERROR,
94 )
95 return [], []

Callers 1

insert_advisory_v2Function · 0.90

Calls 1

get_exact_purl_from_versFunction · 0.85

Tested by

no test coverage detected