diff --git a/src/constraint_solver/python/constraint_solver.swig b/src/constraint_solver/python/constraint_solver.swig index 90d53b33dd..80ec1a91a0 100644 --- a/src/constraint_solver/python/constraint_solver.swig +++ b/src/constraint_solver/python/constraint_solver.swig @@ -491,6 +491,10 @@ PY_STRINGIFY_DEBUGSTRING(Decision); Constraint* Member(const std::vector& values) { return $self->solver()->MakeMemberCt($self->Var(), values); } + Constraint* NotMember(const std::vector& starts, + const std::vector& ends) { + return $self->solver()->MakeNotMemberCt($self, starts, ends); + } } // Add arithmetic operators to integer expressions. @@ -2240,3 +2244,4 @@ class PyConstraint(Constraint): } // %pythoncode + diff --git a/src/util/python/vector.swig b/src/util/python/vector.swig index 19bceb4296..07d497ffad 100644 --- a/src/util/python/vector.swig +++ b/src/util/python/vector.swig @@ -31,7 +31,9 @@ namespace operations_research { // defined in base/swig/python-swig.cc seems to cause issues, so we can't // use a generic, templated type checker. %define PY_LIST_OUTPUT_TYPEMAP(type, checker, py_converter) -%typecheck(SWIG_TYPECHECK_POINTER) const std::vector& { +%typecheck(SWIG_TYPECHECK_POINTER) const std::vector&, + std::vector, + const std::vector* { if (!PyTuple_Check($input) && !PyList_Check($input)) { $1 = 0; } else {