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
@@ -4,7 +4,6 @@ from __future__ import annotations
4
4
 
5
5
  from typing import Optional
6
6
 
7
- from reflex.components.base.bare import Bare
8
7
  from reflex.components.component import Component
9
8
  from reflex.components.core.cond import cond
10
9
  from reflex.components.el.elements.typography import Div
@@ -19,8 +18,11 @@ from reflex.components.radix.themes.typography.text import Text
19
18
  from reflex.components.sonner.toast import Toaster, ToastProps
20
19
  from reflex.constants import Dirs, Hooks, Imports
21
20
  from reflex.constants.compiler import CompileVars
22
- from reflex.utils.imports import ImportDict, ImportVar
23
- from reflex.utils.serializers import serialize
21
+ from reflex.ivars.base import ImmutableVar, LiteralVar
22
+ from reflex.ivars.function import FunctionStringVar
23
+ from reflex.ivars.number import BooleanVar
24
+ from reflex.ivars.sequence import LiteralArrayVar
25
+ from reflex.utils.imports import ImportVar
24
26
  from reflex.vars import Var, VarData
25
27
 
26
28
  connect_error_var_data: VarData = VarData( # type: ignore
@@ -28,62 +30,52 @@ connect_error_var_data: VarData = VarData( # type: ignore
28
30
  hooks={Hooks.EVENTS: None},
29
31
  )
30
32
 
31
- connect_errors: Var = Var.create_safe(
33
+ connect_errors: Var = ImmutableVar.create_safe(
32
34
  value=CompileVars.CONNECT_ERROR,
33
- _var_is_local=True,
34
- _var_is_string=False,
35
35
  _var_data=connect_error_var_data,
36
36
  )
37
37
 
38
- connection_error: Var = Var.create_safe(
39
- value="(connectErrors.length > 0) ? connectErrors[connectErrors.length - 1].message : ''",
40
- _var_is_local=False,
41
- _var_is_string=False,
38
+ connection_error: Var = ImmutableVar.create_safe(
39
+ value="((connectErrors.length > 0) ? connectErrors[connectErrors.length - 1].message : '')",
42
40
  _var_data=connect_error_var_data,
43
41
  )
44
42
 
45
- connection_errors_count: Var = Var.create_safe(
43
+ connection_errors_count: Var = ImmutableVar.create_safe(
46
44
  value="connectErrors.length",
47
- _var_is_string=False,
48
- _var_is_local=False,
49
45
  _var_data=connect_error_var_data,
50
46
  )
51
47
 
52
- has_connection_errors: Var = Var.create_safe(
53
- value="connectErrors.length > 0",
54
- _var_is_string=False,
48
+ has_connection_errors: Var = ImmutableVar.create_safe(
49
+ value="(connectErrors.length > 0)",
55
50
  _var_data=connect_error_var_data,
56
- ).to(bool)
51
+ ).to(BooleanVar)
57
52
 
58
- has_too_many_connection_errors: Var = Var.create_safe(
59
- value="connectErrors.length >= 2",
60
- _var_is_string=False,
53
+ has_too_many_connection_errors: Var = ImmutableVar.create_safe(
54
+ value="(connectErrors.length >= 2)",
61
55
  _var_data=connect_error_var_data,
62
- ).to(bool)
56
+ ).to(BooleanVar)
63
57
 
64
58
 
65
- class WebsocketTargetURL(Bare):
59
+ class WebsocketTargetURL(ImmutableVar):
66
60
  """A component that renders the websocket target URL."""
67
61
 
68
- def add_imports(self) -> ImportDict:
69
- """Add imports for the websocket target URL component.
70
-
71
- Returns:
72
- The import dict.
73
- """
74
- return {
75
- f"/{Dirs.STATE_PATH}": [ImportVar(tag="getBackendURL")],
76
- "/env.json": [ImportVar(tag="env", is_default=True)],
77
- }
78
-
79
62
  @classmethod
80
- def create(cls) -> Component:
63
+ def create(cls) -> ImmutableVar:
81
64
  """Create a websocket target URL component.
82
65
 
83
66
  Returns:
84
67
  The websocket target URL component.
85
68
  """
86
- return super().create(contents="{getBackendURL(env.EVENT).href}")
69
+ return ImmutableVar(
70
+ _var_name="getBackendURL(env.EVENT).href",
71
+ _var_data=VarData(
72
+ imports={
73
+ "/env.json": [ImportVar(tag="env", is_default=True)],
74
+ f"/{Dirs.STATE_PATH}": [ImportVar(tag="getBackendURL")],
75
+ },
76
+ ),
77
+ _var_type=WebsocketTargetURL,
78
+ )
87
79
 
88
80
 
89
81
  def default_connection_error() -> list[str | Var | Component]:
@@ -103,7 +95,7 @@ def default_connection_error() -> list[str | Var | Component]:
103
95
  class ConnectionToaster(Toaster):
104
96
  """A connection toaster component."""
105
97
 
106
- def add_hooks(self) -> list[str | Var]:
98
+ def add_hooks(self) -> list[str | ImmutableVar]:
107
99
  """Add the hooks for the connection toaster.
108
100
 
109
101
  Returns:
@@ -112,24 +104,34 @@ class ConnectionToaster(Toaster):
112
104
  toast_id = "websocket-error"
113
105
  target_url = WebsocketTargetURL.create()
114
106
  props = ToastProps( # type: ignore
115
- description=Var.create(
116
- f"`Check if server is reachable at ${target_url}`",
117
- _var_is_string=False,
118
- _var_is_local=False,
107
+ description=LiteralVar.create(
108
+ f"Check if server is reachable at {target_url}",
119
109
  ),
120
110
  close_button=True,
121
111
  duration=120000,
122
112
  id=toast_id,
123
113
  )
124
- hook = Var.create_safe(
125
- f"""
126
- const toast_props = {serialize(props)};
127
- const [userDismissed, setUserDismissed] = useState(false);
128
- useEffect(() => {{
129
- if ({has_too_many_connection_errors}) {{
114
+
115
+ individual_hooks = [
116
+ f"const toast_props = {str(LiteralVar.create(props))};",
117
+ f"const [userDismissed, setUserDismissed] = useState(false);",
118
+ FunctionStringVar(
119
+ "useEffect",
120
+ _var_data=VarData(
121
+ imports={
122
+ "react": ["useEffect", "useState"],
123
+ **dict(target_url._get_all_var_data().imports), # type: ignore
124
+ }
125
+ ),
126
+ ).call(
127
+ # TODO: This breaks the assumption that Vars are JS expressions
128
+ ImmutableVar.create_safe(
129
+ f"""
130
+ () => {{
131
+ if ({str(has_too_many_connection_errors)}) {{
130
132
  if (!userDismissed) {{
131
133
  toast.error(
132
- `Cannot connect to server: {connection_error}.`,
134
+ `Cannot connect to server: ${{{connection_error}}}.`,
133
135
  {{...toast_props, onDismiss: () => setUserDismissed(true)}},
134
136
  )
135
137
  }}
@@ -137,20 +139,16 @@ useEffect(() => {{
137
139
  toast.dismiss("{toast_id}");
138
140
  setUserDismissed(false); // after reconnection reset dismissed state
139
141
  }}
140
- }}, [{connect_errors}]);""",
141
- _var_is_string=False,
142
- )
143
- imports: ImportDict = {
144
- "react": ["useEffect", "useState"],
145
- **target_url._get_imports(), # type: ignore
146
- }
147
- hook._var_data = VarData.merge(
148
- connect_errors._var_data,
149
- VarData(imports=imports),
150
- )
142
+ }}
143
+ """
144
+ ),
145
+ LiteralArrayVar.create([connect_errors]),
146
+ ),
147
+ ]
148
+
151
149
  return [
152
150
  Hooks.EVENTS,
153
- hook,
151
+ *individual_hooks,
154
152
  ]
155
153
 
156
154
  @classmethod
@@ -240,6 +238,7 @@ class WifiOffPulse(Icon):
240
238
  Returns:
241
239
  The icon component with default props applied.
242
240
  """
241
+ pulse_var = ImmutableVar.create("pulse")
243
242
  return super().create(
244
243
  "wifi_off",
245
244
  color=props.pop("color", "crimson"),
@@ -248,7 +247,7 @@ class WifiOffPulse(Icon):
248
247
  position=props.pop("position", "fixed"),
249
248
  bottom=props.pop("botton", "33px"),
250
249
  right=props.pop("right", "33px"),
251
- animation=Var.create(f"${{pulse}} 1s infinite", _var_is_string=True),
250
+ animation=LiteralVar.create(f"{pulse_var} 1s infinite"),
252
251
  **props,
253
252
  )
254
253
 
@@ -5,15 +5,15 @@
5
5
  # ------------------------------------------------------
6
6
  from typing import Any, Callable, Dict, Literal, Optional, Union, overload
7
7
 
8
- from reflex.components.base.bare import Bare
9
8
  from reflex.components.component import Component
10
9
  from reflex.components.el.elements.typography import Div
11
10
  from reflex.components.lucide.icon import Icon
12
11
  from reflex.components.sonner.toast import Toaster, ToastProps
13
12
  from reflex.event import EventHandler, EventSpec
13
+ from reflex.ivars.base import ImmutableVar
14
14
  from reflex.style import Style
15
- from reflex.utils.imports import ImportDict, ImportVar
16
- from reflex.vars import BaseVar, Var, VarData
15
+ from reflex.utils.imports import ImportVar
16
+ from reflex.vars import Var, VarData
17
17
 
18
18
  connect_error_var_data: VarData
19
19
  connect_errors: Var
@@ -22,78 +22,14 @@ connection_errors_count: Var
22
22
  has_connection_errors: Var
23
23
  has_too_many_connection_errors: Var
24
24
 
25
- class WebsocketTargetURL(Bare):
26
- def add_imports(self) -> ImportDict: ...
27
- @overload
25
+ class WebsocketTargetURL(ImmutableVar):
28
26
  @classmethod
29
- def create( # type: ignore
30
- cls,
31
- *children,
32
- contents: Optional[Union[Var[str], str]] = None,
33
- style: Optional[Style] = None,
34
- key: Optional[Any] = None,
35
- id: Optional[Any] = None,
36
- class_name: Optional[Any] = None,
37
- autofocus: Optional[bool] = None,
38
- custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
39
- on_blur: Optional[
40
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
41
- ] = None,
42
- on_click: Optional[
43
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
44
- ] = None,
45
- on_context_menu: Optional[
46
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
47
- ] = None,
48
- on_double_click: Optional[
49
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
50
- ] = None,
51
- on_focus: Optional[
52
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
53
- ] = None,
54
- on_mount: Optional[
55
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
56
- ] = None,
57
- on_mouse_down: Optional[
58
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
59
- ] = None,
60
- on_mouse_enter: Optional[
61
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
62
- ] = None,
63
- on_mouse_leave: Optional[
64
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
65
- ] = None,
66
- on_mouse_move: Optional[
67
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
68
- ] = None,
69
- on_mouse_out: Optional[
70
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
71
- ] = None,
72
- on_mouse_over: Optional[
73
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
74
- ] = None,
75
- on_mouse_up: Optional[
76
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
77
- ] = None,
78
- on_scroll: Optional[
79
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
80
- ] = None,
81
- on_unmount: Optional[
82
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
83
- ] = None,
84
- **props,
85
- ) -> "WebsocketTargetURL":
86
- """Create a websocket target URL component.
87
-
88
- Returns:
89
- The websocket target URL component.
90
- """
91
- ...
27
+ def create(cls) -> ImmutableVar: ... # type: ignore
92
28
 
93
29
  def default_connection_error() -> list[str | Var | Component]: ...
94
30
 
95
31
  class ConnectionToaster(Toaster):
96
- def add_hooks(self) -> list[str | Var]: ...
32
+ def add_hooks(self) -> list[str | ImmutableVar]: ...
97
33
  @overload
98
34
  @classmethod
99
35
  def create( # type: ignore
@@ -139,51 +75,51 @@ class ConnectionToaster(Toaster):
139
75
  id: Optional[Any] = None,
140
76
  class_name: Optional[Any] = None,
141
77
  autofocus: Optional[bool] = None,
142
- custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
78
+ custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
143
79
  on_blur: Optional[
144
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
80
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
145
81
  ] = None,
146
82
  on_click: Optional[
147
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
83
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
148
84
  ] = None,
149
85
  on_context_menu: Optional[
150
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
86
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
151
87
  ] = None,
152
88
  on_double_click: Optional[
153
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
89
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
154
90
  ] = None,
155
91
  on_focus: Optional[
156
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
92
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
157
93
  ] = None,
158
94
  on_mount: Optional[
159
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
95
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
160
96
  ] = None,
161
97
  on_mouse_down: Optional[
162
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
98
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
163
99
  ] = None,
164
100
  on_mouse_enter: Optional[
165
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
101
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
166
102
  ] = None,
167
103
  on_mouse_leave: Optional[
168
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
104
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
169
105
  ] = None,
170
106
  on_mouse_move: Optional[
171
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
107
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
172
108
  ] = None,
173
109
  on_mouse_out: Optional[
174
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
110
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
175
111
  ] = None,
176
112
  on_mouse_over: Optional[
177
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
113
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
178
114
  ] = None,
179
115
  on_mouse_up: Optional[
180
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
116
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
181
117
  ] = None,
182
118
  on_scroll: Optional[
183
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
119
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
184
120
  ] = None,
185
121
  on_unmount: Optional[
186
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
122
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
187
123
  ] = None,
188
124
  **props,
189
125
  ) -> "ConnectionToaster":
@@ -229,51 +165,51 @@ class ConnectionBanner(Component):
229
165
  id: Optional[Any] = None,
230
166
  class_name: Optional[Any] = None,
231
167
  autofocus: Optional[bool] = None,
232
- custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
168
+ custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
233
169
  on_blur: Optional[
234
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
170
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
235
171
  ] = None,
236
172
  on_click: Optional[
237
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
173
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
238
174
  ] = None,
239
175
  on_context_menu: Optional[
240
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
176
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
241
177
  ] = None,
242
178
  on_double_click: Optional[
243
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
179
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
244
180
  ] = None,
245
181
  on_focus: Optional[
246
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
182
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
247
183
  ] = None,
248
184
  on_mount: Optional[
249
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
185
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
250
186
  ] = None,
251
187
  on_mouse_down: Optional[
252
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
188
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
253
189
  ] = None,
254
190
  on_mouse_enter: Optional[
255
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
191
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
256
192
  ] = None,
257
193
  on_mouse_leave: Optional[
258
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
194
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
259
195
  ] = None,
260
196
  on_mouse_move: Optional[
261
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
197
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
262
198
  ] = None,
263
199
  on_mouse_out: Optional[
264
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
200
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
265
201
  ] = None,
266
202
  on_mouse_over: Optional[
267
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
203
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
268
204
  ] = None,
269
205
  on_mouse_up: Optional[
270
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
206
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
271
207
  ] = None,
272
208
  on_scroll: Optional[
273
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
209
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
274
210
  ] = None,
275
211
  on_unmount: Optional[
276
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
212
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
277
213
  ] = None,
278
214
  **props,
279
215
  ) -> "ConnectionBanner":
@@ -298,51 +234,51 @@ class ConnectionModal(Component):
298
234
  id: Optional[Any] = None,
299
235
  class_name: Optional[Any] = None,
300
236
  autofocus: Optional[bool] = None,
301
- custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
237
+ custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
302
238
  on_blur: Optional[
303
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
239
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
304
240
  ] = None,
305
241
  on_click: Optional[
306
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
242
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
307
243
  ] = None,
308
244
  on_context_menu: Optional[
309
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
245
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
310
246
  ] = None,
311
247
  on_double_click: Optional[
312
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
248
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
313
249
  ] = None,
314
250
  on_focus: Optional[
315
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
251
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
316
252
  ] = None,
317
253
  on_mount: Optional[
318
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
254
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
319
255
  ] = None,
320
256
  on_mouse_down: Optional[
321
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
257
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
322
258
  ] = None,
323
259
  on_mouse_enter: Optional[
324
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
260
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
325
261
  ] = None,
326
262
  on_mouse_leave: Optional[
327
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
263
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
328
264
  ] = None,
329
265
  on_mouse_move: Optional[
330
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
266
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
331
267
  ] = None,
332
268
  on_mouse_out: Optional[
333
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
269
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
334
270
  ] = None,
335
271
  on_mouse_over: Optional[
336
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
272
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
337
273
  ] = None,
338
274
  on_mouse_up: Optional[
339
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
275
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
340
276
  ] = None,
341
277
  on_scroll: Optional[
342
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
278
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
343
279
  ] = None,
344
280
  on_unmount: Optional[
345
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
281
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
346
282
  ] = None,
347
283
  **props,
348
284
  ) -> "ConnectionModal":
@@ -368,51 +304,51 @@ class WifiOffPulse(Icon):
368
304
  id: Optional[Any] = None,
369
305
  class_name: Optional[Any] = None,
370
306
  autofocus: Optional[bool] = None,
371
- custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
307
+ custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
372
308
  on_blur: Optional[
373
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
309
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
374
310
  ] = None,
375
311
  on_click: Optional[
376
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
312
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
377
313
  ] = None,
378
314
  on_context_menu: Optional[
379
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
315
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
380
316
  ] = None,
381
317
  on_double_click: Optional[
382
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
318
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
383
319
  ] = None,
384
320
  on_focus: Optional[
385
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
321
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
386
322
  ] = None,
387
323
  on_mount: Optional[
388
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
324
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
389
325
  ] = None,
390
326
  on_mouse_down: Optional[
391
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
327
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
392
328
  ] = None,
393
329
  on_mouse_enter: Optional[
394
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
330
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
395
331
  ] = None,
396
332
  on_mouse_leave: Optional[
397
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
333
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
398
334
  ] = None,
399
335
  on_mouse_move: Optional[
400
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
336
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
401
337
  ] = None,
402
338
  on_mouse_out: Optional[
403
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
339
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
404
340
  ] = None,
405
341
  on_mouse_over: Optional[
406
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
342
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
407
343
  ] = None,
408
344
  on_mouse_up: Optional[
409
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
345
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
410
346
  ] = None,
411
347
  on_scroll: Optional[
412
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
348
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
413
349
  ] = None,
414
350
  on_unmount: Optional[
415
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
351
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
416
352
  ] = None,
417
353
  **props,
418
354
  ) -> "WifiOffPulse":
@@ -471,51 +407,51 @@ class ConnectionPulser(Div):
471
407
  id: Optional[Any] = None,
472
408
  class_name: Optional[Any] = None,
473
409
  autofocus: Optional[bool] = None,
474
- custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
410
+ custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
475
411
  on_blur: Optional[
476
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
412
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
477
413
  ] = None,
478
414
  on_click: Optional[
479
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
415
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
480
416
  ] = None,
481
417
  on_context_menu: Optional[
482
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
418
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
483
419
  ] = None,
484
420
  on_double_click: Optional[
485
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
421
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
486
422
  ] = None,
487
423
  on_focus: Optional[
488
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
424
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
489
425
  ] = None,
490
426
  on_mount: Optional[
491
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
427
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
492
428
  ] = None,
493
429
  on_mouse_down: Optional[
494
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
430
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
495
431
  ] = None,
496
432
  on_mouse_enter: Optional[
497
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
433
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
498
434
  ] = None,
499
435
  on_mouse_leave: Optional[
500
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
436
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
501
437
  ] = None,
502
438
  on_mouse_move: Optional[
503
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
439
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
504
440
  ] = None,
505
441
  on_mouse_out: Optional[
506
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
442
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
507
443
  ] = None,
508
444
  on_mouse_over: Optional[
509
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
445
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
510
446
  ] = None,
511
447
  on_mouse_up: Optional[
512
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
448
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
513
449
  ] = None,
514
450
  on_scroll: Optional[
515
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
451
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
516
452
  ] = None,
517
453
  on_unmount: Optional[
518
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
454
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
519
455
  ] = None,
520
456
  **props,
521
457
  ) -> "ConnectionPulser":
@@ -13,9 +13,10 @@ from __future__ import annotations
13
13
  from reflex import constants
14
14
  from reflex.components.component import Component
15
15
  from reflex.components.core.cond import cond
16
+ from reflex.ivars.base import ImmutableVar
16
17
  from reflex.vars import Var
17
18
 
18
- route_not_found: Var = Var.create_safe(constants.ROUTE_NOT_FOUND, _var_is_string=False)
19
+ route_not_found: Var = ImmutableVar.create_safe(constants.ROUTE_NOT_FOUND)
19
20
 
20
21
 
21
22
  class ClientSideRouting(Component):