reflex 0.5.10a3__py3-none-any.whl → 0.6.0__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 (303) hide show
  1. reflex/.templates/jinja/custom_components/pyproject.toml.jinja2 +2 -2
  2. reflex/.templates/jinja/web/pages/_app.js.jinja2 +1 -1
  3. reflex/.templates/jinja/web/pages/utils.js.jinja2 +4 -4
  4. reflex/.templates/jinja/web/utils/context.js.jinja2 +1 -1
  5. reflex/.templates/jinja/web/utils/theme.js.jinja2 +1 -1
  6. reflex/.templates/web/utils/state.js +3 -1
  7. reflex/__init__.py +10 -3
  8. reflex/__init__.pyi +3 -2
  9. reflex/app.py +47 -11
  10. reflex/app_module_for_backend.py +1 -1
  11. reflex/base.py +3 -2
  12. reflex/compiler/compiler.py +5 -5
  13. reflex/compiler/utils.py +5 -3
  14. reflex/components/base/app_wrap.py +2 -4
  15. reflex/components/base/app_wrap.pyi +16 -26
  16. reflex/components/base/bare.py +6 -4
  17. reflex/components/base/body.pyi +16 -26
  18. reflex/components/base/document.pyi +76 -126
  19. reflex/components/base/error_boundary.py +9 -8
  20. reflex/components/base/error_boundary.pyi +18 -30
  21. reflex/components/base/fragment.pyi +16 -26
  22. reflex/components/base/head.pyi +31 -51
  23. reflex/components/base/link.py +1 -1
  24. reflex/components/base/link.pyi +31 -51
  25. reflex/components/base/meta.pyi +61 -101
  26. reflex/components/base/script.py +2 -2
  27. reflex/components/base/script.pyi +20 -36
  28. reflex/components/component.py +107 -130
  29. reflex/components/core/banner.py +61 -66
  30. reflex/components/core/banner.pyi +129 -230
  31. reflex/components/core/client_side_routing.py +2 -2
  32. reflex/components/core/client_side_routing.pyi +31 -51
  33. reflex/components/core/clipboard.py +4 -3
  34. reflex/components/core/clipboard.pyi +19 -31
  35. reflex/components/core/cond.py +21 -44
  36. reflex/components/core/debounce.py +7 -9
  37. reflex/components/core/debounce.pyi +19 -31
  38. reflex/components/core/foreach.py +4 -14
  39. reflex/components/core/html.py +1 -1
  40. reflex/components/core/html.pyi +34 -44
  41. reflex/components/core/match.py +36 -43
  42. reflex/components/core/upload.py +27 -26
  43. reflex/components/core/upload.pyi +81 -116
  44. reflex/components/datadisplay/code.py +55 -29
  45. reflex/components/datadisplay/code.pyi +303 -410
  46. reflex/components/datadisplay/dataeditor.py +13 -9
  47. reflex/components/datadisplay/dataeditor.pyi +39 -51
  48. reflex/components/el/__init__.py +0 -1
  49. reflex/components/el/__init__.pyi +0 -11
  50. reflex/components/el/element.pyi +16 -26
  51. reflex/components/el/elements/__init__.py +1 -7
  52. reflex/components/el/elements/__init__.pyi +1 -15
  53. reflex/components/el/elements/base.py +1 -1
  54. reflex/components/el/elements/base.pyi +33 -43
  55. reflex/components/el/elements/forms.py +26 -33
  56. reflex/components/el/elements/forms.pyi +542 -694
  57. reflex/components/el/elements/inline.py +1 -1
  58. reflex/components/el/elements/inline.pyi +909 -1189
  59. reflex/components/el/elements/media.py +1 -22
  60. reflex/components/el/elements/media.pyi +765 -975
  61. reflex/components/el/elements/metadata.py +3 -5
  62. reflex/components/el/elements/metadata.pyi +175 -235
  63. reflex/components/el/elements/other.py +1 -1
  64. reflex/components/el/elements/other.pyi +228 -298
  65. reflex/components/el/elements/scripts.py +1 -1
  66. reflex/components/el/elements/scripts.pyi +106 -136
  67. reflex/components/el/elements/sectioning.py +0 -2
  68. reflex/components/el/elements/sectioning.pyi +481 -631
  69. reflex/components/el/elements/tables.py +1 -1
  70. reflex/components/el/elements/tables.pyi +341 -441
  71. reflex/components/el/elements/typography.py +1 -1
  72. reflex/components/el/elements/typography.pyi +491 -641
  73. reflex/components/gridjs/datatable.py +9 -13
  74. reflex/components/gridjs/datatable.pyi +33 -53
  75. reflex/components/lucide/icon.py +3 -127
  76. reflex/components/lucide/icon.pyi +31 -160
  77. reflex/components/markdown/markdown.py +32 -42
  78. reflex/components/markdown/markdown.pyi +28 -41
  79. reflex/components/moment/moment.py +13 -12
  80. reflex/components/moment/moment.pyi +22 -33
  81. reflex/components/next/base.pyi +16 -26
  82. reflex/components/next/image.py +1 -5
  83. reflex/components/next/image.pyi +21 -35
  84. reflex/components/next/link.py +1 -1
  85. reflex/components/next/link.pyi +16 -26
  86. reflex/components/next/video.py +1 -1
  87. reflex/components/next/video.pyi +16 -26
  88. reflex/components/plotly/plotly.py +17 -30
  89. reflex/components/plotly/plotly.pyi +38 -52
  90. reflex/components/props.py +21 -10
  91. reflex/components/radix/__init__.pyi +2 -1
  92. reflex/components/radix/primitives/accordion.py +6 -7
  93. reflex/components/radix/primitives/accordion.pyi +415 -485
  94. reflex/components/radix/primitives/base.py +1 -1
  95. reflex/components/radix/primitives/base.pyi +31 -51
  96. reflex/components/radix/primitives/drawer.py +1 -1
  97. reflex/components/radix/primitives/drawer.pyi +162 -262
  98. reflex/components/radix/primitives/form.py +1 -1
  99. reflex/components/radix/primitives/form.pyi +247 -353
  100. reflex/components/radix/primitives/progress.py +1 -1
  101. reflex/components/radix/primitives/progress.pyi +226 -276
  102. reflex/components/radix/primitives/slider.py +1 -1
  103. reflex/components/radix/primitives/slider.pyi +82 -132
  104. reflex/components/radix/themes/base.py +8 -25
  105. reflex/components/radix/themes/base.pyi +171 -242
  106. reflex/components/radix/themes/color_mode.py +11 -20
  107. reflex/components/radix/themes/color_mode.pyi +198 -231
  108. reflex/components/radix/themes/components/__init__.pyi +1 -0
  109. reflex/components/radix/themes/components/alert_dialog.py +1 -1
  110. reflex/components/radix/themes/components/alert_dialog.pyi +129 -199
  111. reflex/components/radix/themes/components/aspect_ratio.py +1 -1
  112. reflex/components/radix/themes/components/aspect_ratio.pyi +16 -26
  113. reflex/components/radix/themes/components/avatar.py +1 -1
  114. reflex/components/radix/themes/components/avatar.pyi +69 -79
  115. reflex/components/radix/themes/components/badge.py +1 -1
  116. reflex/components/radix/themes/components/badge.pyi +87 -97
  117. reflex/components/radix/themes/components/button.py +1 -1
  118. reflex/components/radix/themes/components/button.pyi +97 -107
  119. reflex/components/radix/themes/components/callout.py +1 -1
  120. reflex/components/radix/themes/components/callout.pyi +317 -367
  121. reflex/components/radix/themes/components/card.py +1 -1
  122. reflex/components/radix/themes/components/card.pyi +37 -47
  123. reflex/components/radix/themes/components/checkbox.py +2 -4
  124. reflex/components/radix/themes/components/checkbox.pyi +205 -241
  125. reflex/components/radix/themes/components/checkbox_cards.py +1 -1
  126. reflex/components/radix/themes/components/checkbox_cards.pyi +92 -112
  127. reflex/components/radix/themes/components/checkbox_group.py +1 -1
  128. reflex/components/radix/themes/components/checkbox_group.pyi +84 -104
  129. reflex/components/radix/themes/components/context_menu.py +1 -1
  130. reflex/components/radix/themes/components/context_menu.pyi +230 -310
  131. reflex/components/radix/themes/components/data_list.py +6 -1
  132. reflex/components/radix/themes/components/data_list.pyi +131 -166
  133. reflex/components/radix/themes/components/dialog.py +1 -1
  134. reflex/components/radix/themes/components/dialog.pyi +132 -202
  135. reflex/components/radix/themes/components/dropdown_menu.py +1 -1
  136. reflex/components/radix/themes/components/dropdown_menu.pyi +241 -323
  137. reflex/components/radix/themes/components/hover_card.py +1 -1
  138. reflex/components/radix/themes/components/hover_card.pyi +86 -126
  139. reflex/components/radix/themes/components/icon_button.py +1 -1
  140. reflex/components/radix/themes/components/icon_button.pyi +97 -107
  141. reflex/components/radix/themes/components/inset.py +1 -1
  142. reflex/components/radix/themes/components/inset.pyi +46 -56
  143. reflex/components/radix/themes/components/popover.py +1 -1
  144. reflex/components/radix/themes/components/popover.pyi +91 -131
  145. reflex/components/radix/themes/components/progress.py +1 -1
  146. reflex/components/radix/themes/components/progress.pyi +70 -80
  147. reflex/components/radix/themes/components/radio.py +1 -1
  148. reflex/components/radix/themes/components/radio.pyi +68 -78
  149. reflex/components/radix/themes/components/radio_cards.py +1 -1
  150. reflex/components/radix/themes/components/radio_cards.pyi +96 -116
  151. reflex/components/radix/themes/components/radio_group.py +32 -31
  152. reflex/components/radix/themes/components/radio_group.pyi +230 -266
  153. reflex/components/radix/themes/components/scroll_area.py +1 -1
  154. reflex/components/radix/themes/components/scroll_area.pyi +20 -30
  155. reflex/components/radix/themes/components/segmented_control.py +1 -1
  156. reflex/components/radix/themes/components/segmented_control.pyi +88 -110
  157. reflex/components/radix/themes/components/select.py +1 -1
  158. reflex/components/radix/themes/components/select.pyi +365 -461
  159. reflex/components/radix/themes/components/separator.py +2 -4
  160. reflex/components/radix/themes/components/separator.pyi +68 -78
  161. reflex/components/radix/themes/components/skeleton.py +1 -1
  162. reflex/components/radix/themes/components/skeleton.pyi +22 -32
  163. reflex/components/radix/themes/components/slider.py +1 -1
  164. reflex/components/radix/themes/components/slider.pyi +74 -86
  165. reflex/components/radix/themes/components/spinner.py +1 -1
  166. reflex/components/radix/themes/components/spinner.pyi +18 -28
  167. reflex/components/radix/themes/components/switch.py +1 -1
  168. reflex/components/radix/themes/components/switch.pyi +70 -82
  169. reflex/components/radix/themes/components/table.py +1 -1
  170. reflex/components/radix/themes/components/table.pyi +254 -324
  171. reflex/components/radix/themes/components/tabs.py +1 -1
  172. reflex/components/radix/themes/components/tabs.pyi +134 -188
  173. reflex/components/radix/themes/components/text_area.py +1 -1
  174. reflex/components/radix/themes/components/text_area.pyi +95 -109
  175. reflex/components/radix/themes/components/text_field.py +1 -80
  176. reflex/components/radix/themes/components/text_field.pyi +245 -290
  177. reflex/components/radix/themes/components/tooltip.py +1 -1
  178. reflex/components/radix/themes/components/tooltip.pyi +25 -35
  179. reflex/components/radix/themes/layout/__init__.pyi +1 -0
  180. reflex/components/radix/themes/layout/base.py +1 -1
  181. reflex/components/radix/themes/layout/base.pyi +55 -65
  182. reflex/components/radix/themes/layout/box.pyi +33 -43
  183. reflex/components/radix/themes/layout/center.pyi +55 -65
  184. reflex/components/radix/themes/layout/container.py +2 -4
  185. reflex/components/radix/themes/layout/container.pyi +35 -45
  186. reflex/components/radix/themes/layout/flex.py +1 -1
  187. reflex/components/radix/themes/layout/flex.pyi +55 -65
  188. reflex/components/radix/themes/layout/grid.py +1 -1
  189. reflex/components/radix/themes/layout/grid.pyi +63 -73
  190. reflex/components/radix/themes/layout/list.py +1 -1
  191. reflex/components/radix/themes/layout/list.pyi +188 -238
  192. reflex/components/radix/themes/layout/section.py +2 -4
  193. reflex/components/radix/themes/layout/section.pyi +35 -45
  194. reflex/components/radix/themes/layout/spacer.pyi +55 -65
  195. reflex/components/radix/themes/layout/stack.py +1 -1
  196. reflex/components/radix/themes/layout/stack.pyi +125 -155
  197. reflex/components/radix/themes/typography/blockquote.py +1 -1
  198. reflex/components/radix/themes/typography/blockquote.pyi +88 -98
  199. reflex/components/radix/themes/typography/code.py +1 -1
  200. reflex/components/radix/themes/typography/code.pyi +89 -99
  201. reflex/components/radix/themes/typography/heading.py +1 -1
  202. reflex/components/radix/themes/typography/heading.pyi +95 -105
  203. reflex/components/radix/themes/typography/link.py +1 -1
  204. reflex/components/radix/themes/typography/link.pyi +101 -111
  205. reflex/components/radix/themes/typography/text.py +1 -1
  206. reflex/components/radix/themes/typography/text.pyi +494 -564
  207. reflex/components/react_player/audio.pyi +32 -58
  208. reflex/components/react_player/react_player.py +1 -1
  209. reflex/components/react_player/react_player.pyi +32 -58
  210. reflex/components/react_player/video.pyi +32 -58
  211. reflex/components/recharts/cartesian.py +22 -19
  212. reflex/components/recharts/cartesian.pyi +658 -840
  213. reflex/components/recharts/charts.py +3 -3
  214. reflex/components/recharts/charts.pyi +238 -342
  215. reflex/components/recharts/general.py +8 -8
  216. reflex/components/recharts/general.pyi +175 -225
  217. reflex/components/recharts/polar.py +11 -11
  218. reflex/components/recharts/polar.pyi +135 -171
  219. reflex/components/recharts/recharts.pyi +31 -51
  220. reflex/components/sonner/toast.py +27 -31
  221. reflex/components/sonner/toast.pyi +36 -45
  222. reflex/components/suneditor/editor.py +1 -1
  223. reflex/components/suneditor/editor.pyi +54 -76
  224. reflex/components/tags/cond_tag.py +6 -4
  225. reflex/components/tags/iter_tag.py +37 -25
  226. reflex/components/tags/match_tag.py +6 -4
  227. reflex/components/tags/tag.py +43 -28
  228. reflex/constants/base.py +3 -1
  229. reflex/constants/event.py +1 -0
  230. reflex/custom_components/custom_components.py +3 -1
  231. reflex/event.py +166 -108
  232. reflex/experimental/__init__.py +25 -6
  233. reflex/experimental/client_state.py +34 -57
  234. reflex/experimental/hooks.py +12 -17
  235. reflex/experimental/layout.py +4 -4
  236. reflex/experimental/layout.pyi +130 -180
  237. reflex/middleware/hydrate_middleware.py +2 -0
  238. reflex/middleware/middleware.py +3 -3
  239. reflex/model.py +22 -0
  240. reflex/reflex.py +4 -0
  241. reflex/state.py +491 -110
  242. reflex/style.py +56 -39
  243. reflex/testing.py +8 -3
  244. reflex/utils/exceptions.py +32 -0
  245. reflex/utils/exec.py +0 -14
  246. reflex/utils/format.py +80 -209
  247. reflex/utils/imports.py +16 -73
  248. reflex/utils/net.py +43 -0
  249. reflex/utils/path_ops.py +13 -1
  250. reflex/utils/prerequisites.py +81 -41
  251. reflex/utils/pyi_generator.py +12 -6
  252. reflex/utils/serializers.py +13 -41
  253. reflex/utils/telemetry.py +3 -2
  254. reflex/utils/types.py +47 -7
  255. reflex/{experimental/vars → vars}/__init__.py +6 -3
  256. reflex/vars/base.py +2563 -0
  257. reflex/vars/function.py +196 -0
  258. reflex/vars/number.py +1158 -0
  259. reflex/vars/object.py +562 -0
  260. reflex/vars/sequence.py +1604 -0
  261. {reflex-0.5.10a3.dist-info → reflex-0.6.0.dist-info}/METADATA +6 -9
  262. reflex-0.6.0.dist-info/RECORD +382 -0
  263. reflex/.templates/apps/demo/.gitignore +0 -4
  264. reflex/.templates/apps/demo/assets/favicon.ico +0 -0
  265. reflex/.templates/apps/demo/assets/github.svg +0 -10
  266. reflex/.templates/apps/demo/assets/icon.svg +0 -37
  267. reflex/.templates/apps/demo/assets/logo.svg +0 -68
  268. reflex/.templates/apps/demo/assets/paneleft.svg +0 -13
  269. reflex/.templates/apps/demo/code/__init__.py +0 -1
  270. reflex/.templates/apps/demo/code/demo.py +0 -127
  271. reflex/.templates/apps/demo/code/pages/__init__.py +0 -7
  272. reflex/.templates/apps/demo/code/pages/chatapp.py +0 -31
  273. reflex/.templates/apps/demo/code/pages/datatable.py +0 -360
  274. reflex/.templates/apps/demo/code/pages/forms.py +0 -257
  275. reflex/.templates/apps/demo/code/pages/graphing.py +0 -253
  276. reflex/.templates/apps/demo/code/pages/home.py +0 -56
  277. reflex/.templates/apps/demo/code/sidebar.py +0 -178
  278. reflex/.templates/apps/demo/code/state.py +0 -22
  279. reflex/.templates/apps/demo/code/states/form_state.py +0 -40
  280. reflex/.templates/apps/demo/code/states/pie_state.py +0 -47
  281. reflex/.templates/apps/demo/code/styles.py +0 -68
  282. reflex/.templates/apps/demo/code/webui/__init__.py +0 -0
  283. reflex/.templates/apps/demo/code/webui/components/__init__.py +0 -4
  284. reflex/.templates/apps/demo/code/webui/components/chat.py +0 -118
  285. reflex/.templates/apps/demo/code/webui/components/loading_icon.py +0 -19
  286. reflex/.templates/apps/demo/code/webui/components/modal.py +0 -56
  287. reflex/.templates/apps/demo/code/webui/components/navbar.py +0 -70
  288. reflex/.templates/apps/demo/code/webui/components/sidebar.py +0 -66
  289. reflex/.templates/apps/demo/code/webui/state.py +0 -146
  290. reflex/.templates/apps/demo/code/webui/styles.py +0 -88
  291. reflex/.templates/web/components/reflex/chakra_color_mode_provider.js +0 -36
  292. reflex/experimental/vars/base.py +0 -583
  293. reflex/experimental/vars/function.py +0 -290
  294. reflex/experimental/vars/number.py +0 -1458
  295. reflex/experimental/vars/object.py +0 -804
  296. reflex/experimental/vars/sequence.py +0 -1764
  297. reflex/utils/watch.py +0 -96
  298. reflex/vars.py +0 -2604
  299. reflex/vars.pyi +0 -218
  300. reflex-0.5.10a3.dist-info/RECORD +0 -413
  301. {reflex-0.5.10a3.dist-info → reflex-0.6.0.dist-info}/LICENSE +0 -0
  302. {reflex-0.5.10a3.dist-info → reflex-0.6.0.dist-info}/WHEEL +0 -0
  303. {reflex-0.5.10a3.dist-info → reflex-0.6.0.dist-info}/entry_points.txt +0 -0
@@ -8,7 +8,7 @@ from typing import Any, Callable, Dict, Optional, Union, overload
8
8
  from reflex.components.component import Component
9
9
  from reflex.event import EventHandler, EventSpec
10
10
  from reflex.style import Style
11
- from reflex.vars import BaseVar, Var
11
+ from reflex.vars.base import Var
12
12
 
13
13
  route_not_found: Var
14
14
 
@@ -26,50 +26,40 @@ class ClientSideRouting(Component):
26
26
  class_name: Optional[Any] = None,
27
27
  autofocus: Optional[bool] = None,
28
28
  custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
29
- on_blur: Optional[
30
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
31
- ] = None,
32
- on_click: Optional[
33
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
34
- ] = None,
29
+ on_blur: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
30
+ on_click: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
35
31
  on_context_menu: Optional[
36
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
32
+ Union[EventHandler, EventSpec, list, Callable, Var]
37
33
  ] = None,
38
34
  on_double_click: Optional[
39
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
40
- ] = None,
41
- on_focus: Optional[
42
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
43
- ] = None,
44
- on_mount: Optional[
45
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
35
+ Union[EventHandler, EventSpec, list, Callable, Var]
46
36
  ] = None,
37
+ on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
38
+ on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
47
39
  on_mouse_down: Optional[
48
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
40
+ Union[EventHandler, EventSpec, list, Callable, Var]
49
41
  ] = None,
50
42
  on_mouse_enter: Optional[
51
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
43
+ Union[EventHandler, EventSpec, list, Callable, Var]
52
44
  ] = None,
53
45
  on_mouse_leave: Optional[
54
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
46
+ Union[EventHandler, EventSpec, list, Callable, Var]
55
47
  ] = None,
56
48
  on_mouse_move: Optional[
57
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
49
+ Union[EventHandler, EventSpec, list, Callable, Var]
58
50
  ] = None,
59
51
  on_mouse_out: Optional[
60
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
52
+ Union[EventHandler, EventSpec, list, Callable, Var]
61
53
  ] = None,
62
54
  on_mouse_over: Optional[
63
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
55
+ Union[EventHandler, EventSpec, list, Callable, Var]
64
56
  ] = None,
65
57
  on_mouse_up: Optional[
66
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
67
- ] = None,
68
- on_scroll: Optional[
69
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
58
+ Union[EventHandler, EventSpec, list, Callable, Var]
70
59
  ] = None,
60
+ on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
71
61
  on_unmount: Optional[
72
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
62
+ Union[EventHandler, EventSpec, list, Callable, Var]
73
63
  ] = None,
74
64
  **props,
75
65
  ) -> "ClientSideRouting":
@@ -105,50 +95,40 @@ class Default404Page(Component):
105
95
  class_name: Optional[Any] = None,
106
96
  autofocus: Optional[bool] = None,
107
97
  custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
108
- on_blur: Optional[
109
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
110
- ] = None,
111
- on_click: Optional[
112
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
113
- ] = None,
98
+ on_blur: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
99
+ on_click: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
114
100
  on_context_menu: Optional[
115
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
101
+ Union[EventHandler, EventSpec, list, Callable, Var]
116
102
  ] = None,
117
103
  on_double_click: Optional[
118
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
119
- ] = None,
120
- on_focus: Optional[
121
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
122
- ] = None,
123
- on_mount: Optional[
124
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
104
+ Union[EventHandler, EventSpec, list, Callable, Var]
125
105
  ] = None,
106
+ on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
107
+ on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
126
108
  on_mouse_down: Optional[
127
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
109
+ Union[EventHandler, EventSpec, list, Callable, Var]
128
110
  ] = None,
129
111
  on_mouse_enter: Optional[
130
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
112
+ Union[EventHandler, EventSpec, list, Callable, Var]
131
113
  ] = None,
132
114
  on_mouse_leave: Optional[
133
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
115
+ Union[EventHandler, EventSpec, list, Callable, Var]
134
116
  ] = None,
135
117
  on_mouse_move: Optional[
136
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
118
+ Union[EventHandler, EventSpec, list, Callable, Var]
137
119
  ] = None,
138
120
  on_mouse_out: Optional[
139
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
121
+ Union[EventHandler, EventSpec, list, Callable, Var]
140
122
  ] = None,
141
123
  on_mouse_over: Optional[
142
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
124
+ Union[EventHandler, EventSpec, list, Callable, Var]
143
125
  ] = None,
144
126
  on_mouse_up: Optional[
145
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
146
- ] = None,
147
- on_scroll: Optional[
148
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
127
+ Union[EventHandler, EventSpec, list, Callable, Var]
149
128
  ] = None,
129
+ on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
150
130
  on_unmount: Optional[
151
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
131
+ Union[EventHandler, EventSpec, list, Callable, Var]
152
132
  ] = None,
153
133
  **props,
154
134
  ) -> "Default404Page":
@@ -9,7 +9,8 @@ from reflex.components.tags.tag import Tag
9
9
  from reflex.event import EventChain, EventHandler
10
10
  from reflex.utils.format import format_prop, wrap
11
11
  from reflex.utils.imports import ImportVar
12
- from reflex.vars import Var, get_unique_variable_name
12
+ from reflex.vars import get_unique_variable_name
13
+ from reflex.vars.base import Var
13
14
 
14
15
 
15
16
  class Clipboard(Fragment):
@@ -85,8 +86,8 @@ class Clipboard(Fragment):
85
86
  return [
86
87
  "usePasteHandler(%s, %s, %s)"
87
88
  % (
88
- self.targets._var_name_unwrapped,
89
- self.on_paste_event_actions._var_name_unwrapped,
89
+ str(self.targets),
90
+ str(self.on_paste_event_actions),
90
91
  on_paste,
91
92
  )
92
93
  ]
@@ -9,7 +9,7 @@ from reflex.components.base.fragment import Fragment
9
9
  from reflex.event import EventHandler, EventSpec
10
10
  from reflex.style import Style
11
11
  from reflex.utils.imports import ImportVar
12
- from reflex.vars import BaseVar, Var
12
+ from reflex.vars.base import Var
13
13
 
14
14
  class Clipboard(Fragment):
15
15
  @overload
@@ -17,9 +17,9 @@ class Clipboard(Fragment):
17
17
  def create( # type: ignore
18
18
  cls,
19
19
  *children,
20
- targets: Optional[Union[Var[List[str]], List[str]]] = None,
20
+ targets: Optional[Union[List[str], Var[List[str]]]] = None,
21
21
  on_paste_event_actions: Optional[
22
- Union[Var[Dict[str, Union[bool, int]]], Dict[str, Union[bool, int]]]
22
+ Union[Dict[str, Union[bool, int]], Var[Dict[str, Union[bool, int]]]]
23
23
  ] = None,
24
24
  style: Optional[Style] = None,
25
25
  key: Optional[Any] = None,
@@ -27,53 +27,41 @@ class Clipboard(Fragment):
27
27
  class_name: Optional[Any] = None,
28
28
  autofocus: Optional[bool] = None,
29
29
  custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
30
- on_blur: Optional[
31
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
32
- ] = None,
33
- on_click: Optional[
34
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
35
- ] = None,
30
+ on_blur: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
31
+ on_click: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
36
32
  on_context_menu: Optional[
37
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
33
+ Union[EventHandler, EventSpec, list, Callable, Var]
38
34
  ] = None,
39
35
  on_double_click: Optional[
40
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
41
- ] = None,
42
- on_focus: Optional[
43
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
44
- ] = None,
45
- on_mount: Optional[
46
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
36
+ Union[EventHandler, EventSpec, list, Callable, Var]
47
37
  ] = None,
38
+ on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
39
+ on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
48
40
  on_mouse_down: Optional[
49
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
41
+ Union[EventHandler, EventSpec, list, Callable, Var]
50
42
  ] = None,
51
43
  on_mouse_enter: Optional[
52
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
44
+ Union[EventHandler, EventSpec, list, Callable, Var]
53
45
  ] = None,
54
46
  on_mouse_leave: Optional[
55
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
47
+ Union[EventHandler, EventSpec, list, Callable, Var]
56
48
  ] = None,
57
49
  on_mouse_move: Optional[
58
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
50
+ Union[EventHandler, EventSpec, list, Callable, Var]
59
51
  ] = None,
60
52
  on_mouse_out: Optional[
61
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
53
+ Union[EventHandler, EventSpec, list, Callable, Var]
62
54
  ] = None,
63
55
  on_mouse_over: Optional[
64
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
56
+ Union[EventHandler, EventSpec, list, Callable, Var]
65
57
  ] = None,
66
58
  on_mouse_up: Optional[
67
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
68
- ] = None,
69
- on_paste: Optional[
70
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
71
- ] = None,
72
- on_scroll: Optional[
73
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
59
+ Union[EventHandler, EventSpec, list, Callable, Var]
74
60
  ] = None,
61
+ on_paste: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
62
+ on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
75
63
  on_unmount: Optional[
76
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
64
+ Union[EventHandler, EventSpec, list, Callable, Var]
77
65
  ] = None,
78
66
  **props,
79
67
  ) -> "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
12
11
  from reflex.style import LIGHT_COLOR_MODE, resolved_color_mode
13
- from reflex.utils import format
14
12
  from reflex.utils.imports import ImportDict, ImportVar
15
- from reflex.vars import BaseVar, Var, VarData
13
+ from reflex.vars import VarData
14
+ from reflex.vars.base import LiteralVar, Var
15
+ from reflex.vars.number import ternary_operation
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) -> Var: ...
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 | Var:
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,7 +7,8 @@ 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.vars import Var, VarData
10
+ from reflex.vars import VarData
11
+ from reflex.vars.base import Var
11
12
 
12
13
  DEFAULT_DEBOUNCE_TIMEOUT = 300
13
14
 
@@ -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"] = Var(_js_expr=child_ref, _var_type=str)
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
+ Var(
117
+ _js_expr=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)
@@ -8,7 +8,7 @@ from typing import Any, Callable, Dict, Optional, Type, Union, overload
8
8
  from reflex.components.component import Component
9
9
  from reflex.event import EventHandler, EventSpec
10
10
  from reflex.style import Style
11
- from reflex.vars import BaseVar, Var
11
+ from reflex.vars.base import Var
12
12
 
13
13
  DEFAULT_DEBOUNCE_TIMEOUT = 300
14
14
 
@@ -22,62 +22,50 @@ class DebounceInput(Component):
22
22
  debounce_timeout: Optional[Union[Var[int], int]] = None,
23
23
  force_notify_by_enter: Optional[Union[Var[bool], bool]] = None,
24
24
  force_notify_on_blur: Optional[Union[Var[bool], bool]] = None,
25
- value: Optional[Union[Var[Union[float, int, str]], str, int, float]] = None,
25
+ value: Optional[Union[Var[Union[float, int, str]], float, int, str]] = None,
26
26
  input_ref: Optional[Union[Var[str], str]] = None,
27
- element: Optional[Union[Var[Type[Component]], Type[Component]]] = None,
27
+ element: Optional[Union[Type[Component], Var[Type[Component]]]] = None,
28
28
  style: Optional[Style] = None,
29
29
  key: Optional[Any] = None,
30
30
  id: Optional[Any] = None,
31
31
  class_name: Optional[Any] = None,
32
32
  autofocus: Optional[bool] = None,
33
33
  custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
34
- on_blur: Optional[
35
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
36
- ] = None,
37
- on_change: Optional[
38
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
39
- ] = None,
40
- on_click: Optional[
41
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
42
- ] = None,
34
+ on_blur: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
35
+ on_change: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
36
+ on_click: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
43
37
  on_context_menu: Optional[
44
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
38
+ Union[EventHandler, EventSpec, list, Callable, Var]
45
39
  ] = None,
46
40
  on_double_click: Optional[
47
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
48
- ] = None,
49
- on_focus: Optional[
50
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
51
- ] = None,
52
- on_mount: Optional[
53
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
41
+ Union[EventHandler, EventSpec, list, Callable, Var]
54
42
  ] = None,
43
+ on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
44
+ on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
55
45
  on_mouse_down: Optional[
56
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
46
+ Union[EventHandler, EventSpec, list, Callable, Var]
57
47
  ] = None,
58
48
  on_mouse_enter: Optional[
59
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
49
+ Union[EventHandler, EventSpec, list, Callable, Var]
60
50
  ] = None,
61
51
  on_mouse_leave: Optional[
62
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
52
+ Union[EventHandler, EventSpec, list, Callable, Var]
63
53
  ] = None,
64
54
  on_mouse_move: Optional[
65
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
55
+ Union[EventHandler, EventSpec, list, Callable, Var]
66
56
  ] = None,
67
57
  on_mouse_out: Optional[
68
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
58
+ Union[EventHandler, EventSpec, list, Callable, Var]
69
59
  ] = None,
70
60
  on_mouse_over: Optional[
71
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
61
+ Union[EventHandler, EventSpec, list, Callable, Var]
72
62
  ] = None,
73
63
  on_mouse_up: Optional[
74
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
75
- ] = None,
76
- on_scroll: Optional[
77
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
64
+ Union[EventHandler, EventSpec, list, Callable, Var]
78
65
  ] = None,
66
+ on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
79
67
  on_unmount: Optional[
80
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
68
+ Union[EventHandler, EventSpec, list, Callable, Var]
81
69
  ] = None,
82
70
  **props,
83
71
  ) -> "DebounceInput":
@@ -10,8 +10,7 @@ from reflex.components.component import Component
10
10
  from reflex.components.tags import IterTag
11
11
  from reflex.constants import MemoizationMode
12
12
  from reflex.state import ComponentState
13
- from reflex.utils import console
14
- from reflex.vars import Var
13
+ from reflex.vars.base import LiteralVar, Var
15
14
 
16
15
 
17
16
  class ForeachVarError(TypeError):
@@ -38,14 +37,12 @@ class Foreach(Component):
38
37
  cls,
39
38
  iterable: Var[Iterable] | Iterable,
40
39
  render_fn: Callable,
41
- **props,
42
40
  ) -> Foreach:
43
41
  """Create a foreach component.
44
42
 
45
43
  Args:
46
44
  iterable: The iterable to create components from.
47
45
  render_fn: A function from the render args to the component.
48
- **props: The attributes to pass to each child component (deprecated).
49
46
 
50
47
  Returns:
51
48
  The foreach component.
@@ -54,17 +51,10 @@ class Foreach(Component):
54
51
  ForeachVarError: If the iterable is of type Any.
55
52
  TypeError: If the render function is a ComponentState.
56
53
  """
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)
54
+ iterable = LiteralVar.create(iterable)
65
55
  if iterable._var_type == Any:
66
56
  raise ForeachVarError(
67
- f"Could not foreach over var `{iterable._var_full_name}` of type Any. "
57
+ f"Could not foreach over var `{str(iterable)}` of type Any. "
68
58
  "(If you are trying to foreach over a state var, add a type annotation to the var). "
69
59
  "See https://reflex.dev/docs/library/dynamic-rendering/foreach/"
70
60
  )
@@ -136,7 +126,7 @@ class Foreach(Component):
136
126
 
137
127
  return dict(
138
128
  tag,
139
- iterable_state=tag.iterable._var_full_name,
129
+ iterable_state=str(tag.iterable),
140
130
  arg_name=tag.arg_var_name,
141
131
  arg_index=tag.get_index_var_arg(),
142
132
  iterable_type=tag.iterable._var_type.mro()[0].__name__,
@@ -3,7 +3,7 @@
3
3
  from typing import Dict
4
4
 
5
5
  from reflex.components.el.elements.typography import Div
6
- from reflex.vars import Var
6
+ from reflex.vars.base import Var
7
7
 
8
8
 
9
9
  class Html(Div):