dwavebinarycsp icon indicating copy to clipboard operation
dwavebinarycsp copied to clipboard

Disable or warn if variables are given in dict for added constraints

Open JoelPasvolsky opened this issue 7 years ago • 1 comments

I understand that it's nice to have flexibility, and it's a user mistake, but this is a hole I likely will not be the only one to fall into:

import dwavebinarycsp csp = dwavebinarycsp.ConstraintSatisfactionProblem(dwavebinarycsp.BINARY) csp.add_constraint([(0, 0, 0), (0, 1, 0), (1, 0, 0), (1, 1, 1)], {'a', 'b', 'c'}) csp.constraints Out[89]: [Constraint.from_configurations(frozenset([(1, 0, 0), (0, 1, 0), (0, 0, 0), (1, 1, 1)]), ('a', 'c', 'b'), Vartype.BINARY, name='Constraint')]

It's very easy to inadvertently use {} instead of [] or () and how often will someone really want random assignment of variables on a constraint?

JoelPasvolsky avatar May 18 '18 21:05 JoelPasvolsky

What we want is any ordered iterable. So a generator or OrderedDict would both work. We could also just limit it to list/tuple.

Let me think about it

arcondello avatar May 29 '18 16:05 arcondello