فهرست منبع

fix: allow replacing of _var_type in ComputedVar (worked in previous reflex versions) (#4730)

benedikt-bartscher 3 ماه پیش
والد
کامیت
73ef17b96d
2فایلهای تغییر یافته به همراه15 افزوده شده و 3 حذف شده
  1. 0 2
      reflex/vars/base.py
  2. 15 1
      tests/units/vars/test_base.py

+ 0 - 2
reflex/vars/base.py

@@ -2122,14 +2122,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.
 

+ 15 - 1
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