Browse Source

slicing a list is not a mutable proxy directly (#5221)

Khaleel Al-Adhami 2 weeks ago
parent
commit
6868b3388f
2 changed files with 6 additions and 0 deletions
  1. 2 0
      reflex/state.py
  2. 4 0
      tests/units/test_state.py

+ 2 - 0
reflex/state.py

@@ -3937,6 +3937,8 @@ class MutableProxy(wrapt.ObjectProxy):
             The item value.
         """
         value = super().__getitem__(key)
+        if isinstance(key, slice) and isinstance(value, list):
+            return [self._wrap_recursive(item) for item in value]
         # Recursively wrap mutable items retrieved through this proxy.
         return self._wrap_recursive(value)
 

+ 4 - 0
tests/units/test_state.py

@@ -1505,6 +1505,10 @@ def test_setattr_of_mutable_types(mutable_state: MutableTestState):
     assert isinstance(array[1], list)
     assert isinstance(array[2], MutableProxy)
     assert isinstance(array[2], dict)
+    assert isinstance(array[:], list)
+    assert not isinstance(array[:], MutableProxy)
+    assert isinstance(array[:][1], MutableProxy)
+    assert isinstance(array[:][1], list)
 
     assert isinstance(hashmap, MutableProxy)
     assert isinstance(hashmap, dict)