reflex 0.7.13a2__py3-none-any.whl → 0.7.14__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 (261) hide show
  1. reflex/.templates/apps/blank/code/blank.py +0 -2
  2. reflex/app.py +85 -89
  3. reflex/app_mixins/lifespan.py +2 -3
  4. reflex/app_mixins/middleware.py +1 -0
  5. reflex/app_mixins/mixin.py +0 -1
  6. reflex/assets.py +7 -4
  7. reflex/base.py +3 -2
  8. reflex/compiler/compiler.py +79 -65
  9. reflex/compiler/utils.py +8 -6
  10. reflex/components/base/app_wrap.pyi +0 -1
  11. reflex/components/base/bare.py +22 -12
  12. reflex/components/base/body.pyi +0 -1
  13. reflex/components/base/document.pyi +0 -5
  14. reflex/components/base/error_boundary.pyi +0 -1
  15. reflex/components/base/fragment.pyi +0 -1
  16. reflex/components/base/head.pyi +0 -2
  17. reflex/components/base/link.pyi +0 -2
  18. reflex/components/base/meta.py +2 -1
  19. reflex/components/base/meta.pyi +0 -4
  20. reflex/components/base/script.py +2 -1
  21. reflex/components/base/script.pyi +0 -1
  22. reflex/components/base/strict_mode.pyi +0 -1
  23. reflex/components/component.py +85 -45
  24. reflex/components/core/auto_scroll.pyi +0 -1
  25. reflex/components/core/banner.py +1 -1
  26. reflex/components/core/banner.pyi +0 -6
  27. reflex/components/core/breakpoints.py +9 -11
  28. reflex/components/core/client_side_routing.pyi +0 -2
  29. reflex/components/core/clipboard.pyi +0 -1
  30. reflex/components/core/colors.py +10 -7
  31. reflex/components/core/cond.py +4 -2
  32. reflex/components/core/debounce.py +5 -3
  33. reflex/components/core/debounce.pyi +0 -1
  34. reflex/components/core/foreach.py +8 -6
  35. reflex/components/core/html.py +3 -3
  36. reflex/components/core/html.pyi +0 -1
  37. reflex/components/core/match.py +19 -17
  38. reflex/components/core/sticky.pyi +0 -4
  39. reflex/components/core/upload.py +1 -1
  40. reflex/components/core/upload.pyi +0 -5
  41. reflex/components/datadisplay/code.py +1 -2
  42. reflex/components/datadisplay/code.pyi +0 -2
  43. reflex/components/datadisplay/dataeditor.py +7 -10
  44. reflex/components/datadisplay/dataeditor.pyi +0 -1
  45. reflex/components/datadisplay/logo.py +3 -4
  46. reflex/components/datadisplay/shiki_code_block.py +8 -11
  47. reflex/components/datadisplay/shiki_code_block.pyi +0 -3
  48. reflex/components/dynamic.py +2 -3
  49. reflex/components/el/__init__.pyi +2 -0
  50. reflex/components/el/element.pyi +0 -1
  51. reflex/components/el/elements/__init__.py +1 -0
  52. reflex/components/el/elements/__init__.pyi +3 -0
  53. reflex/components/el/elements/base.pyi +0 -1
  54. reflex/components/el/elements/forms.py +14 -15
  55. reflex/components/el/elements/forms.pyi +15 -32
  56. reflex/components/el/elements/inline.pyi +0 -28
  57. reflex/components/el/elements/media.py +26 -0
  58. reflex/components/el/elements/media.pyi +259 -25
  59. reflex/components/el/elements/metadata.py +0 -1
  60. reflex/components/el/elements/metadata.pyi +0 -6
  61. reflex/components/el/elements/other.pyi +0 -7
  62. reflex/components/el/elements/scripts.pyi +0 -3
  63. reflex/components/el/elements/sectioning.pyi +0 -15
  64. reflex/components/el/elements/tables.pyi +0 -10
  65. reflex/components/el/elements/typography.pyi +0 -15
  66. reflex/components/gridjs/datatable.py +10 -13
  67. reflex/components/gridjs/datatable.pyi +0 -2
  68. reflex/components/lucide/icon.py +10 -9
  69. reflex/components/lucide/icon.pyi +0 -3
  70. reflex/components/markdown/markdown.py +6 -8
  71. reflex/components/markdown/markdown.pyi +0 -1
  72. reflex/components/moment/moment.pyi +0 -1
  73. reflex/components/next/base.py +0 -2
  74. reflex/components/next/base.pyi +0 -3
  75. reflex/components/next/image.pyi +0 -1
  76. reflex/components/next/link.pyi +0 -1
  77. reflex/components/next/video.pyi +0 -1
  78. reflex/components/plotly/plotly.pyi +0 -9
  79. reflex/components/props.py +4 -3
  80. reflex/components/radix/primitives/accordion.pyi +0 -7
  81. reflex/components/radix/primitives/base.py +1 -3
  82. reflex/components/radix/primitives/base.pyi +0 -2
  83. reflex/components/radix/primitives/drawer.pyi +0 -11
  84. reflex/components/radix/primitives/form.py +4 -8
  85. reflex/components/radix/primitives/form.pyi +0 -12
  86. reflex/components/radix/primitives/progress.py +1 -1
  87. reflex/components/radix/primitives/progress.pyi +0 -5
  88. reflex/components/radix/primitives/slider.py +1 -1
  89. reflex/components/radix/primitives/slider.pyi +0 -5
  90. reflex/components/radix/themes/base.pyi +0 -8
  91. reflex/components/radix/themes/color_mode.pyi +0 -3
  92. reflex/components/radix/themes/components/alert_dialog.py +4 -2
  93. reflex/components/radix/themes/components/alert_dialog.pyi +4 -9
  94. reflex/components/radix/themes/components/aspect_ratio.py +1 -2
  95. reflex/components/radix/themes/components/aspect_ratio.pyi +1 -3
  96. reflex/components/radix/themes/components/avatar.py +5 -2
  97. reflex/components/radix/themes/components/avatar.pyi +1 -3
  98. reflex/components/radix/themes/components/badge.py +5 -2
  99. reflex/components/radix/themes/components/badge.pyi +1 -3
  100. reflex/components/radix/themes/components/button.py +2 -3
  101. reflex/components/radix/themes/components/button.pyi +1 -3
  102. reflex/components/radix/themes/components/callout.py +1 -2
  103. reflex/components/radix/themes/components/callout.pyi +1 -7
  104. reflex/components/radix/themes/components/card.py +1 -2
  105. reflex/components/radix/themes/components/card.pyi +1 -3
  106. reflex/components/radix/themes/components/checkbox.py +7 -4
  107. reflex/components/radix/themes/components/checkbox.pyi +1 -5
  108. reflex/components/radix/themes/components/checkbox_cards.py +1 -2
  109. reflex/components/radix/themes/components/checkbox_cards.pyi +1 -4
  110. reflex/components/radix/themes/components/checkbox_group.py +1 -2
  111. reflex/components/radix/themes/components/checkbox_group.pyi +1 -4
  112. reflex/components/radix/themes/components/context_menu.py +1 -1
  113. reflex/components/radix/themes/components/context_menu.pyi +1 -14
  114. reflex/components/radix/themes/components/data_list.py +1 -2
  115. reflex/components/radix/themes/components/data_list.pyi +1 -6
  116. reflex/components/radix/themes/components/dialog.py +4 -2
  117. reflex/components/radix/themes/components/dialog.pyi +4 -9
  118. reflex/components/radix/themes/components/dropdown_menu.py +5 -2
  119. reflex/components/radix/themes/components/dropdown_menu.pyi +4 -10
  120. reflex/components/radix/themes/components/hover_card.py +4 -2
  121. reflex/components/radix/themes/components/hover_card.pyi +4 -6
  122. reflex/components/radix/themes/components/icon_button.py +7 -8
  123. reflex/components/radix/themes/components/icon_button.pyi +1 -3
  124. reflex/components/radix/themes/components/inset.py +1 -2
  125. reflex/components/radix/themes/components/inset.pyi +1 -3
  126. reflex/components/radix/themes/components/popover.py +4 -2
  127. reflex/components/radix/themes/components/popover.pyi +4 -6
  128. reflex/components/radix/themes/components/progress.py +1 -2
  129. reflex/components/radix/themes/components/progress.pyi +1 -3
  130. reflex/components/radix/themes/components/radio.py +1 -2
  131. reflex/components/radix/themes/components/radio.pyi +1 -3
  132. reflex/components/radix/themes/components/radio_cards.py +1 -2
  133. reflex/components/radix/themes/components/radio_cards.pyi +1 -4
  134. reflex/components/radix/themes/components/radio_group.py +7 -5
  135. reflex/components/radix/themes/components/radio_group.pyi +1 -6
  136. reflex/components/radix/themes/components/scroll_area.py +1 -2
  137. reflex/components/radix/themes/components/scroll_area.pyi +1 -3
  138. reflex/components/radix/themes/components/segmented_control.py +1 -2
  139. reflex/components/radix/themes/components/segmented_control.pyi +1 -4
  140. reflex/components/radix/themes/components/select.py +5 -2
  141. reflex/components/radix/themes/components/select.pyi +1 -11
  142. reflex/components/radix/themes/components/separator.py +1 -2
  143. reflex/components/radix/themes/components/separator.pyi +1 -3
  144. reflex/components/radix/themes/components/skeleton.py +1 -2
  145. reflex/components/radix/themes/components/skeleton.pyi +1 -3
  146. reflex/components/radix/themes/components/slider.py +1 -2
  147. reflex/components/radix/themes/components/slider.pyi +1 -3
  148. reflex/components/radix/themes/components/spinner.py +1 -2
  149. reflex/components/radix/themes/components/spinner.pyi +1 -3
  150. reflex/components/radix/themes/components/switch.py +1 -2
  151. reflex/components/radix/themes/components/switch.pyi +1 -3
  152. reflex/components/radix/themes/components/table.py +1 -2
  153. reflex/components/radix/themes/components/table.pyi +1 -9
  154. reflex/components/radix/themes/components/tabs.py +1 -2
  155. reflex/components/radix/themes/components/tabs.pyi +1 -7
  156. reflex/components/radix/themes/components/text_area.py +5 -2
  157. reflex/components/radix/themes/components/text_area.pyi +2 -4
  158. reflex/components/radix/themes/components/text_field.py +5 -2
  159. reflex/components/radix/themes/components/text_field.pyi +1 -5
  160. reflex/components/radix/themes/components/tooltip.py +1 -2
  161. reflex/components/radix/themes/components/tooltip.pyi +1 -3
  162. reflex/components/radix/themes/layout/base.py +5 -2
  163. reflex/components/radix/themes/layout/base.pyi +5 -3
  164. reflex/components/radix/themes/layout/box.py +1 -2
  165. reflex/components/radix/themes/layout/box.pyi +1 -3
  166. reflex/components/radix/themes/layout/center.pyi +0 -1
  167. reflex/components/radix/themes/layout/container.py +1 -2
  168. reflex/components/radix/themes/layout/container.pyi +1 -3
  169. reflex/components/radix/themes/layout/flex.py +6 -2
  170. reflex/components/radix/themes/layout/flex.pyi +1 -3
  171. reflex/components/radix/themes/layout/grid.py +6 -2
  172. reflex/components/radix/themes/layout/grid.pyi +1 -3
  173. reflex/components/radix/themes/layout/list.py +2 -1
  174. reflex/components/radix/themes/layout/list.pyi +0 -5
  175. reflex/components/radix/themes/layout/section.py +1 -2
  176. reflex/components/radix/themes/layout/section.pyi +1 -3
  177. reflex/components/radix/themes/layout/spacer.pyi +0 -1
  178. reflex/components/radix/themes/layout/stack.py +1 -1
  179. reflex/components/radix/themes/layout/stack.pyi +0 -3
  180. reflex/components/radix/themes/typography/blockquote.py +1 -1
  181. reflex/components/radix/themes/typography/blockquote.pyi +1 -3
  182. reflex/components/radix/themes/typography/code.py +5 -1
  183. reflex/components/radix/themes/typography/code.pyi +1 -3
  184. reflex/components/radix/themes/typography/heading.py +1 -1
  185. reflex/components/radix/themes/typography/heading.pyi +1 -3
  186. reflex/components/radix/themes/typography/link.py +3 -2
  187. reflex/components/radix/themes/typography/link.pyi +1 -3
  188. reflex/components/radix/themes/typography/text.py +1 -1
  189. reflex/components/radix/themes/typography/text.pyi +1 -9
  190. reflex/components/react_player/audio.py +0 -2
  191. reflex/components/react_player/audio.pyi +0 -3
  192. reflex/components/react_player/react_player.pyi +0 -1
  193. reflex/components/react_player/video.py +0 -2
  194. reflex/components/react_player/video.pyi +0 -3
  195. reflex/components/recharts/__init__.py +1 -1
  196. reflex/components/recharts/__init__.pyi +1 -1
  197. reflex/components/recharts/cartesian.py +20 -25
  198. reflex/components/recharts/cartesian.pyi +20 -37
  199. reflex/components/recharts/charts.py +2 -1
  200. reflex/components/recharts/charts.pyi +0 -12
  201. reflex/components/recharts/general.pyi +0 -6
  202. reflex/components/recharts/polar.py +5 -4
  203. reflex/components/recharts/polar.pyi +4 -10
  204. reflex/components/recharts/recharts.py +12 -10
  205. reflex/components/recharts/recharts.pyi +10 -11
  206. reflex/components/sonner/toast.py +2 -2
  207. reflex/components/sonner/toast.pyi +0 -2
  208. reflex/components/suneditor/editor.py +2 -1
  209. reflex/components/suneditor/editor.pyi +0 -1
  210. reflex/components/tags/iter_tag.py +4 -2
  211. reflex/config.py +41 -615
  212. reflex/constants/base.py +6 -6
  213. reflex/constants/compiler.py +8 -6
  214. reflex/constants/installer.py +25 -16
  215. reflex/custom_components/custom_components.py +1 -2
  216. reflex/environment.py +606 -0
  217. reflex/event.py +58 -60
  218. reflex/experimental/__init__.py +2 -2
  219. reflex/experimental/client_state.py +9 -4
  220. reflex/experimental/layout.pyi +0 -5
  221. reflex/istate/manager.py +17 -20
  222. reflex/istate/proxy.py +19 -12
  223. reflex/model.py +8 -5
  224. reflex/plugins/base.py +8 -0
  225. reflex/plugins/tailwind_v3.py +8 -0
  226. reflex/plugins/tailwind_v4.py +8 -0
  227. reflex/reflex.py +11 -12
  228. reflex/route.py +7 -9
  229. reflex/state.py +67 -71
  230. reflex/style.py +3 -1
  231. reflex/testing.py +49 -30
  232. reflex/utils/build.py +2 -1
  233. reflex/utils/console.py +70 -17
  234. reflex/utils/exec.py +113 -39
  235. reflex/utils/export.py +2 -1
  236. reflex/utils/format.py +21 -24
  237. reflex/utils/imports.py +4 -3
  238. reflex/utils/lazy_loader.py +3 -3
  239. reflex/utils/misc.py +2 -1
  240. reflex/utils/net.py +2 -2
  241. reflex/utils/path_ops.py +4 -2
  242. reflex/utils/prerequisites.py +69 -39
  243. reflex/utils/processes.py +5 -7
  244. reflex/utils/pyi_generator.py +46 -41
  245. reflex/utils/redir.py +1 -1
  246. reflex/utils/registry.py +1 -1
  247. reflex/utils/serializers.py +4 -4
  248. reflex/utils/telemetry.py +36 -3
  249. reflex/utils/types.py +16 -13
  250. reflex/vars/base.py +96 -109
  251. reflex/vars/datetime.py +2 -1
  252. reflex/vars/dep_tracking.py +19 -28
  253. reflex/vars/number.py +6 -7
  254. reflex/vars/object.py +5 -6
  255. reflex/vars/sequence.py +11 -11
  256. {reflex-0.7.13a2.dist-info → reflex-0.7.14.dist-info}/METADATA +1 -1
  257. reflex-0.7.14.dist-info/RECORD +408 -0
  258. reflex-0.7.13a2.dist-info/RECORD +0 -407
  259. {reflex-0.7.13a2.dist-info → reflex-0.7.14.dist-info}/WHEEL +0 -0
  260. {reflex-0.7.13a2.dist-info → reflex-0.7.14.dist-info}/entry_points.txt +0 -0
  261. {reflex-0.7.13a2.dist-info → reflex-0.7.14.dist-info}/licenses/LICENSE +0 -0
reflex/constants/base.py CHANGED
@@ -33,11 +33,11 @@ class Dirs(SimpleNamespace):
33
33
  # The name of the utils file.
34
34
  UTILS = "utils"
35
35
  # The name of the state file.
36
- STATE_PATH = "/".join([UTILS, "state"])
36
+ STATE_PATH = UTILS + "/state"
37
37
  # The name of the components file.
38
- COMPONENTS_PATH = "/".join([UTILS, "components"])
38
+ COMPONENTS_PATH = UTILS + "/components"
39
39
  # The name of the contexts file.
40
- CONTEXTS_PATH = "/".join([UTILS, "context"])
40
+ CONTEXTS_PATH = UTILS + "/context"
41
41
  # The name of the output static directory.
42
42
  STATIC = "_static"
43
43
  # The name of the public html directory served at "/"
@@ -147,7 +147,7 @@ class Templates(SimpleNamespace):
147
147
  Returns:
148
148
  The URL to redirect to reflex.build.
149
149
  """
150
- from reflex.config import environment
150
+ from reflex.environment import environment
151
151
 
152
152
  return (
153
153
  environment.REFLEX_BUILD_FRONTEND.get()
@@ -162,7 +162,7 @@ class Templates(SimpleNamespace):
162
162
  Returns:
163
163
  The URL to poll waiting for the user to select a generation.
164
164
  """
165
- from reflex.config import environment
165
+ from reflex.environment import environment
166
166
 
167
167
  return environment.REFLEX_BUILD_BACKEND.get() + "/api/init/{reflex_init_token}"
168
168
 
@@ -174,7 +174,7 @@ class Templates(SimpleNamespace):
174
174
  Returns:
175
175
  The URL to fetch the generation's reflex code.
176
176
  """
177
- from reflex.config import environment
177
+ from reflex.environment import environment
178
178
 
179
179
  return (
180
180
  environment.REFLEX_BUILD_BACKEND.get()
@@ -176,6 +176,13 @@ DATA_DASH = "data-"
176
176
  ARIA_UNDERSCORE = "aria_"
177
177
  ARIA_DASH = "aria-"
178
178
 
179
+ SPECIAL_ATTRS = (
180
+ DATA_UNDERSCORE,
181
+ DATA_DASH,
182
+ ARIA_UNDERSCORE,
183
+ ARIA_DASH,
184
+ )
185
+
179
186
 
180
187
  class SpecialAttributes(enum.Enum):
181
188
  """Special attributes for components.
@@ -194,9 +201,4 @@ class SpecialAttributes(enum.Enum):
194
201
  Returns:
195
202
  True if the attribute is special.
196
203
  """
197
- return (
198
- attr.startswith(DATA_UNDERSCORE)
199
- or attr.startswith(DATA_DASH)
200
- or attr.startswith(ARIA_UNDERSCORE)
201
- or attr.startswith(ARIA_DASH)
202
- )
204
+ return attr.startswith(SPECIAL_ATTRS)
@@ -14,7 +14,7 @@ class Bun(SimpleNamespace):
14
14
  """Bun constants."""
15
15
 
16
16
  # The Bun version.
17
- VERSION = "1.2.13"
17
+ VERSION = "1.2.15"
18
18
 
19
19
  # Min Bun Version
20
20
  MIN_VERSION = "1.2.8"
@@ -38,7 +38,7 @@ class Bun(SimpleNamespace):
38
38
  Returns:
39
39
  The directory to store the bun.
40
40
  """
41
- from reflex.config import environment
41
+ from reflex.environment import environment
42
42
 
43
43
  return environment.REFLEX_DIR.get() / "bun"
44
44
 
@@ -113,22 +113,31 @@ class PackageJson(SimpleNamespace):
113
113
 
114
114
  _react_version = _determine_react_version()
115
115
 
116
- DEPENDENCIES = {
117
- "@emotion/react": "11.14.0",
118
- "axios": "1.9.0",
119
- "json5": "2.2.3",
120
- "next": _determine_nextjs_version(),
121
- "next-sitemap": "4.2.3",
122
- "next-themes": "0.4.6",
123
- "react": _react_version,
124
- "react-dom": _react_version,
125
- "react-focus-lock": "2.13.6",
126
- "socket.io-client": "4.8.1",
127
- "universal-cookie": "7.2.2",
128
- }
116
+ @classproperty
117
+ @classmethod
118
+ def DEPENDENCIES(cls) -> dict[str, str]:
119
+ """The dependencies to include in package.json.
120
+
121
+ Returns:
122
+ A dictionary of dependencies with their versions.
123
+ """
124
+ return {
125
+ "@emotion/react": "11.14.0",
126
+ "axios": "1.9.0",
127
+ "json5": "2.2.3",
128
+ "next": _determine_nextjs_version(),
129
+ "next-sitemap": "4.2.3",
130
+ "next-themes": "0.4.6",
131
+ "react": cls._react_version,
132
+ "react-dom": cls._react_version,
133
+ "react-focus-lock": "2.13.6",
134
+ "socket.io-client": "4.8.1",
135
+ "universal-cookie": "7.2.2",
136
+ }
137
+
129
138
  DEV_DEPENDENCIES = {
130
139
  "autoprefixer": "10.4.21",
131
- "postcss": "8.5.3",
140
+ "postcss": "8.5.4",
132
141
  "postcss-import": "16.1.0",
133
142
  }
134
143
  OVERRIDES = {
@@ -35,7 +35,6 @@ def set_loglevel(ctx: Any, self: Any, value: str | None):
35
35
  @click.group
36
36
  def custom_components_cli():
37
37
  """CLI for creating custom components."""
38
- pass
39
38
 
40
39
 
41
40
  loglevel_option = click.option(
@@ -575,7 +574,7 @@ def _validate_url_with_protocol_prefix(url: str | None) -> bool:
575
574
  Returns:
576
575
  Whether the entered URL is acceptable.
577
576
  """
578
- return not url or (url.startswith("http://") or url.startswith("https://"))
577
+ return not url or (url.startswith(("http://", "https://")))
579
578
 
580
579
 
581
580
  def _get_file_from_prompt_in_loop() -> tuple[bytes, str] | None: