From de3b0a27948e17413385fee86fccd7e918d7c49a Mon Sep 17 00:00:00 2001 From: Edward Burnell Date: Mon, 30 Nov 2020 13:41:54 -0800 Subject: [PATCH] it works --- gpkit/constraints/costed.py | 3 +-- gpkit/constraints/set.py | 11 +++-------- gpkit/nomials/math.py | 4 ---- gpkit/tests/t_nomials.py | 2 +- 4 files changed, 5 insertions(+), 15 deletions(-) diff --git a/gpkit/constraints/costed.py b/gpkit/constraints/costed.py index b6f0cfece..62eed1c08 100644 --- a/gpkit/constraints/costed.py +++ b/gpkit/constraints/costed.py @@ -23,8 +23,7 @@ def __init__(self, cost, constraints, substitutions=None): subs = {k: k.value for k in self.cost.vks if "value" in k.descr} if substitutions: subs.update(substitutions) - ConstraintSet.__init__(self, constraints, subs) - self.vks.update(self.cost.vks) + ConstraintSet.__init__(self, constraints, subs, bonusvks=self.cost.vks) def constrained_varkeys(self): "Return all varkeys in the cost and non-ConstraintSet constraints" diff --git a/gpkit/constraints/set.py b/gpkit/constraints/set.py index 1c7fc6edb..b8a54b288 100644 --- a/gpkit/constraints/set.py +++ b/gpkit/constraints/set.py @@ -65,7 +65,7 @@ class ConstraintSet(list, ReprMixin): unique_varkeys, idxlookup = frozenset(), {} _name_collision_varkeys = None - def __init__(self, constraints, substitutions=None): # pylint: disable=too-many-branches,too-many-statements + def __init__(self, constraints, substitutions=None, *, bonusvks=None): # pylint: disable=too-many-branches,too-many-statements if isinstance(constraints, dict): keys, constraints = sort_constraints_dict(constraints) self.idxlookup = {k: i for i, k in enumerate(keys)} @@ -90,6 +90,8 @@ def __init__(self, constraints, substitutions=None): # pylint: disable=too-many raise badelement(self, i, constraint, " It had not yet been initialized!") self.substitutions.vks = self.vks + if bonusvks: + self.vks.update(bonusvks) if substitutions: self.substitutions.update(substitutions) for key in self.vks: @@ -117,13 +119,6 @@ def _update(self, constraint): self.bounded.update(constraint.bounded) for bound, solutionset in constraint.meq_bounded.items(): self.meq_bounded[bound].update(solutionset) - # if not isinstance(constraint, ConstraintSet): - # if hasattr(constraint, "substitutions"): - # del constraint.substitutions - # del constraint.bounded - # del constraint.vks - # if constraint.meq_bounded: - # del constraint.meq_bounded def __getitem__(self, key): if key in self.idxlookup: diff --git a/gpkit/nomials/math.py b/gpkit/nomials/math.py index 9dde76cd1..b172a5062 100644 --- a/gpkit/nomials/math.py +++ b/gpkit/nomials/math.py @@ -76,10 +76,6 @@ def diff(self, var): ------- Signomial (or Posynomial or Monomial) """ - # varset = self.varkeys[var] - # if len(varset) > 1: - # raise ValueError("multiple variables %s found for key %s" - # % (list(varset), var)) var = var.key if var not in self.vks: diff = NomialMap({EMPTY_HV: 0.0}) diff --git a/gpkit/tests/t_nomials.py b/gpkit/tests/t_nomials.py index ec5540a8b..e6176fb00 100644 --- a/gpkit/tests/t_nomials.py +++ b/gpkit/tests/t_nomials.py @@ -375,7 +375,7 @@ def test_diff(self): self.assertEqual(x.diff(y), 0) self.assertEqual((y**2).diff(y), 2*y) self.assertEqual((x + y**2).diff(y), 2*y) - self.assertEqual((x + y**2).diff("x"), 1) + self.assertEqual((x + y**2).diff(x.key), 1) self.assertEqual((x + x*y**2).diff(y), 2*x*y) # pylint: disable=no-member self.assertEqual((2*y).diff(y), 2) # pylint: disable=no-member # test with units