reflex 0.5.10a3__py3-none-any.whl → 0.6.0a1__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 (237) hide show
  1. reflex/.templates/jinja/web/pages/utils.js.jinja2 +4 -4
  2. reflex/.templates/jinja/web/utils/context.js.jinja2 +1 -1
  3. reflex/.templates/jinja/web/utils/theme.js.jinja2 +1 -1
  4. reflex/__init__.py +3 -2
  5. reflex/__init__.pyi +2 -2
  6. reflex/app.py +43 -9
  7. reflex/base.py +3 -2
  8. reflex/compiler/compiler.py +6 -6
  9. reflex/compiler/utils.py +5 -3
  10. reflex/components/base/app_wrap.py +2 -4
  11. reflex/components/base/app_wrap.pyi +17 -17
  12. reflex/components/base/bare.py +7 -4
  13. reflex/components/base/body.pyi +17 -17
  14. reflex/components/base/document.pyi +81 -81
  15. reflex/components/base/error_boundary.py +10 -8
  16. reflex/components/base/error_boundary.pyi +20 -19
  17. reflex/components/base/fragment.pyi +17 -17
  18. reflex/components/base/head.pyi +33 -33
  19. reflex/components/base/link.pyi +34 -33
  20. reflex/components/base/meta.pyi +65 -65
  21. reflex/components/base/script.py +2 -1
  22. reflex/components/base/script.pyi +21 -20
  23. reflex/components/component.py +116 -145
  24. reflex/components/core/banner.py +59 -60
  25. reflex/components/core/banner.pyi +86 -150
  26. reflex/components/core/client_side_routing.py +2 -1
  27. reflex/components/core/client_side_routing.pyi +34 -33
  28. reflex/components/core/clipboard.py +2 -2
  29. reflex/components/core/clipboard.pyi +19 -18
  30. reflex/components/core/cond.py +21 -44
  31. reflex/components/core/debounce.py +6 -8
  32. reflex/components/core/debounce.pyi +19 -18
  33. reflex/components/core/foreach.py +5 -14
  34. reflex/components/core/html.pyi +18 -17
  35. reflex/components/core/match.py +36 -43
  36. reflex/components/core/upload.py +32 -25
  37. reflex/components/core/upload.pyi +84 -73
  38. reflex/components/datadisplay/code.py +55 -28
  39. reflex/components/datadisplay/code.pyi +20 -17
  40. reflex/components/datadisplay/dataeditor.py +17 -11
  41. reflex/components/datadisplay/dataeditor.pyi +34 -33
  42. reflex/components/el/__init__.py +0 -1
  43. reflex/components/el/__init__.pyi +0 -11
  44. reflex/components/el/element.pyi +17 -17
  45. reflex/components/el/elements/__init__.py +1 -7
  46. reflex/components/el/elements/__init__.pyi +1 -15
  47. reflex/components/el/elements/base.pyi +18 -17
  48. reflex/components/el/elements/forms.py +24 -31
  49. reflex/components/el/elements/forms.pyi +237 -236
  50. reflex/components/el/elements/inline.pyi +450 -449
  51. reflex/components/el/elements/media.py +0 -21
  52. reflex/components/el/elements/media.pyi +338 -337
  53. reflex/components/el/elements/metadata.py +3 -2
  54. reflex/components/el/elements/metadata.pyi +98 -97
  55. reflex/components/el/elements/other.pyi +114 -113
  56. reflex/components/el/elements/scripts.pyi +50 -49
  57. reflex/components/el/elements/sectioning.pyi +242 -241
  58. reflex/components/el/elements/tables.pyi +162 -161
  59. reflex/components/el/elements/typography.pyi +242 -241
  60. reflex/components/gridjs/datatable.py +13 -14
  61. reflex/components/gridjs/datatable.pyi +34 -33
  62. reflex/components/lucide/icon.py +2 -126
  63. reflex/components/lucide/icon.pyi +34 -142
  64. reflex/components/markdown/markdown.py +30 -35
  65. reflex/components/markdown/markdown.pyi +29 -32
  66. reflex/components/moment/moment.pyi +19 -18
  67. reflex/components/next/base.pyi +17 -17
  68. reflex/components/next/image.py +0 -4
  69. reflex/components/next/image.pyi +20 -19
  70. reflex/components/next/link.pyi +18 -17
  71. reflex/components/next/video.pyi +18 -17
  72. reflex/components/plotly/plotly.py +16 -28
  73. reflex/components/plotly/plotly.pyi +36 -35
  74. reflex/components/props.py +21 -10
  75. reflex/components/radix/__init__.pyi +1 -1
  76. reflex/components/radix/primitives/__init__.pyi +0 -1
  77. reflex/components/radix/primitives/accordion.py +7 -8
  78. reflex/components/radix/primitives/accordion.pyi +117 -116
  79. reflex/components/radix/primitives/base.pyi +34 -33
  80. reflex/components/radix/primitives/drawer.pyi +169 -168
  81. reflex/components/radix/primitives/form.pyi +168 -167
  82. reflex/components/radix/primitives/progress.pyi +82 -81
  83. reflex/components/radix/primitives/slider.pyi +84 -83
  84. reflex/components/radix/themes/base.py +8 -4
  85. reflex/components/radix/themes/base.pyi +114 -113
  86. reflex/components/radix/themes/color_mode.py +12 -21
  87. reflex/components/radix/themes/color_mode.pyi +67 -67
  88. reflex/components/radix/themes/components/__init__.pyi +1 -0
  89. reflex/components/radix/themes/components/alert_dialog.pyi +118 -117
  90. reflex/components/radix/themes/components/aspect_ratio.pyi +18 -17
  91. reflex/components/radix/themes/components/avatar.pyi +18 -17
  92. reflex/components/radix/themes/components/badge.pyi +18 -17
  93. reflex/components/radix/themes/components/button.pyi +18 -17
  94. reflex/components/radix/themes/components/callout.pyi +82 -81
  95. reflex/components/radix/themes/components/card.pyi +18 -17
  96. reflex/components/radix/themes/components/checkbox.py +2 -3
  97. reflex/components/radix/themes/components/checkbox.pyi +53 -52
  98. reflex/components/radix/themes/components/checkbox_cards.pyi +34 -33
  99. reflex/components/radix/themes/components/checkbox_group.pyi +34 -33
  100. reflex/components/radix/themes/components/context_menu.pyi +140 -139
  101. reflex/components/radix/themes/components/data_list.py +5 -0
  102. reflex/components/radix/themes/components/data_list.pyi +71 -65
  103. reflex/components/radix/themes/components/dialog.pyi +121 -120
  104. reflex/components/radix/themes/components/dropdown_menu.pyi +142 -141
  105. reflex/components/radix/themes/components/hover_card.pyi +68 -67
  106. reflex/components/radix/themes/components/icon_button.py +2 -1
  107. reflex/components/radix/themes/components/icon_button.pyi +18 -17
  108. reflex/components/radix/themes/components/inset.pyi +18 -17
  109. reflex/components/radix/themes/components/popover.pyi +73 -72
  110. reflex/components/radix/themes/components/progress.pyi +18 -17
  111. reflex/components/radix/themes/components/radio.pyi +18 -17
  112. reflex/components/radix/themes/components/radio_cards.pyi +35 -34
  113. reflex/components/radix/themes/components/radio_group.py +35 -31
  114. reflex/components/radix/themes/components/radio_group.pyi +73 -66
  115. reflex/components/radix/themes/components/scroll_area.pyi +18 -17
  116. reflex/components/radix/themes/components/segmented_control.pyi +35 -34
  117. reflex/components/radix/themes/components/select.py +2 -1
  118. reflex/components/radix/themes/components/select.pyi +155 -154
  119. reflex/components/radix/themes/components/separator.py +2 -3
  120. reflex/components/radix/themes/components/separator.pyi +18 -17
  121. reflex/components/radix/themes/components/skeleton.pyi +18 -17
  122. reflex/components/radix/themes/components/slider.py +2 -1
  123. reflex/components/radix/themes/components/slider.pyi +20 -19
  124. reflex/components/radix/themes/components/spinner.pyi +18 -17
  125. reflex/components/radix/themes/components/switch.pyi +19 -18
  126. reflex/components/radix/themes/components/table.pyi +114 -113
  127. reflex/components/radix/themes/components/tabs.pyi +84 -83
  128. reflex/components/radix/themes/components/text_area.pyi +21 -20
  129. reflex/components/radix/themes/components/text_field.py +0 -79
  130. reflex/components/radix/themes/components/text_field.pyi +57 -63
  131. reflex/components/radix/themes/components/tooltip.pyi +21 -20
  132. reflex/components/radix/themes/layout/base.pyi +18 -17
  133. reflex/components/radix/themes/layout/box.pyi +18 -17
  134. reflex/components/radix/themes/layout/center.pyi +18 -17
  135. reflex/components/radix/themes/layout/container.py +2 -3
  136. reflex/components/radix/themes/layout/container.pyi +18 -17
  137. reflex/components/radix/themes/layout/flex.pyi +18 -17
  138. reflex/components/radix/themes/layout/grid.pyi +18 -17
  139. reflex/components/radix/themes/layout/list.py +5 -4
  140. reflex/components/radix/themes/layout/list.pyi +86 -85
  141. reflex/components/radix/themes/layout/section.py +2 -3
  142. reflex/components/radix/themes/layout/section.pyi +18 -17
  143. reflex/components/radix/themes/layout/spacer.pyi +18 -17
  144. reflex/components/radix/themes/layout/stack.pyi +50 -49
  145. reflex/components/radix/themes/typography/blockquote.pyi +18 -17
  146. reflex/components/radix/themes/typography/code.pyi +18 -17
  147. reflex/components/radix/themes/typography/heading.pyi +18 -17
  148. reflex/components/radix/themes/typography/link.pyi +18 -17
  149. reflex/components/radix/themes/typography/text.pyi +114 -113
  150. reflex/components/react_player/audio.pyi +34 -33
  151. reflex/components/react_player/react_player.pyi +34 -33
  152. reflex/components/react_player/video.pyi +34 -33
  153. reflex/components/recharts/cartesian.py +23 -19
  154. reflex/components/recharts/cartesian.pyi +297 -296
  155. reflex/components/recharts/charts.py +6 -5
  156. reflex/components/recharts/charts.pyi +179 -178
  157. reflex/components/recharts/general.py +8 -7
  158. reflex/components/recharts/general.pyi +82 -81
  159. reflex/components/recharts/polar.py +14 -13
  160. reflex/components/recharts/polar.pyi +76 -75
  161. reflex/components/recharts/recharts.pyi +33 -33
  162. reflex/components/sonner/toast.py +30 -33
  163. reflex/components/sonner/toast.pyi +27 -25
  164. reflex/components/suneditor/editor.py +2 -1
  165. reflex/components/suneditor/editor.pyi +27 -26
  166. reflex/components/tags/iter_tag.py +16 -16
  167. reflex/components/tags/tag.py +8 -10
  168. reflex/constants/base.py +3 -1
  169. reflex/constants/event.py +1 -0
  170. reflex/event.py +89 -79
  171. reflex/experimental/__init__.py +25 -6
  172. reflex/experimental/client_state.py +34 -58
  173. reflex/experimental/hooks.py +13 -18
  174. reflex/experimental/layout.py +5 -5
  175. reflex/experimental/layout.pyi +84 -83
  176. reflex/{experimental/vars → ivars}/__init__.py +0 -1
  177. reflex/ivars/base.py +2180 -0
  178. reflex/ivars/function.py +200 -0
  179. reflex/ivars/number.py +1137 -0
  180. reflex/ivars/object.py +564 -0
  181. reflex/ivars/sequence.py +1601 -0
  182. reflex/model.py +22 -0
  183. reflex/reflex.py +4 -0
  184. reflex/state.py +388 -73
  185. reflex/style.py +52 -34
  186. reflex/testing.py +8 -3
  187. reflex/utils/exceptions.py +12 -0
  188. reflex/utils/exec.py +0 -14
  189. reflex/utils/format.py +74 -223
  190. reflex/utils/net.py +43 -0
  191. reflex/utils/path_ops.py +13 -1
  192. reflex/utils/prerequisites.py +46 -26
  193. reflex/utils/pyi_generator.py +5 -4
  194. reflex/utils/serializers.py +13 -31
  195. reflex/utils/types.py +44 -9
  196. reflex/vars.py +127 -2230
  197. {reflex-0.5.10a3.dist-info → reflex-0.6.0a1.dist-info}/METADATA +4 -6
  198. reflex-0.6.0a1.dist-info/RECORD +384 -0
  199. reflex/.templates/apps/demo/.gitignore +0 -4
  200. reflex/.templates/apps/demo/assets/favicon.ico +0 -0
  201. reflex/.templates/apps/demo/assets/github.svg +0 -10
  202. reflex/.templates/apps/demo/assets/icon.svg +0 -37
  203. reflex/.templates/apps/demo/assets/logo.svg +0 -68
  204. reflex/.templates/apps/demo/assets/paneleft.svg +0 -13
  205. reflex/.templates/apps/demo/code/__init__.py +0 -1
  206. reflex/.templates/apps/demo/code/demo.py +0 -127
  207. reflex/.templates/apps/demo/code/pages/__init__.py +0 -7
  208. reflex/.templates/apps/demo/code/pages/chatapp.py +0 -31
  209. reflex/.templates/apps/demo/code/pages/datatable.py +0 -360
  210. reflex/.templates/apps/demo/code/pages/forms.py +0 -257
  211. reflex/.templates/apps/demo/code/pages/graphing.py +0 -253
  212. reflex/.templates/apps/demo/code/pages/home.py +0 -56
  213. reflex/.templates/apps/demo/code/sidebar.py +0 -178
  214. reflex/.templates/apps/demo/code/state.py +0 -22
  215. reflex/.templates/apps/demo/code/states/form_state.py +0 -40
  216. reflex/.templates/apps/demo/code/states/pie_state.py +0 -47
  217. reflex/.templates/apps/demo/code/styles.py +0 -68
  218. reflex/.templates/apps/demo/code/webui/__init__.py +0 -0
  219. reflex/.templates/apps/demo/code/webui/components/__init__.py +0 -4
  220. reflex/.templates/apps/demo/code/webui/components/chat.py +0 -118
  221. reflex/.templates/apps/demo/code/webui/components/loading_icon.py +0 -19
  222. reflex/.templates/apps/demo/code/webui/components/modal.py +0 -56
  223. reflex/.templates/apps/demo/code/webui/components/navbar.py +0 -70
  224. reflex/.templates/apps/demo/code/webui/components/sidebar.py +0 -66
  225. reflex/.templates/apps/demo/code/webui/state.py +0 -146
  226. reflex/.templates/apps/demo/code/webui/styles.py +0 -88
  227. reflex/experimental/vars/base.py +0 -583
  228. reflex/experimental/vars/function.py +0 -290
  229. reflex/experimental/vars/number.py +0 -1458
  230. reflex/experimental/vars/object.py +0 -804
  231. reflex/experimental/vars/sequence.py +0 -1764
  232. reflex/utils/watch.py +0 -96
  233. reflex/vars.pyi +0 -218
  234. reflex-0.5.10a3.dist-info/RECORD +0 -413
  235. {reflex-0.5.10a3.dist-info → reflex-0.6.0a1.dist-info}/LICENSE +0 -0
  236. {reflex-0.5.10a3.dist-info → reflex-0.6.0a1.dist-info}/WHEEL +0 -0
  237. {reflex-0.5.10a3.dist-info → reflex-0.6.0a1.dist-info}/entry_points.txt +0 -0
@@ -7,8 +7,9 @@ from typing import Any, Callable, Dict, Optional, Union, overload
7
7
 
8
8
  from reflex.components.component import Component
9
9
  from reflex.event import EventHandler, EventSpec
10
+ from reflex.ivars.base import ImmutableVar
10
11
  from reflex.style import Style
11
- from reflex.vars import BaseVar, Var
12
+ from reflex.vars import Var
12
13
 
13
14
  route_not_found: Var
14
15
 
@@ -25,51 +26,51 @@ class ClientSideRouting(Component):
25
26
  id: Optional[Any] = None,
26
27
  class_name: Optional[Any] = None,
27
28
  autofocus: Optional[bool] = None,
28
- custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
29
+ custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
29
30
  on_blur: Optional[
30
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
31
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
31
32
  ] = None,
32
33
  on_click: Optional[
33
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
34
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
34
35
  ] = None,
35
36
  on_context_menu: Optional[
36
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
37
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
37
38
  ] = None,
38
39
  on_double_click: Optional[
39
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
40
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
40
41
  ] = None,
41
42
  on_focus: Optional[
42
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
43
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
43
44
  ] = None,
44
45
  on_mount: Optional[
45
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
46
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
46
47
  ] = None,
47
48
  on_mouse_down: Optional[
48
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
49
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
49
50
  ] = None,
50
51
  on_mouse_enter: Optional[
51
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
52
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
52
53
  ] = None,
53
54
  on_mouse_leave: Optional[
54
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
55
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
55
56
  ] = None,
56
57
  on_mouse_move: Optional[
57
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
58
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
58
59
  ] = None,
59
60
  on_mouse_out: Optional[
60
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
61
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
61
62
  ] = None,
62
63
  on_mouse_over: Optional[
63
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
64
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
64
65
  ] = None,
65
66
  on_mouse_up: Optional[
66
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
67
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
67
68
  ] = None,
68
69
  on_scroll: Optional[
69
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
70
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
70
71
  ] = None,
71
72
  on_unmount: Optional[
72
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
73
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
73
74
  ] = None,
74
75
  **props,
75
76
  ) -> "ClientSideRouting":
@@ -104,51 +105,51 @@ class Default404Page(Component):
104
105
  id: Optional[Any] = None,
105
106
  class_name: Optional[Any] = None,
106
107
  autofocus: Optional[bool] = None,
107
- custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
108
+ custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
108
109
  on_blur: Optional[
109
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
110
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
110
111
  ] = None,
111
112
  on_click: Optional[
112
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
113
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
113
114
  ] = None,
114
115
  on_context_menu: Optional[
115
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
116
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
116
117
  ] = None,
117
118
  on_double_click: Optional[
118
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
119
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
119
120
  ] = None,
120
121
  on_focus: Optional[
121
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
122
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
122
123
  ] = None,
123
124
  on_mount: Optional[
124
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
125
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
125
126
  ] = None,
126
127
  on_mouse_down: Optional[
127
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
128
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
128
129
  ] = None,
129
130
  on_mouse_enter: Optional[
130
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
131
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
131
132
  ] = None,
132
133
  on_mouse_leave: Optional[
133
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
134
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
134
135
  ] = None,
135
136
  on_mouse_move: Optional[
136
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
137
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
137
138
  ] = None,
138
139
  on_mouse_out: Optional[
139
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
140
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
140
141
  ] = None,
141
142
  on_mouse_over: Optional[
142
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
143
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
143
144
  ] = None,
144
145
  on_mouse_up: Optional[
145
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
146
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
146
147
  ] = None,
147
148
  on_scroll: Optional[
148
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
149
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
149
150
  ] = None,
150
151
  on_unmount: Optional[
151
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
152
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
152
153
  ] = None,
153
154
  **props,
154
155
  ) -> "Default404Page":
@@ -85,8 +85,8 @@ class Clipboard(Fragment):
85
85
  return [
86
86
  "usePasteHandler(%s, %s, %s)"
87
87
  % (
88
- self.targets._var_name_unwrapped,
89
- self.on_paste_event_actions._var_name_unwrapped,
88
+ str(self.targets),
89
+ str(self.on_paste_event_actions),
90
90
  on_paste,
91
91
  )
92
92
  ]
@@ -7,9 +7,10 @@ from typing import Any, Callable, Dict, List, Optional, Union, overload
7
7
 
8
8
  from reflex.components.base.fragment import Fragment
9
9
  from reflex.event import EventHandler, EventSpec
10
+ from reflex.ivars.base import ImmutableVar
10
11
  from reflex.style import Style
11
12
  from reflex.utils.imports import ImportVar
12
- from reflex.vars import BaseVar, Var
13
+ from reflex.vars import Var
13
14
 
14
15
  class Clipboard(Fragment):
15
16
  @overload
@@ -26,54 +27,54 @@ class Clipboard(Fragment):
26
27
  id: Optional[Any] = None,
27
28
  class_name: Optional[Any] = None,
28
29
  autofocus: Optional[bool] = None,
29
- custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
30
+ custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
30
31
  on_blur: Optional[
31
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
32
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
32
33
  ] = None,
33
34
  on_click: Optional[
34
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
35
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
35
36
  ] = None,
36
37
  on_context_menu: Optional[
37
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
38
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
38
39
  ] = None,
39
40
  on_double_click: Optional[
40
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
41
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
41
42
  ] = None,
42
43
  on_focus: Optional[
43
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
44
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
44
45
  ] = None,
45
46
  on_mount: Optional[
46
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
47
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
47
48
  ] = None,
48
49
  on_mouse_down: Optional[
49
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
50
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
50
51
  ] = None,
51
52
  on_mouse_enter: Optional[
52
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
53
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
53
54
  ] = None,
54
55
  on_mouse_leave: Optional[
55
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
56
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
56
57
  ] = None,
57
58
  on_mouse_move: Optional[
58
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
59
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
59
60
  ] = None,
60
61
  on_mouse_out: Optional[
61
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
62
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
62
63
  ] = None,
63
64
  on_mouse_over: Optional[
64
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
65
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
65
66
  ] = None,
66
67
  on_mouse_up: Optional[
67
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
68
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
68
69
  ] = None,
69
70
  on_paste: Optional[
70
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
71
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
71
72
  ] = None,
72
73
  on_scroll: Optional[
73
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
74
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
74
75
  ] = None,
75
76
  on_unmount: Optional[
76
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
77
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
77
78
  ] = None,
78
79
  **props,
79
80
  ) -> "Clipboard":
@@ -2,17 +2,17 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import Any, Dict, Optional, Union, overload
5
+ from typing import Any, Dict, Optional, overload
6
6
 
7
7
  from reflex.components.base.fragment import Fragment
8
8
  from reflex.components.component import BaseComponent, Component, MemoizationLeaf
9
9
  from reflex.components.tags import CondTag, Tag
10
10
  from reflex.constants import Dirs
11
- from reflex.constants.colors import Color
11
+ from reflex.ivars.base import ImmutableVar, LiteralVar
12
+ from reflex.ivars.number import ternary_operation
12
13
  from reflex.style import LIGHT_COLOR_MODE, resolved_color_mode
13
- from reflex.utils import format
14
14
  from reflex.utils.imports import ImportDict, ImportVar
15
- from reflex.vars import BaseVar, Var, VarData
15
+ from reflex.vars import Var, VarData
16
16
 
17
17
  _IS_TRUE_IMPORT: ImportDict = {
18
18
  f"/{Dirs.STATE_PATH}": [ImportVar(tag="isTrue")],
@@ -94,7 +94,7 @@ class Cond(MemoizationLeaf):
94
94
  ).set(
95
95
  props=tag.format_props(),
96
96
  ),
97
- cond_state=f"isTrue({self.cond._var_full_name})",
97
+ cond_state=f"isTrue({str(self.cond)})",
98
98
  )
99
99
 
100
100
  def add_imports(self) -> ImportDict:
@@ -103,10 +103,11 @@ class Cond(MemoizationLeaf):
103
103
  Returns:
104
104
  The import dict for the component.
105
105
  """
106
- cond_imports: dict[str, str | ImportVar | list[str | ImportVar]] = getattr(
107
- self.cond._var_data, "imports", {}
108
- )
109
- return {**cond_imports, **_IS_TRUE_IMPORT}
106
+ var_data = VarData.merge(self.cond._get_all_var_data())
107
+
108
+ imports = var_data.old_school_imports() if var_data else {}
109
+
110
+ return {**imports, **_IS_TRUE_IMPORT}
110
111
 
111
112
 
112
113
  @overload
@@ -118,10 +119,10 @@ def cond(condition: Any, c1: Component) -> Component: ...
118
119
 
119
120
 
120
121
  @overload
121
- def cond(condition: Any, c1: Any, c2: Any) -> BaseVar: ...
122
+ def cond(condition: Any, c1: Any, c2: Any) -> ImmutableVar: ...
122
123
 
123
124
 
124
- def cond(condition: Any, c1: Any, c2: Any = None):
125
+ def cond(condition: Any, c1: Any, c2: Any = None) -> Component | ImmutableVar:
125
126
  """Create a conditional component or Prop.
126
127
 
127
128
  Args:
@@ -135,14 +136,8 @@ def cond(condition: Any, c1: Any, c2: Any = None):
135
136
  Raises:
136
137
  ValueError: If the arguments are invalid.
137
138
  """
138
- var_datas: list[VarData | None] = [
139
- VarData( # type: ignore
140
- imports=_IS_TRUE_IMPORT,
141
- ),
142
- ]
143
-
144
139
  # Convert the condition to a Var.
145
- cond_var = Var.create(condition)
140
+ cond_var = LiteralVar.create(condition)
146
141
  assert cond_var is not None, "The condition must be set."
147
142
 
148
143
  # If the first component is a component, create a Cond component.
@@ -151,8 +146,6 @@ def cond(condition: Any, c1: Any, c2: Any = None):
151
146
  c2, BaseComponent
152
147
  ), "Both arguments must be components."
153
148
  return Cond.create(cond_var, c1, c2)
154
- if isinstance(c1, Var):
155
- var_datas.append(c1._var_data)
156
149
 
157
150
  # Otherwise, create a conditional Var.
158
151
  # Check that the second argument is valid.
@@ -160,37 +153,21 @@ def cond(condition: Any, c1: Any, c2: Any = None):
160
153
  raise ValueError("Both arguments must be props.")
161
154
  if c2 is None:
162
155
  raise ValueError("For conditional vars, the second argument must be set.")
163
- if isinstance(c2, Var):
164
- var_datas.append(c2._var_data)
165
156
 
166
157
  def create_var(cond_part):
167
- return Var.create_safe(
168
- cond_part,
169
- _var_is_string=isinstance(cond_part, (str, Color)),
170
- )
158
+ return LiteralVar.create(cond_part)
171
159
 
172
160
  # convert the truth and false cond parts into vars so the _var_data can be obtained.
173
161
  c1 = create_var(c1)
174
162
  c2 = create_var(c2)
175
- var_datas.extend([c1._var_data, c2._var_data])
176
-
177
- c1_type = c1._var_type if isinstance(c1, Var) else type(c1)
178
- c2_type = c2._var_type if isinstance(c2, Var) else type(c2)
179
-
180
- var_type = c1_type if c1_type == c2_type else Union[c1_type, c2_type]
181
163
 
182
164
  # Create the conditional var.
183
- return cond_var._replace(
184
- _var_name=format.format_cond(
185
- cond=cond_var._var_full_name,
186
- true_value=c1,
187
- false_value=c2,
188
- is_prop=True,
189
- ),
190
- _var_type=var_type,
191
- _var_is_local=False,
192
- _var_full_name_needs_state_prefix=False,
193
- merge_var_data=VarData.merge(*var_datas),
165
+ return ternary_operation(
166
+ cond_var.bool()._replace( # type: ignore
167
+ merge_var_data=VarData(imports=_IS_TRUE_IMPORT),
168
+ ), # type: ignore
169
+ c1,
170
+ c2,
194
171
  )
195
172
 
196
173
 
@@ -205,7 +182,7 @@ def color_mode_cond(light: Any, dark: Any = None) -> Var | Component:
205
182
  The conditional component or prop.
206
183
  """
207
184
  return cond(
208
- resolved_color_mode == Var.create(LIGHT_COLOR_MODE, _var_is_string=True),
185
+ resolved_color_mode == LiteralVar.create(LIGHT_COLOR_MODE),
209
186
  light,
210
187
  dark,
211
188
  )
@@ -7,6 +7,7 @@ from typing import Any, Type, Union
7
7
  from reflex.components.component import Component
8
8
  from reflex.constants import EventTriggers
9
9
  from reflex.event import EventHandler
10
+ from reflex.ivars.base import ImmutableVar
10
11
  from reflex.vars import Var, VarData
11
12
 
12
13
  DEFAULT_DEBOUNCE_TIMEOUT = 300
@@ -106,23 +107,20 @@ class DebounceInput(Component):
106
107
  props[field] = getattr(child, field)
107
108
  child_ref = child.get_ref()
108
109
  if props.get("input_ref") is None and child_ref:
109
- props["input_ref"] = Var.create_safe(
110
- child_ref, _var_is_local=False, _var_is_string=False
111
- )
110
+ props["input_ref"] = ImmutableVar.create_safe(child_ref)
112
111
  props["id"] = child.id
113
112
 
114
113
  # Set the child element to wrap, including any imports/hooks from the child.
115
114
  props.setdefault(
116
115
  "element",
117
- Var.create_safe(
118
- "{%s}" % (child.alias or child.tag),
119
- _var_is_local=False,
120
- _var_is_string=False,
116
+ ImmutableVar(
117
+ _var_name=str(child.alias or child.tag),
118
+ _var_type=Type[Component],
121
119
  _var_data=VarData(
122
120
  imports=child._get_imports(),
123
121
  hooks=child._get_hooks_internal(),
124
122
  ),
125
- ).to(Type[Component]),
123
+ ),
126
124
  )
127
125
 
128
126
  component = super().create(**props)
@@ -7,8 +7,9 @@ from typing import Any, Callable, Dict, Optional, Type, Union, overload
7
7
 
8
8
  from reflex.components.component import Component
9
9
  from reflex.event import EventHandler, EventSpec
10
+ from reflex.ivars.base import ImmutableVar
10
11
  from reflex.style import Style
11
- from reflex.vars import BaseVar, Var
12
+ from reflex.vars import Var
12
13
 
13
14
  DEFAULT_DEBOUNCE_TIMEOUT = 300
14
15
 
@@ -30,54 +31,54 @@ class DebounceInput(Component):
30
31
  id: Optional[Any] = None,
31
32
  class_name: Optional[Any] = None,
32
33
  autofocus: Optional[bool] = None,
33
- custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
34
+ custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
34
35
  on_blur: Optional[
35
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
36
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
36
37
  ] = None,
37
38
  on_change: Optional[
38
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
39
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
39
40
  ] = None,
40
41
  on_click: Optional[
41
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
42
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
42
43
  ] = None,
43
44
  on_context_menu: Optional[
44
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
45
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
45
46
  ] = None,
46
47
  on_double_click: Optional[
47
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
48
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
48
49
  ] = None,
49
50
  on_focus: Optional[
50
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
51
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
51
52
  ] = None,
52
53
  on_mount: Optional[
53
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
54
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
54
55
  ] = None,
55
56
  on_mouse_down: Optional[
56
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
57
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
57
58
  ] = None,
58
59
  on_mouse_enter: Optional[
59
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
60
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
60
61
  ] = None,
61
62
  on_mouse_leave: Optional[
62
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
63
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
63
64
  ] = None,
64
65
  on_mouse_move: Optional[
65
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
66
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
66
67
  ] = None,
67
68
  on_mouse_out: Optional[
68
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
69
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
69
70
  ] = None,
70
71
  on_mouse_over: Optional[
71
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
72
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
72
73
  ] = None,
73
74
  on_mouse_up: Optional[
74
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
75
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
75
76
  ] = None,
76
77
  on_scroll: Optional[
77
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
78
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
78
79
  ] = None,
79
80
  on_unmount: Optional[
80
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
81
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
81
82
  ] = None,
82
83
  **props,
83
84
  ) -> "DebounceInput":
@@ -9,8 +9,8 @@ from reflex.components.base.fragment import Fragment
9
9
  from reflex.components.component import Component
10
10
  from reflex.components.tags import IterTag
11
11
  from reflex.constants import MemoizationMode
12
+ from reflex.ivars.base import ImmutableVar
12
13
  from reflex.state import ComponentState
13
- from reflex.utils import console
14
14
  from reflex.vars import Var
15
15
 
16
16
 
@@ -38,14 +38,12 @@ class Foreach(Component):
38
38
  cls,
39
39
  iterable: Var[Iterable] | Iterable,
40
40
  render_fn: Callable,
41
- **props,
42
41
  ) -> Foreach:
43
42
  """Create a foreach component.
44
43
 
45
44
  Args:
46
45
  iterable: The iterable to create components from.
47
46
  render_fn: A function from the render args to the component.
48
- **props: The attributes to pass to each child component (deprecated).
49
47
 
50
48
  Returns:
51
49
  The foreach component.
@@ -54,17 +52,10 @@ class Foreach(Component):
54
52
  ForeachVarError: If the iterable is of type Any.
55
53
  TypeError: If the render function is a ComponentState.
56
54
  """
57
- if props:
58
- console.deprecate(
59
- feature_name="Passing props to rx.foreach",
60
- reason="it does not have the intended effect and may be confusing",
61
- deprecation_version="0.5.0",
62
- removal_version="0.6.0",
63
- )
64
- iterable = Var.create_safe(iterable, _var_is_string=False)
55
+ iterable = ImmutableVar.create_safe(iterable)
65
56
  if iterable._var_type == Any:
66
57
  raise ForeachVarError(
67
- f"Could not foreach over var `{iterable._var_full_name}` of type Any. "
58
+ f"Could not foreach over var `{str(iterable)}` of type Any. "
68
59
  "(If you are trying to foreach over a state var, add a type annotation to the var). "
69
60
  "See https://reflex.dev/docs/library/dynamic-rendering/foreach/"
70
61
  )
@@ -136,10 +127,10 @@ class Foreach(Component):
136
127
 
137
128
  return dict(
138
129
  tag,
139
- iterable_state=tag.iterable._var_full_name,
130
+ iterable_state=str(tag.iterable),
140
131
  arg_name=tag.arg_var_name,
141
132
  arg_index=tag.get_index_var_arg(),
142
- iterable_type=tag.iterable._var_type.mro()[0].__name__,
133
+ iterable_type=tag.iterable.upcast()._var_type.mro()[0].__name__,
143
134
  )
144
135
 
145
136
 
@@ -7,8 +7,9 @@ from typing import Any, Callable, Dict, Optional, Union, overload
7
7
 
8
8
  from reflex.components.el.elements.typography import Div
9
9
  from reflex.event import EventHandler, EventSpec
10
+ from reflex.ivars.base import ImmutableVar
10
11
  from reflex.style import Style
11
- from reflex.vars import BaseVar, Var
12
+ from reflex.vars import Var
12
13
 
13
14
  class Html(Div):
14
15
  @overload
@@ -48,51 +49,51 @@ class Html(Div):
48
49
  id: Optional[Any] = None,
49
50
  class_name: Optional[Any] = None,
50
51
  autofocus: Optional[bool] = None,
51
- custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
52
+ custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
52
53
  on_blur: Optional[
53
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
54
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
54
55
  ] = None,
55
56
  on_click: Optional[
56
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
57
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
57
58
  ] = None,
58
59
  on_context_menu: Optional[
59
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
60
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
60
61
  ] = None,
61
62
  on_double_click: Optional[
62
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
63
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
63
64
  ] = None,
64
65
  on_focus: Optional[
65
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
66
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
66
67
  ] = None,
67
68
  on_mount: Optional[
68
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
69
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
69
70
  ] = None,
70
71
  on_mouse_down: Optional[
71
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
72
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
72
73
  ] = None,
73
74
  on_mouse_enter: Optional[
74
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
75
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
75
76
  ] = None,
76
77
  on_mouse_leave: Optional[
77
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
78
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
78
79
  ] = None,
79
80
  on_mouse_move: Optional[
80
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
81
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
81
82
  ] = None,
82
83
  on_mouse_out: Optional[
83
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
84
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
84
85
  ] = None,
85
86
  on_mouse_over: Optional[
86
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
87
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
87
88
  ] = None,
88
89
  on_mouse_up: Optional[
89
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
90
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
90
91
  ] = None,
91
92
  on_scroll: Optional[
92
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
93
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
93
94
  ] = None,
94
95
  on_unmount: Optional[
95
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
96
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
96
97
  ] = None,
97
98
  **props,
98
99
  ) -> "Html":