diff --git a/ilpy/wrapper.pyi b/ilpy/wrapper.pyi index 5aeb8bb..e95b460 100644 --- a/ilpy/wrapper.pyi +++ b/ilpy/wrapper.pyi @@ -45,6 +45,7 @@ class Solution: def resize(self, size: int) -> None: ... def get_value(self) -> float: ... def set_value(self, value: float) -> None: ... + def get_status(self) -> str: ... class Objective: def __init__(self, size: int = 0) -> None: ... @@ -93,4 +94,4 @@ class Solver: def set_optimality_gap(self, gap: float, absolute: bool = False) -> None: ... def set_num_threads(self, num_threads: int) -> None: ... def set_verbose(self, verbose: bool) -> None: ... - def solve(self) -> tuple[Solution, str]: ... + def solve(self) -> Solution: ... diff --git a/ilpy/wrapper.pyx b/ilpy/wrapper.pyx index 0f67b00..d580504 100644 --- a/ilpy/wrapper.pyx +++ b/ilpy/wrapper.pyx @@ -38,9 +38,11 @@ cpdef enum Preference: cdef class Solution: cdef decl.Solution* p + cdef string _status def __cinit__(self, size): self.p = new decl.Solution(size) + self._status = "" def __dealloc__(self): del self.p @@ -67,6 +69,9 @@ cdef class Solution: def set_value(self, value): self.p.setValue(value) + def get_status(self) -> str: + return self._status.decode("UTF-8") + cdef class Objective: cdef decl.Objective* p @@ -209,6 +214,5 @@ cdef class Solver: def solve(self): solution = Solution(self.num_variables) - cdef string message - deref(self.p).solve(solution.p[0], message) - return solution, message + deref(self.p).solve(solution.p[0], solution._status) + return solution diff --git a/tests/test_solvers.py b/tests/test_solvers.py index 40af4d8..b8835cb 100644 --- a/tests/test_solvers.py +++ b/tests/test_solvers.py @@ -56,7 +56,8 @@ def test_simple_solver(preference: ilpy.Preference, as_expression: bool) -> None solver.set_objective(objective) solver.add_constraint(constraint) - solution, _ = solver.solve() + solution = solver.solve() + assert isinstance(solution.get_status(), str) assert solution[5] == 1 @@ -100,7 +101,7 @@ def test_quadratic_solver(preference: ilpy.Preference, as_expression: bool) -> N solver.add_constraint(constraint) - solution, _ = solver.solve() + solution = solver.solve() assert solution[5] == -2 # jan please check