reflex 0.7.1a3__tar.gz → 0.7.2a1__tar.gz

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 (457) hide show
  1. {reflex-0.7.1a3 → reflex-0.7.2a1}/PKG-INFO +3 -6
  2. {reflex-0.7.1a3 → reflex-0.7.2a1}/README.md +2 -5
  3. {reflex-0.7.1a3 → reflex-0.7.2a1}/pyproject.toml +1 -1
  4. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/jinja/web/utils/context.js.jinja2 +8 -8
  5. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +3 -3
  6. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/admin.py +1 -2
  7. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/app.py +53 -50
  8. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/app_mixins/lifespan.py +2 -2
  9. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/app_mixins/middleware.py +1 -2
  10. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/assets.py +1 -2
  11. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/base.py +2 -2
  12. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/compiler/compiler.py +51 -16
  13. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/compiler/utils.py +4 -13
  14. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/base/app_wrap.pyi +7 -7
  15. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/base/bare.py +3 -3
  16. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/base/body.pyi +7 -7
  17. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/base/document.py +1 -3
  18. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/base/document.pyi +32 -32
  19. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/base/error_boundary.py +2 -4
  20. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/base/error_boundary.pyi +11 -13
  21. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/base/fragment.pyi +7 -7
  22. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/base/head.pyi +13 -13
  23. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/base/link.pyi +22 -22
  24. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/base/meta.py +5 -7
  25. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/base/meta.pyi +40 -40
  26. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/base/script.pyi +11 -14
  27. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/base/strict_mode.pyi +7 -7
  28. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/component.py +188 -113
  29. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/core/auto_scroll.py +8 -1
  30. reflex-0.7.2a1/reflex/components/core/auto_scroll.pyi +257 -0
  31. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/core/banner.py +2 -4
  32. reflex-0.7.2a1/reflex/components/core/banner.pyi +701 -0
  33. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/core/breakpoints.py +5 -5
  34. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/core/client_side_routing.pyi +14 -14
  35. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/core/clipboard.py +4 -4
  36. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/core/clipboard.pyi +12 -14
  37. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/core/cond.py +17 -25
  38. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/core/debounce.py +3 -3
  39. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/core/debounce.pyi +14 -14
  40. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/core/foreach.py +7 -2
  41. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/core/html.py +1 -3
  42. reflex-0.7.2a1/reflex/components/core/html.pyi +258 -0
  43. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/core/match.py +15 -19
  44. reflex-0.7.2a1/reflex/components/core/sticky.pyi +1085 -0
  45. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/core/upload.py +4 -4
  46. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/core/upload.pyi +62 -62
  47. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/datadisplay/code.py +6 -6
  48. reflex-0.7.2a1/reflex/components/datadisplay/code.pyi +1617 -0
  49. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/datadisplay/dataeditor.py +49 -49
  50. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/datadisplay/dataeditor.pyi +95 -123
  51. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/datadisplay/logo.py +1 -3
  52. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/datadisplay/shiki_code_block.py +8 -10
  53. reflex-0.7.2a1/reflex/components/datadisplay/shiki_code_block.pyi +2190 -0
  54. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/el/element.pyi +7 -7
  55. reflex-0.7.2a1/reflex/components/el/elements/base.pyi +329 -0
  56. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/el/elements/forms.py +23 -23
  57. reflex-0.7.2a1/reflex/components/el/elements/forms.pyi +3533 -0
  58. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/el/elements/inline.py +4 -4
  59. reflex-0.7.2a1/reflex/components/el/elements/inline.pyi +6822 -0
  60. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/el/elements/media.py +47 -47
  61. reflex-0.7.2a1/reflex/components/el/elements/media.pyi +6360 -0
  62. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/el/elements/metadata.py +1 -3
  63. reflex-0.7.2a1/reflex/components/el/elements/metadata.pyi +1127 -0
  64. reflex-0.7.2a1/reflex/components/el/elements/other.pyi +1706 -0
  65. reflex-0.7.2a1/reflex/components/el/elements/scripts.pyi +778 -0
  66. reflex-0.7.2a1/reflex/components/el/elements/sectioning.pyi +3628 -0
  67. reflex-0.7.2a1/reflex/components/el/elements/tables.pyi +2455 -0
  68. reflex-0.7.2a1/reflex/components/el/elements/typography.pyi +3647 -0
  69. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/gridjs/datatable.py +7 -7
  70. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/gridjs/datatable.pyi +19 -19
  71. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/lucide/icon.pyi +21 -21
  72. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/markdown/markdown.py +2 -2
  73. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/markdown/markdown.pyi +9 -9
  74. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/moment/moment.py +11 -12
  75. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/moment/moment.pyi +44 -47
  76. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/next/base.pyi +7 -7
  77. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/next/image.py +3 -3
  78. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/next/image.pyi +19 -21
  79. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/next/link.pyi +9 -9
  80. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/next/video.py +1 -3
  81. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/next/video.pyi +9 -9
  82. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/plotly/plotly.py +22 -45
  83. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/plotly/plotly.pyi +164 -164
  84. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/primitives/accordion.py +14 -14
  85. reflex-0.7.2a1/reflex/components/radix/primitives/accordion.pyi +802 -0
  86. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/primitives/base.py +1 -3
  87. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/primitives/base.pyi +15 -15
  88. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/primitives/drawer.py +3 -3
  89. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/primitives/drawer.pyi +110 -116
  90. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/primitives/form.py +1 -1
  91. reflex-0.7.2a1/reflex/components/radix/primitives/form.pyi +1236 -0
  92. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/primitives/progress.py +6 -6
  93. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/primitives/progress.pyi +225 -243
  94. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/primitives/slider.py +6 -6
  95. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/primitives/slider.pyi +52 -55
  96. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/base.py +3 -6
  97. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/base.pyi +197 -303
  98. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/color_mode.py +5 -5
  99. reflex-0.7.2a1/reflex/components/radix/themes/color_mode.pyi +563 -0
  100. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/alert_dialog.pyi +229 -262
  101. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/aspect_ratio.py +1 -3
  102. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/aspect_ratio.pyi +8 -8
  103. reflex-0.7.2a1/reflex/components/radix/themes/components/avatar.pyi +146 -0
  104. reflex-0.7.2a1/reflex/components/radix/themes/components/badge.pyi +334 -0
  105. reflex-0.7.2a1/reflex/components/radix/themes/components/button.pyi +366 -0
  106. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/callout.py +2 -2
  107. reflex-0.7.2a1/reflex/components/radix/themes/components/callout.pyi +1457 -0
  108. reflex-0.7.2a1/reflex/components/radix/themes/components/card.pyi +273 -0
  109. reflex-0.7.2a1/reflex/components/radix/themes/components/checkbox.pyi +425 -0
  110. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/checkbox_cards.py +3 -7
  111. reflex-0.7.2a1/reflex/components/radix/themes/components/checkbox_cards.pyi +213 -0
  112. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/checkbox_group.py +2 -2
  113. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/checkbox_group.pyi +83 -96
  114. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/context_menu.py +18 -15
  115. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/context_menu.pyi +408 -458
  116. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/data_list.pyi +122 -147
  117. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/dialog.pyi +231 -264
  118. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/dropdown_menu.py +16 -13
  119. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/dropdown_menu.pyi +223 -246
  120. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/hover_card.py +2 -2
  121. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/hover_card.pyi +237 -282
  122. reflex-0.7.2a1/reflex/components/radix/themes/components/icon_button.pyi +369 -0
  123. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/inset.py +8 -8
  124. reflex-0.7.2a1/reflex/components/radix/themes/components/inset.pyi +319 -0
  125. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/popover.py +2 -2
  126. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/popover.pyi +229 -271
  127. reflex-0.7.2a1/reflex/components/radix/themes/components/progress.pyi +144 -0
  128. reflex-0.7.2a1/reflex/components/radix/themes/components/radio.pyi +135 -0
  129. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/radio_cards.py +4 -8
  130. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/radio_cards.pyi +117 -154
  131. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/radio_group.py +3 -3
  132. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/radio_group.pyi +250 -291
  133. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/scroll_area.pyi +14 -20
  134. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/segmented_control.py +6 -6
  135. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/segmented_control.pyi +89 -108
  136. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/select.py +7 -7
  137. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/select.pyi +376 -444
  138. reflex-0.7.2a1/reflex/components/radix/themes/components/separator.pyi +143 -0
  139. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/skeleton.pyi +32 -26
  140. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/slider.py +8 -8
  141. reflex-0.7.2a1/reflex/components/radix/themes/components/slider.pyi +184 -0
  142. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/spinner.pyi +12 -19
  143. reflex-0.7.2a1/reflex/components/radix/themes/components/switch.pyi +157 -0
  144. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/table.py +9 -9
  145. reflex-0.7.2a1/reflex/components/radix/themes/components/table.pyi +1934 -0
  146. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/tabs.py +4 -4
  147. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/tabs.pyi +120 -132
  148. reflex-0.7.2a1/reflex/components/radix/themes/components/text_area.pyi +390 -0
  149. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/text_field.py +2 -2
  150. reflex-0.7.2a1/reflex/components/radix/themes/components/text_field.pyi +903 -0
  151. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/tooltip.py +6 -6
  152. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/tooltip.pyi +34 -43
  153. reflex-0.7.2a1/reflex/components/radix/themes/layout/base.pyi +158 -0
  154. reflex-0.7.2a1/reflex/components/radix/themes/layout/box.pyi +258 -0
  155. reflex-0.7.2a1/reflex/components/radix/themes/layout/center.pyi +307 -0
  156. reflex-0.7.2a1/reflex/components/radix/themes/layout/container.pyi +246 -0
  157. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/layout/flex.py +2 -2
  158. reflex-0.7.2a1/reflex/components/radix/themes/layout/flex.pyi +310 -0
  159. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/layout/grid.py +2 -2
  160. reflex-0.7.2a1/reflex/components/radix/themes/layout/grid.pyi +333 -0
  161. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/layout/list.py +2 -2
  162. reflex-0.7.2a1/reflex/components/radix/themes/layout/list.pyi +1020 -0
  163. reflex-0.7.2a1/reflex/components/radix/themes/layout/section.pyi +266 -0
  164. reflex-0.7.2a1/reflex/components/radix/themes/layout/spacer.pyi +307 -0
  165. reflex-0.7.2a1/reflex/components/radix/themes/layout/stack.pyi +833 -0
  166. reflex-0.7.2a1/reflex/components/radix/themes/typography/blockquote.pyi +339 -0
  167. reflex-0.7.2a1/reflex/components/radix/themes/typography/code.pyi +342 -0
  168. reflex-0.7.2a1/reflex/components/radix/themes/typography/heading.pyi +358 -0
  169. reflex-0.7.2a1/reflex/components/radix/themes/typography/link.pyi +404 -0
  170. reflex-0.7.2a1/reflex/components/radix/themes/typography/text.pyi +2170 -0
  171. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/react_player/audio.pyi +20 -22
  172. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/react_player/react_player.pyi +19 -19
  173. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/react_player/video.pyi +20 -22
  174. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/recharts/cartesian.py +100 -97
  175. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/recharts/cartesian.pyi +891 -1007
  176. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/recharts/charts.py +42 -42
  177. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/recharts/charts.pyi +212 -249
  178. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/recharts/general.py +22 -21
  179. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/recharts/general.pyi +198 -223
  180. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/recharts/polar.py +42 -45
  181. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/recharts/polar.pyi +254 -288
  182. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/recharts/recharts.pyi +13 -13
  183. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/sonner/toast.py +20 -20
  184. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/sonner/toast.pyi +58 -61
  185. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/suneditor/editor.py +9 -9
  186. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/suneditor/editor.pyi +78 -83
  187. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/tags/cond_tag.py +2 -2
  188. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/tags/iter_tag.py +10 -14
  189. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/tags/match_tag.py +2 -2
  190. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/tags/tag.py +10 -10
  191. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/config.py +36 -35
  192. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/constants/__init__.py +56 -53
  193. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/custom_components/custom_components.py +6 -7
  194. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/event.py +38 -42
  195. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/experimental/client_state.py +2 -4
  196. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/experimental/layout.py +2 -2
  197. reflex-0.7.2a1/reflex/experimental/layout.pyi +793 -0
  198. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/istate/data.py +4 -5
  199. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/middleware/hydrate_middleware.py +2 -2
  200. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/middleware/middleware.py +2 -2
  201. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/model.py +3 -5
  202. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/page.py +2 -2
  203. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/reflex.py +9 -10
  204. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/state.py +77 -49
  205. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/style.py +9 -3
  206. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/testing.py +21 -24
  207. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/utils/console.py +1 -1
  208. reflex-0.7.2a1/reflex/utils/decorator.py +50 -0
  209. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/utils/exec.py +6 -11
  210. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/utils/export.py +2 -3
  211. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/utils/format.py +4 -4
  212. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/utils/imports.py +12 -12
  213. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/utils/prerequisites.py +35 -84
  214. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/utils/processes.py +5 -5
  215. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/utils/pyi_generator.py +33 -22
  216. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/utils/serializers.py +60 -15
  217. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/utils/types.py +237 -56
  218. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/vars/base.py +122 -72
  219. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/vars/datetime.py +2 -2
  220. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/vars/function.py +52 -55
  221. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/vars/number.py +59 -5
  222. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/vars/object.py +57 -26
  223. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/vars/sequence.py +983 -958
  224. reflex-0.7.1a3/reflex/components/core/auto_scroll.pyi +0 -284
  225. reflex-0.7.1a3/reflex/components/core/banner.pyi +0 -755
  226. reflex-0.7.1a3/reflex/components/core/html.pyi +0 -287
  227. reflex-0.7.1a3/reflex/components/core/sticky.pyi +0 -1233
  228. reflex-0.7.1a3/reflex/components/datadisplay/code.pyi +0 -1623
  229. reflex-0.7.1a3/reflex/components/datadisplay/shiki_code_block.pyi +0 -2232
  230. reflex-0.7.1a3/reflex/components/el/elements/base.pyi +0 -356
  231. reflex-0.7.1a3/reflex/components/el/elements/forms.pyi +0 -3895
  232. reflex-0.7.1a3/reflex/components/el/elements/inline.pyi +0 -7584
  233. reflex-0.7.1a3/reflex/components/el/elements/media.pyi +0 -7058
  234. reflex-0.7.1a3/reflex/components/el/elements/metadata.pyi +0 -1241
  235. reflex-0.7.1a3/reflex/components/el/elements/other.pyi +0 -1895
  236. reflex-0.7.1a3/reflex/components/el/elements/scripts.pyi +0 -865
  237. reflex-0.7.1a3/reflex/components/el/elements/sectioning.pyi +0 -4033
  238. reflex-0.7.1a3/reflex/components/el/elements/tables.pyi +0 -2734
  239. reflex-0.7.1a3/reflex/components/el/elements/typography.pyi +0 -4054
  240. reflex-0.7.1a3/reflex/components/radix/primitives/accordion.pyi +0 -850
  241. reflex-0.7.1a3/reflex/components/radix/primitives/form.pyi +0 -1320
  242. reflex-0.7.1a3/reflex/components/radix/themes/color_mode.pyi +0 -633
  243. reflex-0.7.1a3/reflex/components/radix/themes/components/avatar.pyi +0 -161
  244. reflex-0.7.1a3/reflex/components/radix/themes/components/badge.pyi +0 -377
  245. reflex-0.7.1a3/reflex/components/radix/themes/components/button.pyi +0 -411
  246. reflex-0.7.1a3/reflex/components/radix/themes/components/callout.pyi +0 -1631
  247. reflex-0.7.1a3/reflex/components/radix/themes/components/card.pyi +0 -308
  248. reflex-0.7.1a3/reflex/components/radix/themes/components/checkbox.pyi +0 -460
  249. reflex-0.7.1a3/reflex/components/radix/themes/components/checkbox_cards.pyi +0 -247
  250. reflex-0.7.1a3/reflex/components/radix/themes/components/icon_button.pyi +0 -414
  251. reflex-0.7.1a3/reflex/components/radix/themes/components/inset.pyi +0 -379
  252. reflex-0.7.1a3/reflex/components/radix/themes/components/progress.pyi +0 -160
  253. reflex-0.7.1a3/reflex/components/radix/themes/components/radio.pyi +0 -148
  254. reflex-0.7.1a3/reflex/components/radix/themes/components/separator.pyi +0 -157
  255. reflex-0.7.1a3/reflex/components/radix/themes/components/slider.pyi +0 -207
  256. reflex-0.7.1a3/reflex/components/radix/themes/components/switch.pyi +0 -172
  257. reflex-0.7.1a3/reflex/components/radix/themes/components/table.pyi +0 -2288
  258. reflex-0.7.1a3/reflex/components/radix/themes/components/text_area.pyi +0 -440
  259. reflex-0.7.1a3/reflex/components/radix/themes/components/text_field.pyi +0 -998
  260. reflex-0.7.1a3/reflex/components/radix/themes/layout/base.pyi +0 -255
  261. reflex-0.7.1a3/reflex/components/radix/themes/layout/box.pyi +0 -285
  262. reflex-0.7.1a3/reflex/components/radix/themes/layout/center.pyi +0 -368
  263. reflex-0.7.1a3/reflex/components/radix/themes/layout/container.pyi +0 -279
  264. reflex-0.7.1a3/reflex/components/radix/themes/layout/flex.pyi +0 -371
  265. reflex-0.7.1a3/reflex/components/radix/themes/layout/grid.pyi +0 -403
  266. reflex-0.7.1a3/reflex/components/radix/themes/layout/list.pyi +0 -1123
  267. reflex-0.7.1a3/reflex/components/radix/themes/layout/section.pyi +0 -300
  268. reflex-0.7.1a3/reflex/components/radix/themes/layout/spacer.pyi +0 -368
  269. reflex-0.7.1a3/reflex/components/radix/themes/layout/stack.pyi +0 -976
  270. reflex-0.7.1a3/reflex/components/radix/themes/typography/blockquote.pyi +0 -381
  271. reflex-0.7.1a3/reflex/components/radix/themes/typography/code.pyi +0 -387
  272. reflex-0.7.1a3/reflex/components/radix/themes/typography/heading.pyi +0 -410
  273. reflex-0.7.1a3/reflex/components/radix/themes/typography/link.pyi +0 -460
  274. reflex-0.7.1a3/reflex/components/radix/themes/typography/text.pyi +0 -2446
  275. reflex-0.7.1a3/reflex/experimental/layout.pyi +0 -877
  276. reflex-0.7.1a3/reflex/utils/decorator.py +0 -25
  277. {reflex-0.7.1a3 → reflex-0.7.2a1}/LICENSE +0 -0
  278. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/apps/blank/assets/favicon.ico +0 -0
  279. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/apps/blank/code/__init__.py +0 -0
  280. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/apps/blank/code/blank.py +0 -0
  281. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/jinja/app/rxconfig.py.jinja2 +0 -0
  282. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/jinja/custom_components/README.md.jinja2 +0 -0
  283. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/jinja/custom_components/__init__.py.jinja2 +0 -0
  284. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/jinja/custom_components/demo_app.py.jinja2 +0 -0
  285. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/jinja/custom_components/pyproject.toml.jinja2 +0 -0
  286. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/jinja/custom_components/src.py.jinja2 +0 -0
  287. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/jinja/web/package.json.jinja2 +0 -0
  288. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/jinja/web/pages/_app.js.jinja2 +0 -0
  289. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/jinja/web/pages/_document.js.jinja2 +0 -0
  290. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/jinja/web/pages/base_page.js.jinja2 +0 -0
  291. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/jinja/web/pages/component.js.jinja2 +0 -0
  292. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/jinja/web/pages/custom_component.js.jinja2 +0 -0
  293. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/jinja/web/pages/index.js.jinja2 +0 -0
  294. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/jinja/web/pages/macros.js.jinja2 +0 -0
  295. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/jinja/web/pages/stateful_component.js.jinja2 +0 -0
  296. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/jinja/web/pages/stateful_components.js.jinja2 +0 -0
  297. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/jinja/web/pages/utils.js.jinja2 +0 -0
  298. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/jinja/web/styles/styles.css.jinja2 +0 -0
  299. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/jinja/web/tailwind.config.js.jinja2 +0 -0
  300. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/jinja/web/utils/theme.js.jinja2 +0 -0
  301. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/web/.gitignore +0 -0
  302. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/web/components/shiki/code.js +0 -0
  303. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/web/jsconfig.json +0 -0
  304. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/web/next.config.js +0 -0
  305. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/web/postcss.config.js +0 -0
  306. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/web/styles/tailwind.css +0 -0
  307. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/web/utils/client_side_routing.js +0 -0
  308. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/web/utils/helpers/dataeditor.js +0 -0
  309. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/web/utils/helpers/debounce.js +0 -0
  310. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/web/utils/helpers/paste.js +0 -0
  311. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/web/utils/helpers/range.js +0 -0
  312. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/web/utils/helpers/throttle.js +0 -0
  313. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/.templates/web/utils/state.js +0 -0
  314. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/__init__.py +0 -0
  315. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/__init__.pyi +0 -0
  316. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/__main__.py +0 -0
  317. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/app_mixins/__init__.py +0 -0
  318. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/app_mixins/mixin.py +0 -0
  319. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/app_module_for_backend.py +0 -0
  320. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/compiler/__init__.py +0 -0
  321. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/compiler/templates.py +0 -0
  322. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/__init__.py +0 -0
  323. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/__init__.pyi +0 -0
  324. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/base/__init__.py +0 -0
  325. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/base/__init__.pyi +0 -0
  326. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/base/app_wrap.py +0 -0
  327. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/base/body.py +0 -0
  328. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/base/fragment.py +0 -0
  329. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/base/head.py +0 -0
  330. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/base/link.py +0 -0
  331. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/base/script.py +0 -0
  332. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/base/strict_mode.py +0 -0
  333. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/core/__init__.py +0 -0
  334. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/core/__init__.pyi +0 -0
  335. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/core/client_side_routing.py +0 -0
  336. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/core/colors.py +0 -0
  337. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/core/layout/__init__.py +0 -0
  338. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/core/responsive.py +0 -0
  339. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/core/sticky.py +0 -0
  340. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/datadisplay/__init__.py +0 -0
  341. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/datadisplay/__init__.pyi +0 -0
  342. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/dynamic.py +0 -0
  343. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/el/__init__.py +0 -0
  344. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/el/__init__.pyi +0 -0
  345. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/el/constants/__init__.py +0 -0
  346. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/el/constants/html.py +0 -0
  347. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/el/constants/react.py +0 -0
  348. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/el/constants/reflex.py +0 -0
  349. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/el/element.py +0 -0
  350. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/el/elements/__init__.py +0 -0
  351. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/el/elements/__init__.pyi +0 -0
  352. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/el/elements/base.py +0 -0
  353. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/el/elements/other.py +0 -0
  354. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/el/elements/scripts.py +0 -0
  355. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/el/elements/sectioning.py +0 -0
  356. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/el/elements/tables.py +0 -0
  357. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/el/elements/typography.py +0 -0
  358. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/gridjs/__init__.py +0 -0
  359. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/literals.py +0 -0
  360. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/lucide/__init__.py +0 -0
  361. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/lucide/icon.py +0 -0
  362. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/markdown/__init__.py +0 -0
  363. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/moment/__init__.py +0 -0
  364. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/next/__init__.py +0 -0
  365. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/next/base.py +0 -0
  366. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/next/link.py +0 -0
  367. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/plotly/__init__.py +0 -0
  368. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/props.py +0 -0
  369. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/__init__.py +0 -0
  370. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/__init__.pyi +0 -0
  371. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/primitives/__init__.py +0 -0
  372. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/primitives/__init__.pyi +0 -0
  373. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/__init__.py +0 -0
  374. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/__init__.pyi +0 -0
  375. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/__init__.py +0 -0
  376. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/__init__.pyi +0 -0
  377. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/alert_dialog.py +0 -0
  378. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/avatar.py +0 -0
  379. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/badge.py +0 -0
  380. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/button.py +0 -0
  381. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/card.py +0 -0
  382. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/checkbox.py +0 -0
  383. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/data_list.py +0 -0
  384. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/dialog.py +0 -0
  385. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/icon_button.py +0 -0
  386. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/progress.py +0 -0
  387. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/radio.py +0 -0
  388. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/scroll_area.py +0 -0
  389. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/separator.py +0 -0
  390. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/skeleton.py +0 -0
  391. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/spinner.py +0 -0
  392. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/switch.py +0 -0
  393. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/components/text_area.py +0 -0
  394. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/layout/__init__.py +0 -0
  395. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/layout/__init__.pyi +0 -0
  396. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/layout/base.py +0 -0
  397. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/layout/box.py +0 -0
  398. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/layout/center.py +0 -0
  399. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/layout/container.py +0 -0
  400. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/layout/section.py +0 -0
  401. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/layout/spacer.py +0 -0
  402. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/layout/stack.py +0 -0
  403. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/typography/__init__.py +0 -0
  404. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/typography/__init__.pyi +0 -0
  405. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/typography/base.py +0 -0
  406. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/typography/blockquote.py +0 -0
  407. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/typography/code.py +0 -0
  408. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/typography/heading.py +0 -0
  409. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/typography/link.py +0 -0
  410. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/radix/themes/typography/text.py +0 -0
  411. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/react_player/__init__.py +0 -0
  412. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/react_player/audio.py +0 -0
  413. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/react_player/react_player.py +0 -0
  414. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/react_player/video.py +0 -0
  415. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/recharts/__init__.py +0 -0
  416. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/recharts/__init__.pyi +0 -0
  417. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/recharts/recharts.py +0 -0
  418. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/sonner/__init__.py +0 -0
  419. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/suneditor/__init__.py +0 -0
  420. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/tags/__init__.py +0 -0
  421. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/components/tags/tagless.py +0 -0
  422. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/constants/base.py +0 -0
  423. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/constants/colors.py +0 -0
  424. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/constants/compiler.py +0 -0
  425. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/constants/config.py +0 -0
  426. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/constants/custom_components.py +0 -0
  427. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/constants/event.py +0 -0
  428. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/constants/installer.py +0 -0
  429. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/constants/route.py +0 -0
  430. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/constants/state.py +0 -0
  431. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/constants/style.py +0 -0
  432. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/constants/utils.py +0 -0
  433. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/custom_components/__init__.py +0 -0
  434. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/experimental/__init__.py +0 -0
  435. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/experimental/hooks.py +0 -0
  436. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/experimental/misc.py +0 -0
  437. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/istate/__init__.py +0 -0
  438. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/istate/dynamic.py +0 -0
  439. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/istate/proxy.py +0 -0
  440. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/istate/storage.py +0 -0
  441. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/istate/wrappers.py +0 -0
  442. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/middleware/__init__.py +0 -0
  443. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/py.typed +0 -0
  444. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/route.py +0 -0
  445. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/utils/__init__.py +0 -0
  446. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/utils/build.py +0 -0
  447. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/utils/codespaces.py +0 -0
  448. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/utils/compat.py +0 -0
  449. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/utils/exceptions.py +0 -0
  450. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/utils/lazy_loader.py +0 -0
  451. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/utils/net.py +0 -0
  452. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/utils/path_ops.py +0 -0
  453. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/utils/redir.py +0 -0
  454. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/utils/registry.py +0 -0
  455. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/utils/telemetry.py +0 -0
  456. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/vars/__init__.py +0 -0
  457. {reflex-0.7.1a3 → reflex-0.7.2a1}/reflex/vars/dep_tracking.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: reflex
3
- Version: 0.7.1a3
3
+ Version: 0.7.2a1
4
4
  Summary: Web apps in pure Python.
5
5
  License: Apache-2.0
6
6
  Keywords: web,framework
@@ -48,9 +48,6 @@ Project-URL: Homepage, https://reflex.dev
48
48
  Project-URL: Repository, https://github.com/reflex-dev/reflex
49
49
  Description-Content-Type: text/markdown
50
50
 
51
- ```diff
52
- + Searching for Pynecone? You are in the right repo. Pynecone has been renamed to Reflex. +
53
- ```
54
51
 
55
52
  <div align="center">
56
53
  <img src="https://raw.githubusercontent.com/reflex-dev/reflex/main/docs/images/reflex_dark.svg#gh-light-mode-only" alt="Reflex Logo" width="300px">
@@ -287,9 +284,9 @@ You can create a multi-page app by adding more pages.
287
284
 
288
285
  Reflex launched in December 2022 with the name Pynecone.
289
286
 
290
- As of February 2024, our hosting service is in alpha! During this time anyone can deploy their apps for free. See our [roadmap](https://github.com/reflex-dev/reflex/issues/2727) to see what's planned.
287
+ Beginning in 2025, [Reflex Cloud](https://cloud.reflex.dev) has launched to provide the best hosting experience for Reflex apps. We will continue to develop it and implement more features.
291
288
 
292
- Reflex has new releases and features coming every week! Make sure to :star: star and :eyes: watch this repository to stay up to date.
289
+ Reflex has new releases and features coming every other week! Make sure to :star: star and :eyes: watch this repository to stay up to date.
293
290
 
294
291
  ## Contributing
295
292
 
@@ -1,6 +1,3 @@
1
- ```diff
2
- + Searching for Pynecone? You are in the right repo. Pynecone has been renamed to Reflex. +
3
- ```
4
1
 
5
2
  <div align="center">
6
3
  <img src="https://raw.githubusercontent.com/reflex-dev/reflex/main/docs/images/reflex_dark.svg#gh-light-mode-only" alt="Reflex Logo" width="300px">
@@ -237,9 +234,9 @@ You can create a multi-page app by adding more pages.
237
234
 
238
235
  Reflex launched in December 2022 with the name Pynecone.
239
236
 
240
- As of February 2024, our hosting service is in alpha! During this time anyone can deploy their apps for free. See our [roadmap](https://github.com/reflex-dev/reflex/issues/2727) to see what's planned.
237
+ Beginning in 2025, [Reflex Cloud](https://cloud.reflex.dev) has launched to provide the best hosting experience for Reflex apps. We will continue to develop it and implement more features.
241
238
 
242
- Reflex has new releases and features coming every week! Make sure to :star: star and :eyes: watch this repository to stay up to date.
239
+ Reflex has new releases and features coming every other week! Make sure to :star: star and :eyes: watch this repository to stay up to date.
243
240
 
244
241
  ## Contributing
245
242
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "reflex"
3
- version = "0.7.1a3"
3
+ version = "0.7.2a1"
4
4
  description = "Web apps in pure Python."
5
5
  license = "Apache-2.0"
6
6
  authors = [
@@ -78,9 +78,9 @@ export function UploadFilesProvider({ children }) {
78
78
  return newFilesById
79
79
  })
80
80
  return (
81
- <UploadFilesContext.Provider value={[filesById, setFilesById]}>
81
+ <UploadFilesContext value={[filesById, setFilesById]}>
82
82
  {children}
83
- </UploadFilesContext.Provider>
83
+ </UploadFilesContext>
84
84
  )
85
85
  }
86
86
 
@@ -92,9 +92,9 @@ export function EventLoopProvider({ children }) {
92
92
  clientStorage,
93
93
  )
94
94
  return (
95
- <EventLoopContext.Provider value={[addEvents, connectErrors]}>
95
+ <EventLoopContext value={[addEvents, connectErrors]}>
96
96
  {children}
97
- </EventLoopContext.Provider>
97
+ </EventLoopContext>
98
98
  )
99
99
  }
100
100
 
@@ -112,13 +112,13 @@ export function StateProvider({ children }) {
112
112
 
113
113
  return (
114
114
  {% for state_name in initial_state %}
115
- <StateContexts.{{state_name|var_name}}.Provider value={ {{state_name|var_name}} }>
115
+ <StateContexts.{{state_name|var_name}} value={ {{state_name|var_name}} }>
116
116
  {% endfor %}
117
- <DispatchContext.Provider value={dispatchers}>
117
+ <DispatchContext value={dispatchers}>
118
118
  {children}
119
- </DispatchContext.Provider>
119
+ </DispatchContext>
120
120
  {% for state_name in initial_state|reverse %}
121
- </StateContexts.{{state_name|var_name}}.Provider>
121
+ </StateContexts.{{state_name|var_name}}>
122
122
  {% endfor %}
123
123
  )
124
124
  }
@@ -36,17 +36,17 @@ export default function RadixThemesColorModeProvider({ children }) {
36
36
  const allowedModes = ["light", "dark", "system"];
37
37
  if (!allowedModes.includes(mode)) {
38
38
  console.error(
39
- `Invalid color mode "${mode}". Defaulting to "${defaultColorMode}".`
39
+ `Invalid color mode "${mode}". Defaulting to "${defaultColorMode}".`,
40
40
  );
41
41
  mode = defaultColorMode;
42
42
  }
43
43
  setTheme(mode);
44
44
  };
45
45
  return (
46
- <ColorModeContext.Provider
46
+ <ColorModeContext
47
47
  value={{ rawColorMode, resolvedColorMode, toggleColorMode, setColorMode }}
48
48
  >
49
49
  {children}
50
- </ColorModeContext.Provider>
50
+ </ColorModeContext>
51
51
  );
52
52
  }
@@ -1,7 +1,6 @@
1
1
  """The Reflex Admin Dashboard."""
2
2
 
3
3
  from dataclasses import dataclass, field
4
- from typing import Optional
5
4
 
6
5
  from starlette_admin.base import BaseAdmin as Admin
7
6
 
@@ -12,4 +11,4 @@ class AdminDash:
12
11
 
13
12
  models: list = field(default_factory=list)
14
13
  view_overrides: dict = field(default_factory=dict)
15
- admin: Optional[Admin] = None
14
+ admin: Admin | None = None
@@ -25,12 +25,8 @@ from typing import (
25
25
  Callable,
26
26
  Coroutine,
27
27
  Dict,
28
- List,
29
28
  MutableMapping,
30
- Optional,
31
- Set,
32
29
  Type,
33
- Union,
34
30
  get_args,
35
31
  get_type_hints,
36
32
  )
@@ -167,7 +163,7 @@ def default_backend_exception_handler(exception: Exception) -> EventSpec:
167
163
  )
168
164
 
169
165
 
170
- def extra_overlay_function() -> Optional[Component]:
166
+ def extra_overlay_function() -> Component | None:
171
167
  """Extra overlay function to add to the overlay component.
172
168
 
173
169
  Returns:
@@ -250,16 +246,16 @@ class UploadFile(StarletteUploadFile):
250
246
 
251
247
  file: BinaryIO
252
248
 
253
- path: Optional[Path] = dataclasses.field(default=None)
249
+ path: Path | None = dataclasses.field(default=None)
254
250
 
255
- _deprecated_filename: Optional[str] = dataclasses.field(default=None)
251
+ _deprecated_filename: str | None = dataclasses.field(default=None)
256
252
 
257
- size: Optional[int] = dataclasses.field(default=None)
253
+ size: int | None = dataclasses.field(default=None)
258
254
 
259
255
  headers: Headers = dataclasses.field(default_factory=Headers)
260
256
 
261
257
  @property
262
- def name(self) -> Optional[str]:
258
+ def name(self) -> str | None:
263
259
  """Get the name of the uploaded file.
264
260
 
265
261
  Returns:
@@ -269,7 +265,7 @@ class UploadFile(StarletteUploadFile):
269
265
  return self.path.name
270
266
 
271
267
  @property
272
- def filename(self) -> Optional[str]:
268
+ def filename(self) -> str | None:
273
269
  """Get the filename of the uploaded file.
274
270
 
275
271
  Returns:
@@ -290,13 +286,13 @@ class UploadFile(StarletteUploadFile):
290
286
  class UnevaluatedPage:
291
287
  """An uncompiled page."""
292
288
 
293
- component: Union[Component, ComponentCallable]
289
+ component: Component | ComponentCallable
294
290
  route: str
295
- title: Union[Var, str, None]
296
- description: Union[Var, str, None]
291
+ title: Var | str | None
292
+ description: Var | str | None
297
293
  image: str
298
- on_load: Union[EventType[()], None]
299
- meta: List[Dict[str, str]]
294
+ on_load: EventType[()] | None
295
+ meta: list[dict[str, str]]
300
296
 
301
297
 
302
298
  @dataclasses.dataclass()
@@ -322,7 +318,7 @@ class App(MiddlewareMixin, LifespanMixin):
322
318
  """
323
319
 
324
320
  # The global [theme](https://reflex.dev/docs/styling/theming/#theme) for the entire app.
325
- theme: Optional[Component] = dataclasses.field(
321
+ theme: Component | None = dataclasses.field(
326
322
  default_factory=lambda: themes.theme(accent_color="blue")
327
323
  )
328
324
 
@@ -330,18 +326,18 @@ class App(MiddlewareMixin, LifespanMixin):
330
326
  style: ComponentStyle = dataclasses.field(default_factory=dict)
331
327
 
332
328
  # A list of URLs to [stylesheets](https://reflex.dev/docs/styling/custom-stylesheets/) to include in the app.
333
- stylesheets: List[str] = dataclasses.field(default_factory=list)
329
+ stylesheets: list[str] = dataclasses.field(default_factory=list)
334
330
 
335
331
  # A component that is present on every page (defaults to the Connection Error banner).
336
- overlay_component: Optional[Union[Component, ComponentCallable]] = (
337
- dataclasses.field(default=None)
332
+ overlay_component: Component | ComponentCallable | None = dataclasses.field(
333
+ default=None
338
334
  )
339
335
 
340
336
  # Error boundary component to wrap the app with.
341
- error_boundary: Optional[ComponentCallable] = dataclasses.field(default=None)
337
+ error_boundary: ComponentCallable | None = dataclasses.field(default=None)
342
338
 
343
339
  # App wraps to be applied to the whole app. Expected to be a dictionary of (order, name) to a function that takes whether the state is enabled and optionally returns a component.
344
- app_wraps: Dict[tuple[int, str], Callable[[bool], Optional[Component]]] = (
340
+ app_wraps: dict[tuple[int, str], Callable[[bool], Component | None]] = (
345
341
  dataclasses.field(
346
342
  default_factory=lambda: {
347
343
  (55, "ErrorBoundary"): (
@@ -356,24 +352,24 @@ class App(MiddlewareMixin, LifespanMixin):
356
352
  )
357
353
 
358
354
  # Components to add to the head of every page.
359
- head_components: List[Component] = dataclasses.field(default_factory=list)
355
+ head_components: list[Component] = dataclasses.field(default_factory=list)
360
356
 
361
357
  # The Socket.IO AsyncServer instance.
362
- sio: Optional[AsyncServer] = None
358
+ sio: AsyncServer | None = None
363
359
 
364
360
  # The language to add to the html root tag of every page.
365
- html_lang: Optional[str] = None
361
+ html_lang: str | None = None
366
362
 
367
363
  # Attributes to add to the html root tag of every page.
368
- html_custom_attrs: Optional[Dict[str, str]] = None
364
+ html_custom_attrs: dict[str, str] | None = None
369
365
 
370
366
  # A map from a route to an unevaluated page.
371
- _unevaluated_pages: Dict[str, UnevaluatedPage] = dataclasses.field(
367
+ _unevaluated_pages: dict[str, UnevaluatedPage] = dataclasses.field(
372
368
  default_factory=dict
373
369
  )
374
370
 
375
371
  # A map from a page route to the component to render. Users should use `add_page`.
376
- _pages: Dict[str, Component] = dataclasses.field(default_factory=dict)
372
+ _pages: dict[str, Component] = dataclasses.field(default_factory=dict)
377
373
 
378
374
  # A mapping of pages which created states as they were being evaluated.
379
375
  _stateful_pages: Dict[str, None] = dataclasses.field(default_factory=dict)
@@ -382,24 +378,24 @@ class App(MiddlewareMixin, LifespanMixin):
382
378
  _api: FastAPI | None = None
383
379
 
384
380
  # The state class to use for the app.
385
- _state: Optional[Type[BaseState]] = None
381
+ _state: Type[BaseState] | None = None
386
382
 
387
383
  # Class to manage many client states.
388
- _state_manager: Optional[StateManager] = None
384
+ _state_manager: StateManager | None = None
389
385
 
390
386
  # Mapping from a route to event handlers to trigger when the page loads.
391
- _load_events: Dict[str, List[IndividualEventType[()]]] = dataclasses.field(
387
+ _load_events: dict[str, list[IndividualEventType[()]]] = dataclasses.field(
392
388
  default_factory=dict
393
389
  )
394
390
 
395
391
  # Admin dashboard to view and manage the database.
396
- admin_dash: Optional[AdminDash] = None
392
+ admin_dash: AdminDash | None = None
397
393
 
398
394
  # The async server name space.
399
- _event_namespace: Optional[EventNamespace] = None
395
+ _event_namespace: EventNamespace | None = None
400
396
 
401
397
  # Background tasks that are currently running.
402
- _background_tasks: Set[asyncio.Task] = dataclasses.field(default_factory=set)
398
+ _background_tasks: set[asyncio.Task] = dataclasses.field(default_factory=set)
403
399
 
404
400
  # Frontend Error Handler Function
405
401
  frontend_exception_handler: Callable[[Exception], None] = (
@@ -408,7 +404,7 @@ class App(MiddlewareMixin, LifespanMixin):
408
404
 
409
405
  # Backend Error Handler Function
410
406
  backend_exception_handler: Callable[
411
- [Exception], Union[EventSpec, List[EventSpec], None]
407
+ [Exception], EventSpec | list[EventSpec] | None
412
408
  ] = default_backend_exception_handler
413
409
 
414
410
  # Put the toast provider in the app wrap.
@@ -895,7 +891,7 @@ class App(MiddlewareMixin, LifespanMixin):
895
891
 
896
892
  admin.mount_to(self.api)
897
893
 
898
- def _get_frontend_packages(self, imports: Dict[str, set[ImportVar]]):
894
+ def _get_frontend_packages(self, imports: dict[str, set[ImportVar]]):
899
895
  """Gets the frontend packages to be installed and filters out the unnecessary ones.
900
896
 
901
897
  Args:
@@ -986,12 +982,15 @@ class App(MiddlewareMixin, LifespanMixin):
986
982
 
987
983
  def _setup_sticky_badge(self):
988
984
  """Add the sticky badge to the app."""
989
- for k, component in self._pages.items():
990
- # Would be nice to share single sticky_badge across all pages, but
991
- # it bungles the StatefulComponent compile step.
985
+ from reflex.components.component import memo
986
+
987
+ @memo
988
+ def memoized_badge():
992
989
  sticky_badge = sticky()
993
990
  sticky_badge._add_style_recursive({})
994
- self._pages[k] = Fragment.create(sticky_badge, component)
991
+ return sticky_badge
992
+
993
+ self.app_wraps[(0, "StickyBadge")] = lambda _: memoized_badge()
995
994
 
996
995
  def _apply_decorated_pages(self):
997
996
  """Add @rx.page decorated pages to the app.
@@ -1006,9 +1005,7 @@ class App(MiddlewareMixin, LifespanMixin):
1006
1005
  for render, kwargs in DECORATED_PAGES[get_config().app_name]:
1007
1006
  self.add_page(render, **kwargs)
1008
1007
 
1009
- def _validate_var_dependencies(
1010
- self, state: Optional[Type[BaseState]] = None
1011
- ) -> None:
1008
+ def _validate_var_dependencies(self, state: Type[BaseState] | None = None) -> None:
1012
1009
  """Validate the dependencies of the vars in the app.
1013
1010
 
1014
1011
  Args:
@@ -1080,7 +1077,7 @@ class App(MiddlewareMixin, LifespanMixin):
1080
1077
  self.style = evaluate_style_namespaces(self.style)
1081
1078
 
1082
1079
  # Add the app wrappers.
1083
- app_wrappers: Dict[tuple[int, str], Component] = {
1080
+ app_wrappers: dict[tuple[int, str], Component] = {
1084
1081
  # Default app wrap component renders {children}
1085
1082
  (0, "AppWrap"): AppWrap.create()
1086
1083
  }
@@ -1103,6 +1100,9 @@ class App(MiddlewareMixin, LifespanMixin):
1103
1100
  console.debug(f"Evaluating page: {route}")
1104
1101
  self._compile_page(route, save_page=should_compile)
1105
1102
 
1103
+ # Save the pages which created new states at eval time.
1104
+ self._write_stateful_pages_marker()
1105
+
1106
1106
  # Add the optional endpoints (_upload)
1107
1107
  self._add_optional_endpoints()
1108
1108
 
@@ -1145,6 +1145,8 @@ class App(MiddlewareMixin, LifespanMixin):
1145
1145
  )[:10]
1146
1146
  )
1147
1147
  )
1148
+ # Save the pages which created new states at eval time.
1149
+ self._write_stateful_pages_marker()
1148
1150
 
1149
1151
  # Add the optional endpoints (_upload)
1150
1152
  self._add_optional_endpoints()
@@ -1366,7 +1368,8 @@ class App(MiddlewareMixin, LifespanMixin):
1366
1368
  for output_path, code in compile_results:
1367
1369
  compiler_utils.write_page(output_path, code)
1368
1370
 
1369
- # Write list of routes that create dynamic states for backend to use.
1371
+ def _write_stateful_pages_marker(self):
1372
+ """Write list of routes that create dynamic states for the backend to use later."""
1370
1373
  if self._state is not None:
1371
1374
  stateful_pages_marker = (
1372
1375
  prerequisites.get_backend_dir() / constants.Dirs.STATEFUL_PAGES
@@ -1541,8 +1544,8 @@ class App(MiddlewareMixin, LifespanMixin):
1541
1544
 
1542
1545
  valid = bool(
1543
1546
  return_type == EventSpec
1544
- or return_type == Optional[EventSpec]
1545
- or return_type == List[EventSpec]
1547
+ or return_type == EventSpec | None
1548
+ or return_type == list[EventSpec]
1546
1549
  or return_type == inspect.Signature.empty
1547
1550
  or return_type is None
1548
1551
  )
@@ -1550,7 +1553,7 @@ class App(MiddlewareMixin, LifespanMixin):
1550
1553
  if not valid:
1551
1554
  raise ValueError(
1552
1555
  f"Provided custom {handler_domain} exception handler `{_fn_name}` has the wrong return type."
1553
- f"Expected `Union[EventSpec, List[EventSpec], None]` but got `{return_type}`"
1556
+ f"Expected `EventSpec | list[EventSpec] | None` but got `{return_type}`"
1554
1557
  )
1555
1558
 
1556
1559
 
@@ -1690,7 +1693,7 @@ def upload(app: App):
1690
1693
  The upload function.
1691
1694
  """
1692
1695
 
1693
- async def upload_file(request: Request, files: List[FastAPIUploadFile]):
1696
+ async def upload_file(request: Request, files: list[FastAPIUploadFile]):
1694
1697
  """Upload a file.
1695
1698
 
1696
1699
  Args:
@@ -1730,7 +1733,7 @@ def upload(app: App):
1730
1733
  # get handler function
1731
1734
  func = getattr(type(current_state), handler.split(".")[-1])
1732
1735
 
1733
- # check if there exists any handler args with annotation, List[UploadFile]
1736
+ # check if there exists any handler args with annotation, list[UploadFile]
1734
1737
  if isinstance(func, EventHandler):
1735
1738
  if func.is_background:
1736
1739
  raise UploadTypeError(
@@ -1750,7 +1753,7 @@ def upload(app: App):
1750
1753
  if not handler_upload_param:
1751
1754
  raise UploadValueError(
1752
1755
  f"`{handler}` handler should have a parameter annotated as "
1753
- "List[rx.UploadFile]"
1756
+ "list[rx.UploadFile]"
1754
1757
  )
1755
1758
 
1756
1759
  # Make a copy of the files as they are closed after the request.
@@ -7,7 +7,7 @@ import contextlib
7
7
  import dataclasses
8
8
  import functools
9
9
  import inspect
10
- from typing import Callable, Coroutine, Set, Union
10
+ from typing import Callable, Coroutine
11
11
 
12
12
  from fastapi import FastAPI
13
13
 
@@ -22,7 +22,7 @@ class LifespanMixin(AppMixin):
22
22
  """A Mixin that allow tasks to run during the whole app lifespan."""
23
23
 
24
24
  # Lifespan tasks that are planned to run.
25
- lifespan_tasks: Set[Union[asyncio.Task, Callable]] = dataclasses.field(
25
+ lifespan_tasks: set[asyncio.Task | Callable] = dataclasses.field(
26
26
  default_factory=set
27
27
  )
28
28
 
@@ -4,7 +4,6 @@ from __future__ import annotations
4
4
 
5
5
  import asyncio
6
6
  import dataclasses
7
- from typing import List
8
7
 
9
8
  from reflex.event import Event
10
9
  from reflex.middleware import HydrateMiddleware, Middleware
@@ -18,7 +17,7 @@ class MiddlewareMixin(AppMixin):
18
17
  """Middleware Mixin that allow to add middleware to the app."""
19
18
 
20
19
  # Middleware to add to the app. Users should use `add_middleware`. PRIVATE.
21
- middleware: List[Middleware] = dataclasses.field(default_factory=list)
20
+ middleware: list[Middleware] = dataclasses.field(default_factory=list)
22
21
 
23
22
  def _init_mixin(self):
24
23
  self.middleware.append(HydrateMiddleware())
@@ -2,7 +2,6 @@
2
2
 
3
3
  import inspect
4
4
  from pathlib import Path
5
- from typing import Optional
6
5
 
7
6
  from reflex import constants
8
7
  from reflex.config import EnvironmentVariables
@@ -11,7 +10,7 @@ from reflex.config import EnvironmentVariables
11
10
  def asset(
12
11
  path: str,
13
12
  shared: bool = False,
14
- subfolder: Optional[str] = None,
13
+ subfolder: str | None = None,
15
14
  _stack_level: int = 1,
16
15
  ) -> str:
17
16
  """Add an asset to the app, either shared as a symlink or local.
@@ -3,14 +3,14 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  import os
6
- from typing import TYPE_CHECKING, Any, List, Type
6
+ from typing import TYPE_CHECKING, Any, Type
7
7
 
8
8
  import pydantic.v1.main as pydantic_main
9
9
  from pydantic.v1 import BaseModel
10
10
  from pydantic.v1.fields import ModelField
11
11
 
12
12
 
13
- def validate_field_name(bases: List[Type["BaseModel"]], field_name: str) -> None:
13
+ def validate_field_name(bases: list[Type["BaseModel"]], field_name: str) -> None:
14
14
  """Ensure that the field's name does not shadow an existing attribute of the model.
15
15
 
16
16
  Args:
@@ -4,7 +4,7 @@ from __future__ import annotations
4
4
 
5
5
  from datetime import datetime
6
6
  from pathlib import Path
7
- from typing import TYPE_CHECKING, Dict, Iterable, Optional, Sequence, Tuple, Type, Union
7
+ from typing import TYPE_CHECKING, Iterable, Sequence, Type
8
8
 
9
9
  from reflex import constants
10
10
  from reflex.compiler import templates, utils
@@ -94,7 +94,7 @@ def _compile_theme(theme: str) -> str:
94
94
  return templates.THEME.render(theme=theme)
95
95
 
96
96
 
97
- def _compile_contexts(state: Optional[Type[BaseState]], theme: Component | None) -> str:
97
+ def _compile_contexts(state: Type[BaseState] | None, theme: Component | None) -> str:
98
98
  """Compile the initial state and contexts.
99
99
 
100
100
  Args:
@@ -219,7 +219,7 @@ def _compile_component(component: Component | StatefulComponent) -> str:
219
219
 
220
220
  def _compile_components(
221
221
  components: set[CustomComponent],
222
- ) -> tuple[str, Dict[str, list[ImportVar]]]:
222
+ ) -> tuple[str, dict[str, list[ImportVar]]]:
223
223
  """Compile the components.
224
224
 
225
225
  Args:
@@ -352,8 +352,8 @@ def _compile_tailwind(
352
352
 
353
353
  def compile_document_root(
354
354
  head_components: list[Component],
355
- html_lang: Optional[str] = None,
356
- html_custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
355
+ html_lang: str | None = None,
356
+ html_custom_attrs: dict[str, Var | str] | None = None,
357
357
  ) -> tuple[str, str]:
358
358
  """Compile the document root.
359
359
 
@@ -415,7 +415,7 @@ def compile_theme(style: ComponentStyle) -> tuple[str, str]:
415
415
 
416
416
 
417
417
  def compile_contexts(
418
- state: Optional[Type[BaseState]],
418
+ state: Type[BaseState] | None,
419
419
  theme: Component | None,
420
420
  ) -> tuple[str, str]:
421
421
  """Compile the initial state / context.
@@ -456,7 +456,7 @@ def compile_page(
456
456
 
457
457
  def compile_components(
458
458
  components: set[CustomComponent],
459
- ) -> tuple[str, str, Dict[str, list[ImportVar]]]:
459
+ ) -> tuple[str, str, dict[str, list[ImportVar]]]:
460
460
  """Compile the custom components.
461
461
 
462
462
  Args:
@@ -577,14 +577,49 @@ def into_component(component: Component | ComponentCallable) -> Component:
577
577
 
578
578
  Raises:
579
579
  TypeError: If the component is not a Component.
580
+
581
+ # noqa: DAR401
580
582
  """
581
583
  if (converted := _into_component_once(component)) is not None:
582
584
  return converted
583
- if (
584
- callable(component)
585
- and (converted := _into_component_once(component())) is not None
586
- ):
587
- return converted
585
+ try:
586
+ if (
587
+ callable(component)
588
+ and (converted := _into_component_once(component())) is not None
589
+ ):
590
+ return converted
591
+ except KeyError as e:
592
+ key = e.args[0] if e.args else None
593
+ if key is not None and isinstance(key, Var):
594
+ raise TypeError(
595
+ "Cannot access a primitive map with a Var. Consider calling rx.Var.create() on the map."
596
+ ).with_traceback(e.__traceback__) from None
597
+ raise
598
+ except TypeError as e:
599
+ message = e.args[0] if e.args else None
600
+ if message and isinstance(message, str):
601
+ if message.endswith("has no len()") and (
602
+ "ArrayCastedVar" in message
603
+ or "ObjectCastedVar" in message
604
+ or "StringCastedVar" in message
605
+ ):
606
+ raise TypeError(
607
+ "Cannot pass a Var to a built-in function. Consider using .length() for accessing the length of an iterable Var."
608
+ ).with_traceback(e.__traceback__) from None
609
+ if message.endswith(
610
+ "indices must be integers or slices, not NumberCastedVar"
611
+ ) or message.endswith(
612
+ "indices must be integers or slices, not BooleanCastedVar"
613
+ ):
614
+ raise TypeError(
615
+ "Cannot index into a primitive sequence with a Var. Consider calling rx.Var.create() on the sequence."
616
+ ).with_traceback(e.__traceback__) from None
617
+ if "CastedVar" in str(e):
618
+ raise TypeError(
619
+ "Cannot pass a Var to a built-in function. Consider moving the operation to the backend, using existing Var operations, or defining a custom Var operation."
620
+ ).with_traceback(e.__traceback__) from None
621
+ raise
622
+
588
623
  raise TypeError(f"Expected a Component, got {type(component)}")
589
624
 
590
625
 
@@ -594,7 +629,7 @@ def compile_unevaluated_page(
594
629
  state: Type[BaseState] | None = None,
595
630
  style: ComponentStyle | None = None,
596
631
  theme: Component | None = None,
597
- ) -> Tuple[Component, bool]:
632
+ ) -> tuple[Component, bool]:
598
633
  """Compiles an uncompiled page into a component and adds meta information.
599
634
 
600
635
  Args:
@@ -679,9 +714,9 @@ class ExecutorSafeFunctions:
679
714
 
680
715
  """
681
716
 
682
- COMPONENTS: Dict[str, BaseComponent] = {}
683
- UNCOMPILED_PAGES: Dict[str, UnevaluatedPage] = {}
684
- STATE: Optional[Type[BaseState]] = None
717
+ COMPONENTS: dict[str, BaseComponent] = {}
718
+ UNCOMPILED_PAGES: dict[str, UnevaluatedPage] = {}
719
+ STATE: Type[BaseState] | None = None
685
720
 
686
721
  @classmethod
687
722
  def compile_page(cls, route: str) -> tuple[str, str]:
@@ -7,7 +7,7 @@ import concurrent.futures
7
7
  import traceback
8
8
  from datetime import datetime
9
9
  from pathlib import Path
10
- from typing import Any, Callable, Dict, Optional, Type, Union
10
+ from typing import Any, Callable, Type
11
11
  from urllib.parse import urlparse
12
12
 
13
13
  from pydantic.v1.fields import ModelField
@@ -187,16 +187,7 @@ def compile_state(state: Type[BaseState]) -> dict:
187
187
  Returns:
188
188
  A dictionary of the compiled state.
189
189
  """
190
- try:
191
- initial_state = state(_reflex_internal_init=True).dict(initial=True)
192
- except Exception as e:
193
- log_path = save_error(e)
194
- console.warn(
195
- f"Failed to compile initial state with computed vars. Error log saved to {log_path}"
196
- )
197
- initial_state = state(_reflex_internal_init=True).dict(
198
- initial=True, include_computed=False
199
- )
190
+ initial_state = state(_reflex_internal_init=True).dict(initial=True)
200
191
  try:
201
192
  _ = asyncio.get_running_loop()
202
193
  except RuntimeError:
@@ -345,8 +336,8 @@ def compile_custom_component(
345
336
 
346
337
  def create_document_root(
347
338
  head_components: list[Component] | None = None,
348
- html_lang: Optional[str] = None,
349
- html_custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
339
+ html_lang: str | None = None,
340
+ html_custom_attrs: dict[str, Var | str] | None = None,
350
341
  ) -> Component:
351
342
  """Create the document root.
352
343