예제 #1
0
파일: gemnasium.py 프로젝트: tbjers/skjold
    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("||")]
예제 #2
0
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
예제 #3
0
    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)
예제 #4
0
 def vulnerable_version_range(self) -> List[semver.VersionConstraint]:
     return [
         semver.parse_constraint(x)
         for x in self._json["affected_range"].split("||")
     ]
예제 #5
0
파일: github.py 프로젝트: brondsem/skjold
 def vulnerable_version_range(self) -> semver.VersionConstraint:
     return semver.parse_constraint(
         self._json["node"]["vulnerableVersionRange"])
예제 #6
0
def test_parse_constraint_caret(input, constraint):
    assert parse_constraint(input) == constraint
예제 #7
0
def test_parse_constraint_tilde(input, constraint):
    assert parse_constraint(input) == constraint
예제 #8
0
def test_parse_constraint_wildcard(input, constraint):
    assert parse_constraint(input) == constraint
예제 #9
0
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_
예제 #10
0
def test_constraints_keep_version_precision(input, expected):
    assert str(parse_constraint(input)) == expected
예제 #11
0
def test_parse_constraints_negative_wildcard(input, constraint):
    assert parse_constraint(input) == constraint
예제 #12
0
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),
    )
예제 #13
0
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)
예제 #14
0
파일: pyup.py 프로젝트: tbjers/skjold
 def vulnerable_version_range(self) -> List[semver.VersionConstraint]:
     return [semver.parse_constraint(v) for v in self._json["specs"]]
예제 #15
0
 def __init__(self, name, constraint):  # type: (str, str) -> None
     self.name = name
     self.constraint = parse_constraint(constraint)
     self.pretty_constraint = constraint
예제 #16
0
 def __init__(self, package, constraint = None):
     self.name               = package.name
     self.constraint         = parse_constraint(constraint or "*")
     self.pretty_constraint  = constraint