From af83161feddf9d7927941cb3088b36da75b60946 Mon Sep 17 00:00:00 2001 From: Khaleel Al-Adhami Date: Mon, 7 Oct 2024 15:04:01 -0700 Subject: [PATCH] reset backend vars in state.reset() (#4087) --- reflex/state.py | 4 ++++ tests/units/test_state.py | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/reflex/state.py b/reflex/state.py index 2040d7228..5d1d51b91 100644 --- a/reflex/state.py +++ b/reflex/state.py @@ -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() diff --git a/tests/units/test_state.py b/tests/units/test_state.py index 38cf65fee..a890c2aa4 100644 --- a/tests/units/test_state.py +++ b/tests/units/test_state.py @@ -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.