@@ -1294,8 +1294,8 @@ def build_range_from_snyk_advisory_string(scheme: str, string: Union[str, List])
12941294
12951295 >>> vr = build_range_from_snyk_advisory_string("pypi", ">=4.0.0, <4.0.10")
12961296 >>> assert str(vr) == "vers:pypi/>=4.0.0|<4.0.10"
1297- >>> vr = build_range_from_snyk_advisory_string("composer ", ">=4.1.0 <4.4.15.7 ")
1298- >>> assert str(vr) == "vers:composer />=4.1.0|<4.4.15.7 "
1297+ >>> vr = build_range_from_snyk_advisory_string("golang ", ">=9.6.0-rc1 <9.8.1-rc1 ")
1298+ >>> assert str(vr) == "vers:golang />=9.6.0-rc1|<9.8.1-rc1 "
12991299 >>> vr = build_range_from_snyk_advisory_string("pypi", "(,9.21]")
13001300 >>> assert str(vr) == "vers:pypi/<=9.21"
13011301 """
@@ -1333,6 +1333,35 @@ def build_range_from_snyk_advisory_string(scheme: str, string: Union[str, List])
13331333 return vrc (constraints = version_constraints )
13341334
13351335
1336+ def build_range_from_discrete_version_string (scheme : str , string : Union [str , List ]):
1337+ """
1338+ Return VersionRange computed from discrete versions.
1339+ Discrete version range looks like:
1340+ ["1.5","3.1.2","3.1-beta"]
1341+
1342+ For example::
1343+
1344+ # >>> vr = build_constraints_from_discrete_version_string("pypi", ["1.5","3.1.2","3.1-beta"])
1345+ # >>> assert str(vr) == "vers:pypi/1.5|3.1-beta|3.1.2"
1346+ # >>> vr = build_constraints_from_discrete_version_string("pypi","9.21")
1347+ # >>> assert str(vr) == "vers:pypi/9.21"
1348+ """
1349+ version_constraints = []
1350+ vrc = RANGE_CLASS_BY_SCHEMES [scheme ]
1351+
1352+ if isinstance (string , str ):
1353+ string = [string ]
1354+
1355+ for item in string :
1356+ version = item .strip ().lstrip ("vV" )
1357+ version_constraints .append (
1358+ VersionConstraint (
1359+ version = version ,
1360+ )
1361+ )
1362+ return vrc (constraints = version_constraints )
1363+
1364+
13361365RANGE_CLASS_BY_SCHEMES = {
13371366 "npm" : NpmVersionRange ,
13381367 "deb" : DebianVersionRange ,
0 commit comments