From 84dc0feacb1bd8b5cb3729dc3ace3664344406ba Mon Sep 17 00:00:00 2001 From: Miranda Mundt Date: Mon, 7 Jun 2021 09:48:15 -0600 Subject: [PATCH 1/5] Changing implementation of keys, values, items in IndexedComponent --- pyomo/core/base/indexed_component.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pyomo/core/base/indexed_component.py b/pyomo/core/base/indexed_component.py index f38a968e714..0803e8e7c0b 100644 --- a/pyomo/core/base/indexed_component.py +++ b/pyomo/core/base/indexed_component.py @@ -360,15 +360,17 @@ def iteritems(self): def keys(self): """Return an iterator of the keys in the dictionary""" - return [ x for x in self ] + return iter(self) def values(self): """Return an iterator of the component data objects in the dictionary""" - return [ self[x] for x in self ] + for s in self: + yield self[s] def items(self): """Return an iterator of (index,data) tuples from the dictionary""" - return [ (x, self[x]) for x in self ] + for s in self: + yield s, self[s] def __getitem__(self, index): """ From 09aee8315359421a7d80a2f78740708d6a582fc3 Mon Sep 17 00:00:00 2001 From: Miranda Mundt Date: Mon, 7 Jun 2021 09:55:06 -0600 Subject: [PATCH 2/5] Attempting use of iter option --- pyomo/core/base/indexed_component.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/pyomo/core/base/indexed_component.py b/pyomo/core/base/indexed_component.py index 0803e8e7c0b..7c065d58ed5 100644 --- a/pyomo/core/base/indexed_component.py +++ b/pyomo/core/base/indexed_component.py @@ -360,17 +360,15 @@ def iteritems(self): def keys(self): """Return an iterator of the keys in the dictionary""" - return iter(self) + return iter([ x for x in self ]) def values(self): """Return an iterator of the component data objects in the dictionary""" - for s in self: - yield self[s] + return iter([ self[x] for x in self ]) def items(self): """Return an iterator of (index,data) tuples from the dictionary""" - for s in self: - yield s, self[s] + return iter([ (x, self[x]) for x in self ]) def __getitem__(self, index): """ From 54c5f94688bd310f3397dd7f6e4eff40bff3f59a Mon Sep 17 00:00:00 2001 From: Miranda Mundt Date: Mon, 7 Jun 2021 10:16:53 -0600 Subject: [PATCH 3/5] Converting test generator to list --- pyomo/core/base/indexed_component.py | 8 +++++--- pyomo/core/tests/unit/test_compare.py | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/pyomo/core/base/indexed_component.py b/pyomo/core/base/indexed_component.py index 7c065d58ed5..0803e8e7c0b 100644 --- a/pyomo/core/base/indexed_component.py +++ b/pyomo/core/base/indexed_component.py @@ -360,15 +360,17 @@ def iteritems(self): def keys(self): """Return an iterator of the keys in the dictionary""" - return iter([ x for x in self ]) + return iter(self) def values(self): """Return an iterator of the component data objects in the dictionary""" - return iter([ self[x] for x in self ]) + for s in self: + yield self[s] def items(self): """Return an iterator of (index,data) tuples from the dictionary""" - return iter([ (x, self[x]) for x in self ]) + for s in self: + yield s, self[s] def __getitem__(self, index): """ diff --git a/pyomo/core/tests/unit/test_compare.py b/pyomo/core/tests/unit/test_compare.py index fe90f5f09cb..3477e3050f0 100644 --- a/pyomo/core/tests/unit/test_compare.py +++ b/pyomo/core/tests/unit/test_compare.py @@ -28,7 +28,7 @@ class TestConvertToPrefixNotation(unittest.TestCase): def test_linear_expression(self): m = pe.ConcreteModel() m.x = pe.Var([1, 2, 3, 4]) - e = LinearExpression(constant=3, linear_coefs=m.x.keys(), linear_vars=m.x.values()) + e = LinearExpression(constant=3, linear_coefs=m.x.keys(), linear_vars=[m.x.values()]) expected = [(LinearExpression, 9), 3, 1, 2, 3, 4, m.x[1], m.x[2], m.x[3], m.x[4]] pn = convert_expression_to_prefix_notation(e) self.assertEqual(pn, expected) From 9ae2e03435e17eb438b47f7dfccf536863e4c275 Mon Sep 17 00:00:00 2001 From: Miranda Mundt Date: Mon, 7 Jun 2021 10:22:22 -0600 Subject: [PATCH 4/5] Changing cast --- pyomo/core/tests/unit/test_compare.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyomo/core/tests/unit/test_compare.py b/pyomo/core/tests/unit/test_compare.py index 3477e3050f0..a84749f0538 100644 --- a/pyomo/core/tests/unit/test_compare.py +++ b/pyomo/core/tests/unit/test_compare.py @@ -28,7 +28,7 @@ class TestConvertToPrefixNotation(unittest.TestCase): def test_linear_expression(self): m = pe.ConcreteModel() m.x = pe.Var([1, 2, 3, 4]) - e = LinearExpression(constant=3, linear_coefs=m.x.keys(), linear_vars=[m.x.values()]) + e = LinearExpression(constant=3, linear_coefs=m.x.keys(), linear_vars=list(m.x.values())) expected = [(LinearExpression, 9), 3, 1, 2, 3, 4, m.x[1], m.x[2], m.x[3], m.x[4]] pn = convert_expression_to_prefix_notation(e) self.assertEqual(pn, expected) From e61eed8d5fee42159eaf776ad8f77896679f352e Mon Sep 17 00:00:00 2001 From: Miranda Mundt Date: Tue, 8 Jun 2021 08:38:45 -0600 Subject: [PATCH 5/5] Converting linear_coefs to a list --- pyomo/core/tests/unit/test_compare.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyomo/core/tests/unit/test_compare.py b/pyomo/core/tests/unit/test_compare.py index a84749f0538..20131e4d17d 100644 --- a/pyomo/core/tests/unit/test_compare.py +++ b/pyomo/core/tests/unit/test_compare.py @@ -28,7 +28,7 @@ class TestConvertToPrefixNotation(unittest.TestCase): def test_linear_expression(self): m = pe.ConcreteModel() m.x = pe.Var([1, 2, 3, 4]) - e = LinearExpression(constant=3, linear_coefs=m.x.keys(), linear_vars=list(m.x.values())) + e = LinearExpression(constant=3, linear_coefs=list(m.x.keys()), linear_vars=list(m.x.values())) expected = [(LinearExpression, 9), 3, 1, 2, 3, 4, m.x[1], m.x[2], m.x[3], m.x[4]] pn = convert_expression_to_prefix_notation(e) self.assertEqual(pn, expected)