reflex 0.8.15a2__tar.gz → 0.8.21__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.
Files changed (445) hide show
  1. {reflex-0.8.15a2 → reflex-0.8.21}/PKG-INFO +41 -12
  2. {reflex-0.8.15a2 → reflex-0.8.21}/README.md +37 -8
  3. {reflex-0.8.15a2 → reflex-0.8.21}/pyproject.toml +14 -11
  4. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/.templates/web/utils/state.js +18 -5
  5. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/app.py +99 -68
  6. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/app_mixins/lifespan.py +12 -5
  7. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/base.py +1 -0
  8. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/compiler/compiler.py +4 -6
  9. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/compiler/templates.py +39 -35
  10. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/compiler/utils.py +12 -6
  11. reflex-0.8.21/reflex/components/base/body.pyi +61 -0
  12. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/base/error_boundary.py +61 -43
  13. reflex-0.8.21/reflex/components/base/link.pyi +110 -0
  14. reflex-0.8.21/reflex/components/base/meta.pyi +165 -0
  15. reflex-0.8.21/reflex/components/base/script.pyi +66 -0
  16. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/component.py +41 -46
  17. reflex-0.8.21/reflex/components/core/auto_scroll.pyi +67 -0
  18. reflex-0.8.21/reflex/components/core/banner.pyi +330 -0
  19. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/core/breakpoints.py +14 -18
  20. reflex-0.8.21/reflex/components/core/html.pyi +66 -0
  21. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/core/match.py +2 -2
  22. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/core/sticky.py +11 -15
  23. reflex-0.8.21/reflex/components/core/sticky.pyi +313 -0
  24. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/core/upload.py +1 -3
  25. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/core/window_events.py +30 -9
  26. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/core/window_events.pyi +6 -5
  27. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/datadisplay/code.py +1 -1
  28. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/datadisplay/code.pyi +1 -0
  29. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/datadisplay/dataeditor.py +4 -6
  30. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/datadisplay/shiki_code_block.py +106 -110
  31. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/dynamic.py +4 -6
  32. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/el/elements/__init__.py +5 -7
  33. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/el/elements/__init__.pyi +5 -7
  34. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/el/elements/base.py +1 -1
  35. reflex-0.8.21/reflex/components/el/elements/base.pyi +139 -0
  36. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/el/elements/forms.py +7 -9
  37. reflex-0.8.21/reflex/components/el/elements/forms.pyi +1594 -0
  38. reflex-0.8.21/reflex/components/el/elements/inline.pyi +1426 -0
  39. reflex-0.8.21/reflex/components/el/elements/media.pyi +2550 -0
  40. reflex-0.8.21/reflex/components/el/elements/metadata.pyi +315 -0
  41. reflex-0.8.21/reflex/components/el/elements/other.pyi +364 -0
  42. reflex-0.8.21/reflex/components/el/elements/scripts.pyi +164 -0
  43. reflex-0.8.21/reflex/components/el/elements/sectioning.pyi +764 -0
  44. reflex-0.8.21/reflex/components/el/elements/tables.pyi +514 -0
  45. reflex-0.8.21/reflex/components/el/elements/typography.pyi +813 -0
  46. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/lucide/icon.py +25 -6
  47. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/lucide/icon.pyi +21 -6
  48. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/markdown/markdown.py +15 -19
  49. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/markdown/markdown.pyi +1 -0
  50. reflex-0.8.21/reflex/components/moment/moment.pyi +78 -0
  51. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/plotly/plotly.py +9 -9
  52. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/props.py +3 -3
  53. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/primitives/accordion.py +4 -6
  54. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/primitives/accordion.pyi +0 -14
  55. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/primitives/base.pyi +0 -5
  56. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/primitives/dialog.py +14 -1
  57. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/primitives/dialog.pyi +1 -233
  58. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/primitives/drawer.pyi +0 -18
  59. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/primitives/form.pyi +30 -632
  60. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/primitives/progress.py +1 -1
  61. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/primitives/progress.pyi +0 -10
  62. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/primitives/slider.pyi +0 -10
  63. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/color_mode.pyi +1 -284
  64. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/alert_dialog.pyi +0 -207
  65. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/aspect_ratio.pyi +0 -2
  66. reflex-0.8.21/reflex/components/radix/themes/components/avatar.pyi +68 -0
  67. reflex-0.8.21/reflex/components/radix/themes/components/badge.pyi +67 -0
  68. reflex-0.8.15a2/reflex/components/radix/themes/components/skeleton.pyi → reflex-0.8.21/reflex/components/radix/themes/components/button.pyi +32 -35
  69. reflex-0.8.21/reflex/components/radix/themes/components/callout.pyi +275 -0
  70. reflex-0.8.21/reflex/components/radix/themes/components/card.pyi +67 -0
  71. reflex-0.8.21/reflex/components/radix/themes/components/checkbox.pyi +173 -0
  72. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/checkbox_cards.pyi +1 -96
  73. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/checkbox_group.pyi +1 -80
  74. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/context_menu.pyi +13 -321
  75. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/data_list.pyi +1 -107
  76. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/dialog.pyi +1 -210
  77. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/dropdown_menu.pyi +0 -209
  78. reflex-0.8.21/reflex/components/radix/themes/components/hover_card.pyi +225 -0
  79. reflex-0.8.21/reflex/components/radix/themes/components/icon_button.pyi +177 -0
  80. reflex-0.8.21/reflex/components/radix/themes/components/inset.pyi +69 -0
  81. reflex-0.8.21/reflex/components/radix/themes/components/popover.pyi +229 -0
  82. reflex-0.8.21/reflex/components/radix/themes/components/progress.pyi +63 -0
  83. reflex-0.8.21/reflex/components/radix/themes/components/radio.pyi +66 -0
  84. reflex-0.8.21/reflex/components/radix/themes/components/radio_cards.pyi +125 -0
  85. reflex-0.8.21/reflex/components/radix/themes/components/scroll_area.pyi +66 -0
  86. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/select.pyi +1 -376
  87. reflex-0.8.21/reflex/components/radix/themes/components/separator.pyi +68 -0
  88. reflex-0.8.21/reflex/components/radix/themes/components/skeleton.pyi +68 -0
  89. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/slider.py +3 -5
  90. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/spinner.pyi +0 -5
  91. reflex-0.8.21/reflex/components/radix/themes/components/switch.pyi +70 -0
  92. reflex-0.8.21/reflex/components/radix/themes/components/table.pyi +501 -0
  93. reflex-0.8.21/reflex/components/radix/themes/components/text_area.pyi +119 -0
  94. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/text_field.pyi +6 -392
  95. reflex-0.8.21/reflex/components/radix/themes/components/tooltip.pyi +76 -0
  96. reflex-0.8.21/reflex/components/radix/themes/layout/box.pyi +67 -0
  97. reflex-0.8.15a2/reflex/components/radix/themes/components/separator.pyi → reflex-0.8.21/reflex/components/radix/themes/layout/center.pyi +44 -73
  98. reflex-0.8.21/reflex/components/radix/themes/layout/container.pyi +70 -0
  99. reflex-0.8.21/reflex/components/radix/themes/layout/flex.pyi +118 -0
  100. reflex-0.8.21/reflex/components/radix/themes/layout/grid.pyi +141 -0
  101. reflex-0.8.21/reflex/components/radix/themes/layout/list.pyi +448 -0
  102. reflex-0.8.15a2/reflex/components/radix/themes/components/scroll_area.pyi → reflex-0.8.21/reflex/components/radix/themes/layout/section.pyi +11 -13
  103. reflex-0.8.21/reflex/components/radix/themes/layout/spacer.pyi +116 -0
  104. reflex-0.8.21/reflex/components/radix/themes/layout/stack.pyi +308 -0
  105. reflex-0.8.15a2/reflex/components/radix/themes/components/avatar.pyi → reflex-0.8.21/reflex/components/radix/themes/typography/blockquote.pyi +16 -19
  106. reflex-0.8.15a2/reflex/components/radix/themes/components/radio.pyi → reflex-0.8.21/reflex/components/radix/themes/typography/code.pyi +26 -13
  107. reflex-0.8.15a2/reflex/components/radix/themes/components/switch.pyi → reflex-0.8.21/reflex/components/radix/themes/typography/heading.pyi +40 -33
  108. reflex-0.8.15a2/reflex/components/radix/themes/components/progress.pyi → reflex-0.8.21/reflex/components/radix/themes/typography/link.pyi +51 -28
  109. reflex-0.8.21/reflex/components/radix/themes/typography/text.pyi +831 -0
  110. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/react_player/audio.pyi +1 -0
  111. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/react_player/react_player.py +4 -1
  112. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/react_player/react_player.pyi +1 -0
  113. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/react_player/video.pyi +1 -0
  114. reflex-0.8.21/reflex/components/react_router/dom.pyi +82 -0
  115. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/recharts/cartesian.py +12 -18
  116. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/recharts/general.py +12 -18
  117. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/recharts/recharts.py +2 -2
  118. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/config.py +4 -1
  119. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/constants/installer.py +7 -7
  120. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/custom_components/custom_components.py +6 -5
  121. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/environment.py +70 -7
  122. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/event.py +27 -16
  123. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/experimental/client_state.py +11 -12
  124. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/istate/data.py +8 -10
  125. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/istate/manager/__init__.py +27 -2
  126. reflex-0.8.21/reflex/istate/manager/disk.py +366 -0
  127. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/istate/manager/memory.py +13 -4
  128. reflex-0.8.21/reflex/istate/manager/redis.py +1064 -0
  129. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/istate/proxy.py +18 -20
  130. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/model.py +1 -1
  131. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/plugins/_screenshot.py +2 -2
  132. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/plugins/shared_tailwind.py +9 -14
  133. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/plugins/tailwind_v4.py +2 -2
  134. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/reflex.py +7 -9
  135. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/state.py +104 -55
  136. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/style.py +6 -6
  137. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/testing.py +54 -30
  138. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/utils/build.py +1 -0
  139. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/utils/codespaces.py +1 -1
  140. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/utils/compat.py +1 -0
  141. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/utils/console.py +2 -2
  142. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/utils/decorator.py +3 -3
  143. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/utils/format.py +20 -24
  144. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/utils/frontend_skeleton.py +2 -0
  145. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/utils/prerequisites.py +8 -3
  146. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/utils/processes.py +4 -0
  147. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/utils/pyi_generator.py +51 -57
  148. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/utils/serializers.py +1 -1
  149. reflex-0.8.21/reflex/utils/tasks.py +109 -0
  150. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/utils/telemetry.py +1 -1
  151. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/utils/templates.py +4 -4
  152. reflex-0.8.21/reflex/utils/token_manager.py +467 -0
  153. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/utils/types.py +47 -15
  154. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/vars/base.py +26 -29
  155. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/vars/color.py +6 -8
  156. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/vars/dep_tracking.py +5 -3
  157. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/vars/function.py +3 -3
  158. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/vars/object.py +9 -13
  159. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/vars/sequence.py +18 -24
  160. reflex-0.8.15a2/reflex/components/base/body.pyi +0 -255
  161. reflex-0.8.15a2/reflex/components/base/link.pyi +0 -516
  162. reflex-0.8.15a2/reflex/components/base/meta.pyi +0 -569
  163. reflex-0.8.15a2/reflex/components/base/script.pyi +0 -302
  164. reflex-0.8.15a2/reflex/components/core/auto_scroll.pyi +0 -261
  165. reflex-0.8.15a2/reflex/components/core/banner.pyi +0 -720
  166. reflex-0.8.15a2/reflex/components/core/html.pyi +0 -262
  167. reflex-0.8.15a2/reflex/components/core/sticky.pyi +0 -1101
  168. reflex-0.8.15a2/reflex/components/el/elements/base.pyi +0 -333
  169. reflex-0.8.15a2/reflex/components/el/elements/forms.pyi +0 -4694
  170. reflex-0.8.15a2/reflex/components/el/elements/inline.pyi +0 -6907
  171. reflex-0.8.15a2/reflex/components/el/elements/media.pyi +0 -12830
  172. reflex-0.8.15a2/reflex/components/el/elements/metadata.pyi +0 -1149
  173. reflex-0.8.15a2/reflex/components/el/elements/other.pyi +0 -1728
  174. reflex-0.8.15a2/reflex/components/el/elements/scripts.pyi +0 -788
  175. reflex-0.8.15a2/reflex/components/el/elements/sectioning.pyi +0 -3674
  176. reflex-0.8.15a2/reflex/components/el/elements/tables.pyi +0 -2486
  177. reflex-0.8.15a2/reflex/components/el/elements/typography.pyi +0 -3937
  178. reflex-0.8.15a2/reflex/components/moment/moment.pyi +0 -127
  179. reflex-0.8.15a2/reflex/components/radix/themes/components/badge.pyi +0 -336
  180. reflex-0.8.15a2/reflex/components/radix/themes/components/button.pyi +0 -368
  181. reflex-0.8.15a2/reflex/components/radix/themes/components/callout.pyi +0 -1472
  182. reflex-0.8.15a2/reflex/components/radix/themes/components/card.pyi +0 -275
  183. reflex-0.8.15a2/reflex/components/radix/themes/components/checkbox.pyi +0 -434
  184. reflex-0.8.15a2/reflex/components/radix/themes/components/hover_card.pyi +0 -470
  185. reflex-0.8.15a2/reflex/components/radix/themes/components/icon_button.pyi +0 -371
  186. reflex-0.8.15a2/reflex/components/radix/themes/components/inset.pyi +0 -321
  187. reflex-0.8.15a2/reflex/components/radix/themes/components/popover.pyi +0 -462
  188. reflex-0.8.15a2/reflex/components/radix/themes/components/radio_cards.pyi +0 -247
  189. reflex-0.8.15a2/reflex/components/radix/themes/components/table.pyi +0 -1954
  190. reflex-0.8.15a2/reflex/components/radix/themes/components/text_area.pyi +0 -394
  191. reflex-0.8.15a2/reflex/components/radix/themes/components/tooltip.pyi +0 -118
  192. reflex-0.8.15a2/reflex/components/radix/themes/layout/box.pyi +0 -261
  193. reflex-0.8.15a2/reflex/components/radix/themes/layout/center.pyi +0 -310
  194. reflex-0.8.15a2/reflex/components/radix/themes/layout/container.pyi +0 -248
  195. reflex-0.8.15a2/reflex/components/radix/themes/layout/flex.pyi +0 -312
  196. reflex-0.8.15a2/reflex/components/radix/themes/layout/grid.pyi +0 -335
  197. reflex-0.8.15a2/reflex/components/radix/themes/layout/list.pyi +0 -1426
  198. reflex-0.8.15a2/reflex/components/radix/themes/layout/section.pyi +0 -268
  199. reflex-0.8.15a2/reflex/components/radix/themes/layout/spacer.pyi +0 -310
  200. reflex-0.8.15a2/reflex/components/radix/themes/layout/stack.pyi +0 -890
  201. reflex-0.8.15a2/reflex/components/radix/themes/typography/blockquote.pyi +0 -341
  202. reflex-0.8.15a2/reflex/components/radix/themes/typography/code.pyi +0 -344
  203. reflex-0.8.15a2/reflex/components/radix/themes/typography/heading.pyi +0 -360
  204. reflex-0.8.15a2/reflex/components/radix/themes/typography/link.pyi +0 -406
  205. reflex-0.8.15a2/reflex/components/radix/themes/typography/text.pyi +0 -2191
  206. reflex-0.8.15a2/reflex/components/react_router/dom.pyi +0 -319
  207. reflex-0.8.15a2/reflex/istate/manager/disk.py +0 -210
  208. reflex-0.8.15a2/reflex/istate/manager/redis.py +0 -491
  209. reflex-0.8.15a2/reflex/utils/token_manager.py +0 -225
  210. {reflex-0.8.15a2 → reflex-0.8.21}/.gitignore +0 -0
  211. {reflex-0.8.15a2 → reflex-0.8.21}/LICENSE +0 -0
  212. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/.templates/apps/blank/assets/favicon.ico +0 -0
  213. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/.templates/apps/blank/code/__init__.py +0 -0
  214. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/.templates/apps/blank/code/blank.py +0 -0
  215. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/.templates/web/.gitignore +0 -0
  216. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/.templates/web/app/entry.client.js +0 -0
  217. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/.templates/web/app/routes.js +0 -0
  218. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +0 -0
  219. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/.templates/web/components/shiki/code.js +0 -0
  220. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/.templates/web/jsconfig.json +0 -0
  221. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/.templates/web/postcss.config.js +0 -0
  222. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/.templates/web/react-router.config.js +0 -0
  223. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/.templates/web/styles/__reflex_style_reset.css +0 -0
  224. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/.templates/web/utils/helpers/dataeditor.js +0 -0
  225. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/.templates/web/utils/helpers/debounce.js +0 -0
  226. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/.templates/web/utils/helpers/paste.js +0 -0
  227. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/.templates/web/utils/helpers/range.js +0 -0
  228. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/.templates/web/utils/helpers/throttle.js +0 -0
  229. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/.templates/web/utils/helpers/upload.js +0 -0
  230. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/.templates/web/utils/react-theme.js +0 -0
  231. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/.templates/web/vite-plugin-safari-cachebust.js +0 -0
  232. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/__init__.py +0 -0
  233. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/__init__.pyi +0 -0
  234. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/__main__.py +0 -0
  235. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/admin.py +0 -0
  236. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/app_mixins/__init__.py +0 -0
  237. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/app_mixins/middleware.py +0 -0
  238. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/app_mixins/mixin.py +0 -0
  239. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/assets.py +0 -0
  240. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/compiler/__init__.py +0 -0
  241. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/__init__.py +0 -0
  242. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/__init__.pyi +0 -0
  243. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/base/__init__.py +0 -0
  244. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/base/__init__.pyi +0 -0
  245. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/base/app_wrap.py +0 -0
  246. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/base/app_wrap.pyi +0 -0
  247. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/base/bare.py +0 -0
  248. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/base/body.py +0 -0
  249. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/base/document.py +0 -0
  250. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/base/document.pyi +0 -0
  251. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/base/error_boundary.pyi +0 -0
  252. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/base/fragment.py +0 -0
  253. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/base/fragment.pyi +0 -0
  254. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/base/link.py +0 -0
  255. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/base/meta.py +0 -0
  256. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/base/script.py +0 -0
  257. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/base/strict_mode.py +0 -0
  258. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/base/strict_mode.pyi +0 -0
  259. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/core/__init__.py +0 -0
  260. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/core/__init__.pyi +0 -0
  261. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/core/auto_scroll.py +0 -0
  262. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/core/banner.py +0 -0
  263. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/core/clipboard.py +0 -0
  264. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/core/clipboard.pyi +0 -0
  265. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/core/colors.py +0 -0
  266. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/core/cond.py +0 -0
  267. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/core/debounce.py +0 -0
  268. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/core/debounce.pyi +0 -0
  269. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/core/foreach.py +0 -0
  270. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/core/helmet.py +0 -0
  271. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/core/helmet.pyi +0 -0
  272. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/core/html.py +0 -0
  273. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/core/layout/__init__.py +0 -0
  274. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/core/responsive.py +0 -0
  275. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/core/upload.pyi +0 -0
  276. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/datadisplay/__init__.py +0 -0
  277. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/datadisplay/__init__.pyi +0 -0
  278. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/datadisplay/dataeditor.pyi +0 -0
  279. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/datadisplay/logo.py +0 -0
  280. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/datadisplay/shiki_code_block.pyi +0 -0
  281. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/el/__init__.py +0 -0
  282. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/el/__init__.pyi +0 -0
  283. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/el/element.py +0 -0
  284. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/el/element.pyi +0 -0
  285. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/el/elements/inline.py +0 -0
  286. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/el/elements/media.py +0 -0
  287. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/el/elements/metadata.py +0 -0
  288. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/el/elements/other.py +0 -0
  289. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/el/elements/scripts.py +0 -0
  290. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/el/elements/sectioning.py +0 -0
  291. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/el/elements/tables.py +0 -0
  292. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/el/elements/typography.py +0 -0
  293. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/field.py +0 -0
  294. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/gridjs/__init__.py +0 -0
  295. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/gridjs/datatable.py +0 -0
  296. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/gridjs/datatable.pyi +0 -0
  297. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/literals.py +0 -0
  298. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/lucide/__init__.py +0 -0
  299. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/markdown/__init__.py +0 -0
  300. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/moment/__init__.py +0 -0
  301. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/moment/moment.py +0 -0
  302. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/plotly/__init__.py +0 -0
  303. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/plotly/plotly.pyi +0 -0
  304. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/__init__.py +0 -0
  305. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/__init__.pyi +0 -0
  306. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/primitives/__init__.py +0 -0
  307. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/primitives/__init__.pyi +0 -0
  308. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/primitives/base.py +0 -0
  309. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/primitives/drawer.py +0 -0
  310. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/primitives/form.py +0 -0
  311. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/primitives/slider.py +0 -0
  312. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/__init__.py +0 -0
  313. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/__init__.pyi +0 -0
  314. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/base.py +0 -0
  315. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/base.pyi +0 -0
  316. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/color_mode.py +0 -0
  317. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/__init__.py +0 -0
  318. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/__init__.pyi +0 -0
  319. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/alert_dialog.py +0 -0
  320. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/aspect_ratio.py +0 -0
  321. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/avatar.py +0 -0
  322. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/badge.py +0 -0
  323. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/button.py +0 -0
  324. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/callout.py +0 -0
  325. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/card.py +0 -0
  326. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/checkbox.py +0 -0
  327. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/checkbox_cards.py +0 -0
  328. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/checkbox_group.py +0 -0
  329. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/context_menu.py +0 -0
  330. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/data_list.py +0 -0
  331. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/dialog.py +0 -0
  332. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/dropdown_menu.py +0 -0
  333. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/hover_card.py +0 -0
  334. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/icon_button.py +0 -0
  335. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/inset.py +0 -0
  336. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/popover.py +0 -0
  337. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/progress.py +0 -0
  338. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/radio.py +0 -0
  339. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/radio_cards.py +0 -0
  340. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/radio_group.py +0 -0
  341. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/radio_group.pyi +0 -0
  342. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/scroll_area.py +0 -0
  343. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/segmented_control.py +0 -0
  344. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/segmented_control.pyi +0 -0
  345. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/select.py +0 -0
  346. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/separator.py +0 -0
  347. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/skeleton.py +0 -0
  348. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/slider.pyi +0 -0
  349. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/spinner.py +0 -0
  350. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/switch.py +0 -0
  351. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/table.py +0 -0
  352. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/tabs.py +0 -0
  353. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/tabs.pyi +0 -0
  354. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/text_area.py +0 -0
  355. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/text_field.py +0 -0
  356. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/components/tooltip.py +0 -0
  357. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/layout/__init__.py +0 -0
  358. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/layout/__init__.pyi +0 -0
  359. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/layout/base.py +0 -0
  360. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/layout/base.pyi +0 -0
  361. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/layout/box.py +0 -0
  362. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/layout/center.py +0 -0
  363. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/layout/container.py +0 -0
  364. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/layout/flex.py +0 -0
  365. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/layout/grid.py +0 -0
  366. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/layout/list.py +0 -0
  367. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/layout/section.py +0 -0
  368. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/layout/spacer.py +0 -0
  369. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/layout/stack.py +0 -0
  370. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/typography/__init__.py +0 -0
  371. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/typography/__init__.pyi +0 -0
  372. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/typography/base.py +0 -0
  373. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/typography/blockquote.py +0 -0
  374. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/typography/code.py +0 -0
  375. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/typography/heading.py +0 -0
  376. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/typography/link.py +0 -0
  377. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/radix/themes/typography/text.py +0 -0
  378. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/react_player/__init__.py +0 -0
  379. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/react_player/audio.py +0 -0
  380. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/react_player/video.py +0 -0
  381. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/react_router/__init__.py +0 -0
  382. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/react_router/dom.py +0 -0
  383. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/recharts/__init__.py +0 -0
  384. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/recharts/__init__.pyi +0 -0
  385. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/recharts/cartesian.pyi +0 -0
  386. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/recharts/charts.py +0 -0
  387. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/recharts/charts.pyi +0 -0
  388. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/recharts/general.pyi +0 -0
  389. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/recharts/polar.py +0 -0
  390. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/recharts/polar.pyi +0 -0
  391. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/recharts/recharts.pyi +0 -0
  392. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/sonner/__init__.py +0 -0
  393. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/sonner/toast.py +0 -0
  394. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/sonner/toast.pyi +0 -0
  395. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/tags/__init__.py +0 -0
  396. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/tags/cond_tag.py +0 -0
  397. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/tags/iter_tag.py +0 -0
  398. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/tags/match_tag.py +0 -0
  399. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/tags/tag.py +0 -0
  400. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/components/tags/tagless.py +0 -0
  401. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/constants/__init__.py +0 -0
  402. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/constants/base.py +0 -0
  403. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/constants/colors.py +0 -0
  404. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/constants/compiler.py +0 -0
  405. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/constants/config.py +0 -0
  406. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/constants/custom_components.py +0 -0
  407. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/constants/event.py +0 -0
  408. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/constants/route.py +0 -0
  409. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/constants/state.py +0 -0
  410. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/constants/utils.py +0 -0
  411. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/custom_components/__init__.py +0 -0
  412. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/experimental/__init__.py +0 -0
  413. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/experimental/hooks.py +0 -0
  414. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/istate/__init__.py +0 -0
  415. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/istate/dynamic.py +0 -0
  416. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/istate/storage.py +0 -0
  417. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/istate/wrappers.py +0 -0
  418. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/middleware/__init__.py +0 -0
  419. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/middleware/hydrate_middleware.py +0 -0
  420. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/middleware/middleware.py +0 -0
  421. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/page.py +0 -0
  422. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/plugins/__init__.py +0 -0
  423. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/plugins/base.py +0 -0
  424. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/plugins/sitemap.py +0 -0
  425. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/plugins/tailwind_v3.py +0 -0
  426. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/py.typed +0 -0
  427. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/route.py +0 -0
  428. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/utils/__init__.py +0 -0
  429. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/utils/exceptions.py +0 -0
  430. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/utils/exec.py +0 -0
  431. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/utils/export.py +0 -0
  432. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/utils/imports.py +0 -0
  433. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/utils/js_runtimes.py +0 -0
  434. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/utils/lazy_loader.py +0 -0
  435. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/utils/misc.py +0 -0
  436. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/utils/monitoring.py +0 -0
  437. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/utils/net.py +0 -0
  438. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/utils/path_ops.py +0 -0
  439. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/utils/redir.py +0 -0
  440. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/utils/registry.py +0 -0
  441. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/utils/rename.py +0 -0
  442. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/vars/__init__.py +0 -0
  443. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/vars/datetime.py +0 -0
  444. {reflex-0.8.15a2 → reflex-0.8.21}/reflex/vars/number.py +0 -0
  445. {reflex-0.8.15a2 → reflex-0.8.21}/scripts/hatch_build.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: reflex
3
- Version: 0.8.15a2
3
+ Version: 0.8.21
4
4
  Summary: Web apps in pure Python.
5
5
  Project-URL: homepage, https://reflex.dev
6
6
  Project-URL: repository, https://github.com/reflex-dev/reflex
@@ -30,13 +30,13 @@ Requires-Dist: psutil<8.0,>=7.0.0; sys_platform == 'win32'
30
30
  Requires-Dist: pydantic<3.0,>=1.10.21
31
31
  Requires-Dist: python-multipart<1.0,>=0.0.20
32
32
  Requires-Dist: python-socketio<6.0,>=5.12.0
33
- Requires-Dist: redis<7.0,>=5.2.1
34
- Requires-Dist: reflex-hosting-cli>=0.1.55
33
+ Requires-Dist: redis<8.0,>=5.2.1
34
+ Requires-Dist: reflex-hosting-cli>=0.1.59
35
35
  Requires-Dist: rich<15,>=13
36
36
  Requires-Dist: sqlmodel<0.1,>=0.0.27
37
37
  Requires-Dist: starlette>=0.47.0
38
38
  Requires-Dist: typing-extensions>=4.13.0
39
- Requires-Dist: wrapt<2.0,>=1.17.0
39
+ Requires-Dist: wrapt<3.0,>=1.17.0
40
40
  Provides-Extra: db
41
41
  Requires-Dist: alembic<2.0,>=1.15.2; extra == 'db'
42
42
  Requires-Dist: pydantic<3.0,>=1.10.21; extra == 'db'
@@ -86,25 +86,50 @@ See our [architecture page](https://reflex.dev/blog/2024-03-21-reflex-architectu
86
86
 
87
87
  ## ⚙️ Installation
88
88
 
89
- Open a terminal and run (Requires Python 3.10+):
90
-
91
- ```bash
92
- pip install reflex
93
- ```
89
+ **Important:** We strongly recommend using a virtual environment to ensure the `reflex` command is available in your PATH.
94
90
 
95
91
  ## 🥳 Create your first app
96
92
 
97
- Installing `reflex` also installs the `reflex` command line tool.
93
+ ### 1. Create the project directory
98
94
 
99
- Test that the install was successful by creating a new project. (Replace `my_app_name` with your project name):
95
+ Replace `my_app_name` with your project name:
100
96
 
101
97
  ```bash
102
98
  mkdir my_app_name
103
99
  cd my_app_name
100
+ ```
101
+
102
+ ### 2. Set up a virtual environment
103
+
104
+ Create and activate virtual environment
105
+
106
+ ```bash
107
+ # On Windows:
108
+ python -m venv .venv
109
+ .venv\Scripts\activate
110
+
111
+ # On macOS/Linux:
112
+ python3 -m venv .venv
113
+ source .venv/bin/activate
114
+ ```
115
+
116
+ ### 3. Install Reflex
117
+
118
+ Reflex is available as a pip package (Requires Python 3.10+):
119
+
120
+ ```bash
121
+ pip install reflex
122
+ ```
123
+
124
+ ### 4. Initialize the project
125
+
126
+ This command initializes a template app in your new directory:
127
+
128
+ ```bash
104
129
  reflex init
105
130
  ```
106
131
 
107
- This command initializes a template app in your new directory.
132
+ ### 5. Run the app
108
133
 
109
134
  You can run this app in development mode:
110
135
 
@@ -116,6 +141,10 @@ You should see your app running at http://localhost:3000.
116
141
 
117
142
  Now you can modify the source code in `my_app_name/my_app_name.py`. Reflex has fast refreshes so you can see your changes instantly when you save your code.
118
143
 
144
+ ### Troubleshooting
145
+
146
+ If you installed Reflex without a virtual environment and the `reflex` command is not found, you can run commands using: `python3 -m reflex init` and `python3 -m reflex run`
147
+
119
148
  ## 🫧 Example App
120
149
 
121
150
  Let's go over an example: creating an image generation UI around [DALL·E](https://platform.openai.com/docs/guides/images/image-generation?context=node). For simplicity, we just call the [OpenAI API](https://platform.openai.com/docs/api-reference/authentication), but you could replace this with an ML model run locally.
@@ -39,25 +39,50 @@ See our [architecture page](https://reflex.dev/blog/2024-03-21-reflex-architectu
39
39
 
40
40
  ## ⚙️ Installation
41
41
 
42
- Open a terminal and run (Requires Python 3.10+):
43
-
44
- ```bash
45
- pip install reflex
46
- ```
42
+ **Important:** We strongly recommend using a virtual environment to ensure the `reflex` command is available in your PATH.
47
43
 
48
44
  ## 🥳 Create your first app
49
45
 
50
- Installing `reflex` also installs the `reflex` command line tool.
46
+ ### 1. Create the project directory
51
47
 
52
- Test that the install was successful by creating a new project. (Replace `my_app_name` with your project name):
48
+ Replace `my_app_name` with your project name:
53
49
 
54
50
  ```bash
55
51
  mkdir my_app_name
56
52
  cd my_app_name
53
+ ```
54
+
55
+ ### 2. Set up a virtual environment
56
+
57
+ Create and activate virtual environment
58
+
59
+ ```bash
60
+ # On Windows:
61
+ python -m venv .venv
62
+ .venv\Scripts\activate
63
+
64
+ # On macOS/Linux:
65
+ python3 -m venv .venv
66
+ source .venv/bin/activate
67
+ ```
68
+
69
+ ### 3. Install Reflex
70
+
71
+ Reflex is available as a pip package (Requires Python 3.10+):
72
+
73
+ ```bash
74
+ pip install reflex
75
+ ```
76
+
77
+ ### 4. Initialize the project
78
+
79
+ This command initializes a template app in your new directory:
80
+
81
+ ```bash
57
82
  reflex init
58
83
  ```
59
84
 
60
- This command initializes a template app in your new directory.
85
+ ### 5. Run the app
61
86
 
62
87
  You can run this app in development mode:
63
88
 
@@ -69,6 +94,10 @@ You should see your app running at http://localhost:3000.
69
94
 
70
95
  Now you can modify the source code in `my_app_name/my_app_name.py`. Reflex has fast refreshes so you can see your changes instantly when you save your code.
71
96
 
97
+ ### Troubleshooting
98
+
99
+ If you installed Reflex without a virtual environment and the `reflex` command is not found, you can run commands using: `python3 -m reflex init` and `python3 -m reflex run`
100
+
72
101
  ## 🫧 Example App
73
102
 
74
103
  Let's go over an example: creating an image generation UI around [DALL·E](https://platform.openai.com/docs/guides/images/image-generation?context=node). For simplicity, we just call the [OpenAI API](https://platform.openai.com/docs/api-reference/authentication), but you could replace this with an ML model run locally.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "reflex"
3
- version = "0.8.15a2"
3
+ version = "0.8.21"
4
4
  description = "Web apps in pure Python."
5
5
  license.text = "Apache-2.0"
6
6
  authors = [
@@ -30,13 +30,13 @@ dependencies = [
30
30
  "pydantic >=1.10.21,<3.0",
31
31
  "python-multipart >=0.0.20,<1.0",
32
32
  "python-socketio >=5.12.0,<6.0",
33
- "redis >=5.2.1,<7.0",
34
- "reflex-hosting-cli >=0.1.55",
33
+ "redis >=5.2.1,<8.0",
34
+ "reflex-hosting-cli >=0.1.59",
35
35
  "rich >=13,<15",
36
36
  "sqlmodel >=0.0.27,<0.1",
37
37
  "starlette >=0.47.0",
38
38
  "typing_extensions >=4.13.0",
39
- "wrapt >=1.17.0,<2.0",
39
+ "wrapt >=1.17.0,<3.0",
40
40
  ]
41
41
 
42
42
  classifiers = [
@@ -123,6 +123,7 @@ reportIncompatibleMethodOverride = false
123
123
  target-version = "py310"
124
124
  output-format = "concise"
125
125
  lint.isort.split-on-trailing-comma = false
126
+ preview = true
126
127
  lint.select = ["ALL"]
127
128
  lint.ignore = [
128
129
  "A",
@@ -134,12 +135,18 @@ lint.ignore = [
134
135
  "BLE",
135
136
  "C901",
136
137
  "COM",
138
+ "CPY001",
137
139
  "D205",
140
+ "DOC202",
141
+ "DOC501",
142
+ "DOC502",
138
143
  "DTZ",
139
144
  "E501",
140
145
  "F403",
141
146
  "FBT",
142
147
  "FIX",
148
+ "FURB189",
149
+ "FURB140",
143
150
  "G004",
144
151
  "ISC003",
145
152
  "PLC",
@@ -180,6 +187,7 @@ lint.flake8-bugbear.extend-immutable-calls = [
180
187
  "*.pyi" = ["D301", "D415", "D417", "D418", "E742", "N", "PGH"]
181
188
  "pyi_generator.py" = ["N802"]
182
189
  "reflex/constants/*.py" = ["N"]
190
+ "reflex/.templates/apps/blank/code/*" = ["INP001"]
183
191
  "*/blank.py" = ["I001"]
184
192
 
185
193
  [tool.pytest.ini_options]
@@ -235,7 +243,7 @@ fail_fast = true
235
243
 
236
244
  [[tool.pre-commit.repos]]
237
245
  repo = "https://github.com/astral-sh/ruff-pre-commit"
238
- rev = "v0.13.3"
246
+ rev = "v0.14.6"
239
247
  hooks = [
240
248
  { id = "ruff-format", args = [
241
249
  "reflex",
@@ -267,14 +275,9 @@ hooks = [
267
275
 
268
276
  [[tool.pre-commit.repos]]
269
277
  repo = "https://github.com/RobertCraigie/pyright-python"
270
- rev = "v1.1.406"
278
+ rev = "v1.1.407"
271
279
  hooks = [{ id = "pyright", args = ["reflex", "tests"], language = "system" }]
272
280
 
273
- [[tool.pre-commit.repos]]
274
- repo = "https://github.com/terrencepreilly/darglint"
275
- rev = "v1.8.1"
276
- hooks = [{ id = "darglint", exclude = "^reflex/reflex.py" }]
277
-
278
281
  [[tool.pre-commit.repos]]
279
282
  repo = "https://github.com/pre-commit/mirrors-prettier"
280
283
  rev = "f62a70a3a7114896b062de517d72829ea1c884b6"
@@ -176,7 +176,7 @@ export const queueEventIfSocketExists = async (
176
176
  if (!socket) {
177
177
  return;
178
178
  }
179
- await queueEvents(events, socket, navigate, params);
179
+ await queueEvents(events, socket, false, navigate, params);
180
180
  };
181
181
 
182
182
  /**
@@ -256,13 +256,13 @@ export const applyEvent = async (event, socket, navigate, params) => {
256
256
 
257
257
  if (event.name == "_clear_session_storage") {
258
258
  sessionStorage.clear();
259
- queueEvents(initialEvents(), socket, navigate, params);
259
+ queueEventIfSocketExists(initialEvents(), socket, navigate, params);
260
260
  return false;
261
261
  }
262
262
 
263
263
  if (event.name == "_remove_session_storage") {
264
264
  sessionStorage.removeItem(event.payload.key);
265
- queueEvents(initialEvents(), socket, navigate, params);
265
+ queueEventIfSocketExists(initialEvents(), socket, navigate, params);
266
266
  return false;
267
267
  }
268
268
 
@@ -568,6 +568,7 @@ export const connect = async (
568
568
  !socket.current.wait_connect
569
569
  ) {
570
570
  socket.current.wait_connect = true;
571
+ socket.current.rehydrate = true;
571
572
  socket.current.io.opts.query = { token: getToken() }; // Update token for reconnect.
572
573
  socket.current.connect();
573
574
  }
@@ -615,6 +616,16 @@ export const connect = async (
615
616
  window.addEventListener("pagehide", pagehideHandler);
616
617
  window.addEventListener("beforeunload", disconnectTrigger);
617
618
  window.addEventListener("unload", disconnectTrigger);
619
+ if (socket.current.rehydrate) {
620
+ socket.current.rehydrate = false;
621
+ queueEvents(
622
+ initialEvents(),
623
+ socket,
624
+ true,
625
+ navigate,
626
+ () => params.current,
627
+ );
628
+ }
618
629
  // Drain any initial events from the queue.
619
630
  while (event_queue.length > 0 && !event_processing) {
620
631
  await processEvent(socket.current, navigate, () => params.current);
@@ -665,7 +676,9 @@ export const connect = async (
665
676
  }
666
677
  }
667
678
  applyClientStorageDelta(client_storage, update.delta);
668
- event_processing = !update.final;
679
+ if (update.final !== null) {
680
+ event_processing = !update.final;
681
+ }
669
682
  if (update.events) {
670
683
  queueEvents(update.events, socket, false, navigate, params);
671
684
  }
@@ -852,7 +865,7 @@ export const useEventLoop = (
852
865
  await connect(
853
866
  socket,
854
867
  dispatch,
855
- ["websocket"],
868
+ [env.TRANSPORT],
856
869
  setConnectErrors,
857
870
  client_storage,
858
871
  navigate,