reset backend vars in state.reset() (#4087)

This commit is contained in:
Khaleel Al-Adhami 2024-10-07 15:04:01 -07:00 committed by GitHub
parent 8663d4f978
commit af83161fed
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 8 additions and 0 deletions

View File

@ -1243,6 +1243,10 @@ class BaseState(Base, ABC, extra=pydantic.Extra.allow):
default = copy.deepcopy(field.default) default = copy.deepcopy(field.default)
setattr(self, prop_name, default) setattr(self, prop_name, default)
# Reset the backend vars.
for prop_name, value in self.backend_vars.items():
setattr(self, prop_name, copy.deepcopy(value))
# Recursively reset the substates. # Recursively reset the substates.
for substate in self.substates.values(): for substate in self.substates.values():
substate.reset() substate.reset()

View File

@ -105,6 +105,7 @@ class TestState(BaseState):
complex: Dict[int, Object] = {1: Object(), 2: Object()} complex: Dict[int, Object] = {1: Object(), 2: Object()}
fig: Figure = Figure() fig: Figure = Figure()
dt: datetime.datetime = datetime.datetime.fromisoformat("1989-11-09T18:53:00+01:00") dt: datetime.datetime = datetime.datetime.fromisoformat("1989-11-09T18:53:00+01:00")
_backend: int = 0
@ComputedVar @ComputedVar
def sum(self) -> float: def sum(self) -> float:
@ -706,6 +707,7 @@ def test_reset(test_state, child_state):
# Set some values. # Set some values.
test_state.num1 = 1 test_state.num1 = 1
test_state.num2 = 2 test_state.num2 = 2
test_state._backend = 3
child_state.value = "test" child_state.value = "test"
# Reset the state. # Reset the state.
@ -714,6 +716,7 @@ def test_reset(test_state, child_state):
# The values should be reset. # The values should be reset.
assert test_state.num1 == 0 assert test_state.num1 == 0
assert test_state.num2 == 3.14 assert test_state.num2 == 3.14
assert test_state._backend == 0
assert child_state.value == "" assert child_state.value == ""
expected_dirty_vars = { expected_dirty_vars = {
@ -729,6 +732,7 @@ def test_reset(test_state, child_state):
"map_key", "map_key",
"mapping", "mapping",
"dt", "dt",
"_backend",
} }
# The dirty vars should be reset. # The dirty vars should be reset.