reflex 0.8.5a2__tar.gz → 0.8.6a0__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 (406) hide show
  1. {reflex-0.8.5a2 → reflex-0.8.6a0}/PKG-INFO +5 -2
  2. {reflex-0.8.5a2 → reflex-0.8.6a0}/README.md +2 -1
  3. {reflex-0.8.5a2 → reflex-0.8.6a0}/pyproject.toml +8 -2
  4. reflex-0.8.5a2/reflex/.templates/web/vite.config.js → reflex-0.8.6a0/reflex/.templates/jinja/web/vite.config.js.jinja2 +11 -0
  5. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/web/utils/state.js +5 -0
  6. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/__init__.py +1 -0
  7. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/__init__.pyi +2 -0
  8. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/app.py +65 -13
  9. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/compiler/templates.py +3 -0
  10. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/datadisplay/dataeditor.py +3 -0
  11. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/datadisplay/dataeditor.pyi +2 -0
  12. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/el/__init__.pyi +4 -0
  13. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/el/elements/__init__.py +1 -0
  14. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/el/elements/__init__.pyi +5 -0
  15. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/el/elements/media.py +32 -0
  16. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/el/elements/media.pyi +261 -0
  17. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/lucide/icon.py +4 -1
  18. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/lucide/icon.pyi +4 -1
  19. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/sonner/toast.py +1 -1
  20. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/config.py +15 -0
  21. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/constants/base.py +3 -0
  22. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/state.py +27 -5
  23. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/testing.py +11 -0
  24. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/utils/decorator.py +1 -0
  25. reflex-0.8.6a0/reflex/utils/monitoring.py +180 -0
  26. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/utils/prerequisites.py +17 -0
  27. reflex-0.8.6a0/reflex/utils/token_manager.py +215 -0
  28. {reflex-0.8.5a2 → reflex-0.8.6a0}/.gitignore +0 -0
  29. {reflex-0.8.5a2 → reflex-0.8.6a0}/LICENSE +0 -0
  30. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/apps/blank/assets/favicon.ico +0 -0
  31. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/apps/blank/code/__init__.py +0 -0
  32. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/apps/blank/code/blank.py +0 -0
  33. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/jinja/app/rxconfig.py.jinja2 +0 -0
  34. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/jinja/custom_components/README.md.jinja2 +0 -0
  35. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/jinja/custom_components/__init__.py.jinja2 +0 -0
  36. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/jinja/custom_components/demo_app.py.jinja2 +0 -0
  37. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/jinja/custom_components/pyproject.toml.jinja2 +0 -0
  38. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/jinja/custom_components/src.py.jinja2 +0 -0
  39. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/jinja/web/package.json.jinja2 +0 -0
  40. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/jinja/web/pages/_app.js.jinja2 +0 -0
  41. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/jinja/web/pages/_document.js.jinja2 +0 -0
  42. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/jinja/web/pages/base_page.js.jinja2 +0 -0
  43. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/jinja/web/pages/component.js.jinja2 +0 -0
  44. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/jinja/web/pages/custom_component.js.jinja2 +0 -0
  45. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/jinja/web/pages/index.js.jinja2 +0 -0
  46. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/jinja/web/pages/macros.js.jinja2 +0 -0
  47. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/jinja/web/pages/stateful_component.js.jinja2 +0 -0
  48. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/jinja/web/pages/stateful_components.js.jinja2 +0 -0
  49. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/jinja/web/pages/utils.js.jinja2 +0 -0
  50. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/jinja/web/styles/styles.css.jinja2 +0 -0
  51. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/jinja/web/utils/context.js.jinja2 +0 -0
  52. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/jinja/web/utils/theme.js.jinja2 +0 -0
  53. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/web/.gitignore +0 -0
  54. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/web/app/entry.client.js +0 -0
  55. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/web/app/routes.js +0 -0
  56. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +0 -0
  57. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/web/components/shiki/code.js +0 -0
  58. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/web/jsconfig.json +0 -0
  59. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/web/postcss.config.js +0 -0
  60. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/web/react-router.config.js +0 -0
  61. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/web/styles/__reflex_style_reset.css +0 -0
  62. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/web/utils/client_side_routing.js +0 -0
  63. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/web/utils/helpers/dataeditor.js +0 -0
  64. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/web/utils/helpers/debounce.js +0 -0
  65. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/web/utils/helpers/paste.js +0 -0
  66. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/web/utils/helpers/range.js +0 -0
  67. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/web/utils/helpers/throttle.js +0 -0
  68. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/web/utils/react-theme.js +0 -0
  69. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/.templates/web/vite-plugin-safari-cachebust.js +0 -0
  70. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/__main__.py +0 -0
  71. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/admin.py +0 -0
  72. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/app_mixins/__init__.py +0 -0
  73. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/app_mixins/lifespan.py +0 -0
  74. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/app_mixins/middleware.py +0 -0
  75. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/app_mixins/mixin.py +0 -0
  76. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/assets.py +0 -0
  77. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/base.py +0 -0
  78. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/compiler/__init__.py +0 -0
  79. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/compiler/compiler.py +0 -0
  80. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/compiler/utils.py +0 -0
  81. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/__init__.py +0 -0
  82. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/__init__.pyi +0 -0
  83. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/base/__init__.py +0 -0
  84. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/base/__init__.pyi +0 -0
  85. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/base/app_wrap.py +0 -0
  86. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/base/app_wrap.pyi +0 -0
  87. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/base/bare.py +0 -0
  88. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/base/body.py +0 -0
  89. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/base/body.pyi +0 -0
  90. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/base/document.py +0 -0
  91. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/base/document.pyi +0 -0
  92. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/base/error_boundary.py +0 -0
  93. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/base/error_boundary.pyi +0 -0
  94. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/base/fragment.py +0 -0
  95. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/base/fragment.pyi +0 -0
  96. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/base/link.py +0 -0
  97. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/base/link.pyi +0 -0
  98. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/base/meta.py +0 -0
  99. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/base/meta.pyi +0 -0
  100. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/base/script.py +0 -0
  101. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/base/script.pyi +0 -0
  102. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/base/strict_mode.py +0 -0
  103. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/base/strict_mode.pyi +0 -0
  104. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/component.py +0 -0
  105. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/core/__init__.py +0 -0
  106. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/core/__init__.pyi +0 -0
  107. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/core/auto_scroll.py +0 -0
  108. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/core/auto_scroll.pyi +0 -0
  109. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/core/banner.py +0 -0
  110. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/core/banner.pyi +0 -0
  111. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/core/breakpoints.py +0 -0
  112. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/core/client_side_routing.py +0 -0
  113. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/core/client_side_routing.pyi +0 -0
  114. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/core/clipboard.py +0 -0
  115. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/core/clipboard.pyi +0 -0
  116. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/core/colors.py +0 -0
  117. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/core/cond.py +0 -0
  118. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/core/debounce.py +0 -0
  119. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/core/debounce.pyi +0 -0
  120. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/core/foreach.py +0 -0
  121. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/core/helmet.py +0 -0
  122. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/core/helmet.pyi +0 -0
  123. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/core/html.py +0 -0
  124. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/core/html.pyi +0 -0
  125. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/core/layout/__init__.py +0 -0
  126. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/core/match.py +0 -0
  127. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/core/responsive.py +0 -0
  128. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/core/sticky.py +0 -0
  129. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/core/sticky.pyi +0 -0
  130. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/core/upload.py +0 -0
  131. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/core/upload.pyi +0 -0
  132. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/core/window_events.py +0 -0
  133. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/core/window_events.pyi +0 -0
  134. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/datadisplay/__init__.py +0 -0
  135. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/datadisplay/__init__.pyi +0 -0
  136. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/datadisplay/code.py +0 -0
  137. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/datadisplay/code.pyi +0 -0
  138. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/datadisplay/logo.py +0 -0
  139. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/datadisplay/shiki_code_block.py +0 -0
  140. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/datadisplay/shiki_code_block.pyi +0 -0
  141. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/dynamic.py +0 -0
  142. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/el/__init__.py +0 -0
  143. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/el/element.py +0 -0
  144. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/el/element.pyi +0 -0
  145. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/el/elements/base.py +0 -0
  146. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/el/elements/base.pyi +0 -0
  147. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/el/elements/forms.py +0 -0
  148. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/el/elements/forms.pyi +0 -0
  149. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/el/elements/inline.py +0 -0
  150. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/el/elements/inline.pyi +0 -0
  151. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/el/elements/metadata.py +0 -0
  152. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/el/elements/metadata.pyi +0 -0
  153. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/el/elements/other.py +0 -0
  154. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/el/elements/other.pyi +0 -0
  155. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/el/elements/scripts.py +0 -0
  156. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/el/elements/scripts.pyi +0 -0
  157. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/el/elements/sectioning.py +0 -0
  158. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/el/elements/sectioning.pyi +0 -0
  159. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/el/elements/tables.py +0 -0
  160. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/el/elements/tables.pyi +0 -0
  161. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/el/elements/typography.py +0 -0
  162. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/el/elements/typography.pyi +0 -0
  163. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/field.py +0 -0
  164. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/gridjs/__init__.py +0 -0
  165. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/gridjs/datatable.py +0 -0
  166. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/gridjs/datatable.pyi +0 -0
  167. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/literals.py +0 -0
  168. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/lucide/__init__.py +0 -0
  169. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/markdown/__init__.py +0 -0
  170. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/markdown/markdown.py +0 -0
  171. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/markdown/markdown.pyi +0 -0
  172. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/moment/__init__.py +0 -0
  173. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/moment/moment.py +0 -0
  174. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/moment/moment.pyi +0 -0
  175. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/plotly/__init__.py +0 -0
  176. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/plotly/plotly.py +0 -0
  177. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/plotly/plotly.pyi +0 -0
  178. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/props.py +0 -0
  179. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/__init__.py +0 -0
  180. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/__init__.pyi +0 -0
  181. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/primitives/__init__.py +0 -0
  182. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/primitives/__init__.pyi +0 -0
  183. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/primitives/accordion.py +0 -0
  184. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/primitives/accordion.pyi +0 -0
  185. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/primitives/base.py +0 -0
  186. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/primitives/base.pyi +0 -0
  187. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/primitives/drawer.py +0 -0
  188. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/primitives/drawer.pyi +0 -0
  189. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/primitives/form.py +0 -0
  190. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/primitives/form.pyi +0 -0
  191. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/primitives/progress.py +0 -0
  192. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/primitives/progress.pyi +0 -0
  193. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/primitives/slider.py +0 -0
  194. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/primitives/slider.pyi +0 -0
  195. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/__init__.py +0 -0
  196. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/__init__.pyi +0 -0
  197. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/base.py +0 -0
  198. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/base.pyi +0 -0
  199. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/color_mode.py +0 -0
  200. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/color_mode.pyi +0 -0
  201. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/__init__.py +0 -0
  202. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/__init__.pyi +0 -0
  203. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/alert_dialog.py +0 -0
  204. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/alert_dialog.pyi +0 -0
  205. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/aspect_ratio.py +0 -0
  206. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/aspect_ratio.pyi +0 -0
  207. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/avatar.py +0 -0
  208. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/avatar.pyi +0 -0
  209. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/badge.py +0 -0
  210. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/badge.pyi +0 -0
  211. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/button.py +0 -0
  212. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/button.pyi +0 -0
  213. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/callout.py +0 -0
  214. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/callout.pyi +0 -0
  215. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/card.py +0 -0
  216. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/card.pyi +0 -0
  217. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/checkbox.py +0 -0
  218. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/checkbox.pyi +0 -0
  219. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/checkbox_cards.py +0 -0
  220. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/checkbox_cards.pyi +0 -0
  221. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/checkbox_group.py +0 -0
  222. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/checkbox_group.pyi +0 -0
  223. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/context_menu.py +0 -0
  224. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/context_menu.pyi +0 -0
  225. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/data_list.py +0 -0
  226. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/data_list.pyi +0 -0
  227. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/dialog.py +0 -0
  228. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/dialog.pyi +0 -0
  229. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/dropdown_menu.py +0 -0
  230. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/dropdown_menu.pyi +0 -0
  231. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/hover_card.py +0 -0
  232. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/hover_card.pyi +0 -0
  233. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/icon_button.py +0 -0
  234. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/icon_button.pyi +0 -0
  235. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/inset.py +0 -0
  236. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/inset.pyi +0 -0
  237. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/popover.py +0 -0
  238. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/popover.pyi +0 -0
  239. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/progress.py +0 -0
  240. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/progress.pyi +0 -0
  241. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/radio.py +0 -0
  242. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/radio.pyi +0 -0
  243. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/radio_cards.py +0 -0
  244. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/radio_cards.pyi +0 -0
  245. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/radio_group.py +0 -0
  246. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/radio_group.pyi +0 -0
  247. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/scroll_area.py +0 -0
  248. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/scroll_area.pyi +0 -0
  249. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/segmented_control.py +0 -0
  250. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/segmented_control.pyi +0 -0
  251. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/select.py +0 -0
  252. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/select.pyi +0 -0
  253. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/separator.py +0 -0
  254. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/separator.pyi +0 -0
  255. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/skeleton.py +0 -0
  256. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/skeleton.pyi +0 -0
  257. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/slider.py +0 -0
  258. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/slider.pyi +0 -0
  259. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/spinner.py +0 -0
  260. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/spinner.pyi +0 -0
  261. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/switch.py +0 -0
  262. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/switch.pyi +0 -0
  263. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/table.py +0 -0
  264. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/table.pyi +0 -0
  265. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/tabs.py +0 -0
  266. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/tabs.pyi +0 -0
  267. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/text_area.py +0 -0
  268. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/text_area.pyi +0 -0
  269. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/text_field.py +0 -0
  270. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/text_field.pyi +0 -0
  271. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/tooltip.py +0 -0
  272. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/components/tooltip.pyi +0 -0
  273. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/layout/__init__.py +0 -0
  274. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/layout/__init__.pyi +0 -0
  275. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/layout/base.py +0 -0
  276. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/layout/base.pyi +0 -0
  277. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/layout/box.py +0 -0
  278. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/layout/box.pyi +0 -0
  279. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/layout/center.py +0 -0
  280. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/layout/center.pyi +0 -0
  281. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/layout/container.py +0 -0
  282. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/layout/container.pyi +0 -0
  283. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/layout/flex.py +0 -0
  284. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/layout/flex.pyi +0 -0
  285. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/layout/grid.py +0 -0
  286. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/layout/grid.pyi +0 -0
  287. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/layout/list.py +0 -0
  288. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/layout/list.pyi +0 -0
  289. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/layout/section.py +0 -0
  290. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/layout/section.pyi +0 -0
  291. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/layout/spacer.py +0 -0
  292. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/layout/spacer.pyi +0 -0
  293. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/layout/stack.py +0 -0
  294. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/layout/stack.pyi +0 -0
  295. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/typography/__init__.py +0 -0
  296. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/typography/__init__.pyi +0 -0
  297. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/typography/base.py +0 -0
  298. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/typography/blockquote.py +0 -0
  299. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/typography/blockquote.pyi +0 -0
  300. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/typography/code.py +0 -0
  301. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/typography/code.pyi +0 -0
  302. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/typography/heading.py +0 -0
  303. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/typography/heading.pyi +0 -0
  304. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/typography/link.py +0 -0
  305. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/typography/link.pyi +0 -0
  306. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/typography/text.py +0 -0
  307. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/radix/themes/typography/text.pyi +0 -0
  308. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/react_player/__init__.py +0 -0
  309. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/react_player/audio.py +0 -0
  310. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/react_player/audio.pyi +0 -0
  311. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/react_player/react_player.py +0 -0
  312. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/react_player/react_player.pyi +0 -0
  313. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/react_player/video.py +0 -0
  314. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/react_player/video.pyi +0 -0
  315. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/react_router/__init__.py +0 -0
  316. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/react_router/dom.py +0 -0
  317. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/react_router/dom.pyi +0 -0
  318. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/recharts/__init__.py +0 -0
  319. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/recharts/__init__.pyi +0 -0
  320. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/recharts/cartesian.py +0 -0
  321. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/recharts/cartesian.pyi +0 -0
  322. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/recharts/charts.py +0 -0
  323. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/recharts/charts.pyi +0 -0
  324. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/recharts/general.py +0 -0
  325. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/recharts/general.pyi +0 -0
  326. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/recharts/polar.py +0 -0
  327. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/recharts/polar.pyi +0 -0
  328. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/recharts/recharts.py +0 -0
  329. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/recharts/recharts.pyi +0 -0
  330. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/sonner/__init__.py +0 -0
  331. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/sonner/toast.pyi +0 -0
  332. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/tags/__init__.py +0 -0
  333. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/tags/cond_tag.py +0 -0
  334. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/tags/iter_tag.py +0 -0
  335. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/tags/match_tag.py +0 -0
  336. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/tags/tag.py +0 -0
  337. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/components/tags/tagless.py +0 -0
  338. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/constants/__init__.py +0 -0
  339. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/constants/colors.py +0 -0
  340. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/constants/compiler.py +0 -0
  341. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/constants/config.py +0 -0
  342. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/constants/custom_components.py +0 -0
  343. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/constants/event.py +0 -0
  344. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/constants/installer.py +0 -0
  345. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/constants/route.py +0 -0
  346. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/constants/state.py +0 -0
  347. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/constants/utils.py +0 -0
  348. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/custom_components/__init__.py +0 -0
  349. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/custom_components/custom_components.py +0 -0
  350. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/environment.py +0 -0
  351. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/event.py +0 -0
  352. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/experimental/__init__.py +0 -0
  353. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/experimental/client_state.py +0 -0
  354. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/experimental/hooks.py +0 -0
  355. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/istate/__init__.py +0 -0
  356. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/istate/data.py +0 -0
  357. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/istate/dynamic.py +0 -0
  358. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/istate/manager.py +0 -0
  359. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/istate/proxy.py +0 -0
  360. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/istate/storage.py +0 -0
  361. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/istate/wrappers.py +0 -0
  362. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/middleware/__init__.py +0 -0
  363. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/middleware/hydrate_middleware.py +0 -0
  364. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/middleware/middleware.py +0 -0
  365. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/model.py +0 -0
  366. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/page.py +0 -0
  367. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/plugins/__init__.py +0 -0
  368. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/plugins/base.py +0 -0
  369. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/plugins/shared_tailwind.py +0 -0
  370. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/plugins/sitemap.py +0 -0
  371. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/plugins/tailwind_v3.py +0 -0
  372. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/plugins/tailwind_v4.py +0 -0
  373. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/py.typed +0 -0
  374. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/reflex.py +0 -0
  375. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/route.py +0 -0
  376. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/style.py +0 -0
  377. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/utils/__init__.py +0 -0
  378. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/utils/build.py +0 -0
  379. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/utils/codespaces.py +0 -0
  380. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/utils/compat.py +0 -0
  381. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/utils/console.py +0 -0
  382. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/utils/exceptions.py +0 -0
  383. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/utils/exec.py +0 -0
  384. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/utils/export.py +0 -0
  385. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/utils/format.py +0 -0
  386. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/utils/imports.py +0 -0
  387. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/utils/lazy_loader.py +0 -0
  388. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/utils/misc.py +0 -0
  389. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/utils/net.py +0 -0
  390. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/utils/path_ops.py +0 -0
  391. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/utils/processes.py +0 -0
  392. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/utils/pyi_generator.py +0 -0
  393. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/utils/redir.py +0 -0
  394. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/utils/registry.py +0 -0
  395. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/utils/serializers.py +0 -0
  396. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/utils/telemetry.py +0 -0
  397. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/utils/types.py +0 -0
  398. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/vars/__init__.py +0 -0
  399. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/vars/base.py +0 -0
  400. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/vars/datetime.py +0 -0
  401. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/vars/dep_tracking.py +0 -0
  402. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/vars/function.py +0 -0
  403. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/vars/number.py +0 -0
  404. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/vars/object.py +0 -0
  405. {reflex-0.8.5a2 → reflex-0.8.6a0}/reflex/vars/sequence.py +0 -0
  406. {reflex-0.8.5a2 → reflex-0.8.6a0}/scripts/hatch_build.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: reflex
3
- Version: 0.8.5a2
3
+ Version: 0.8.6a0
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
@@ -36,6 +36,8 @@ Requires-Dist: sqlmodel<0.1,>=0.0.24
36
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
+ Provides-Extra: monitoring
40
+ Requires-Dist: pyleak<1.0,>=0.1.14; extra == 'monitoring'
39
41
  Description-Content-Type: text/markdown
40
42
 
41
43
  <div align="center">
@@ -50,6 +52,7 @@ Description-Content-Type: text/markdown
50
52
  [![Documentation](https://img.shields.io/badge/Documentation%20-Introduction%20-%20%23007ec6)](https://reflex.dev/docs/getting-started/introduction)
51
53
  [![PyPI Downloads](https://static.pepy.tech/badge/reflex)](https://pepy.tech/projects/reflex)
52
54
  [![Discord](https://img.shields.io/discord/1029853095527727165?color=%237289da&label=Discord)](https://discord.gg/T5WSbC2YtQ)
55
+ [![Twitter](https://img.shields.io/twitter/follow/getreflex)](https://x.com/getreflex)
53
56
 
54
57
  </div>
55
58
 
@@ -242,7 +245,7 @@ def get_image(self):
242
245
 
243
246
  Within the state, we define functions called event handlers that change the state vars. Event handlers are the way that we can modify the state in Reflex. They can be called in response to user actions, such as clicking a button or typing in a text box. These actions are called events.
244
247
 
245
- Our DALL·E. app has an event handler, `get_image` to which get this image from the OpenAI API. Using `yield` in the middle of an event handler will cause the UI to update. Otherwise the UI will update at the end of the event handler.
248
+ Our DALL·E app has an event handler, `get_image` which gets this image from the OpenAI API. Using `yield` in the middle of an event handler will cause the UI to update. Otherwise the UI will update at the end of the event handler.
246
249
 
247
250
  ### **Routing**
248
251
 
@@ -10,6 +10,7 @@
10
10
  [![Documentation](https://img.shields.io/badge/Documentation%20-Introduction%20-%20%23007ec6)](https://reflex.dev/docs/getting-started/introduction)
11
11
  [![PyPI Downloads](https://static.pepy.tech/badge/reflex)](https://pepy.tech/projects/reflex)
12
12
  [![Discord](https://img.shields.io/discord/1029853095527727165?color=%237289da&label=Discord)](https://discord.gg/T5WSbC2YtQ)
13
+ [![Twitter](https://img.shields.io/twitter/follow/getreflex)](https://x.com/getreflex)
13
14
 
14
15
  </div>
15
16
 
@@ -202,7 +203,7 @@ def get_image(self):
202
203
 
203
204
  Within the state, we define functions called event handlers that change the state vars. Event handlers are the way that we can modify the state in Reflex. They can be called in response to user actions, such as clicking a button or typing in a text box. These actions are called events.
204
205
 
205
- Our DALL·E. app has an event handler, `get_image` to which get this image from the OpenAI API. Using `yield` in the middle of an event handler will cause the UI to update. Otherwise the UI will update at the end of the event handler.
206
+ Our DALL·E app has an event handler, `get_image` which gets this image from the OpenAI API. Using `yield` in the middle of an event handler will cause the UI to update. Otherwise the UI will update at the end of the event handler.
206
207
 
207
208
  ### **Routing**
208
209
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "reflex"
3
- version = "0.8.5a2"
3
+ version = "0.8.6a0"
4
4
  description = "Web apps in pure Python."
5
5
  license.text = "Apache-2.0"
6
6
  authors = [
@@ -39,6 +39,7 @@ dependencies = [
39
39
  "typing_extensions >=4.13.0",
40
40
  "wrapt >=1.17.0,<2.0",
41
41
  ]
42
+
42
43
  classifiers = [
43
44
  "Development Status :: 4 - Beta",
44
45
  "License :: OSI Approved :: Apache Software License",
@@ -49,6 +50,10 @@ classifiers = [
49
50
  "Programming Language :: Python :: 3.13",
50
51
  ]
51
52
 
53
+ [project.optional-dependencies]
54
+ monitoring = [
55
+ "pyleak >=0.1.14,<1.0",
56
+ ]
52
57
 
53
58
  [project.urls]
54
59
  homepage = "https://reflex.dev"
@@ -74,6 +79,7 @@ dev = [
74
79
  "pre-commit",
75
80
  "psutil",
76
81
  "psycopg[binary]",
82
+ "pyleak >=0.1.14,<1.0",
77
83
  "pyright",
78
84
  "pytest-asyncio",
79
85
  "pytest-benchmark",
@@ -227,7 +233,7 @@ fail_fast = true
227
233
 
228
234
  [[tool.pre-commit.repos]]
229
235
  repo = "https://github.com/astral-sh/ruff-pre-commit"
230
- rev = "v0.12.5"
236
+ rev = "v0.12.7"
231
237
  hooks = [
232
238
  { id = "ruff-format", args = [
233
239
  "reflex",
@@ -25,6 +25,7 @@ function alwaysUseReactDomServerNode() {
25
25
  }
26
26
 
27
27
  export default defineConfig((config) => ({
28
+ base: "{{base}}",
28
29
  plugins: [
29
30
  alwaysUseReactDomServerNode(),
30
31
  reactRouter(),
@@ -33,6 +34,16 @@ export default defineConfig((config) => ({
33
34
  build: {
34
35
  rollupOptions: {
35
36
  jsx: {},
37
+ output: {
38
+ advancedChunks: {
39
+ groups: [
40
+ {
41
+ test: /env.json/,
42
+ name: "reflex-env",
43
+ },
44
+ ],
45
+ },
46
+ },
36
47
  },
37
48
  },
38
49
  server: {
@@ -530,6 +530,7 @@ export const connect = async (
530
530
  transports: transports,
531
531
  protocols: [reflexEnvironment.version],
532
532
  autoUnref: false,
533
+ query: { token: getToken() },
533
534
  });
534
535
  // Ensure undefined fields in events are sent as null instead of removed
535
536
  socket.current.io.encoder.replacer = (k, v) => (v === undefined ? null : v);
@@ -601,6 +602,10 @@ export const connect = async (
601
602
  event_processing = false;
602
603
  queueEvents([...initialEvents(), event], socket, true, navigate, params);
603
604
  });
605
+ socket.current.on("new_token", async (new_token) => {
606
+ token = new_token;
607
+ window.sessionStorage.setItem(TOKEN_KEY, new_token);
608
+ });
604
609
 
605
610
  document.addEventListener("visibilitychange", checkVisibility);
606
611
  };
@@ -285,6 +285,7 @@ _MAPPING: dict = {
285
285
  "data_editor_theme",
286
286
  ],
287
287
  "components.sonner.toast": ["toast"],
288
+ "components.props": ["PropsBase"],
288
289
  "components.datadisplay.logo": ["logo"],
289
290
  "components.gridjs": ["data_table"],
290
291
  "components.moment": ["MomentDelta", "moment"],
@@ -62,6 +62,7 @@ from .components.lucide import icon
62
62
  from .components.markdown import markdown
63
63
  from .components.moment import MomentDelta, moment
64
64
  from .components.plotly import plotly
65
+ from .components.props import PropsBase
65
66
  from .components.radix.primitives.accordion import accordion
66
67
  from .components.radix.primitives.drawer import drawer
67
68
  from .components.radix.primitives.form import form
@@ -193,6 +194,7 @@ __all__ = [
193
194
  "Model",
194
195
  "MomentDelta",
195
196
  "NoSSRComponent",
197
+ "PropsBase",
196
198
  "Script",
197
199
  "SessionStorage",
198
200
  "State",
@@ -13,6 +13,7 @@ import io
13
13
  import json
14
14
  import sys
15
15
  import traceback
16
+ import urllib.parse
16
17
  from collections.abc import (
17
18
  AsyncGenerator,
18
19
  AsyncIterator,
@@ -114,6 +115,7 @@ from reflex.utils import (
114
115
  )
115
116
  from reflex.utils.exec import get_compile_context, is_prod_mode, is_testing_env
116
117
  from reflex.utils.imports import ImportVar
118
+ from reflex.utils.token_manager import TokenManager
117
119
  from reflex.utils.types import ASGIApp, Message, Receive, Scope, Send
118
120
 
119
121
  if TYPE_CHECKING:
@@ -1958,12 +1960,6 @@ class EventNamespace(AsyncNamespace):
1958
1960
  # The application object.
1959
1961
  app: App
1960
1962
 
1961
- # Keep a mapping between socket ID and client token.
1962
- token_to_sid: dict[str, str]
1963
-
1964
- # Keep a mapping between client token and socket ID.
1965
- sid_to_token: dict[str, str]
1966
-
1967
1963
  def __init__(self, namespace: str, app: App):
1968
1964
  """Initialize the event namespace.
1969
1965
 
@@ -1972,17 +1968,45 @@ class EventNamespace(AsyncNamespace):
1972
1968
  app: The application object.
1973
1969
  """
1974
1970
  super().__init__(namespace)
1975
- self.token_to_sid = {}
1976
- self.sid_to_token = {}
1977
1971
  self.app = app
1978
1972
 
1979
- def on_connect(self, sid: str, environ: dict):
1973
+ # Use TokenManager for distributed duplicate tab prevention
1974
+ self._token_manager = TokenManager.create()
1975
+
1976
+ @property
1977
+ def token_to_sid(self) -> dict[str, str]:
1978
+ """Get token to SID mapping for backward compatibility.
1979
+
1980
+ Returns:
1981
+ The token to SID mapping dict.
1982
+ """
1983
+ # For backward compatibility, expose the underlying dict
1984
+ return self._token_manager.token_to_sid
1985
+
1986
+ @property
1987
+ def sid_to_token(self) -> dict[str, str]:
1988
+ """Get SID to token mapping for backward compatibility.
1989
+
1990
+ Returns:
1991
+ The SID to token mapping dict.
1992
+ """
1993
+ # For backward compatibility, expose the underlying dict
1994
+ return self._token_manager.sid_to_token
1995
+
1996
+ async def on_connect(self, sid: str, environ: dict):
1980
1997
  """Event for when the websocket is connected.
1981
1998
 
1982
1999
  Args:
1983
2000
  sid: The Socket.IO session id.
1984
2001
  environ: The request information, including HTTP headers.
1985
2002
  """
2003
+ query_params = urllib.parse.parse_qs(environ.get("QUERY_STRING", ""))
2004
+ token_list = query_params.get("token", [])
2005
+ if token_list:
2006
+ await self.link_token_to_sid(sid, token_list[0])
2007
+ else:
2008
+ console.warn(f"No token provided in connection for session {sid}")
2009
+
1986
2010
  subprotocol = environ.get("HTTP_SEC_WEBSOCKET_PROTOCOL")
1987
2011
  if subprotocol and subprotocol != constants.Reflex.VERSION:
1988
2012
  console.warn(
@@ -1995,9 +2019,18 @@ class EventNamespace(AsyncNamespace):
1995
2019
  Args:
1996
2020
  sid: The Socket.IO session id.
1997
2021
  """
1998
- disconnect_token = self.sid_to_token.pop(sid, None)
2022
+ # Get token before cleaning up
2023
+ disconnect_token = self.sid_to_token.get(sid)
1999
2024
  if disconnect_token:
2000
- self.token_to_sid.pop(disconnect_token, None)
2025
+ # Use async cleanup through token manager
2026
+ task = asyncio.create_task(
2027
+ self._token_manager.disconnect_token(disconnect_token, sid)
2028
+ )
2029
+ # Don't await to avoid blocking disconnect, but handle potential errors
2030
+ task.add_done_callback(
2031
+ lambda t: t.exception()
2032
+ and console.error(f"Token cleanup error: {t.exception()}")
2033
+ )
2001
2034
 
2002
2035
  async def emit_update(self, update: StateUpdate, sid: str) -> None:
2003
2036
  """Emit an update to the client.
@@ -2055,8 +2088,13 @@ class EventNamespace(AsyncNamespace):
2055
2088
  msg = f"Failed to deserialize event data: {fields}."
2056
2089
  raise exceptions.EventDeserializationError(msg) from ex
2057
2090
 
2058
- self.token_to_sid[event.token] = sid
2059
- self.sid_to_token[sid] = event.token
2091
+ # Correct the token if it doesn't match what we expect for this SID
2092
+ expected_token = self.sid_to_token.get(sid)
2093
+ if expected_token and event.token != expected_token:
2094
+ # Create new event with corrected token since Event is frozen
2095
+ from dataclasses import replace
2096
+
2097
+ event = replace(event, token=expected_token)
2060
2098
 
2061
2099
  # Get the event environment.
2062
2100
  if self.app.sio is None:
@@ -2106,3 +2144,17 @@ class EventNamespace(AsyncNamespace):
2106
2144
  """
2107
2145
  # Emit the test event.
2108
2146
  await self.emit(str(constants.SocketEvent.PING), "pong", to=sid)
2147
+
2148
+ async def link_token_to_sid(self, sid: str, token: str):
2149
+ """Link a token to a session id.
2150
+
2151
+ Args:
2152
+ sid: The Socket.IO session id.
2153
+ token: The client token.
2154
+ """
2155
+ # Use TokenManager for duplicate detection and Redis support
2156
+ new_token = await self._token_manager.link_token_to_sid(token, sid)
2157
+
2158
+ if new_token:
2159
+ # Duplicate detected, emit new token to client
2160
+ await self.emit("new_token", new_token, to=sid)
@@ -149,6 +149,9 @@ STYLE = get_template("web/styles/styles.css.jinja2")
149
149
  # Code that generate the package json file
150
150
  PACKAGE_JSON = get_template("web/package.json.jinja2")
151
151
 
152
+ # Code that generate the vite.config.js file
153
+ VITE_CONFIG = get_template("web/vite.config.js.jinja2")
154
+
152
155
  # Template containing some macros used in the web pages.
153
156
  MACROS = get_template("web/pages/macros.js.jinja2")
154
157
 
@@ -197,6 +197,9 @@ class DataEditor(NoSSRComponent):
197
197
  # Enables or disables the overlay shadow when scrolling vertically.
198
198
  fixed_shadow_y: Var[bool]
199
199
 
200
+ # Controls the presence of the fill indicator
201
+ fill_handle: Var[bool]
202
+
200
203
  # The number of columns which should remain in place when scrolling horizontally. Doesn't include rowMarkers.
201
204
  freeze_columns: Var[int]
202
205
 
@@ -141,6 +141,7 @@ class DataEditor(NoSSRComponent):
141
141
  draw_focus_ring: Var[bool] | bool | None = None,
142
142
  fixed_shadow_x: Var[bool] | bool | None = None,
143
143
  fixed_shadow_y: Var[bool] | bool | None = None,
144
+ fill_handle: Var[bool] | bool | None = None,
144
145
  freeze_columns: Var[int] | int | None = None,
145
146
  group_header_height: Var[int] | int | None = None,
146
147
  header_height: Var[int] | int | None = None,
@@ -245,6 +246,7 @@ class DataEditor(NoSSRComponent):
245
246
  draw_focus_ring: Controls the drawing of the focus ring.
246
247
  fixed_shadow_x: Enables or disables the overlay shadow when scrolling horizontally.
247
248
  fixed_shadow_y: Enables or disables the overlay shadow when scrolling vertically.
249
+ fill_handle: Controls the presence of the fill indicator
248
250
  freeze_columns: The number of columns which should remain in place when scrolling horizontally. Doesn't include rowMarkers.
249
251
  group_header_height: Controls the header of the group header row.
250
252
  header_height: Controls the height of the header row.
@@ -106,6 +106,7 @@ from .elements.media import (
106
106
  Line,
107
107
  LinearGradient,
108
108
  Map,
109
+ Marker,
109
110
  Object,
110
111
  Path,
111
112
  Picture,
@@ -132,6 +133,7 @@ from .elements.media import (
132
133
  line,
133
134
  linear_gradient,
134
135
  map,
136
+ marker,
135
137
  object,
136
138
  path,
137
139
  picture,
@@ -332,6 +334,7 @@ __all__ = [
332
334
  "Main",
333
335
  "Map",
334
336
  "Mark",
337
+ "Marker",
335
338
  "Math",
336
339
  "Meta",
337
340
  "Meter",
@@ -457,6 +460,7 @@ __all__ = [
457
460
  "main",
458
461
  "map",
459
462
  "mark",
463
+ "marker",
460
464
  "math",
461
465
  "meta",
462
466
  "meter",
@@ -78,6 +78,7 @@ _MAPPING = {
78
78
  "linear_gradient",
79
79
  "radial_gradient",
80
80
  "defs",
81
+ "marker",
81
82
  ],
82
83
  "metadata": [
83
84
  "base",
@@ -104,6 +104,7 @@ from .media import (
104
104
  Line,
105
105
  LinearGradient,
106
106
  Map,
107
+ Marker,
107
108
  Object,
108
109
  Path,
109
110
  Picture,
@@ -130,6 +131,7 @@ from .media import (
130
131
  line,
131
132
  linear_gradient,
132
133
  map,
134
+ marker,
133
135
  object,
134
136
  path,
135
137
  picture,
@@ -336,6 +338,7 @@ _MAPPING = {
336
338
  "linear_gradient",
337
339
  "radial_gradient",
338
340
  "defs",
341
+ "marker",
339
342
  ],
340
343
  "metadata": ["base", "head", "link", "meta", "title", "style"],
341
344
  "other": ["details", "dialog", "summary", "slot", "template", "math", "html"],
@@ -469,6 +472,7 @@ __all__ = [
469
472
  "Main",
470
473
  "Map",
471
474
  "Mark",
475
+ "Marker",
472
476
  "Math",
473
477
  "Meta",
474
478
  "Meter",
@@ -593,6 +597,7 @@ __all__ = [
593
597
  "main",
594
598
  "map",
595
599
  "mark",
600
+ "marker",
596
601
  "math",
597
602
  "meta",
598
603
  "meter",
@@ -484,6 +484,36 @@ class Path(BaseHTML):
484
484
  d: Var[str | int | float]
485
485
 
486
486
 
487
+ class Marker(BaseHTML):
488
+ """Display the marker element."""
489
+
490
+ tag = "marker"
491
+
492
+ # The height of the marker viewport.
493
+ marker_height: Var[str | int | float]
494
+
495
+ # The width of the marker viewport.
496
+ marker_width: Var[str | int | float]
497
+
498
+ # The coordinate system for the marker attributes.
499
+ marker_units: Var[str]
500
+
501
+ # The orientation of the marker relative to the shape it is attached to.
502
+ orient: Var[str | int | float]
503
+
504
+ # How the svg fragment must be deformed if it is embedded in a container with a different aspect ratio.
505
+ preserve_aspect_ratio: Var[str]
506
+
507
+ # The x coordinate for the reference point of the marker.
508
+ ref_x: Var[str | int | float]
509
+
510
+ # The y coordinate for the reference point of the marker.
511
+ ref_y: Var[str | int | float]
512
+
513
+ # The bound of the SVG viewport for the current SVG fragment.
514
+ view_box: Var[str]
515
+
516
+
487
517
  class G(BaseHTML):
488
518
  """The SVG g component, used to group other SVG elements."""
489
519
 
@@ -522,6 +552,7 @@ class SVG(ComponentNamespace):
522
552
  linear_gradient = staticmethod(LinearGradient.create)
523
553
  radial_gradient = staticmethod(RadialGradient.create)
524
554
  defs = staticmethod(Defs.create)
555
+ marker = staticmethod(Marker.create)
525
556
  g = staticmethod(G.create)
526
557
  __call__ = staticmethod(Svg.create)
527
558
 
@@ -537,6 +568,7 @@ stop = Stop.create
537
568
  linear_gradient = LinearGradient.create
538
569
  radial_gradient = RadialGradient.create
539
570
  defs = Defs.create
571
+ marker = Marker.create
540
572
  g = G.create
541
573
  area = Area.create
542
574
  audio = Audio.create