@@ -223,18 +223,30 @@ def from_dict(cls, affected_pkg: dict):
223223 """
224224 package = PackageURL (** affected_pkg ["package" ])
225225 affected_version_range = None
226- if (
227- affected_pkg ["affected_version_range" ]
228- and affected_pkg ["affected_version_range" ] != "None"
229- ):
230- affected_version_range = VersionRange .from_string (
231- affected_pkg ["affected_version_range" ]
232- )
226+ affected_range = affected_pkg ["affected_version_range" ]
227+
228+ # TODO: "None" is a likely bug
229+ if affected_range and affected_range != "None" :
230+ try :
231+ affected_version_range = VersionRange .from_string (affected_range )
232+ except :
233+ tb = traceback .format_exc ()
234+ logger .error (
235+ f"Cannot create AffectedPackage with invalid or unknown range: { affected_pkg !r} with error: { tb !r} "
236+ )
237+ return
238+
233239 fixed_version = affected_pkg ["fixed_version" ]
234240 if fixed_version and affected_version_range :
235241 # TODO: revisit after https://github.com/nexB/univers/issues/10
236242 fixed_version = affected_version_range .version_class (fixed_version )
237243
244+ if not fixed_version and not affected_version_range :
245+ logger .error (
246+ f"Cannot create AffectedPackage without fixed version or affected range: { affected_pkg !r} "
247+ )
248+ return
249+
238250 return cls (
239251 package = package ,
240252 affected_version_range = affected_version_range ,
@@ -295,7 +307,9 @@ def from_dict(cls, advisory_data):
295307 "aliases" : advisory_data ["aliases" ],
296308 "summary" : advisory_data ["summary" ],
297309 "affected_packages" : [
298- AffectedPackage .from_dict (pkg ) for pkg in advisory_data ["affected_packages" ]
310+ AffectedPackage .from_dict (pkg )
311+ for pkg in advisory_data ["affected_packages" ]
312+ if pkg is not None
299313 ],
300314 "references" : [Reference .from_dict (ref ) for ref in advisory_data ["references" ]],
301315 "date_published" : datetime .datetime .fromisoformat (date_published )
0 commit comments