From 6cbb381e2650bb2d65b4b2474c7e2cc87e3b17bb Mon Sep 17 00:00:00 2001 From: Talley Lambert Date: Fri, 7 Apr 2023 14:13:08 -0400 Subject: [PATCH] fix: fix typing in wrapper.pyi (#18) --- ilpy/__init__.py | 27 ++++++++++++++++++- ilpy/wrapper.pyi | 70 +++++++++++++++++++++--------------------------- ilpy/wrapper.pyx | 6 ++--- 3 files changed, 60 insertions(+), 43 deletions(-) diff --git a/ilpy/__init__.py b/ilpy/__init__.py index 5083cb4..9d973db 100644 --- a/ilpy/__init__.py +++ b/ilpy/__init__.py @@ -1,3 +1,28 @@ -from .wrapper import * +from .wrapper import * # noqa: F403 __version__ = "0.2.3" +__all__ = [ # noqa: F405 + "Any", + "Binary", + "Constraint", + "Constraint", + "Constraints", + "Continuous", + "Cplex", + "Equal", + "GreaterEqual", + "Gurobi", + "Integer", + "LessEqual", + "Maximize", + "Minimize", + "Objective", + "Preference", + "Relation", + "Scip", + "Sense", + "Solution", + "Solver", + "Solver", + "VariableType", +] diff --git a/ilpy/wrapper.pyi b/ilpy/wrapper.pyi index 8be5017..5aeb8bb 100644 --- a/ilpy/wrapper.pyi +++ b/ilpy/wrapper.pyi @@ -25,14 +25,17 @@ Any = Preference.Any Scip = Preference.Scip Gurobi = Preference.Gurobi Cplex = Preference.Cplex + Continuous = VariableType.Continuous Integer = VariableType.Integer Binary = VariableType.Binary + Minimize = Sense.Minimize Maximize = Sense.Maximize + +LessEqual = Relation.LessEqual Equal = Relation.Equal GreaterEqual = Relation.GreaterEqual -LessEqual = Relation.LessEqual class Solution: def __init__(self, size: int) -> None: ... @@ -43,44 +46,39 @@ class Solution: def get_value(self) -> float: ... def set_value(self, value: float) -> None: ... -class _Constraint: +class Objective: + def __init__(self, size: int = 0) -> None: ... + def set_constant(self, value: float) -> None: ... + def get_constant(self) -> float: ... + def set_coefficient(self, i: int, value: float) -> None: ... + def get_coefficients(self) -> list[float]: ... + def set_quadratic_coefficient(self, i: int, j: int, value: float) -> None: ... + def get_quadratic_coefficients(self) -> dict[tuple[int, int], float]: ... + def set_sense(self, sense: Sense) -> None: ... + def get_sense(self) -> Sense: ... + def resize(self, size: int) -> None: ... + def __len__(self) -> int: ... + +class Constraint: + def __init__(self) -> None: ... def set_coefficient(self, i: int, value: float) -> None: ... def get_coefficients(self) -> dict[int, float]: ... + def set_quadratic_coefficient(self, i: int, j: int, value: float) -> None: ... + def get_quadratic_coefficients(self) -> dict[tuple[int, int], float]: ... def set_relation(self, relation: Relation) -> None: ... - def set_value(self, value: float) -> None: ... def get_relation(self) -> Relation: ... + def set_value(self, value: float) -> None: ... def get_value(self) -> float: ... def is_violated(self, solution: Solution) -> bool: ... -class LinearConstraint(_Constraint): ... - -class QuadraticConstraint(_Constraint): - def set_quadratic_coefficient(self, i: int, j: int, value: float) -> None: ... - -class LinearConstraints: +class Constraints: + def __init__(self) -> None: ... def clear(self) -> None: ... - def add(self, constraint: LinearConstraint) -> None: ... - def add_all(self, constraints: LinearConstraints) -> None: ... + def add(self, constraint: Constraint) -> None: ... + def add_all(self, constraints: Constraints) -> None: ... def __len__(self) -> int: ... -class _Objective: - def __init__(self, size: int = 0) -> None: ... - def __len__(self) -> int: ... - def resize(self, size: int) -> None: ... - def set_sense(self, sense: Sense) -> None: ... - def get_sense(self) -> Sense: ... - def set_coefficient(self, i: int, value: float) -> None: ... - def get_coefficients(self) -> list[float]: ... - def get_constant(self) -> float: ... - def set_constant(self, value: float) -> None: ... - -class LinearObjective(_Objective): ... - -class QuadraticObjective(_Objective): - def set_quadratic_coefficient(self, i: int, j: int, value: float) -> None: ... - def get_quadratic_coefficients(self) -> dict[tuple[int, int], float]: ... - -class _Solver: +class Solver: def __init__( self, num_variables: int, @@ -88,17 +86,11 @@ class _Solver: variable_types: dict[int, VariableType] | None = None, preference: Preference = Preference.Any, ) -> None: ... - def set_constraints(self, constraints: LinearConstraints) -> None: ... + def set_objective(self, objective: Objective) -> None: ... + def set_constraints(self, constraints: Constraints) -> None: ... + def add_constraint(self, constraint: Constraint) -> None: ... def set_timeout(self, timeout: float) -> None: ... def set_optimality_gap(self, gap: float, absolute: bool = False) -> None: ... def set_num_threads(self, num_threads: int) -> None: ... - def solve(self) -> tuple[Solution, str]: ... def set_verbose(self, verbose: bool) -> None: ... - -class LinearSolver(_Solver): - def set_objective(self, objective: LinearObjective) -> None: ... - def add_constraint(self, constraint: LinearConstraint) -> None: ... - -class QuadraticSolver(_Solver): - def set_objective(self, objective: QuadraticObjective) -> None: ... - def add_constraint(self, constraint: QuadraticConstraint) -> None: ... + def solve(self) -> tuple[Solution, str]: ... diff --git a/ilpy/wrapper.pyx b/ilpy/wrapper.pyx index ebd069b..0f67b00 100644 --- a/ilpy/wrapper.pyx +++ b/ilpy/wrapper.pyx @@ -132,12 +132,12 @@ cdef class Constraint: def set_relation(self, relation): self.p.setRelation(relation) - def set_value(self, value): - self.p.setValue(value) - def get_relation(self): return Relation(self.p.getRelation()) + def set_value(self, value): + self.p.setValue(value) + def get_value(self): return self.p.getValue()