@@ -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