reflex 0.8.3a2__tar.gz → 0.8.4__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 (409) hide show
  1. {reflex-0.8.3a2 → reflex-0.8.4}/PKG-INFO +2 -2
  2. {reflex-0.8.3a2 → reflex-0.8.4}/pyproject.toml +41 -43
  3. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/web/utils/react-theme.js +8 -1
  4. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/web/utils/state.js +2 -2
  5. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/app.py +6 -20
  6. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/compiler/utils.py +6 -0
  7. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/separator.py +4 -4
  8. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/separator.pyi +3 -3
  9. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/constants/installer.py +4 -4
  10. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/custom_components/custom_components.py +1 -1
  11. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/environment.py +0 -3
  12. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/event.py +2 -2
  13. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/istate/data.py +7 -1
  14. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/plugins/base.py +2 -2
  15. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/route.py +4 -4
  16. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/testing.py +288 -180
  17. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/utils/console.py +5 -21
  18. reflex-0.8.4/reflex/utils/decorator.py +147 -0
  19. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/utils/exec.py +4 -5
  20. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/utils/format.py +1 -1
  21. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/utils/misc.py +40 -0
  22. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/utils/net.py +8 -3
  23. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/utils/prerequisites.py +9 -67
  24. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/utils/processes.py +46 -7
  25. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/utils/redir.py +3 -5
  26. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/utils/registry.py +14 -2
  27. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/utils/telemetry.py +2 -2
  28. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/vars/dep_tracking.py +27 -30
  29. reflex-0.8.3a2/reflex/utils/decorator.py +0 -72
  30. {reflex-0.8.3a2 → reflex-0.8.4}/.gitignore +0 -0
  31. {reflex-0.8.3a2 → reflex-0.8.4}/LICENSE +0 -0
  32. {reflex-0.8.3a2 → reflex-0.8.4}/README.md +0 -0
  33. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/apps/blank/assets/favicon.ico +0 -0
  34. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/apps/blank/code/__init__.py +0 -0
  35. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/apps/blank/code/blank.py +0 -0
  36. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/jinja/app/rxconfig.py.jinja2 +0 -0
  37. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/jinja/custom_components/README.md.jinja2 +0 -0
  38. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/jinja/custom_components/__init__.py.jinja2 +0 -0
  39. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/jinja/custom_components/demo_app.py.jinja2 +0 -0
  40. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/jinja/custom_components/pyproject.toml.jinja2 +0 -0
  41. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/jinja/custom_components/src.py.jinja2 +0 -0
  42. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/jinja/web/package.json.jinja2 +0 -0
  43. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/jinja/web/pages/_app.js.jinja2 +0 -0
  44. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/jinja/web/pages/_document.js.jinja2 +0 -0
  45. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/jinja/web/pages/base_page.js.jinja2 +0 -0
  46. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/jinja/web/pages/component.js.jinja2 +0 -0
  47. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/jinja/web/pages/custom_component.js.jinja2 +0 -0
  48. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/jinja/web/pages/index.js.jinja2 +0 -0
  49. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/jinja/web/pages/macros.js.jinja2 +0 -0
  50. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/jinja/web/pages/stateful_component.js.jinja2 +0 -0
  51. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/jinja/web/pages/stateful_components.js.jinja2 +0 -0
  52. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/jinja/web/pages/utils.js.jinja2 +0 -0
  53. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/jinja/web/styles/styles.css.jinja2 +0 -0
  54. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/jinja/web/utils/context.js.jinja2 +0 -0
  55. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/jinja/web/utils/theme.js.jinja2 +0 -0
  56. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/web/.gitignore +0 -0
  57. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/web/app/entry.client.js +0 -0
  58. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/web/app/routes.js +0 -0
  59. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +0 -0
  60. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/web/components/shiki/code.js +0 -0
  61. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/web/jsconfig.json +0 -0
  62. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/web/postcss.config.js +0 -0
  63. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/web/react-router.config.js +0 -0
  64. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/web/styles/__reflex_style_reset.css +0 -0
  65. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/web/utils/client_side_routing.js +0 -0
  66. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/web/utils/helpers/dataeditor.js +0 -0
  67. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/web/utils/helpers/debounce.js +0 -0
  68. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/web/utils/helpers/paste.js +0 -0
  69. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/web/utils/helpers/range.js +0 -0
  70. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/web/utils/helpers/throttle.js +0 -0
  71. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/web/vite-plugin-safari-cachebust.js +0 -0
  72. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/.templates/web/vite.config.js +0 -0
  73. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/__init__.py +0 -0
  74. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/__init__.pyi +0 -0
  75. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/__main__.py +0 -0
  76. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/admin.py +0 -0
  77. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/app_mixins/__init__.py +0 -0
  78. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/app_mixins/lifespan.py +0 -0
  79. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/app_mixins/middleware.py +0 -0
  80. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/app_mixins/mixin.py +0 -0
  81. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/assets.py +0 -0
  82. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/base.py +0 -0
  83. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/compiler/__init__.py +0 -0
  84. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/compiler/compiler.py +0 -0
  85. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/compiler/templates.py +0 -0
  86. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/__init__.py +0 -0
  87. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/__init__.pyi +0 -0
  88. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/base/__init__.py +0 -0
  89. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/base/__init__.pyi +0 -0
  90. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/base/app_wrap.py +0 -0
  91. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/base/app_wrap.pyi +0 -0
  92. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/base/bare.py +0 -0
  93. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/base/body.py +0 -0
  94. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/base/body.pyi +0 -0
  95. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/base/document.py +0 -0
  96. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/base/document.pyi +0 -0
  97. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/base/error_boundary.py +0 -0
  98. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/base/error_boundary.pyi +0 -0
  99. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/base/fragment.py +0 -0
  100. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/base/fragment.pyi +0 -0
  101. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/base/link.py +0 -0
  102. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/base/link.pyi +0 -0
  103. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/base/meta.py +0 -0
  104. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/base/meta.pyi +0 -0
  105. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/base/script.py +0 -0
  106. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/base/script.pyi +0 -0
  107. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/base/strict_mode.py +0 -0
  108. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/base/strict_mode.pyi +0 -0
  109. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/component.py +0 -0
  110. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/core/__init__.py +0 -0
  111. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/core/__init__.pyi +0 -0
  112. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/core/auto_scroll.py +0 -0
  113. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/core/auto_scroll.pyi +0 -0
  114. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/core/banner.py +0 -0
  115. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/core/banner.pyi +0 -0
  116. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/core/breakpoints.py +0 -0
  117. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/core/client_side_routing.py +0 -0
  118. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/core/client_side_routing.pyi +0 -0
  119. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/core/clipboard.py +0 -0
  120. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/core/clipboard.pyi +0 -0
  121. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/core/colors.py +0 -0
  122. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/core/cond.py +0 -0
  123. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/core/debounce.py +0 -0
  124. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/core/debounce.pyi +0 -0
  125. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/core/foreach.py +0 -0
  126. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/core/helmet.py +0 -0
  127. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/core/helmet.pyi +0 -0
  128. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/core/html.py +0 -0
  129. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/core/html.pyi +0 -0
  130. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/core/layout/__init__.py +0 -0
  131. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/core/match.py +0 -0
  132. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/core/responsive.py +0 -0
  133. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/core/sticky.py +0 -0
  134. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/core/sticky.pyi +0 -0
  135. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/core/upload.py +0 -0
  136. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/core/upload.pyi +0 -0
  137. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/core/window_events.py +0 -0
  138. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/core/window_events.pyi +0 -0
  139. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/datadisplay/__init__.py +0 -0
  140. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/datadisplay/__init__.pyi +0 -0
  141. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/datadisplay/code.py +0 -0
  142. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/datadisplay/code.pyi +0 -0
  143. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/datadisplay/dataeditor.py +0 -0
  144. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/datadisplay/dataeditor.pyi +0 -0
  145. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/datadisplay/logo.py +0 -0
  146. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/datadisplay/shiki_code_block.py +0 -0
  147. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/datadisplay/shiki_code_block.pyi +0 -0
  148. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/dynamic.py +0 -0
  149. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/el/__init__.py +0 -0
  150. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/el/__init__.pyi +0 -0
  151. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/el/constants/__init__.py +0 -0
  152. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/el/constants/html.py +0 -0
  153. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/el/constants/react.py +0 -0
  154. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/el/constants/reflex.py +0 -0
  155. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/el/element.py +0 -0
  156. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/el/element.pyi +0 -0
  157. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/el/elements/__init__.py +0 -0
  158. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/el/elements/__init__.pyi +0 -0
  159. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/el/elements/base.py +0 -0
  160. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/el/elements/base.pyi +0 -0
  161. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/el/elements/forms.py +0 -0
  162. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/el/elements/forms.pyi +0 -0
  163. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/el/elements/inline.py +0 -0
  164. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/el/elements/inline.pyi +0 -0
  165. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/el/elements/media.py +0 -0
  166. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/el/elements/media.pyi +0 -0
  167. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/el/elements/metadata.py +0 -0
  168. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/el/elements/metadata.pyi +0 -0
  169. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/el/elements/other.py +0 -0
  170. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/el/elements/other.pyi +0 -0
  171. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/el/elements/scripts.py +0 -0
  172. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/el/elements/scripts.pyi +0 -0
  173. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/el/elements/sectioning.py +0 -0
  174. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/el/elements/sectioning.pyi +0 -0
  175. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/el/elements/tables.py +0 -0
  176. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/el/elements/tables.pyi +0 -0
  177. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/el/elements/typography.py +0 -0
  178. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/el/elements/typography.pyi +0 -0
  179. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/field.py +0 -0
  180. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/gridjs/__init__.py +0 -0
  181. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/gridjs/datatable.py +0 -0
  182. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/gridjs/datatable.pyi +0 -0
  183. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/literals.py +0 -0
  184. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/lucide/__init__.py +0 -0
  185. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/lucide/icon.py +0 -0
  186. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/lucide/icon.pyi +0 -0
  187. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/markdown/__init__.py +0 -0
  188. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/markdown/markdown.py +0 -0
  189. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/markdown/markdown.pyi +0 -0
  190. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/moment/__init__.py +0 -0
  191. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/moment/moment.py +0 -0
  192. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/moment/moment.pyi +0 -0
  193. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/plotly/__init__.py +0 -0
  194. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/plotly/plotly.py +0 -0
  195. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/plotly/plotly.pyi +0 -0
  196. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/props.py +0 -0
  197. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/__init__.py +0 -0
  198. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/__init__.pyi +0 -0
  199. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/primitives/__init__.py +0 -0
  200. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/primitives/__init__.pyi +0 -0
  201. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/primitives/accordion.py +0 -0
  202. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/primitives/accordion.pyi +0 -0
  203. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/primitives/base.py +0 -0
  204. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/primitives/base.pyi +0 -0
  205. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/primitives/drawer.py +0 -0
  206. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/primitives/drawer.pyi +0 -0
  207. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/primitives/form.py +0 -0
  208. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/primitives/form.pyi +0 -0
  209. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/primitives/progress.py +0 -0
  210. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/primitives/progress.pyi +0 -0
  211. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/primitives/slider.py +0 -0
  212. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/primitives/slider.pyi +0 -0
  213. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/__init__.py +0 -0
  214. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/__init__.pyi +0 -0
  215. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/base.py +0 -0
  216. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/base.pyi +0 -0
  217. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/color_mode.py +0 -0
  218. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/color_mode.pyi +0 -0
  219. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/__init__.py +0 -0
  220. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/__init__.pyi +0 -0
  221. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/alert_dialog.py +0 -0
  222. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/alert_dialog.pyi +0 -0
  223. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/aspect_ratio.py +0 -0
  224. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/aspect_ratio.pyi +0 -0
  225. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/avatar.py +0 -0
  226. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/avatar.pyi +0 -0
  227. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/badge.py +0 -0
  228. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/badge.pyi +0 -0
  229. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/button.py +0 -0
  230. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/button.pyi +0 -0
  231. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/callout.py +0 -0
  232. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/callout.pyi +0 -0
  233. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/card.py +0 -0
  234. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/card.pyi +0 -0
  235. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/checkbox.py +0 -0
  236. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/checkbox.pyi +0 -0
  237. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/checkbox_cards.py +0 -0
  238. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/checkbox_cards.pyi +0 -0
  239. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/checkbox_group.py +0 -0
  240. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/checkbox_group.pyi +0 -0
  241. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/context_menu.py +0 -0
  242. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/context_menu.pyi +0 -0
  243. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/data_list.py +0 -0
  244. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/data_list.pyi +0 -0
  245. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/dialog.py +0 -0
  246. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/dialog.pyi +0 -0
  247. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/dropdown_menu.py +0 -0
  248. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/dropdown_menu.pyi +0 -0
  249. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/hover_card.py +0 -0
  250. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/hover_card.pyi +0 -0
  251. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/icon_button.py +0 -0
  252. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/icon_button.pyi +0 -0
  253. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/inset.py +0 -0
  254. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/inset.pyi +0 -0
  255. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/popover.py +0 -0
  256. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/popover.pyi +0 -0
  257. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/progress.py +0 -0
  258. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/progress.pyi +0 -0
  259. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/radio.py +0 -0
  260. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/radio.pyi +0 -0
  261. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/radio_cards.py +0 -0
  262. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/radio_cards.pyi +0 -0
  263. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/radio_group.py +0 -0
  264. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/radio_group.pyi +0 -0
  265. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/scroll_area.py +0 -0
  266. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/scroll_area.pyi +0 -0
  267. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/segmented_control.py +0 -0
  268. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/segmented_control.pyi +0 -0
  269. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/select.py +0 -0
  270. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/select.pyi +0 -0
  271. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/skeleton.py +0 -0
  272. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/skeleton.pyi +0 -0
  273. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/slider.py +0 -0
  274. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/slider.pyi +0 -0
  275. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/spinner.py +0 -0
  276. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/spinner.pyi +0 -0
  277. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/switch.py +0 -0
  278. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/switch.pyi +0 -0
  279. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/table.py +0 -0
  280. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/table.pyi +0 -0
  281. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/tabs.py +0 -0
  282. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/tabs.pyi +0 -0
  283. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/text_area.py +0 -0
  284. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/text_area.pyi +0 -0
  285. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/text_field.py +0 -0
  286. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/text_field.pyi +0 -0
  287. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/tooltip.py +0 -0
  288. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/components/tooltip.pyi +0 -0
  289. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/layout/__init__.py +0 -0
  290. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/layout/__init__.pyi +0 -0
  291. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/layout/base.py +0 -0
  292. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/layout/base.pyi +0 -0
  293. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/layout/box.py +0 -0
  294. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/layout/box.pyi +0 -0
  295. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/layout/center.py +0 -0
  296. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/layout/center.pyi +0 -0
  297. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/layout/container.py +0 -0
  298. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/layout/container.pyi +0 -0
  299. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/layout/flex.py +0 -0
  300. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/layout/flex.pyi +0 -0
  301. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/layout/grid.py +0 -0
  302. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/layout/grid.pyi +0 -0
  303. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/layout/list.py +0 -0
  304. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/layout/list.pyi +0 -0
  305. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/layout/section.py +0 -0
  306. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/layout/section.pyi +0 -0
  307. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/layout/spacer.py +0 -0
  308. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/layout/spacer.pyi +0 -0
  309. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/layout/stack.py +0 -0
  310. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/layout/stack.pyi +0 -0
  311. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/typography/__init__.py +0 -0
  312. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/typography/__init__.pyi +0 -0
  313. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/typography/base.py +0 -0
  314. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/typography/blockquote.py +0 -0
  315. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/typography/blockquote.pyi +0 -0
  316. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/typography/code.py +0 -0
  317. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/typography/code.pyi +0 -0
  318. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/typography/heading.py +0 -0
  319. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/typography/heading.pyi +0 -0
  320. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/typography/link.py +0 -0
  321. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/typography/link.pyi +0 -0
  322. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/typography/text.py +0 -0
  323. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/radix/themes/typography/text.pyi +0 -0
  324. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/react_player/__init__.py +0 -0
  325. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/react_player/audio.py +0 -0
  326. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/react_player/audio.pyi +0 -0
  327. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/react_player/react_player.py +0 -0
  328. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/react_player/react_player.pyi +0 -0
  329. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/react_player/video.py +0 -0
  330. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/react_player/video.pyi +0 -0
  331. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/react_router/__init__.py +0 -0
  332. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/react_router/dom.py +0 -0
  333. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/react_router/dom.pyi +0 -0
  334. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/recharts/__init__.py +0 -0
  335. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/recharts/__init__.pyi +0 -0
  336. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/recharts/cartesian.py +0 -0
  337. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/recharts/cartesian.pyi +0 -0
  338. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/recharts/charts.py +0 -0
  339. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/recharts/charts.pyi +0 -0
  340. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/recharts/general.py +0 -0
  341. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/recharts/general.pyi +0 -0
  342. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/recharts/polar.py +0 -0
  343. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/recharts/polar.pyi +0 -0
  344. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/recharts/recharts.py +0 -0
  345. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/recharts/recharts.pyi +0 -0
  346. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/sonner/__init__.py +0 -0
  347. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/sonner/toast.py +0 -0
  348. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/sonner/toast.pyi +0 -0
  349. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/tags/__init__.py +0 -0
  350. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/tags/cond_tag.py +0 -0
  351. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/tags/iter_tag.py +0 -0
  352. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/tags/match_tag.py +0 -0
  353. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/tags/tag.py +0 -0
  354. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/components/tags/tagless.py +0 -0
  355. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/config.py +0 -0
  356. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/constants/__init__.py +0 -0
  357. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/constants/base.py +0 -0
  358. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/constants/colors.py +0 -0
  359. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/constants/compiler.py +0 -0
  360. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/constants/config.py +0 -0
  361. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/constants/custom_components.py +0 -0
  362. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/constants/event.py +0 -0
  363. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/constants/route.py +0 -0
  364. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/constants/state.py +0 -0
  365. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/constants/utils.py +0 -0
  366. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/custom_components/__init__.py +0 -0
  367. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/experimental/__init__.py +0 -0
  368. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/experimental/client_state.py +0 -0
  369. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/experimental/hooks.py +0 -0
  370. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/istate/__init__.py +0 -0
  371. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/istate/dynamic.py +0 -0
  372. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/istate/manager.py +0 -0
  373. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/istate/proxy.py +0 -0
  374. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/istate/storage.py +0 -0
  375. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/istate/wrappers.py +0 -0
  376. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/middleware/__init__.py +0 -0
  377. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/middleware/hydrate_middleware.py +0 -0
  378. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/middleware/middleware.py +0 -0
  379. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/model.py +0 -0
  380. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/page.py +0 -0
  381. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/plugins/__init__.py +0 -0
  382. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/plugins/shared_tailwind.py +0 -0
  383. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/plugins/sitemap.py +0 -0
  384. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/plugins/tailwind_v3.py +0 -0
  385. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/plugins/tailwind_v4.py +0 -0
  386. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/py.typed +0 -0
  387. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/reflex.py +0 -0
  388. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/state.py +0 -0
  389. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/style.py +0 -0
  390. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/utils/__init__.py +0 -0
  391. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/utils/build.py +0 -0
  392. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/utils/codespaces.py +0 -0
  393. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/utils/compat.py +0 -0
  394. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/utils/exceptions.py +0 -0
  395. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/utils/export.py +0 -0
  396. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/utils/imports.py +0 -0
  397. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/utils/lazy_loader.py +0 -0
  398. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/utils/path_ops.py +0 -0
  399. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/utils/pyi_generator.py +0 -0
  400. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/utils/serializers.py +0 -0
  401. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/utils/types.py +0 -0
  402. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/vars/__init__.py +0 -0
  403. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/vars/base.py +0 -0
  404. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/vars/datetime.py +0 -0
  405. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/vars/function.py +0 -0
  406. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/vars/number.py +0 -0
  407. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/vars/object.py +0 -0
  408. {reflex-0.8.3a2 → reflex-0.8.4}/reflex/vars/sequence.py +0 -0
  409. {reflex-0.8.3a2 → reflex-0.8.4}/scripts/hatch_build.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: reflex
3
- Version: 0.8.3a2
3
+ Version: 0.8.4
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
@@ -20,7 +20,6 @@ Classifier: Programming Language :: Python :: 3.13
20
20
  Requires-Python: <4.0,>=3.10
21
21
  Requires-Dist: alembic<2.0,>=1.15.2
22
22
  Requires-Dist: click>=8.2
23
- Requires-Dist: fastapi>=0.115.0
24
23
  Requires-Dist: granian[reload]>=2.4.0
25
24
  Requires-Dist: httpx<1.0,>=0.28.0
26
25
  Requires-Dist: jinja2<4.0,>=3.1.2
@@ -34,6 +33,7 @@ Requires-Dist: redis<7.0,>=5.2.1
34
33
  Requires-Dist: reflex-hosting-cli>=0.1.51
35
34
  Requires-Dist: rich<15,>=13
36
35
  Requires-Dist: sqlmodel<0.1,>=0.0.24
36
+ Requires-Dist: starlette>=0.47.0
37
37
  Requires-Dist: typing-extensions>=4.13.0
38
38
  Requires-Dist: wrapt<2.0,>=1.17.0
39
39
  Description-Content-Type: text/markdown
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "reflex"
3
- version = "0.8.3a2"
3
+ version = "0.8.4"
4
4
  description = "Web apps in pure Python."
5
5
  license.text = "Apache-2.0"
6
6
  authors = [
@@ -21,7 +21,7 @@ keywords = ["web", "framework"]
21
21
  requires-python = ">=3.10,<4.0"
22
22
  dependencies = [
23
23
  "alembic >=1.15.2,<2.0",
24
- "fastapi >=0.115.0",
24
+ "click >=8.2",
25
25
  "granian[reload] >=2.4.0",
26
26
  "httpx >=0.28.0,<1.0",
27
27
  "jinja2 >=3.1.2,<4.0",
@@ -29,13 +29,13 @@ dependencies = [
29
29
  "platformdirs >=4.3.7,<5.0",
30
30
  "psutil >=7.0.0,<8.0; sys_platform == 'win32'",
31
31
  "pydantic >=1.10.21,<3.0",
32
- "python-socketio >=5.12.0,<6.0",
33
32
  "python-multipart >=0.0.20,<1.0",
33
+ "python-socketio >=5.12.0,<6.0",
34
34
  "redis >=5.2.1,<7.0",
35
35
  "reflex-hosting-cli >=0.1.51",
36
36
  "rich >=13,<15",
37
37
  "sqlmodel >=0.0.24,<0.1",
38
- "click >=8.2",
38
+ "starlette >=0.47.0",
39
39
  "typing_extensions >=4.13.0",
40
40
  "wrapt >=1.17.0,<2.0",
41
41
  ]
@@ -58,18 +58,49 @@ documentation = "https://reflex.dev/docs/getting-started/introduction"
58
58
  [project.scripts]
59
59
  reflex = "reflex.reflex:cli"
60
60
 
61
+ [dependency-groups]
62
+ dev = [
63
+ "asynctest",
64
+ "darglint",
65
+ "dill",
66
+ "fastapi",
67
+ "hatchling",
68
+ "libsass",
69
+ "numpy",
70
+ "pandas",
71
+ "pillow",
72
+ "playwright",
73
+ "plotly",
74
+ "pre-commit",
75
+ "psutil",
76
+ "psycopg[binary]",
77
+ "pyright",
78
+ "pytest-asyncio",
79
+ "pytest-benchmark",
80
+ "pytest-codspeed",
81
+ "pytest-cov",
82
+ "pytest-mock",
83
+ "pytest-playwright",
84
+ "pytest-retry",
85
+ "pytest-split",
86
+ "pytest",
87
+ "python-dotenv",
88
+ "ruff",
89
+ "selenium",
90
+ "starlette-admin",
91
+ "toml",
92
+ "uvicorn",
93
+ ]
94
+
95
+
61
96
  [build-system]
62
97
  requires = ["hatchling"]
63
98
  build-backend = "hatchling.build"
64
99
 
65
100
  [tool.hatch.build]
66
101
  include = ["reflex", "scripts/hatch_build.py"]
67
-
68
- [tool.hatch.build.targets.sdist]
69
- artifacts = ["*.pyi"]
70
-
71
- [tool.hatch.build.targets.wheel]
72
- artifacts = ["*.pyi"]
102
+ targets.sdist.artifacts = ["*.pyi"]
103
+ targets.wheel.artifacts = ["*.pyi"]
73
104
 
74
105
  [tool.hatch.build.hooks.custom]
75
106
  path = "scripts/hatch_build.py"
@@ -152,39 +183,6 @@ asyncio_mode = "auto"
152
183
  skip = "docs/*,*.html,examples/*, *.pyi, poetry.lock, uv.lock"
153
184
  ignore-words-list = "te, TreeE"
154
185
 
155
- [dependency-groups]
156
- dev = [
157
- "asynctest >=0.13",
158
- "darglint >=1.8",
159
- "dill >=0.3",
160
- "hatchling >=1.27",
161
- "libsass >=0.23",
162
- "numpy >=2.2",
163
- "pandas >=2.2",
164
- "pillow >=11",
165
- "playwright >=1.51",
166
- "plotly >=6.0",
167
- "pre-commit ==4.2.0",
168
- "psutil >=7.0.0",
169
- "psycopg[binary] >=3.2",
170
- "pyright >=1.1.400",
171
- "pytest >=8.3",
172
- "pytest-asyncio >=0.26",
173
- "pytest-benchmark >=5.1",
174
- "pytest-codspeed >=3.2",
175
- "pytest-cov >=6.1",
176
- "pytest-mock >=3.14",
177
- "pytest-playwright >=0.7",
178
- "pytest-retry >=1.7",
179
- "pytest-split >=0.10",
180
- "python-dotenv >=1",
181
- "ruff >=0.11",
182
- "selenium >=4.31",
183
- "starlette-admin >=0.14",
184
- "toml >=0.10.2",
185
- "uvicorn >=0.34.0",
186
- ]
187
-
188
186
 
189
187
  [tool.coverage.run]
190
188
  source = ["reflex"]
@@ -21,6 +21,7 @@ export function ThemeProvider({ children, defaultTheme = "system" }) {
21
21
  const [systemTheme, setSystemTheme] = useState(
22
22
  defaultTheme !== "system" ? defaultTheme : "light",
23
23
  );
24
+ const [isInitialized, setIsInitialized] = useState(false);
24
25
 
25
26
  const firstRender = useRef(true);
26
27
 
@@ -36,6 +37,7 @@ export function ThemeProvider({ children, defaultTheme = "system" }) {
36
37
  if (lastCompiledTheme !== defaultColorMode) {
37
38
  // on app startup, make sure the application color mode is persisted correctly.
38
39
  localStorage.setItem("last_compiled_theme", defaultColorMode);
40
+ setIsInitialized(true);
39
41
  return;
40
42
  }
41
43
  }
@@ -43,6 +45,7 @@ export function ThemeProvider({ children, defaultTheme = "system" }) {
43
45
  // Load saved theme from localStorage
44
46
  const savedTheme = localStorage.getItem("theme") || defaultTheme;
45
47
  setTheme(savedTheme);
48
+ setIsInitialized(true);
46
49
  });
47
50
 
48
51
  const resolvedTheme = useMemo(
@@ -69,16 +72,20 @@ export function ThemeProvider({ children, defaultTheme = "system" }) {
69
72
  });
70
73
 
71
74
  // Save theme to localStorage whenever it changes
75
+ // Skip saving only if theme key already exists and we haven't initialized yet
72
76
  useEffect(() => {
77
+ const existingTheme = localStorage.getItem("theme");
78
+ if (!isInitialized && existingTheme !== null) return;
73
79
  localStorage.setItem("theme", theme);
74
80
  }, [theme]);
75
81
 
76
82
  useEffect(() => {
83
+ if (!isInitialized) return;
77
84
  const root = window.document.documentElement;
78
85
  root.classList.remove("light", "dark");
79
86
  root.classList.add(resolvedTheme);
80
87
  root.style.colorScheme = resolvedTheme;
81
- }, [resolvedTheme]);
88
+ }, [resolvedTheme, isInitialized]);
82
89
 
83
90
  return createElement(
84
91
  ThemeContext.Provider,
@@ -791,9 +791,9 @@ export const hydrateClientStorage = (client_storage) => {
791
791
  for (const state_key in client_storage.cookies) {
792
792
  const cookie_options = client_storage.cookies[state_key];
793
793
  const cookie_name = cookie_options.name || state_key;
794
- const cookie_value = cookies.get(cookie_name);
794
+ const cookie_value = cookies.get(cookie_name, { doNotParse: true });
795
795
  if (cookie_value !== undefined) {
796
- client_storage_values[state_key] = cookies.get(cookie_name);
796
+ client_storage_values[state_key] = cookie_value;
797
797
  }
798
798
  }
799
799
  }
@@ -28,7 +28,6 @@ from timeit import default_timer as timer
28
28
  from types import SimpleNamespace
29
29
  from typing import TYPE_CHECKING, Any, BinaryIO, ParamSpec, get_args, get_type_hints
30
30
 
31
- from fastapi import FastAPI
32
31
  from rich.progress import MofNCompleteColumn, Progress, TimeElapsedColumn
33
32
  from socketio import ASGIApp as EngineIOApp
34
33
  from socketio import AsyncNamespace, AsyncServer
@@ -441,9 +440,6 @@ class App(MiddlewareMixin, LifespanMixin):
441
440
  | None
442
441
  ) = None
443
442
 
444
- # FastAPI app for compatibility with FastAPI.
445
- _cached_fastapi_app: FastAPI | None = None
446
-
447
443
  @property
448
444
  def event_namespace(self) -> EventNamespace | None:
449
445
  """Get the event namespace.
@@ -598,32 +594,22 @@ class App(MiddlewareMixin, LifespanMixin):
598
594
  Returns:
599
595
  The backend api.
600
596
  """
597
+ from reflex.vars.base import GLOBAL_CACHE
598
+
601
599
  # For py3.9 compatibility when redis is used, we MUST add any decorator pages
602
600
  # before compiling the app in a thread to avoid event loop error (REF-2172).
603
601
  self._apply_decorated_pages()
604
602
 
605
- compile_future = concurrent.futures.ThreadPoolExecutor(max_workers=1).submit(
606
- self._compile, prerender_routes=is_prod_mode()
607
- )
603
+ self._compile(prerender_routes=is_prod_mode())
608
604
 
609
- def callback(f: concurrent.futures.Future):
610
- # Force background compile errors to print eagerly
611
- return f.result()
612
-
613
- compile_future.add_done_callback(callback)
614
- # Wait for the compile to finish to ensure all optional endpoints are mounted.
615
- compile_future.result()
605
+ # We will not be making more vars, so we can clear the global cache to free up memory.
606
+ GLOBAL_CACHE.clear()
616
607
 
617
608
  if not self._api:
618
609
  msg = "The app has not been initialized."
619
610
  raise ValueError(msg)
620
611
 
621
- if self._cached_fastapi_app is not None:
622
- asgi_app = self._cached_fastapi_app
623
- asgi_app.mount("", self._api)
624
- App._add_cors(asgi_app)
625
- else:
626
- asgi_app = self._api
612
+ asgi_app = self._api
627
613
 
628
614
  if self.api_transformer is not None:
629
615
  api_transformers: Sequence[Starlette | Callable[[ASGIApp], ASGIApp]] = (
@@ -359,6 +359,8 @@ def create_document_root(
359
359
  Returns:
360
360
  The document root.
361
361
  """
362
+ from reflex.utils.misc import preload_color_theme
363
+
362
364
  existing_meta_types = set()
363
365
 
364
366
  for component in head_components or []:
@@ -385,7 +387,11 @@ def create_document_root(
385
387
  Meta.create(name="viewport", content="width=device-width, initial-scale=1")
386
388
  )
387
389
 
390
+ # Add theme preload script as the very first component to prevent FOUC
391
+ theme_preload_components = [preload_color_theme()]
392
+
388
393
  head_components = [
394
+ *theme_preload_components,
389
395
  *(head_components or []),
390
396
  *maybe_head_components,
391
397
  *always_head_components,
@@ -6,7 +6,7 @@ from reflex.components.core.breakpoints import Responsive
6
6
  from reflex.components.radix.themes.base import LiteralAccentColor, RadixThemesComponent
7
7
  from reflex.vars.base import LiteralVar, Var
8
8
 
9
- LiteralSeperatorSize = Literal["1", "2", "3", "4"]
9
+ LiteralSeparatorSize = Literal["1", "2", "3", "4"]
10
10
 
11
11
 
12
12
  class Separator(RadixThemesComponent):
@@ -14,10 +14,10 @@ class Separator(RadixThemesComponent):
14
14
 
15
15
  tag = "Separator"
16
16
 
17
- # The size of the select: "1" | "2" | "3" | "4"
18
- size: Var[Responsive[LiteralSeperatorSize]] = LiteralVar.create("4")
17
+ # The size of the separator: "1" | "2" | "3" | "4"
18
+ size: Var[Responsive[LiteralSeparatorSize]] = LiteralVar.create("4")
19
19
 
20
- # The color of the select
20
+ # The color of the separator
21
21
  color_scheme: Var[LiteralAccentColor]
22
22
 
23
23
  # The orientation of the separator.
@@ -11,7 +11,7 @@ from reflex.components.radix.themes.base import RadixThemesComponent
11
11
  from reflex.event import EventType, PointerEventInfo
12
12
  from reflex.vars.base import Var
13
13
 
14
- LiteralSeperatorSize = Literal["1", "2", "3", "4"]
14
+ LiteralSeparatorSize = Literal["1", "2", "3", "4"]
15
15
 
16
16
  class Separator(RadixThemesComponent):
17
17
  @classmethod
@@ -127,8 +127,8 @@ class Separator(RadixThemesComponent):
127
127
 
128
128
  Args:
129
129
  *children: Child components.
130
- size: The size of the select: "1" | "2" | "3" | "4"
131
- color_scheme: The color of the select
130
+ size: The size of the separator: "1" | "2" | "3" | "4"
131
+ color_scheme: The color of the separator
132
132
  orientation: The orientation of the separator.
133
133
  decorative: When true, signifies that it is purely visual, carries no semantic meaning, and ensures it is not present in the accessibility tree.
134
134
  style: The style of the component.
@@ -14,7 +14,7 @@ class Bun(SimpleNamespace):
14
14
  """Bun constants."""
15
15
 
16
16
  # The Bun version.
17
- VERSION = "1.2.18"
17
+ VERSION = "1.2.19"
18
18
 
19
19
  # Min Bun Version
20
20
  MIN_VERSION = "1.2.17"
@@ -75,7 +75,7 @@ fetch-retries=0
75
75
 
76
76
 
77
77
  def _determine_react_router_version() -> str:
78
- default_version = "7.6.3"
78
+ default_version = "7.7.0"
79
79
  if (version := os.getenv("REACT_ROUTER_VERSION")) and version != default_version:
80
80
  from reflex.utils import console
81
81
 
@@ -143,11 +143,11 @@ class PackageJson(SimpleNamespace):
143
143
  "postcss-import": "16.1.1",
144
144
  "@react-router/dev": _react_router_version,
145
145
  "@react-router/fs-routes": _react_router_version,
146
- "rolldown-vite": "7.0.9",
146
+ "rolldown-vite": "7.0.11",
147
147
  }
148
148
  OVERRIDES = {
149
149
  # This should always match the `react` version in DEPENDENCIES for recharts compatibility.
150
150
  "react-is": _react_version,
151
151
  "cookie": "1.0.2",
152
- "rollup": "4.44.2",
152
+ "rollup": "4.45.1",
153
153
  }
@@ -12,7 +12,6 @@ from pathlib import Path
12
12
  from typing import Any
13
13
 
14
14
  import click
15
- import httpx
16
15
 
17
16
  from reflex import constants
18
17
  from reflex.constants import CustomComponents
@@ -467,6 +466,7 @@ def _collect_details_for_gallery():
467
466
  Raises:
468
467
  Exit: If pyproject.toml file is ill-formed or the request to the backend services fails.
469
468
  """
469
+ import httpx
470
470
  from reflex_cli.utils import hosting
471
471
 
472
472
  console.rule("[bold]Authentication with Reflex Services")
@@ -650,9 +650,6 @@ class EnvironmentVariables:
650
650
  # Enable full logging of debug messages to reflex user directory.
651
651
  REFLEX_ENABLE_FULL_LOGGING: EnvVar[bool] = env_var(False)
652
652
 
653
- # The path to the reflex errors log file. If not set, no separate error log will be used.
654
- REFLEX_ERROR_LOG_FILE: EnvVar[Path | None] = env_var(None)
655
-
656
653
 
657
654
  environment = EnvironmentVariables()
658
655
 
@@ -577,7 +577,7 @@ class JavascriptInputEvent:
577
577
  init=True,
578
578
  frozen=True,
579
579
  )
580
- class JavasciptKeyboardEvent:
580
+ class JavascriptKeyboardEvent:
581
581
  """Interface for a Javascript KeyboardEvent https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent."""
582
582
 
583
583
  key: str = ""
@@ -645,7 +645,7 @@ class KeyInputInfo(TypedDict):
645
645
 
646
646
 
647
647
  def key_event(
648
- e: ObjectVar[JavasciptKeyboardEvent],
648
+ e: ObjectVar[JavascriptKeyboardEvent],
649
649
  ) -> tuple[Var[str], Var[KeyInputInfo]]:
650
650
  """Get the key from a keyboard event.
651
651
 
@@ -3,7 +3,7 @@
3
3
  import dataclasses
4
4
  from collections.abc import Mapping
5
5
  from typing import TYPE_CHECKING
6
- from urllib.parse import _NetlocResultMixinStr, urlsplit
6
+ from urllib.parse import _NetlocResultMixinStr, parse_qsl, urlsplit
7
7
 
8
8
  from reflex import constants
9
9
  from reflex.utils import console, format
@@ -102,8 +102,10 @@ class ReflexURL(str, _NetlocResultMixinStr):
102
102
  if TYPE_CHECKING:
103
103
  scheme: str
104
104
  netloc: str
105
+ origin: str
105
106
  path: str
106
107
  query: str
108
+ query_parameters: Mapping[str, str]
107
109
  fragment: str
108
110
 
109
111
  def __new__(cls, url: str):
@@ -121,6 +123,10 @@ class ReflexURL(str, _NetlocResultMixinStr):
121
123
  object.__setattr__(obj, "netloc", netloc)
122
124
  object.__setattr__(obj, "path", path)
123
125
  object.__setattr__(obj, "query", query)
126
+ object.__setattr__(obj, "origin", f"{scheme}://{netloc}")
127
+ object.__setattr__(
128
+ obj, "query_parameters", _FrozenDictStrStr(**dict(parse_qsl(query)))
129
+ )
124
130
  object.__setattr__(obj, "fragment", fragment)
125
131
  return obj
126
132
 
@@ -17,7 +17,7 @@ class CommonContext(TypedDict):
17
17
  P = ParamSpec("P")
18
18
 
19
19
 
20
- class AddTaskProtcol(Protocol):
20
+ class AddTaskProtocol(Protocol):
21
21
  """Protocol for adding a task to the pre-compile context."""
22
22
 
23
23
  def __call__(
@@ -39,7 +39,7 @@ class AddTaskProtcol(Protocol):
39
39
  class PreCompileContext(CommonContext):
40
40
  """Context for pre-compile hooks."""
41
41
 
42
- add_save_task: AddTaskProtcol
42
+ add_save_task: AddTaskProtocol
43
43
  add_modify_task: Callable[[str, Callable[[str], str]], None]
44
44
  unevaluated_pages: Sequence["UnevaluatedPage"]
45
45
 
@@ -131,7 +131,7 @@ def replace_brackets_with_keywords(input_string: str) -> str:
131
131
  )
132
132
 
133
133
 
134
- def route_specifity(keyworded_route: str) -> tuple[int, int, int]:
134
+ def route_specificity(keyworded_route: str) -> tuple[int, int, int]:
135
135
  """Get the specificity of a route with keywords.
136
136
 
137
137
  The smaller the number, the more specific the route is.
@@ -193,13 +193,13 @@ def get_router(routes: list[str]) -> Callable[[str], str | None]:
193
193
  keyworded_routes = {
194
194
  replace_brackets_with_keywords(route): route for route in routes
195
195
  }
196
- sorted_routes_by_specifity = sorted(
196
+ sorted_routes_by_specificity = sorted(
197
197
  keyworded_routes.items(),
198
- key=lambda item: route_specifity(item[0]),
198
+ key=lambda item: route_specificity(item[0]),
199
199
  )
200
200
  regexed_routes = [
201
201
  (get_route_regex(keyworded_route), original_route)
202
- for keyworded_route, original_route in sorted_routes_by_specifity
202
+ for keyworded_route, original_route in sorted_routes_by_specificity
203
203
  ]
204
204
 
205
205
  def get_route(path: str) -> str | None: