From eff76fc8a3721111ab829a3d87c177fcc6756660 Mon Sep 17 00:00:00 2001
From: Benedikt Bartscher <bb@senbax.de>
Date: Sat, 1 Feb 2025 16:13:32 +0100
Subject: [PATCH] fix: allow replacing of _var_type in ComputedVar (worked in
 previous reflex versions)

---
 reflex/vars/base.py           |  2 --
 tests/units/vars/test_base.py | 16 +++++++++++++++-
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/reflex/vars/base.py b/reflex/vars/base.py
index ec65c3711..8aaf7fc60 100644
--- a/reflex/vars/base.py
+++ b/reflex/vars/base.py
@@ -2088,14 +2088,12 @@ class ComputedVar(Var[RETURN_TYPE]):
     @override
     def _replace(
         self,
-        _var_type: Any = None,
         merge_var_data: VarData | None = None,
         **kwargs: Any,
     ) -> Self:
         """Replace the attributes of the ComputedVar.
 
         Args:
-            _var_type: ignored in ComputedVar.
             merge_var_data: VarData to merge into the existing VarData.
             **kwargs: Var fields to update.
 
diff --git a/tests/units/vars/test_base.py b/tests/units/vars/test_base.py
index e4ae7327a..8f9e99fe4 100644
--- a/tests/units/vars/test_base.py
+++ b/tests/units/vars/test_base.py
@@ -2,7 +2,8 @@ from typing import List, Mapping, Union
 
 import pytest
 
-from reflex.vars.base import figure_out_type
+from reflex.state import State
+from reflex.vars.base import computed_var, figure_out_type
 
 
 class CustomDict(dict[str, str]):
@@ -47,3 +48,16 @@ class ChildGenericDict(GenericDict):
 )
 def test_figure_out_type(value, expected):
     assert figure_out_type(value) == expected
+
+
+def test_computed_var_replace() -> None:
+    class StateTest(State):
+        @computed_var(cache=True)
+        def cv(self) -> int:
+            return 1
+
+    cv = StateTest.cv
+    assert cv._var_type is int
+
+    replaced = cv._replace(_var_type=float)
+    assert replaced._var_type is float