3131from packageurl import PackageURL
3232from univers .version_range import RANGE_CLASS_BY_SCHEMES
3333from univers .version_range import VersionRange
34+ from univers .versions import Version
3435
3536from vulnerabilities .importer import AdvisoryData
3637from vulnerabilities .importer import AffectedPackage
@@ -132,15 +133,15 @@ def get_purl(package_slug):
132133
133134
134135def extract_affected_packages (
135- affected_version_range : VersionRange , fixed_versions : List [str ], purl : PackageURL
136+ affected_version_range : VersionRange , fixed_versions : List [str ], purl : PackageURL , version_class : Version
136137) -> Iterable [AffectedPackage ]:
137138 """
138139 Yield a list of AffectedPackage objects
139140 """
140141 for fixed_version in fixed_versions or []:
141142 yield AffectedPackage (
142143 package = purl ,
143- fixed_version = affected_version_range . version_class (fixed_version ),
144+ fixed_version = version_class (fixed_version ),
144145 affected_version_range = affected_version_range ,
145146 )
146147
@@ -163,6 +164,7 @@ def parse_yaml_file(file):
163164 vrc : VersionRange = RANGE_CLASS_BY_SCHEMES [purl .type ]
164165 affected_range = yaml_file .get ("affected_range" )
165166 affected_version_range = None
167+ version_class = vrc .version_class
166168 try :
167169 affected_version_range = vrc .from_native (affected_range ) if affected_range else None
168170 except Exception :
@@ -173,7 +175,7 @@ def parse_yaml_file(file):
173175 affected_version_range = None
174176
175177 affected_packages = list (
176- extract_affected_packages (affected_version_range , fixed_versions , purl )
178+ extract_affected_packages (affected_version_range , fixed_versions , purl , version_class )
177179 )
178180
179181 return AdvisoryData (
0 commit comments