Skip to content

Commit e7d7c55

Browse files
committed
Add support for version range from discrete versions
Signed-off-by: Keshav Priyadarshi <git@keshav.space>
1 parent 169a6a1 commit e7d7c55

1 file changed

Lines changed: 31 additions & 2 deletions

File tree

src/univers/version_range.py

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
13361365
RANGE_CLASS_BY_SCHEMES = {
13371366
"npm": NpmVersionRange,
13381367
"deb": DebianVersionRange,

0 commit comments

Comments
 (0)