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

Method from_dict

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

Return an AffectedPackage object from dict generated by self.to_dict

(cls, affected_pkg: dict)

Source from the content-addressed store, hash-verified

551
552 @classmethod
553 def from_dict(cls, affected_pkg: dict):
554 """Return an AffectedPackage object from dict generated by self.to_dict"""
555
556 package = PackageURL(**affected_pkg["package"])
557 affected_version_range = None
558 fixed_version_range = None
559 affected_range = affected_pkg["affected_version_range"]
560 fixed_range = affected_pkg["fixed_version_range"]
561 introduced_by_commit_patches = affected_pkg.get("introduced_by_commit_patches") or []
562 fixed_by_commit_patches = affected_pkg.get("fixed_by_commit_patches") or []
563
564 try:
565 affected_version_range = (
566 VersionRange.from_string(affected_range) if affected_range else None
567 )
568 fixed_version_range = VersionRange.from_string(fixed_range) if fixed_range else None
569 except:
570 tb = traceback.format_exc()
571 logger.error(
572 f"Cannot create AffectedPackage with invalid or unknown range: {affected_pkg!r} with error: {tb!r}"
573 )
574 return
575
576 if (
577 not fixed_version_range
578 and not affected_version_range
579 and not introduced_by_commit_patches
580 and not fixed_by_commit_patches
581 ):
582 logger.error(
583 f"Cannot create an AffectedPackage for: {affected_pkg!r}, at least one of the following must be provided: "
584 "a fixed version range, an affected version range, introduced commit patches, or fixed commit patches"
585 )
586 return
587
588 return cls(
589 package=package,
590 affected_version_range=affected_version_range,
591 fixed_version_range=fixed_version_range,
592 introduced_by_commit_patches=[
593 PackageCommitPatchData.from_dict(commit) for commit in introduced_by_commit_patches
594 ],
595 fixed_by_commit_patches=[
596 PackageCommitPatchData.from_dict(commit) for commit in fixed_by_commit_patches
597 ],
598 )
599
600
601@dataclasses.dataclass(order=True)

Callers

nothing calls this directly

Calls 2

getMethod · 0.45
from_dictMethod · 0.45

Tested by

no test coverage detected