code: def set_conditions(self, variables, constraints):
          
          self._vars, self._constraints = variables, []
          self._constraints_for_var = {}
          vars_constraint_count = {}
          # build constraint objects
          for func, variables, values in constraints:
              c = Constraint(func, variables, values, self._compute_search_spaces(variables))
              self._constraints.append(c)
              for var in variables:
                  self._constraints_for_var[var] = self._constraints_for_var.get(var, []) + [c]
                  vars_constraint_count[var] = vars_constraint_count.get(var, 0) + 1
          # sort into most constraining first
          self._constraints.sort()
  
          self._variable_expand_order = tuple(sorted(self._vars.keys(), key=vars_constraint_count.get, reverse=True))
docs: Problem provided data.
  
          variables = {variable-name: list-of-domain-values}
          constraints = [(constraint_function, variable-names, variable-default-values)]