reflex 0.8.17a1__tar.gz → 0.8.18a1__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 (395) hide show
  1. {reflex-0.8.17a1 → reflex-0.8.18a1}/PKG-INFO +3 -3
  2. {reflex-0.8.17a1 → reflex-0.8.18a1}/pyproject.toml +5 -5
  3. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/app.py +35 -11
  4. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/base/error_boundary.py +60 -43
  5. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/lucide/icon.py +3 -1
  6. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/lucide/icon.pyi +4 -1
  7. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/constants/installer.py +1 -1
  8. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/istate/manager/redis.py +1 -1
  9. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/plugins/tailwind_v4.py +2 -2
  10. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/state.py +12 -6
  11. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/utils/prerequisites.py +4 -1
  12. reflex-0.8.18a1/reflex/utils/token_manager.py +478 -0
  13. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/utils/types.py +44 -12
  14. reflex-0.8.17a1/reflex/utils/token_manager.py +0 -225
  15. {reflex-0.8.17a1 → reflex-0.8.18a1}/.gitignore +0 -0
  16. {reflex-0.8.17a1 → reflex-0.8.18a1}/LICENSE +0 -0
  17. {reflex-0.8.17a1 → reflex-0.8.18a1}/README.md +0 -0
  18. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/.templates/apps/blank/assets/favicon.ico +0 -0
  19. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/.templates/apps/blank/code/__init__.py +0 -0
  20. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/.templates/apps/blank/code/blank.py +0 -0
  21. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/.templates/web/.gitignore +0 -0
  22. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/.templates/web/app/entry.client.js +0 -0
  23. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/.templates/web/app/routes.js +0 -0
  24. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +0 -0
  25. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/.templates/web/components/shiki/code.js +0 -0
  26. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/.templates/web/jsconfig.json +0 -0
  27. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/.templates/web/postcss.config.js +0 -0
  28. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/.templates/web/react-router.config.js +0 -0
  29. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/.templates/web/styles/__reflex_style_reset.css +0 -0
  30. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/.templates/web/utils/helpers/dataeditor.js +0 -0
  31. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/.templates/web/utils/helpers/debounce.js +0 -0
  32. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/.templates/web/utils/helpers/paste.js +0 -0
  33. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/.templates/web/utils/helpers/range.js +0 -0
  34. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/.templates/web/utils/helpers/throttle.js +0 -0
  35. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/.templates/web/utils/helpers/upload.js +0 -0
  36. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/.templates/web/utils/react-theme.js +0 -0
  37. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/.templates/web/utils/state.js +0 -0
  38. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/.templates/web/vite-plugin-safari-cachebust.js +0 -0
  39. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/__init__.py +0 -0
  40. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/__init__.pyi +0 -0
  41. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/__main__.py +0 -0
  42. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/admin.py +0 -0
  43. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/app_mixins/__init__.py +0 -0
  44. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/app_mixins/lifespan.py +0 -0
  45. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/app_mixins/middleware.py +0 -0
  46. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/app_mixins/mixin.py +0 -0
  47. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/assets.py +0 -0
  48. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/base.py +0 -0
  49. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/compiler/__init__.py +0 -0
  50. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/compiler/compiler.py +0 -0
  51. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/compiler/templates.py +0 -0
  52. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/compiler/utils.py +0 -0
  53. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/__init__.py +0 -0
  54. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/__init__.pyi +0 -0
  55. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/base/__init__.py +0 -0
  56. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/base/__init__.pyi +0 -0
  57. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/base/app_wrap.py +0 -0
  58. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/base/app_wrap.pyi +0 -0
  59. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/base/bare.py +0 -0
  60. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/base/body.py +0 -0
  61. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/base/body.pyi +0 -0
  62. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/base/document.py +0 -0
  63. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/base/document.pyi +0 -0
  64. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/base/error_boundary.pyi +0 -0
  65. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/base/fragment.py +0 -0
  66. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/base/fragment.pyi +0 -0
  67. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/base/link.py +0 -0
  68. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/base/link.pyi +0 -0
  69. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/base/meta.py +0 -0
  70. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/base/meta.pyi +0 -0
  71. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/base/script.py +0 -0
  72. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/base/script.pyi +0 -0
  73. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/base/strict_mode.py +0 -0
  74. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/base/strict_mode.pyi +0 -0
  75. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/component.py +0 -0
  76. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/core/__init__.py +0 -0
  77. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/core/__init__.pyi +0 -0
  78. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/core/auto_scroll.py +0 -0
  79. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/core/auto_scroll.pyi +0 -0
  80. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/core/banner.py +0 -0
  81. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/core/banner.pyi +0 -0
  82. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/core/breakpoints.py +0 -0
  83. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/core/clipboard.py +0 -0
  84. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/core/clipboard.pyi +0 -0
  85. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/core/colors.py +0 -0
  86. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/core/cond.py +0 -0
  87. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/core/debounce.py +0 -0
  88. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/core/debounce.pyi +0 -0
  89. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/core/foreach.py +0 -0
  90. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/core/helmet.py +0 -0
  91. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/core/helmet.pyi +0 -0
  92. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/core/html.py +0 -0
  93. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/core/html.pyi +0 -0
  94. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/core/layout/__init__.py +0 -0
  95. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/core/match.py +0 -0
  96. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/core/responsive.py +0 -0
  97. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/core/sticky.py +0 -0
  98. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/core/sticky.pyi +0 -0
  99. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/core/upload.py +0 -0
  100. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/core/upload.pyi +0 -0
  101. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/core/window_events.py +0 -0
  102. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/core/window_events.pyi +0 -0
  103. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/datadisplay/__init__.py +0 -0
  104. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/datadisplay/__init__.pyi +0 -0
  105. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/datadisplay/code.py +0 -0
  106. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/datadisplay/code.pyi +0 -0
  107. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/datadisplay/dataeditor.py +0 -0
  108. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/datadisplay/dataeditor.pyi +0 -0
  109. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/datadisplay/logo.py +0 -0
  110. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/datadisplay/shiki_code_block.py +0 -0
  111. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/datadisplay/shiki_code_block.pyi +0 -0
  112. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/dynamic.py +0 -0
  113. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/el/__init__.py +0 -0
  114. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/el/__init__.pyi +0 -0
  115. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/el/element.py +0 -0
  116. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/el/element.pyi +0 -0
  117. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/el/elements/__init__.py +0 -0
  118. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/el/elements/__init__.pyi +0 -0
  119. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/el/elements/base.py +0 -0
  120. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/el/elements/base.pyi +0 -0
  121. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/el/elements/forms.py +0 -0
  122. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/el/elements/forms.pyi +0 -0
  123. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/el/elements/inline.py +0 -0
  124. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/el/elements/inline.pyi +0 -0
  125. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/el/elements/media.py +0 -0
  126. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/el/elements/media.pyi +0 -0
  127. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/el/elements/metadata.py +0 -0
  128. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/el/elements/metadata.pyi +0 -0
  129. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/el/elements/other.py +0 -0
  130. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/el/elements/other.pyi +0 -0
  131. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/el/elements/scripts.py +0 -0
  132. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/el/elements/scripts.pyi +0 -0
  133. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/el/elements/sectioning.py +0 -0
  134. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/el/elements/sectioning.pyi +0 -0
  135. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/el/elements/tables.py +0 -0
  136. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/el/elements/tables.pyi +0 -0
  137. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/el/elements/typography.py +0 -0
  138. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/el/elements/typography.pyi +0 -0
  139. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/field.py +0 -0
  140. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/gridjs/__init__.py +0 -0
  141. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/gridjs/datatable.py +0 -0
  142. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/gridjs/datatable.pyi +0 -0
  143. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/literals.py +0 -0
  144. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/lucide/__init__.py +0 -0
  145. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/markdown/__init__.py +0 -0
  146. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/markdown/markdown.py +0 -0
  147. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/markdown/markdown.pyi +0 -0
  148. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/moment/__init__.py +0 -0
  149. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/moment/moment.py +0 -0
  150. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/moment/moment.pyi +0 -0
  151. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/plotly/__init__.py +0 -0
  152. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/plotly/plotly.py +0 -0
  153. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/plotly/plotly.pyi +0 -0
  154. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/props.py +0 -0
  155. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/__init__.py +0 -0
  156. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/__init__.pyi +0 -0
  157. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/primitives/__init__.py +0 -0
  158. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/primitives/__init__.pyi +0 -0
  159. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/primitives/accordion.py +0 -0
  160. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/primitives/accordion.pyi +0 -0
  161. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/primitives/base.py +0 -0
  162. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/primitives/base.pyi +0 -0
  163. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/primitives/dialog.py +0 -0
  164. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/primitives/dialog.pyi +0 -0
  165. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/primitives/drawer.py +0 -0
  166. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/primitives/drawer.pyi +0 -0
  167. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/primitives/form.py +0 -0
  168. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/primitives/form.pyi +0 -0
  169. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/primitives/progress.py +0 -0
  170. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/primitives/progress.pyi +0 -0
  171. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/primitives/slider.py +0 -0
  172. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/primitives/slider.pyi +0 -0
  173. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/__init__.py +0 -0
  174. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/__init__.pyi +0 -0
  175. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/base.py +0 -0
  176. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/base.pyi +0 -0
  177. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/color_mode.py +0 -0
  178. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/color_mode.pyi +0 -0
  179. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/__init__.py +0 -0
  180. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/__init__.pyi +0 -0
  181. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/alert_dialog.py +0 -0
  182. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/alert_dialog.pyi +0 -0
  183. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/aspect_ratio.py +0 -0
  184. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/aspect_ratio.pyi +0 -0
  185. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/avatar.py +0 -0
  186. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/avatar.pyi +0 -0
  187. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/badge.py +0 -0
  188. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/badge.pyi +0 -0
  189. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/button.py +0 -0
  190. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/button.pyi +0 -0
  191. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/callout.py +0 -0
  192. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/callout.pyi +0 -0
  193. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/card.py +0 -0
  194. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/card.pyi +0 -0
  195. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/checkbox.py +0 -0
  196. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/checkbox.pyi +0 -0
  197. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/checkbox_cards.py +0 -0
  198. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/checkbox_cards.pyi +0 -0
  199. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/checkbox_group.py +0 -0
  200. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/checkbox_group.pyi +0 -0
  201. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/context_menu.py +0 -0
  202. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/context_menu.pyi +0 -0
  203. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/data_list.py +0 -0
  204. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/data_list.pyi +0 -0
  205. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/dialog.py +0 -0
  206. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/dialog.pyi +0 -0
  207. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/dropdown_menu.py +0 -0
  208. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/dropdown_menu.pyi +0 -0
  209. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/hover_card.py +0 -0
  210. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/hover_card.pyi +0 -0
  211. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/icon_button.py +0 -0
  212. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/icon_button.pyi +0 -0
  213. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/inset.py +0 -0
  214. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/inset.pyi +0 -0
  215. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/popover.py +0 -0
  216. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/popover.pyi +0 -0
  217. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/progress.py +0 -0
  218. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/progress.pyi +0 -0
  219. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/radio.py +0 -0
  220. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/radio.pyi +0 -0
  221. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/radio_cards.py +0 -0
  222. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/radio_cards.pyi +0 -0
  223. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/radio_group.py +0 -0
  224. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/radio_group.pyi +0 -0
  225. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/scroll_area.py +0 -0
  226. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/scroll_area.pyi +0 -0
  227. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/segmented_control.py +0 -0
  228. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/segmented_control.pyi +0 -0
  229. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/select.py +0 -0
  230. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/select.pyi +0 -0
  231. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/separator.py +0 -0
  232. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/separator.pyi +0 -0
  233. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/skeleton.py +0 -0
  234. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/skeleton.pyi +0 -0
  235. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/slider.py +0 -0
  236. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/slider.pyi +0 -0
  237. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/spinner.py +0 -0
  238. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/spinner.pyi +0 -0
  239. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/switch.py +0 -0
  240. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/switch.pyi +0 -0
  241. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/table.py +0 -0
  242. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/table.pyi +0 -0
  243. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/tabs.py +0 -0
  244. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/tabs.pyi +0 -0
  245. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/text_area.py +0 -0
  246. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/text_area.pyi +0 -0
  247. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/text_field.py +0 -0
  248. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/text_field.pyi +0 -0
  249. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/tooltip.py +0 -0
  250. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/components/tooltip.pyi +0 -0
  251. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/layout/__init__.py +0 -0
  252. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/layout/__init__.pyi +0 -0
  253. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/layout/base.py +0 -0
  254. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/layout/base.pyi +0 -0
  255. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/layout/box.py +0 -0
  256. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/layout/box.pyi +0 -0
  257. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/layout/center.py +0 -0
  258. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/layout/center.pyi +0 -0
  259. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/layout/container.py +0 -0
  260. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/layout/container.pyi +0 -0
  261. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/layout/flex.py +0 -0
  262. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/layout/flex.pyi +0 -0
  263. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/layout/grid.py +0 -0
  264. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/layout/grid.pyi +0 -0
  265. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/layout/list.py +0 -0
  266. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/layout/list.pyi +0 -0
  267. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/layout/section.py +0 -0
  268. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/layout/section.pyi +0 -0
  269. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/layout/spacer.py +0 -0
  270. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/layout/spacer.pyi +0 -0
  271. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/layout/stack.py +0 -0
  272. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/layout/stack.pyi +0 -0
  273. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/typography/__init__.py +0 -0
  274. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/typography/__init__.pyi +0 -0
  275. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/typography/base.py +0 -0
  276. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/typography/blockquote.py +0 -0
  277. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/typography/blockquote.pyi +0 -0
  278. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/typography/code.py +0 -0
  279. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/typography/code.pyi +0 -0
  280. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/typography/heading.py +0 -0
  281. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/typography/heading.pyi +0 -0
  282. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/typography/link.py +0 -0
  283. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/typography/link.pyi +0 -0
  284. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/typography/text.py +0 -0
  285. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/radix/themes/typography/text.pyi +0 -0
  286. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/react_player/__init__.py +0 -0
  287. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/react_player/audio.py +0 -0
  288. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/react_player/audio.pyi +0 -0
  289. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/react_player/react_player.py +0 -0
  290. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/react_player/react_player.pyi +0 -0
  291. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/react_player/video.py +0 -0
  292. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/react_player/video.pyi +0 -0
  293. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/react_router/__init__.py +0 -0
  294. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/react_router/dom.py +0 -0
  295. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/react_router/dom.pyi +0 -0
  296. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/recharts/__init__.py +0 -0
  297. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/recharts/__init__.pyi +0 -0
  298. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/recharts/cartesian.py +0 -0
  299. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/recharts/cartesian.pyi +0 -0
  300. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/recharts/charts.py +0 -0
  301. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/recharts/charts.pyi +0 -0
  302. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/recharts/general.py +0 -0
  303. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/recharts/general.pyi +0 -0
  304. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/recharts/polar.py +0 -0
  305. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/recharts/polar.pyi +0 -0
  306. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/recharts/recharts.py +0 -0
  307. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/recharts/recharts.pyi +0 -0
  308. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/sonner/__init__.py +0 -0
  309. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/sonner/toast.py +0 -0
  310. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/sonner/toast.pyi +0 -0
  311. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/tags/__init__.py +0 -0
  312. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/tags/cond_tag.py +0 -0
  313. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/tags/iter_tag.py +0 -0
  314. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/tags/match_tag.py +0 -0
  315. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/tags/tag.py +0 -0
  316. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/components/tags/tagless.py +0 -0
  317. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/config.py +0 -0
  318. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/constants/__init__.py +0 -0
  319. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/constants/base.py +0 -0
  320. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/constants/colors.py +0 -0
  321. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/constants/compiler.py +0 -0
  322. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/constants/config.py +0 -0
  323. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/constants/custom_components.py +0 -0
  324. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/constants/event.py +0 -0
  325. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/constants/route.py +0 -0
  326. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/constants/state.py +0 -0
  327. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/constants/utils.py +0 -0
  328. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/custom_components/__init__.py +0 -0
  329. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/custom_components/custom_components.py +0 -0
  330. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/environment.py +0 -0
  331. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/event.py +0 -0
  332. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/experimental/__init__.py +0 -0
  333. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/experimental/client_state.py +0 -0
  334. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/experimental/hooks.py +0 -0
  335. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/istate/__init__.py +0 -0
  336. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/istate/data.py +0 -0
  337. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/istate/dynamic.py +0 -0
  338. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/istate/manager/__init__.py +0 -0
  339. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/istate/manager/disk.py +0 -0
  340. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/istate/manager/memory.py +0 -0
  341. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/istate/proxy.py +0 -0
  342. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/istate/storage.py +0 -0
  343. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/istate/wrappers.py +0 -0
  344. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/middleware/__init__.py +0 -0
  345. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/middleware/hydrate_middleware.py +0 -0
  346. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/middleware/middleware.py +0 -0
  347. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/model.py +0 -0
  348. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/page.py +0 -0
  349. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/plugins/__init__.py +0 -0
  350. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/plugins/_screenshot.py +0 -0
  351. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/plugins/base.py +0 -0
  352. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/plugins/shared_tailwind.py +0 -0
  353. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/plugins/sitemap.py +0 -0
  354. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/plugins/tailwind_v3.py +0 -0
  355. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/py.typed +0 -0
  356. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/reflex.py +0 -0
  357. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/route.py +0 -0
  358. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/style.py +0 -0
  359. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/testing.py +0 -0
  360. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/utils/__init__.py +0 -0
  361. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/utils/build.py +0 -0
  362. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/utils/codespaces.py +0 -0
  363. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/utils/compat.py +0 -0
  364. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/utils/console.py +0 -0
  365. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/utils/decorator.py +0 -0
  366. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/utils/exceptions.py +0 -0
  367. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/utils/exec.py +0 -0
  368. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/utils/export.py +0 -0
  369. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/utils/format.py +0 -0
  370. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/utils/frontend_skeleton.py +0 -0
  371. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/utils/imports.py +0 -0
  372. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/utils/js_runtimes.py +0 -0
  373. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/utils/lazy_loader.py +0 -0
  374. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/utils/misc.py +0 -0
  375. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/utils/monitoring.py +0 -0
  376. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/utils/net.py +0 -0
  377. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/utils/path_ops.py +0 -0
  378. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/utils/processes.py +0 -0
  379. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/utils/pyi_generator.py +0 -0
  380. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/utils/redir.py +0 -0
  381. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/utils/registry.py +0 -0
  382. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/utils/rename.py +0 -0
  383. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/utils/serializers.py +0 -0
  384. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/utils/telemetry.py +0 -0
  385. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/utils/templates.py +0 -0
  386. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/vars/__init__.py +0 -0
  387. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/vars/base.py +0 -0
  388. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/vars/color.py +0 -0
  389. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/vars/datetime.py +0 -0
  390. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/vars/dep_tracking.py +0 -0
  391. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/vars/function.py +0 -0
  392. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/vars/number.py +0 -0
  393. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/vars/object.py +0 -0
  394. {reflex-0.8.17a1 → reflex-0.8.18a1}/reflex/vars/sequence.py +0 -0
  395. {reflex-0.8.17a1 → reflex-0.8.18a1}/scripts/hatch_build.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: reflex
3
- Version: 0.8.17a1
3
+ Version: 0.8.18a1
4
4
  Summary: Web apps in pure Python.
5
5
  Project-URL: homepage, https://reflex.dev
6
6
  Project-URL: repository, https://github.com/reflex-dev/reflex
@@ -30,8 +30,8 @@ Requires-Dist: psutil<8.0,>=7.0.0; sys_platform == 'win32'
30
30
  Requires-Dist: pydantic<3.0,>=1.10.21
31
31
  Requires-Dist: python-multipart<1.0,>=0.0.20
32
32
  Requires-Dist: python-socketio<6.0,>=5.12.0
33
- Requires-Dist: redis<7.0,>=5.2.1
34
- Requires-Dist: reflex-hosting-cli>=0.1.57
33
+ Requires-Dist: redis<8.0,>=5.2.1
34
+ Requires-Dist: reflex-hosting-cli>=0.1.58
35
35
  Requires-Dist: rich<15,>=13
36
36
  Requires-Dist: sqlmodel<0.1,>=0.0.27
37
37
  Requires-Dist: starlette>=0.47.0
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "reflex"
3
- version = "0.8.17a1"
3
+ version = "0.8.18a1"
4
4
  description = "Web apps in pure Python."
5
5
  license.text = "Apache-2.0"
6
6
  authors = [
@@ -30,8 +30,8 @@ dependencies = [
30
30
  "pydantic >=1.10.21,<3.0",
31
31
  "python-multipart >=0.0.20,<1.0",
32
32
  "python-socketio >=5.12.0,<6.0",
33
- "redis >=5.2.1,<7.0",
34
- "reflex-hosting-cli >=0.1.57",
33
+ "redis >=5.2.1,<8.0",
34
+ "reflex-hosting-cli >=0.1.58",
35
35
  "rich >=13,<15",
36
36
  "sqlmodel >=0.0.27,<0.1",
37
37
  "starlette >=0.47.0",
@@ -243,7 +243,7 @@ fail_fast = true
243
243
 
244
244
  [[tool.pre-commit.repos]]
245
245
  repo = "https://github.com/astral-sh/ruff-pre-commit"
246
- rev = "v0.14.1"
246
+ rev = "v0.14.2"
247
247
  hooks = [
248
248
  { id = "ruff-format", args = [
249
249
  "reflex",
@@ -275,7 +275,7 @@ hooks = [
275
275
 
276
276
  [[tool.pre-commit.repos]]
277
277
  repo = "https://github.com/RobertCraigie/pyright-python"
278
- rev = "v1.1.406"
278
+ rev = "v1.1.407"
279
279
  hooks = [{ id = "pyright", args = ["reflex", "tests"], language = "system" }]
280
280
 
281
281
  [[tool.pre-commit.repos]]
@@ -120,7 +120,7 @@ from reflex.utils.exec import (
120
120
  )
121
121
  from reflex.utils.imports import ImportVar
122
122
  from reflex.utils.misc import run_in_thread
123
- from reflex.utils.token_manager import TokenManager
123
+ from reflex.utils.token_manager import RedisTokenManager, TokenManager
124
124
  from reflex.utils.types import ASGIApp, Message, Receive, Scope, Send
125
125
 
126
126
  if TYPE_CHECKING:
@@ -2033,11 +2033,13 @@ class EventNamespace(AsyncNamespace):
2033
2033
  self._token_manager = TokenManager.create()
2034
2034
 
2035
2035
  @property
2036
- def token_to_sid(self) -> dict[str, str]:
2036
+ def token_to_sid(self) -> Mapping[str, str]:
2037
2037
  """Get token to SID mapping for backward compatibility.
2038
2038
 
2039
+ Note: this mapping is read-only.
2040
+
2039
2041
  Returns:
2040
- The token to SID mapping dict.
2042
+ The token to SID mapping.
2041
2043
  """
2042
2044
  # For backward compatibility, expose the underlying dict
2043
2045
  return self._token_manager.token_to_sid
@@ -2059,6 +2061,9 @@ class EventNamespace(AsyncNamespace):
2059
2061
  sid: The Socket.IO session id.
2060
2062
  environ: The request information, including HTTP headers.
2061
2063
  """
2064
+ if isinstance(self._token_manager, RedisTokenManager):
2065
+ # Make sure this instance is watching for updates from other instances.
2066
+ self._token_manager.ensure_lost_and_found_task(self.emit_update)
2062
2067
  query_params = urllib.parse.parse_qs(environ.get("QUERY_STRING", ""))
2063
2068
  token_list = query_params.get("token", [])
2064
2069
  if token_list:
@@ -2072,11 +2077,14 @@ class EventNamespace(AsyncNamespace):
2072
2077
  f"Frontend version {subprotocol} for session {sid} does not match the backend version {constants.Reflex.VERSION}."
2073
2078
  )
2074
2079
 
2075
- def on_disconnect(self, sid: str):
2080
+ def on_disconnect(self, sid: str) -> asyncio.Task | None:
2076
2081
  """Event for when the websocket disconnects.
2077
2082
 
2078
2083
  Args:
2079
2084
  sid: The Socket.IO session id.
2085
+
2086
+ Returns:
2087
+ An asyncio Task for cleaning up the token, or None.
2080
2088
  """
2081
2089
  # Get token before cleaning up
2082
2090
  disconnect_token = self.sid_to_token.get(sid)
@@ -2091,6 +2099,8 @@ class EventNamespace(AsyncNamespace):
2091
2099
  lambda t: t.exception()
2092
2100
  and console.error(f"Token cleanup error: {t.exception()}")
2093
2101
  )
2102
+ return task
2103
+ return None
2094
2104
 
2095
2105
  async def emit_update(self, update: StateUpdate, token: str) -> None:
2096
2106
  """Emit an update to the client.
@@ -2100,16 +2110,30 @@ class EventNamespace(AsyncNamespace):
2100
2110
  token: The client token (tab) associated with the event.
2101
2111
  """
2102
2112
  client_token, _ = _split_substate_key(token)
2103
- sid = self.token_to_sid.get(client_token)
2104
- if sid is None:
2105
- # If the sid is None, we are not connected to a client. Prevent sending
2106
- # updates to all clients.
2107
- console.warn(f"Attempting to send delta to disconnected client {token!r}")
2113
+ socket_record = self._token_manager.token_to_socket.get(client_token)
2114
+ if (
2115
+ socket_record is None
2116
+ or socket_record.instance_id != self._token_manager.instance_id
2117
+ ):
2118
+ if isinstance(self._token_manager, RedisTokenManager):
2119
+ # The socket belongs to another instance of the app, send it to the lost and found.
2120
+ if not await self._token_manager.emit_lost_and_found(
2121
+ client_token, update
2122
+ ):
2123
+ console.warn(
2124
+ f"Failed to send delta to lost and found for client {token!r}"
2125
+ )
2126
+ else:
2127
+ # If the socket record is None, we are not connected to a client. Prevent sending
2128
+ # updates to all clients.
2129
+ console.warn(
2130
+ f"Attempting to send delta to disconnected client {token!r}"
2131
+ )
2108
2132
  return
2109
2133
  # Creating a task prevents the update from being blocked behind other coroutines.
2110
2134
  await asyncio.create_task(
2111
- self.emit(str(constants.SocketEvent.EVENT), update, to=sid),
2112
- name=f"reflex_emit_event|{token}|{sid}|{time.time()}",
2135
+ self.emit(str(constants.SocketEvent.EVENT), update, to=socket_record.sid),
2136
+ name=f"reflex_emit_event|{token}|{socket_record.sid}|{time.time()}",
2113
2137
  )
2114
2138
 
2115
2139
  async def on_event(self, sid: str, data: Any):
@@ -4,7 +4,7 @@ from __future__ import annotations
4
4
 
5
5
  from reflex.components.component import Component
6
6
  from reflex.components.datadisplay.logo import svg_logo
7
- from reflex.components.el import a, button, details, div, h2, hr, p, pre, summary
7
+ from reflex.components.el import a, button, div, h2, hr, p, pre, svg
8
8
  from reflex.event import EventHandler, set_clipboard
9
9
  from reflex.state import FrontendEventExceptionState
10
10
  from reflex.vars.base import Var
@@ -65,53 +65,67 @@ class ErrorBoundary(Component):
65
65
  div(
66
66
  div(
67
67
  div(
68
+ svg(
69
+ svg.circle(cx="12", cy="12", r="10"),
70
+ svg.path(d="M16 16s-1.5-2-4-2-4 2-4 2"),
71
+ svg.line(x1="9", x2="9.01", y1="9", y2="9"),
72
+ svg.line(x1="15", x2="15.01", y1="9", y2="9"),
73
+ xmlns="http://www.w3.org/2000/svg",
74
+ width="25vmin",
75
+ view_box="0 0 24 24",
76
+ class_name="lucide lucide-frown-icon lucide-frown",
77
+ custom_attrs={
78
+ "fill": "none",
79
+ "stroke": "currentColor",
80
+ "stroke-width": "2",
81
+ "stroke-linecap": "round",
82
+ "stroke-linejoin": "round",
83
+ },
84
+ ),
68
85
  h2(
69
86
  "An error occurred while rendering this page.",
70
- font_size="1.25rem",
87
+ font_size="5vmin",
71
88
  font_weight="bold",
72
89
  ),
73
- p(
74
- "This is an error with the application itself.",
75
- opacity="0.75",
76
- ),
77
- details(
78
- summary("Error message", padding="0.5rem"),
79
- div(
80
- div(
81
- pre(
82
- Var(_js_expr=_ERROR_DISPLAY),
83
- ),
84
- padding="0.5rem",
85
- width="fit-content",
86
- ),
87
- width="100%",
88
- max_height="50vh",
89
- overflow="auto",
90
- background="#000",
91
- color="#fff",
92
- border_radius="0.25rem",
93
- ),
94
- button(
95
- "Copy",
96
- on_click=set_clipboard(
97
- Var(_js_expr=_ERROR_DISPLAY)
98
- ),
99
- padding="0.35rem 0.75rem",
100
- margin="0.5rem",
101
- background="#fff",
102
- color="#000",
103
- border="1px solid #000",
104
- border_radius="0.25rem",
105
- font_weight="bold",
90
+ opacity="0.5",
91
+ display="flex",
92
+ gap="4vmin",
93
+ align_items="center",
94
+ ),
95
+ p(
96
+ "This is an error with the application itself. Refreshing the page might help.",
97
+ opacity="0.75",
98
+ margin_block="1rem",
99
+ ),
100
+ div(
101
+ div(
102
+ pre(
103
+ Var(_js_expr=_ERROR_DISPLAY),
106
104
  ),
105
+ padding="0.5rem",
106
+ width="fit-content",
107
107
  ),
108
- display="flex",
109
- flex_direction="column",
110
- gap="1rem",
111
- max_width="50ch",
112
- border="1px solid #888888",
113
- border_radius="0.25rem",
114
- padding="1rem",
108
+ width="100%",
109
+ background="color-mix(in srgb, currentColor 5%, transparent)",
110
+ max_height="15rem",
111
+ overflow="auto",
112
+ border_radius="0.4rem",
113
+ ),
114
+ button(
115
+ "Copy",
116
+ on_click=set_clipboard(Var(_js_expr=_ERROR_DISPLAY)),
117
+ padding="0.35rem 1.35rem",
118
+ margin_block="0.5rem",
119
+ margin_inline_start="auto",
120
+ background="color-mix(in srgb, currentColor 15%, transparent)",
121
+ border_radius="0.4rem",
122
+ width="fit-content",
123
+ _hover={
124
+ "background": "color-mix(in srgb, currentColor 25%, transparent)"
125
+ },
126
+ _active={
127
+ "background": "color-mix(in srgb, currentColor 35%, transparent)"
128
+ },
115
129
  ),
116
130
  hr(
117
131
  border_color="currentColor",
@@ -131,7 +145,10 @@ class ErrorBoundary(Component):
131
145
  ),
132
146
  display="flex",
133
147
  flex_direction="column",
134
- gap="1rem",
148
+ gap="0.5rem",
149
+ max_width="min(80ch, 90vw)",
150
+ border_radius="0.25rem",
151
+ padding="1rem",
135
152
  ),
136
153
  height="100%",
137
154
  width="100%",
@@ -6,7 +6,7 @@ from reflex.utils.imports import ImportVar
6
6
  from reflex.vars.base import LiteralVar, Var
7
7
  from reflex.vars.sequence import LiteralStringVar, StringVar
8
8
 
9
- LUCIDE_LIBRARY = "lucide-react@0.546.0"
9
+ LUCIDE_LIBRARY = "lucide-react@0.548.0"
10
10
 
11
11
 
12
12
  class LucideIconComponent(Component):
@@ -286,6 +286,7 @@ LUCIDE_ICON_LIST = [
286
286
  "binoculars",
287
287
  "biohazard",
288
288
  "bird",
289
+ "birdhouse",
289
290
  "bitcoin",
290
291
  "blend",
291
292
  "blinds",
@@ -828,6 +829,7 @@ LUCIDE_ICON_LIST = [
828
829
  "gallery_vertical_end",
829
830
  "gallery_vertical",
830
831
  "gamepad_2",
832
+ "gamepad_directional",
831
833
  "gamepad",
832
834
  "gantt_chart",
833
835
  "gauge",
@@ -11,7 +11,7 @@ from reflex.components.core.breakpoints import Breakpoints
11
11
  from reflex.event import EventType, PointerEventInfo
12
12
  from reflex.vars.base import Var
13
13
 
14
- LUCIDE_LIBRARY = "lucide-react@0.545.0"
14
+ LUCIDE_LIBRARY = "lucide-react@0.548.0"
15
15
 
16
16
  class LucideIconComponent(Component):
17
17
  @classmethod
@@ -347,6 +347,7 @@ LUCIDE_ICON_LIST = [
347
347
  "binoculars",
348
348
  "biohazard",
349
349
  "bird",
350
+ "birdhouse",
350
351
  "bitcoin",
351
352
  "blend",
352
353
  "blinds",
@@ -889,6 +890,7 @@ LUCIDE_ICON_LIST = [
889
890
  "gallery_vertical_end",
890
891
  "gallery_vertical",
891
892
  "gamepad_2",
893
+ "gamepad_directional",
892
894
  "gamepad",
893
895
  "gantt_chart",
894
896
  "gauge",
@@ -1176,6 +1178,7 @@ LUCIDE_ICON_LIST = [
1176
1178
  "minimize",
1177
1179
  "minus",
1178
1180
  "monitor_check",
1181
+ "monitor_cloud",
1179
1182
  "monitor_cog",
1180
1183
  "monitor_dot",
1181
1184
  "monitor_down",
@@ -14,7 +14,7 @@ class Bun(SimpleNamespace):
14
14
  """Bun constants."""
15
15
 
16
16
  # The Bun version.
17
- VERSION = "1.3.0"
17
+ VERSION = "1.3.1"
18
18
 
19
19
  # Min Bun Version
20
20
  MIN_VERSION = "1.3.0"
@@ -67,6 +67,7 @@ class StateManagerRedis(StateManager):
67
67
  # The keyspace subscription string when redis is waiting for lock to be released.
68
68
  _redis_notify_keyspace_events: str = dataclasses.field(
69
69
  default="K" # Enable keyspace notifications (target a particular key)
70
+ "$" # For String commands (like setting keys)
70
71
  "g" # For generic commands (DEL, EXPIRE, etc)
71
72
  "x" # For expired events
72
73
  "e" # For evicted events (i.e. maxmemory exceeded)
@@ -76,7 +77,6 @@ class StateManagerRedis(StateManager):
76
77
  _redis_keyspace_lock_release_events: set[bytes] = dataclasses.field(
77
78
  default_factory=lambda: {
78
79
  b"del",
79
- b"expire",
80
80
  b"expired",
81
81
  b"evicted",
82
82
  }
@@ -17,7 +17,7 @@ class Constants(SimpleNamespace):
17
17
  """Tailwind constants."""
18
18
 
19
19
  # The Tailwindcss version
20
- VERSION = "tailwindcss@4.1.15"
20
+ VERSION = "tailwindcss@4.1.16"
21
21
  # The Tailwind config.
22
22
  CONFIG = "tailwind.config.js"
23
23
  # Default Tailwind content paths
@@ -156,7 +156,7 @@ class TailwindV4Plugin(TailwindPlugin):
156
156
  return [
157
157
  *super().get_frontend_development_dependencies(**context),
158
158
  Constants.VERSION,
159
- "@tailwindcss/postcss@4.1.15",
159
+ "@tailwindcss/postcss@4.1.16",
160
160
  ]
161
161
 
162
162
  def pre_compile(self, **context):
@@ -2189,14 +2189,12 @@ class BaseState(EvenMoreBasicBaseState):
2189
2189
  async def __aenter__(self) -> BaseState:
2190
2190
  """Enter the async context manager protocol.
2191
2191
 
2192
- This should not be used for the State class, but exists for
2193
- type-compatibility with StateProxy.
2192
+ This is a no-op for the State class and mainly used in background-tasks/StateProxy.
2194
2193
 
2195
- Raises:
2196
- TypeError: always, because async contextmanager protocol is only supported for background task.
2194
+ Returns:
2195
+ The unmodified state (self)
2197
2196
  """
2198
- msg = "Only background task should use `async with self` to modify state."
2199
- raise TypeError(msg)
2197
+ return self
2200
2198
 
2201
2199
  async def __aexit__(self, *exc_info: Any) -> None:
2202
2200
  """Exit the async context manager protocol.
@@ -2486,6 +2484,14 @@ class FrontendEventExceptionState(State):
2486
2484
  ),
2487
2485
  re.compile(re.escape("TypeError: null is not an object")), # Safari
2488
2486
  re.compile(r"TypeError: can't access property \".*\" of null"), # Firefox
2487
+ # Firefox: property access is on a function that returns null.
2488
+ re.compile(
2489
+ re.escape("TypeError: can't access property \"")
2490
+ + r".*"
2491
+ + re.escape('", ')
2492
+ + r".*"
2493
+ + re.escape(" is null")
2494
+ ),
2489
2495
  ]
2490
2496
 
2491
2497
  @event
@@ -5,6 +5,7 @@ from __future__ import annotations
5
5
  import contextlib
6
6
  import importlib
7
7
  import importlib.metadata
8
+ import inspect
8
9
  import json
9
10
  import random
10
11
  import re
@@ -435,7 +436,9 @@ async def get_redis_status() -> dict[str, bool | None]:
435
436
  status = True
436
437
  redis_client = get_redis()
437
438
  if redis_client is not None:
438
- await redis_client.ping()
439
+ ping_command = redis_client.ping()
440
+ if inspect.isawaitable(ping_command):
441
+ await ping_command
439
442
  else:
440
443
  status = None
441
444
  except RedisError: