diff --git a/gpkit/keydict.py b/gpkit/keydict.py index 125907fa5..46f40149b 100644 --- a/gpkit/keydict.py +++ b/gpkit/keydict.py @@ -303,7 +303,8 @@ def update(self, *args, **kwargs): arg, = args if isinstance(arg, KeySet): # assume unmapped dict.update(self, arg) - self.keymap.update(arg.keymap) + for key, value in arg.keymap.items(): + self.keymap[key].update(value) self._unmapped_keys.update(arg._unmapped_keys) # pylint: disable=protected-access else: # set-like interface for item in arg: diff --git a/gpkit/tests/t_model.py b/gpkit/tests/t_model.py index 0fafee5d8..d891c6a01 100644 --- a/gpkit/tests/t_model.py +++ b/gpkit/tests/t_model.py @@ -730,7 +730,6 @@ class Sub(Model): "Submodel with mass, for testing" def setup(self): m = Variable("m", "lb", "mass") - return [] class Widget(Model): @@ -739,7 +738,8 @@ def setup(self): m_tot = Variable("m_{tot}", "lb", "total mass") self.subA = Sub() self.subB = Sub() - return [self.subA, self.subB, m_tot >= self.subA["m"] + self.subB["m"]] + return [self.subA, self.subB, + m_tot >= self.subA["m"] + self.subB["m"]] class TestModelNoSolve(unittest.TestCase): @@ -778,8 +778,6 @@ def test_duplicate_submodel_varnames(self): # dig a level deeper, into the keymap self.assertEqual(len(w.varkeys.keymap["m"]), 2) w2 = Widget() - # next line surprisingly fails -- 7 vs 5 - self.assertEqual(len(w.varkeys.keymap), len(w2.varkeys.keymap)) TESTS = [TestModelSolverSpecific, TestModelNoSolve] MULTI_SOLVER_TESTS = [TestGP, TestSP]