Uh oh!
There was an error while loading. Please reload this page.
Change addConsLocal(), addConsNode() to accept ExprCons - #1151
Conversation
There was a problem hiding this comment.
Pull request overview
This PR changes addConsNode() and addConsLocal() to accept ExprCons instead of Constraint, aligning their API with addCons() and addressing issues from previous PRs (#391, #580, #605). The functions now also return the created Constraint object for user reference.
Changes:
- Modified
addConsNode()andaddConsLocal()to acceptExprConsexpressions instead ofConstraintobjects - Added return values to both functions, returning the created
Constraintobject - Added comprehensive test coverage in a new test file
test_addconsnode.py
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
| src/pyscipopt/scip.pxi | Refactored addConsNode() and addConsLocal() to accept ExprCons, follow the addCons pattern for constraint creation, and return Constraint objects |
| tests/test_addconsnode.py | Added new comprehensive tests for both addConsNode and addConsLocal with custom branching rules |
| CHANGELOG.md | Documented the breaking change in the Changed section |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
mmghannam
commented
Jan 28, 2026
So my thoughts are: this is great! I don't even know how it can be used if the input is a |
Uh oh!
There was an error while loading. Please reload this page.
There were a bunch of issues and PRs related to
addConsNode()not behaving as expected (#391, #580, #605), and the current implementation forces users to use an event handler whenever they want to implement a slightly more complicated branching decision. In this event handler, they then useaddConsLocal()This is a breaking change, but I feel like it should be done.
A middle ground would be to accept both
ExprConsandConstraint, but it doesn't feel very elegant.addCons()doesn't do this. Any thoughts, @mmghannam ?