Skip to content

Commit

Permalink
Bind VersionPredicate (#3255)
Browse files Browse the repository at this point in the history
  • Loading branch information
AntoinePrv authored Mar 29, 2024
1 parent 25a253b commit 9ad283a
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 1 deletion.
22 changes: 21 additions & 1 deletion libmambapy/src/libmambapy/bindings/specs.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -566,7 +566,27 @@ namespace mambapy
.def("__copy__", &copy<Version>)
.def("__deepcopy__", &deepcopy<Version>, py::arg("memo"));

// Bindings for VersionSpec currently ignores VersionPredicate and flat_bool_expr_tree
py::class_<VersionPredicate>(m, "VersionPredicate")
.def_static("make_free", &VersionPredicate::make_free)
.def_static("make_equal_to", &VersionPredicate::make_equal_to)
.def_static("make_not_equal_to", &VersionPredicate::make_not_equal_to)
.def_static("make_greater", &VersionPredicate::make_greater)
.def_static("make_greater_equal", &VersionPredicate::make_greater_equal)
.def_static("make_less", &VersionPredicate::make_less)
.def_static("make_less_equal", &VersionPredicate::make_less_equal)
.def_static("make_starts_with", &VersionPredicate::make_starts_with)
.def_static("make_not_starts_with", &VersionPredicate::make_not_starts_with)
.def_static("make_compatible_with", &VersionPredicate::make_compatible_with)
.def(py::init())
.def("contains", &VersionPredicate::contains)
.def("str_conda_build", &VersionPredicate::str_conda_build)
.def("__str__", &VersionPredicate::str)
.def(py::self == py::self)
.def(py::self != py::self)
.def("__copy__", &copy<VersionPredicate>)
.def("__deepcopy__", &deepcopy<VersionPredicate>, py::arg("memo"));

// Bindings for VersionSpec currently ignores flat_bool_expr_tree
// which would be tedious to bind, and even more to make extendable through Python

py::class_<VersionSpec>(m, "VersionSpec")
Expand Down
31 changes: 31 additions & 0 deletions libmambapy/tests/test_specs.py
Original file line number Diff line number Diff line change
Expand Up @@ -674,6 +674,37 @@ def test_Version():
assert not v1.compatible_with(older=v2, level=1)


def test_VersionPredicate():
Version = libmambapy.specs.Version
VersionPredicate = libmambapy.specs.VersionPredicate

assert str(VersionPredicate.make_free()) == "=*"
assert str(VersionPredicate.make_equal_to(Version.parse("1"))) == "==1"
assert str(VersionPredicate.make_not_equal_to(Version.parse("1"))) == "!=1"
assert str(VersionPredicate.make_greater(Version.parse("1"))) == ">1"
assert str(VersionPredicate.make_greater_equal(Version.parse("1"))) == ">=1"
assert str(VersionPredicate.make_less(Version.parse("1"))) == "<1"
assert str(VersionPredicate.make_less_equal(Version.parse("1"))) == "<=1"
assert str(VersionPredicate.make_starts_with(Version.parse("1"))) == "=1"
assert str(VersionPredicate.make_not_starts_with(Version.parse("1"))) == "!=1.*"
assert str(VersionPredicate.make_compatible_with(Version.parse("1"), 1)) == "~=1"

pred = VersionPredicate.make_equal_to(Version.parse("1"))

# Contains
assert pred.contains(Version.parse("1"))
assert not pred.contains(Version.parse("2"))

# Equality
assert pred == pred
assert pred != VersionPredicate()

# Copy
other = copy.deepcopy(pred)
assert other == pred
assert other is not pred


def test_VersionSpec():
Version = libmambapy.specs.Version
VersionSpec = libmambapy.specs.VersionSpec
Expand Down

0 comments on commit 9ad283a

Please sign in to comment.