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

Class AffectedPackageV2

vulnerabilities/importer.py:452–598  ·  view source on GitHub ↗

Relate a Package URL with a range of affected versions and fixed versions. The Package URL must *not* have a version. AffectedPackage must contain either ``affected_version_range`` or ``fixed_version_range`` or ``introduced_by_commits`` or ``fixed_by_commits``.

Source from the content-addressed store, hash-verified

450@functools.total_ordering
451@dataclasses.dataclass(eq=True)
452class AffectedPackageV2:
453 """
454 Relate a Package URL with a range of affected versions and fixed versions.
455 The Package URL must *not* have a version.
456 AffectedPackage must contain either ``affected_version_range`` or ``fixed_version_range`` or ``introduced_by_commits`` or ``fixed_by_commits``.
457 """
458
459 package: PackageURL
460 affected_version_range: Optional[VersionRange] = None
461 fixed_version_range: Optional[VersionRange] = None
462 introduced_by_commit_patches: List[PackageCommitPatchData] = dataclasses.field(
463 default_factory=list
464 )
465 fixed_by_commit_patches: List[PackageCommitPatchData] = dataclasses.field(default_factory=list)
466
467 def __post_init__(self):
468 if self.package.version:
469 raise ValueError(f"Affected Package URL {self.package!r} cannot have a version.")
470
471 if not (
472 self.affected_version_range
473 or self.fixed_version_range
474 or self.introduced_by_commit_patches
475 or self.fixed_by_commit_patches
476 ):
477 raise ValueError(
478 f"Affected package {self.package!r} must have either a fixed version range, "
479 "an affected version range, introduced commit patches, or fixed commit patches."
480 )
481
482 if self.affected_version_range is not None and not isinstance(
483 self.affected_version_range, VersionRange
484 ):
485 raise TypeError(
486 f"affected_version_range must be VersionRange or None, got {type(self.affected_version_range)!r}"
487 )
488
489 if self.fixed_version_range is not None and not isinstance(
490 self.fixed_version_range, VersionRange
491 ):
492 raise TypeError(
493 f"fixed_version_range must be VersionRange or None, got {type(self.fixed_version_range)!r}"
494 )
495
496 if not isinstance(self.introduced_by_commit_patches, list):
497 raise TypeError(
498 f"introduced_by_commit_patches must be a list, got {type(self.introduced_by_commit_patches)!r}"
499 )
500
501 if not isinstance(self.fixed_by_commit_patches, list):
502 raise TypeError(
503 f"fixed_by_commit_patches must be a list, got {type(self.fixed_by_commit_patches)!r}"
504 )
505
506 for item in self.introduced_by_commit_patches:
507 if not isinstance(item, PackageCommitPatchData):
508 raise TypeError(
509 f"introduced_by_commit_patches items must be PackageCommitPatchData, got {type(item)!r}"

Callers 15

to_advisory_dataFunction · 0.90
parse_advisoryMethod · 0.90
collect_advisoriesMethod · 0.90
to_advisory_dataMethod · 0.90
process_fileMethod · 0.90
collect_advisoriesMethod · 0.90
parseMethod · 0.90
parse_affected_packagesFunction · 0.90
parse_gitlab_advisoryFunction · 0.90
parse_curl_advisoryFunction · 0.90
to_advisoriesMethod · 0.90
collect_advisoriesMethod · 0.90

Calls

no outgoing calls

Tested by 12

setUpMethod · 0.72
setUpMethod · 0.72
setUpMethod · 0.72
setUpMethod · 0.72
setUpMethod · 0.72
setUpMethod · 0.72
setUpMethod · 0.72
setUpMethod · 0.72
setUpMethod · 0.72
setUpMethod · 0.72
dummy_advisoryFunction · 0.72
dumpy_patch_advisoryFunction · 0.72