Skip to content

Commit ce87783

Browse files
committed
Add get_fixed_purl in AffectedPackage, fix from_dict
from_dict is a factory, should be a classmethod Signed-off-by: Hritik Vijay <hritikxx8@gmail.com>
1 parent f26399e commit ce87783

1 file changed

Lines changed: 19 additions & 13 deletions

File tree

vulnerabilities/data_source.py

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -66,14 +66,12 @@ def to_dict(self):
6666
"value": self.value,
6767
}
6868

69-
@staticmethod
70-
def from_dict(severity: dict):
69+
@classmethod
70+
def from_dict(cls, severity: dict):
7171
"""
7272
Return a VulnerabilitySeverity object from dict generated by self.to_dict
7373
"""
74-
return VulnerabilitySeverity(
75-
system=SCORING_SYSTEMS[severity["system"]], value=severity["value"]
76-
)
74+
return cls(system=SCORING_SYSTEMS[severity["system"]], value=severity["value"])
7775

7876

7977
@dataclasses.dataclass(order=True)
@@ -101,12 +99,12 @@ def to_dict(self):
10199
"severities": [severity.to_dict() for severity in self.severities],
102100
}
103101

104-
@staticmethod
105-
def from_dict(ref: dict):
102+
@classmethod
103+
def from_dict(cls, ref: dict):
106104
"""
107105
Return a Reference object from dict generated by self.to_dict
108106
"""
109-
return Reference(
107+
return cls(
110108
reference_id=ref["reference_id"],
111109
url=ref["url"],
112110
severities=[
@@ -130,8 +128,16 @@ def __post_init__(self):
130128
if self.package.version:
131129
raise ValueError
132130

133-
@staticmethod
134-
def merge(affected_packages: Iterable):
131+
def get_fixed_purl(self):
132+
"""
133+
Return PackageURL corresponding to object's fixed_version
134+
"""
135+
fixed_version = self.fixed_version
136+
fixed_purl = self.package._replace(version=str(fixed_version))
137+
return fixed_purl
138+
139+
@classmethod
140+
def merge(cls, affected_packages: Iterable):
135141
"""
136142
Return a tuple with all attributes of AffectedPackage as a set
137143
for all values in the given iterable of AffectedPackage
@@ -165,8 +171,8 @@ def to_dict(self):
165171
"fixed_version": str(self.fixed_version) if self.fixed_version else None,
166172
}
167173

168-
@staticmethod
169-
def from_dict(affected_pkg: dict):
174+
@classmethod
175+
def from_dict(cls, affected_pkg: dict):
170176
"""
171177
Return an AffectedPackage object from dict generated by self.to_dict
172178
"""
@@ -177,7 +183,7 @@ def from_dict(affected_pkg: dict):
177183
# TODO: revisit after https://github.com/nexB/univers/issues/10
178184
fixed_version = affected_version_range.version_class(fixed_version)
179185

180-
return AffectedPackage(
186+
return cls(
181187
package=package,
182188
affected_version_range=affected_version_range,
183189
fixed_version=fixed_version,

0 commit comments

Comments
 (0)