Skip to content

Commit 1b30189

Browse files
authored
Merge pull request #2633 from jsiirola/stale-clone-fix
Fix preservation of stale flags through clone/pickle
2 parents ee88960 + 32272da commit 1b30189

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

pyomo/core/staleflag.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ def stale_mapper(self, encode, value):
2121
if value:
2222
return 0
2323
else:
24-
self.get_flag(0)
24+
return self.get_flag(0)
2525

2626
def _get_flag(self, current_flag):
2727
"""Return the current global stale flag value"""

pyomo/core/tests/unit/test_var.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1598,5 +1598,27 @@ def test_stale(self):
15981598
self.assertFalse(m.x.stale)
15991599
self.assertFalse(m.y.stale)
16001600

1601+
def test_stale_clone(self):
1602+
m = ConcreteModel()
1603+
m.x = Var(initialize=0)
1604+
self.assertFalse(m.x.stale)
1605+
m.y = Var()
1606+
self.assertTrue(m.y.stale)
1607+
m.z = Var(initialize=0)
1608+
self.assertFalse(m.z.stale)
1609+
1610+
i = m.clone()
1611+
self.assertFalse(i.x.stale)
1612+
self.assertTrue(i.y.stale)
1613+
self.assertFalse(i.z.stale)
1614+
1615+
StaleFlagManager.mark_all_as_stale(delayed=True)
1616+
m.z = 5
1617+
i = m.clone()
1618+
self.assertTrue(i.x.stale)
1619+
self.assertTrue(i.y.stale)
1620+
self.assertFalse(i.z.stale)
1621+
1622+
16011623
if __name__ == "__main__":
16021624
unittest.main()

0 commit comments

Comments
 (0)