reflex 0.6.0a1__py3-none-any.whl → 0.6.0a2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of reflex might be problematic. Click here for more details.

Files changed (249) hide show
  1. reflex/.templates/jinja/web/pages/_app.js.jinja2 +1 -1
  2. reflex/.templates/jinja/web/pages/utils.js.jinja2 +2 -2
  3. reflex/__init__.py +8 -2
  4. reflex/__init__.pyi +2 -1
  5. reflex/app.py +4 -2
  6. reflex/base.py +1 -1
  7. reflex/compiler/compiler.py +2 -2
  8. reflex/compiler/utils.py +3 -3
  9. reflex/components/base/app_wrap.py +2 -2
  10. reflex/components/base/app_wrap.pyi +17 -27
  11. reflex/components/base/bare.py +4 -5
  12. reflex/components/base/body.pyi +17 -27
  13. reflex/components/base/document.pyi +81 -131
  14. reflex/components/base/error_boundary.py +6 -7
  15. reflex/components/base/error_boundary.pyi +20 -33
  16. reflex/components/base/fragment.pyi +17 -27
  17. reflex/components/base/head.pyi +33 -53
  18. reflex/components/base/link.py +1 -1
  19. reflex/components/base/link.pyi +33 -54
  20. reflex/components/base/meta.pyi +65 -105
  21. reflex/components/base/script.py +1 -2
  22. reflex/components/base/script.pyi +21 -38
  23. reflex/components/component.py +48 -47
  24. reflex/components/core/banner.py +23 -27
  25. reflex/components/core/banner.pyi +134 -171
  26. reflex/components/core/client_side_routing.py +2 -3
  27. reflex/components/core/client_side_routing.pyi +33 -54
  28. reflex/components/core/clipboard.py +2 -1
  29. reflex/components/core/clipboard.pyi +20 -33
  30. reflex/components/core/cond.py +5 -5
  31. reflex/components/core/debounce.py +5 -5
  32. reflex/components/core/debounce.pyi +20 -33
  33. reflex/components/core/foreach.py +3 -4
  34. reflex/components/core/html.py +1 -1
  35. reflex/components/core/html.pyi +35 -46
  36. reflex/components/core/match.py +17 -17
  37. reflex/components/core/upload.py +17 -23
  38. reflex/components/core/upload.pyi +78 -124
  39. reflex/components/datadisplay/code.py +9 -10
  40. reflex/components/datadisplay/code.pyi +302 -412
  41. reflex/components/datadisplay/dataeditor.py +8 -10
  42. reflex/components/datadisplay/dataeditor.pyi +40 -53
  43. reflex/components/el/element.pyi +17 -27
  44. reflex/components/el/elements/base.py +1 -1
  45. reflex/components/el/elements/base.pyi +34 -45
  46. reflex/components/el/elements/forms.py +16 -16
  47. reflex/components/el/elements/forms.pyi +554 -707
  48. reflex/components/el/elements/inline.py +1 -1
  49. reflex/components/el/elements/inline.pyi +937 -1218
  50. reflex/components/el/elements/media.py +1 -1
  51. reflex/components/el/elements/media.pyi +786 -997
  52. reflex/components/el/elements/metadata.py +3 -6
  53. reflex/components/el/elements/metadata.pyi +181 -242
  54. reflex/components/el/elements/other.py +1 -1
  55. reflex/components/el/elements/other.pyi +235 -306
  56. reflex/components/el/elements/scripts.py +1 -1
  57. reflex/components/el/elements/scripts.pyi +109 -140
  58. reflex/components/el/elements/sectioning.py +0 -2
  59. reflex/components/el/elements/sectioning.pyi +496 -647
  60. reflex/components/el/elements/tables.py +1 -1
  61. reflex/components/el/elements/tables.pyi +351 -452
  62. reflex/components/el/elements/typography.py +1 -1
  63. reflex/components/el/elements/typography.pyi +506 -657
  64. reflex/components/gridjs/datatable.py +6 -9
  65. reflex/components/gridjs/datatable.pyi +35 -56
  66. reflex/components/lucide/icon.py +1 -1
  67. reflex/components/lucide/icon.pyi +33 -54
  68. reflex/components/markdown/markdown.py +26 -31
  69. reflex/components/markdown/markdown.pyi +27 -37
  70. reflex/components/moment/moment.py +13 -12
  71. reflex/components/moment/moment.pyi +23 -35
  72. reflex/components/next/base.pyi +17 -27
  73. reflex/components/next/image.py +1 -1
  74. reflex/components/next/image.pyi +22 -37
  75. reflex/components/next/link.py +1 -1
  76. reflex/components/next/link.pyi +17 -28
  77. reflex/components/next/video.py +1 -1
  78. reflex/components/next/video.pyi +17 -28
  79. reflex/components/plotly/plotly.py +12 -13
  80. reflex/components/plotly/plotly.pyi +39 -54
  81. reflex/components/props.py +1 -1
  82. reflex/components/radix/__init__.pyi +1 -0
  83. reflex/components/radix/primitives/__init__.pyi +1 -0
  84. reflex/components/radix/primitives/accordion.py +4 -4
  85. reflex/components/radix/primitives/accordion.pyi +424 -495
  86. reflex/components/radix/primitives/base.py +1 -1
  87. reflex/components/radix/primitives/base.pyi +33 -54
  88. reflex/components/radix/primitives/drawer.py +1 -1
  89. reflex/components/radix/primitives/drawer.pyi +172 -273
  90. reflex/components/radix/primitives/form.py +1 -1
  91. reflex/components/radix/primitives/form.pyi +257 -364
  92. reflex/components/radix/primitives/progress.py +1 -1
  93. reflex/components/radix/primitives/progress.pyi +231 -282
  94. reflex/components/radix/primitives/slider.py +1 -1
  95. reflex/components/radix/primitives/slider.pyi +87 -138
  96. reflex/components/radix/themes/base.py +3 -24
  97. reflex/components/radix/themes/base.pyi +178 -250
  98. reflex/components/radix/themes/color_mode.py +5 -5
  99. reflex/components/radix/themes/color_mode.pyi +187 -220
  100. reflex/components/radix/themes/components/alert_dialog.py +1 -1
  101. reflex/components/radix/themes/components/alert_dialog.pyi +136 -207
  102. reflex/components/radix/themes/components/aspect_ratio.py +1 -1
  103. reflex/components/radix/themes/components/aspect_ratio.pyi +17 -28
  104. reflex/components/radix/themes/components/avatar.py +1 -1
  105. reflex/components/radix/themes/components/avatar.pyi +70 -81
  106. reflex/components/radix/themes/components/badge.py +1 -1
  107. reflex/components/radix/themes/components/badge.pyi +88 -99
  108. reflex/components/radix/themes/components/button.py +1 -1
  109. reflex/components/radix/themes/components/button.pyi +98 -109
  110. reflex/components/radix/themes/components/callout.py +1 -1
  111. reflex/components/radix/themes/components/callout.pyi +322 -373
  112. reflex/components/radix/themes/components/card.py +1 -1
  113. reflex/components/radix/themes/components/card.pyi +38 -49
  114. reflex/components/radix/themes/components/checkbox.py +1 -2
  115. reflex/components/radix/themes/components/checkbox.pyi +208 -245
  116. reflex/components/radix/themes/components/checkbox_cards.py +1 -1
  117. reflex/components/radix/themes/components/checkbox_cards.pyi +94 -115
  118. reflex/components/radix/themes/components/checkbox_group.py +1 -1
  119. reflex/components/radix/themes/components/checkbox_group.pyi +86 -107
  120. reflex/components/radix/themes/components/context_menu.py +1 -1
  121. reflex/components/radix/themes/components/context_menu.pyi +238 -319
  122. reflex/components/radix/themes/components/data_list.py +1 -1
  123. reflex/components/radix/themes/components/data_list.pyi +130 -171
  124. reflex/components/radix/themes/components/dialog.py +1 -1
  125. reflex/components/radix/themes/components/dialog.pyi +139 -210
  126. reflex/components/radix/themes/components/dropdown_menu.py +1 -1
  127. reflex/components/radix/themes/components/dropdown_menu.pyi +249 -332
  128. reflex/components/radix/themes/components/hover_card.py +1 -1
  129. reflex/components/radix/themes/components/hover_card.pyi +90 -131
  130. reflex/components/radix/themes/components/icon_button.py +2 -3
  131. reflex/components/radix/themes/components/icon_button.pyi +98 -109
  132. reflex/components/radix/themes/components/inset.py +1 -1
  133. reflex/components/radix/themes/components/inset.pyi +47 -58
  134. reflex/components/radix/themes/components/popover.py +1 -1
  135. reflex/components/radix/themes/components/popover.pyi +95 -136
  136. reflex/components/radix/themes/components/progress.py +1 -1
  137. reflex/components/radix/themes/components/progress.pyi +71 -82
  138. reflex/components/radix/themes/components/radio.py +1 -1
  139. reflex/components/radix/themes/components/radio.pyi +69 -80
  140. reflex/components/radix/themes/components/radio_cards.py +1 -1
  141. reflex/components/radix/themes/components/radio_cards.pyi +98 -119
  142. reflex/components/radix/themes/components/radio_group.py +8 -11
  143. reflex/components/radix/themes/components/radio_group.pyi +228 -271
  144. reflex/components/radix/themes/components/scroll_area.py +1 -1
  145. reflex/components/radix/themes/components/scroll_area.pyi +21 -32
  146. reflex/components/radix/themes/components/segmented_control.py +1 -1
  147. reflex/components/radix/themes/components/segmented_control.pyi +90 -113
  148. reflex/components/radix/themes/components/select.py +2 -3
  149. reflex/components/radix/themes/components/select.pyi +374 -471
  150. reflex/components/radix/themes/components/separator.py +1 -2
  151. reflex/components/radix/themes/components/separator.pyi +69 -80
  152. reflex/components/radix/themes/components/skeleton.py +1 -1
  153. reflex/components/radix/themes/components/skeleton.pyi +23 -34
  154. reflex/components/radix/themes/components/slider.py +2 -3
  155. reflex/components/radix/themes/components/slider.pyi +75 -88
  156. reflex/components/radix/themes/components/spinner.py +1 -1
  157. reflex/components/radix/themes/components/spinner.pyi +19 -30
  158. reflex/components/radix/themes/components/switch.py +1 -1
  159. reflex/components/radix/themes/components/switch.pyi +71 -84
  160. reflex/components/radix/themes/components/table.py +1 -1
  161. reflex/components/radix/themes/components/table.pyi +261 -332
  162. reflex/components/radix/themes/components/tabs.py +1 -1
  163. reflex/components/radix/themes/components/tabs.pyi +139 -194
  164. reflex/components/radix/themes/components/text_area.py +1 -1
  165. reflex/components/radix/themes/components/text_area.pyi +96 -111
  166. reflex/components/radix/themes/components/text_field.py +1 -1
  167. reflex/components/radix/themes/components/text_field.pyi +247 -286
  168. reflex/components/radix/themes/components/tooltip.py +1 -1
  169. reflex/components/radix/themes/components/tooltip.pyi +26 -37
  170. reflex/components/radix/themes/layout/__init__.pyi +1 -0
  171. reflex/components/radix/themes/layout/base.py +1 -1
  172. reflex/components/radix/themes/layout/base.pyi +56 -67
  173. reflex/components/radix/themes/layout/box.pyi +34 -45
  174. reflex/components/radix/themes/layout/center.pyi +56 -67
  175. reflex/components/radix/themes/layout/container.py +1 -2
  176. reflex/components/radix/themes/layout/container.pyi +36 -47
  177. reflex/components/radix/themes/layout/flex.py +1 -1
  178. reflex/components/radix/themes/layout/flex.pyi +56 -67
  179. reflex/components/radix/themes/layout/grid.py +1 -1
  180. reflex/components/radix/themes/layout/grid.pyi +64 -75
  181. reflex/components/radix/themes/layout/list.py +5 -6
  182. reflex/components/radix/themes/layout/list.pyi +193 -244
  183. reflex/components/radix/themes/layout/section.py +1 -2
  184. reflex/components/radix/themes/layout/section.pyi +36 -47
  185. reflex/components/radix/themes/layout/spacer.pyi +56 -67
  186. reflex/components/radix/themes/layout/stack.py +1 -1
  187. reflex/components/radix/themes/layout/stack.pyi +128 -159
  188. reflex/components/radix/themes/typography/blockquote.py +1 -1
  189. reflex/components/radix/themes/typography/blockquote.pyi +89 -100
  190. reflex/components/radix/themes/typography/code.py +1 -1
  191. reflex/components/radix/themes/typography/code.pyi +90 -101
  192. reflex/components/radix/themes/typography/heading.py +1 -1
  193. reflex/components/radix/themes/typography/heading.pyi +96 -107
  194. reflex/components/radix/themes/typography/link.py +1 -1
  195. reflex/components/radix/themes/typography/link.pyi +102 -113
  196. reflex/components/radix/themes/typography/text.py +1 -1
  197. reflex/components/radix/themes/typography/text.pyi +501 -572
  198. reflex/components/react_player/audio.pyi +33 -60
  199. reflex/components/react_player/react_player.py +1 -1
  200. reflex/components/react_player/react_player.pyi +33 -60
  201. reflex/components/react_player/video.pyi +33 -60
  202. reflex/components/recharts/cartesian.py +2 -3
  203. reflex/components/recharts/cartesian.pyi +678 -861
  204. reflex/components/recharts/charts.py +4 -5
  205. reflex/components/recharts/charts.pyi +252 -357
  206. reflex/components/recharts/general.py +1 -2
  207. reflex/components/recharts/general.pyi +180 -231
  208. reflex/components/recharts/polar.py +4 -5
  209. reflex/components/recharts/polar.pyi +144 -181
  210. reflex/components/recharts/recharts.pyi +33 -53
  211. reflex/components/sonner/toast.py +16 -17
  212. reflex/components/sonner/toast.pyi +36 -47
  213. reflex/components/suneditor/editor.py +2 -3
  214. reflex/components/suneditor/editor.pyi +55 -78
  215. reflex/components/tags/cond_tag.py +6 -4
  216. reflex/components/tags/iter_tag.py +28 -16
  217. reflex/components/tags/match_tag.py +6 -4
  218. reflex/components/tags/tag.py +40 -23
  219. reflex/event.py +113 -65
  220. reflex/experimental/client_state.py +18 -18
  221. reflex/experimental/hooks.py +16 -16
  222. reflex/experimental/layout.py +5 -5
  223. reflex/experimental/layout.pyi +136 -187
  224. reflex/middleware/hydrate_middleware.py +2 -0
  225. reflex/middleware/middleware.py +3 -3
  226. reflex/state.py +148 -82
  227. reflex/style.py +21 -22
  228. reflex/utils/exceptions.py +16 -0
  229. reflex/utils/format.py +22 -34
  230. reflex/utils/imports.py +16 -73
  231. reflex/utils/prerequisites.py +15 -8
  232. reflex/utils/pyi_generator.py +13 -8
  233. reflex/utils/serializers.py +12 -22
  234. reflex/utils/telemetry.py +2 -1
  235. reflex/utils/types.py +10 -5
  236. reflex/{ivars → vars}/__init__.py +6 -2
  237. reflex/{ivars → vars}/base.py +567 -206
  238. reflex/{ivars → vars}/function.py +15 -19
  239. reflex/{ivars → vars}/number.py +16 -18
  240. reflex/{ivars → vars}/object.py +28 -30
  241. reflex/{ivars → vars}/sequence.py +53 -42
  242. {reflex-0.6.0a1.dist-info → reflex-0.6.0a2.dist-info}/METADATA +2 -2
  243. reflex-0.6.0a2.dist-info/RECORD +382 -0
  244. reflex/.templates/web/components/reflex/chakra_color_mode_provider.js +0 -36
  245. reflex/vars.py +0 -501
  246. reflex-0.6.0a1.dist-info/RECORD +0 -384
  247. {reflex-0.6.0a1.dist-info → reflex-0.6.0a2.dist-info}/LICENSE +0 -0
  248. {reflex-0.6.0a1.dist-info → reflex-0.6.0a2.dist-info}/WHEEL +0 -0
  249. {reflex-0.6.0a1.dist-info → reflex-0.6.0a2.dist-info}/entry_points.txt +0 -0
@@ -28,22 +28,19 @@ from reflex import constants
28
28
  from reflex.constants.base import REFLEX_VAR_OPENING_TAG
29
29
  from reflex.utils.exceptions import VarTypeError
30
30
  from reflex.utils.types import GenericType, get_origin
31
- from reflex.vars import (
32
- Var,
33
- VarData,
34
- _global_vars,
35
- get_unique_variable_name,
36
- )
37
31
 
38
32
  from .base import (
39
33
  CachedVarOperation,
40
34
  CustomVarOperationReturn,
41
- ImmutableVar,
42
35
  LiteralNoneVar,
43
36
  LiteralVar,
44
37
  ToOperation,
38
+ Var,
39
+ VarData,
40
+ _global_vars,
45
41
  cached_property_no_lock,
46
42
  figure_out_type,
43
+ get_unique_variable_name,
47
44
  unionize,
48
45
  var_operation,
49
46
  var_operation_return,
@@ -59,7 +56,7 @@ if TYPE_CHECKING:
59
56
  from .object import ObjectVar
60
57
 
61
58
 
62
- class StringVar(ImmutableVar[str]):
59
+ class StringVar(Var[str]):
63
60
  """Base class for immutable string vars."""
64
61
 
65
62
  @overload
@@ -556,19 +553,21 @@ class LiteralStringVar(LiteralVar, StringVar):
556
553
  def create(
557
554
  cls,
558
555
  value: str,
556
+ _var_type: GenericType | None = str,
559
557
  _var_data: VarData | None = None,
560
558
  ) -> StringVar:
561
559
  """Create a var from a string value.
562
560
 
563
561
  Args:
564
562
  value: The value to create the var from.
563
+ _var_type: The type of the var.
565
564
  _var_data: Additional hooks and imports associated with the Var.
566
565
 
567
566
  Returns:
568
567
  The var.
569
568
  """
570
569
  if REFLEX_VAR_OPENING_TAG in value:
571
- strings_and_vals: list[ImmutableVar | str] = []
570
+ strings_and_vals: list[Var | str] = []
572
571
  offset = 0
573
572
 
574
573
  # Find all tags
@@ -585,27 +584,36 @@ class LiteralStringVar(LiteralVar, StringVar):
585
584
  # This is a global immutable var.
586
585
  var = _global_vars[int(serialized_data)]
587
586
  strings_and_vals.append(var)
588
- value = value[(end + len(var._var_name)) :]
587
+ value = value[(end + len(var._js_expr)) :]
589
588
 
590
589
  offset += end - start
591
590
 
592
591
  strings_and_vals.append(value)
593
592
 
594
593
  filtered_strings_and_vals = [
595
- s for s in strings_and_vals if isinstance(s, ImmutableVar) or s
594
+ s for s in strings_and_vals if isinstance(s, Var) or s
596
595
  ]
597
-
598
596
  if len(filtered_strings_and_vals) == 1:
599
- return LiteralVar.create(filtered_strings_and_vals[0]).to(StringVar)
597
+ only_string = filtered_strings_and_vals[0]
598
+ if isinstance(only_string, str):
599
+ return LiteralVar.create(only_string).to(StringVar, _var_type)
600
+ else:
601
+ return only_string.to(StringVar, only_string._var_type)
600
602
 
601
- return ConcatVarOperation.create(
603
+ concat_result = ConcatVarOperation.create(
602
604
  *filtered_strings_and_vals,
603
605
  _var_data=_var_data,
604
606
  )
605
607
 
608
+ return (
609
+ concat_result
610
+ if _var_type is str
611
+ else concat_result.to(StringVar, _var_type)
612
+ )
613
+
606
614
  return LiteralStringVar(
607
- _var_name=json.dumps(value),
608
- _var_type=str,
615
+ _js_expr=json.dumps(value),
616
+ _var_type=_var_type,
609
617
  _var_data=_var_data,
610
618
  _var_value=value,
611
619
  )
@@ -635,7 +643,7 @@ class LiteralStringVar(LiteralVar, StringVar):
635
643
  class ConcatVarOperation(CachedVarOperation, StringVar):
636
644
  """Representing a concatenation of literal string vars."""
637
645
 
638
- _var_value: Tuple[ImmutableVar, ...] = dataclasses.field(default_factory=tuple)
646
+ _var_value: Tuple[Var, ...] = dataclasses.field(default_factory=tuple)
639
647
 
640
648
  @cached_property_no_lock
641
649
  def _cached_var_name(self) -> str:
@@ -644,7 +652,7 @@ class ConcatVarOperation(CachedVarOperation, StringVar):
644
652
  Returns:
645
653
  The name of the var.
646
654
  """
647
- list_of_strs: List[Union[str, ImmutableVar]] = []
655
+ list_of_strs: List[Union[str, Var]] = []
648
656
  last_string = ""
649
657
  for var in self._var_value:
650
658
  if isinstance(var, LiteralStringVar):
@@ -659,9 +667,7 @@ class ConcatVarOperation(CachedVarOperation, StringVar):
659
667
  list_of_strs.append(last_string)
660
668
 
661
669
  list_of_strs_filtered = [
662
- str(LiteralVar.create(s))
663
- for s in list_of_strs
664
- if isinstance(s, ImmutableVar) or s
670
+ str(LiteralVar.create(s)) for s in list_of_strs if isinstance(s, Var) or s
665
671
  ]
666
672
 
667
673
  if len(list_of_strs_filtered) == 1:
@@ -680,7 +686,7 @@ class ConcatVarOperation(CachedVarOperation, StringVar):
680
686
  *[
681
687
  var._get_all_var_data()
682
688
  for var in self._var_value
683
- if isinstance(var, ImmutableVar)
689
+ if isinstance(var, Var)
684
690
  ],
685
691
  self._var_data,
686
692
  )
@@ -701,7 +707,7 @@ class ConcatVarOperation(CachedVarOperation, StringVar):
701
707
  The var.
702
708
  """
703
709
  return cls(
704
- _var_name="",
710
+ _js_expr="",
705
711
  _var_type=str,
706
712
  _var_data=_var_data,
707
713
  _var_value=tuple(map(LiteralVar.create, value)),
@@ -718,7 +724,7 @@ KEY_TYPE = TypeVar("KEY_TYPE")
718
724
  VALUE_TYPE = TypeVar("VALUE_TYPE")
719
725
 
720
726
 
721
- class ArrayVar(ImmutableVar[ARRAY_VAR_TYPE]):
727
+ class ArrayVar(Var[ARRAY_VAR_TYPE]):
722
728
  """Base class for immutable array vars."""
723
729
 
724
730
  @overload
@@ -856,9 +862,9 @@ class ArrayVar(ImmutableVar[ARRAY_VAR_TYPE]):
856
862
  ) -> ObjectVar[Dict[KEY_TYPE, VALUE_TYPE]]: ...
857
863
 
858
864
  @overload
859
- def __getitem__(self, i: int | NumberVar) -> ImmutableVar: ...
865
+ def __getitem__(self, i: int | NumberVar) -> Var: ...
860
866
 
861
- def __getitem__(self, i: Any) -> ArrayVar[ARRAY_VAR_TYPE] | ImmutableVar:
867
+ def __getitem__(self, i: Any) -> ArrayVar[ARRAY_VAR_TYPE] | Var:
862
868
  """Get a slice of the array.
863
869
 
864
870
  Args:
@@ -897,6 +903,15 @@ class ArrayVar(ImmutableVar[ARRAY_VAR_TYPE]):
897
903
  /,
898
904
  ) -> ArrayVar[List[int]]: ...
899
905
 
906
+ @overload
907
+ @classmethod
908
+ def range(
909
+ cls,
910
+ first_endpoint: int | NumberVar,
911
+ second_endpoint: int | NumberVar | None = None,
912
+ step: int | NumberVar | None = None,
913
+ ) -> ArrayVar[List[int]]: ...
914
+
900
915
  @classmethod
901
916
  def range(
902
917
  cls,
@@ -1096,15 +1111,15 @@ class ArrayVar(ImmutableVar[ARRAY_VAR_TYPE]):
1096
1111
  function_var = ArgsFunctionOperation.create(tuple(), return_value)
1097
1112
  else:
1098
1113
  # generic number var
1099
- number_var = ImmutableVar("").to(NumberVar)
1114
+ number_var = Var("").to(NumberVar)
1100
1115
 
1101
1116
  first_arg_type = self[number_var]._var_type
1102
1117
 
1103
1118
  arg_name = get_unique_variable_name()
1104
1119
 
1105
1120
  # get first argument type
1106
- first_arg = ImmutableVar(
1107
- _var_name=arg_name,
1121
+ first_arg = Var(
1122
+ _js_expr=arg_name,
1108
1123
  _var_type=first_arg_type,
1109
1124
  ).guess_type()
1110
1125
 
@@ -1131,9 +1146,9 @@ class LiteralArrayVar(CachedVarOperation, LiteralVar, ArrayVar[ARRAY_VAR_TYPE]):
1131
1146
  """Base class for immutable literal array vars."""
1132
1147
 
1133
1148
  _var_value: Union[
1134
- List[Union[ImmutableVar, Any]],
1135
- Set[Union[ImmutableVar, Any]],
1136
- Tuple[Union[ImmutableVar, Any], ...],
1149
+ List[Union[Var, Any]],
1150
+ Set[Union[Var, Any]],
1151
+ Tuple[Union[Var, Any], ...],
1137
1152
  ] = dataclasses.field(default_factory=list)
1138
1153
 
1139
1154
  @cached_property_no_lock
@@ -1172,7 +1187,7 @@ class LiteralArrayVar(CachedVarOperation, LiteralVar, ArrayVar[ARRAY_VAR_TYPE]):
1172
1187
  Returns:
1173
1188
  The hash of the var.
1174
1189
  """
1175
- return hash((self.__class__.__name__, self._var_name))
1190
+ return hash((self.__class__.__name__, self._js_expr))
1176
1191
 
1177
1192
  def json(self) -> str:
1178
1193
  """Get the JSON representation of the var.
@@ -1205,7 +1220,7 @@ class LiteralArrayVar(CachedVarOperation, LiteralVar, ArrayVar[ARRAY_VAR_TYPE]):
1205
1220
  The var.
1206
1221
  """
1207
1222
  return cls(
1208
- _var_name="",
1223
+ _js_expr="",
1209
1224
  _var_type=figure_out_type(value) if _var_type is None else _var_type,
1210
1225
  _var_data=_var_data,
1211
1226
  _var_value=value,
@@ -1256,18 +1271,14 @@ class ArraySliceOperation(CachedVarOperation, ArrayVar):
1256
1271
  start, end, step = self._start, self._stop, self._step
1257
1272
 
1258
1273
  normalized_start = (
1259
- LiteralVar.create(start)
1260
- if start is not None
1261
- else ImmutableVar.create_safe("undefined")
1274
+ LiteralVar.create(start) if start is not None else Var(_js_expr="undefined")
1262
1275
  )
1263
1276
  normalized_end = (
1264
- LiteralVar.create(end)
1265
- if end is not None
1266
- else ImmutableVar.create_safe("undefined")
1277
+ LiteralVar.create(end) if end is not None else Var(_js_expr="undefined")
1267
1278
  )
1268
1279
  if step is None:
1269
1280
  return f"{str(self._array)}.slice({str(normalized_start)}, {str(normalized_end)})"
1270
- if not isinstance(step, ImmutableVar):
1281
+ if not isinstance(step, Var):
1271
1282
  if step < 0:
1272
1283
  actual_start = end + 1 if end is not None else 0
1273
1284
  actual_end = start + 1 if start is not None else self._array.length()
@@ -1299,7 +1310,7 @@ class ArraySliceOperation(CachedVarOperation, ArrayVar):
1299
1310
  The var.
1300
1311
  """
1301
1312
  return cls(
1302
- _var_name="",
1313
+ _js_expr="",
1303
1314
  _var_type=array._var_type,
1304
1315
  _var_data=_var_data,
1305
1316
  _array=array,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: reflex
3
- Version: 0.6.0a1
3
+ Version: 0.6.0a2
4
4
  Summary: Web apps in pure Python.
5
5
  Home-page: https://reflex.dev
6
6
  License: Apache-2.0
@@ -34,7 +34,7 @@ Requires-Dist: python-engineio (!=4.6.0)
34
34
  Requires-Dist: python-multipart (>=0.0.5,<0.1)
35
35
  Requires-Dist: python-socketio (>=5.7.0,<6.0)
36
36
  Requires-Dist: redis (>=4.3.5,<6.0)
37
- Requires-Dist: reflex-chakra (>=0.6.0a)
37
+ Requires-Dist: reflex-chakra (>=0.6.0a6)
38
38
  Requires-Dist: reflex-hosting-cli (>=0.1.2,<2.0)
39
39
  Requires-Dist: rich (>=13.0.0,<14.0)
40
40
  Requires-Dist: setuptools (>=69.1.1,<70.2)