def vulnerable_version_range(self) -> List[semver.VersionConstraint]: affected_range = self._json["affected_range"] if not affected_range: return [semver.parse_constraint(">=0.0.0")] return [semver.parse_constraint(x) for x in affected_range.split("||")]
def convert_version(spec_str: str) -> str: """ Convert a poetry version spec to a conda-compatible version spec. Poetry accepts tilde and caret version specs, but conda does not support them. This function uses the `poetry-semver` package to parse it and transform it to regular version spec ranges. Parameters ---------- spec_str A poetry version specification string. Returns ------- The same version specification without tilde or caret. """ spec = semver.parse_constraint(spec_str) if isinstance(spec, semver.Version): converted = f"=={str(spec)}" elif isinstance(spec, semver.VersionRange): converted = str(spec) elif isinstance(spec, semver.VersionUnion): raise ValueError( "Complex version constraints are not supported at the moment.") return converted
def parse(constraint_expression: str) -> 'VersionConstraint': """ Parse version constraint. Args: constraint_expression: Expression syntax: "[[op][version]]+". Returns: The resulting VersionConstraint object. """ return semver.parse_constraint(constraint_expression)
def vulnerable_version_range(self) -> List[semver.VersionConstraint]: return [ semver.parse_constraint(x) for x in self._json["affected_range"].split("||") ]
def vulnerable_version_range(self) -> semver.VersionConstraint: return semver.parse_constraint( self._json["node"]["vulnerableVersionRange"])
def test_parse_constraint_caret(input, constraint): assert parse_constraint(input) == constraint
def test_parse_constraint_tilde(input, constraint): assert parse_constraint(input) == constraint
def test_parse_constraint_wildcard(input, constraint): assert parse_constraint(input) == constraint
def test_versions_are_sortable(unsorted, sorted_): unsorted = [parse_constraint(u) for u in unsorted] sorted_ = [parse_constraint(s) for s in sorted_] assert sorted(unsorted) == sorted_
def test_constraints_keep_version_precision(input, expected): assert str(parse_constraint(input)) == expected
def test_parse_constraints_negative_wildcard(input, constraint): assert parse_constraint(input) == constraint
def test_parse_constraint_multi_wilcard(input): assert parse_constraint(input) == VersionUnion( VersionRange(Version(2, 7, 0), Version(3, 0, 0), True, False), VersionRange(Version(3, 2, 0), None, True, False), )
def test_parse_constraint_multi(input): assert parse_constraint(input) == VersionRange(Version(2, 0, 0), Version(3, 0, 0), include_min=False, include_max=True)
def vulnerable_version_range(self) -> List[semver.VersionConstraint]: return [semver.parse_constraint(v) for v in self._json["specs"]]
def __init__(self, name, constraint): # type: (str, str) -> None self.name = name self.constraint = parse_constraint(constraint) self.pretty_constraint = constraint
def __init__(self, package, constraint = None): self.name = package.name self.constraint = parse_constraint(constraint or "*") self.pretty_constraint = constraint