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)
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.
for substate in self.substates.values():
substate.reset()

View File

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