reflex 0.8.15a1__tar.gz → 0.8.15a2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (394) hide show
  1. {reflex-0.8.15a1 → reflex-0.8.15a2}/PKG-INFO +1 -1
  2. {reflex-0.8.15a1 → reflex-0.8.15a2}/pyproject.toml +1 -1
  3. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/.templates/web/utils/state.js +68 -8
  4. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/app.py +5 -5
  5. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/utils/codespaces.py +30 -1
  6. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/utils/types.py +8 -1
  7. {reflex-0.8.15a1 → reflex-0.8.15a2}/.gitignore +0 -0
  8. {reflex-0.8.15a1 → reflex-0.8.15a2}/LICENSE +0 -0
  9. {reflex-0.8.15a1 → reflex-0.8.15a2}/README.md +0 -0
  10. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/.templates/apps/blank/assets/favicon.ico +0 -0
  11. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/.templates/apps/blank/code/__init__.py +0 -0
  12. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/.templates/apps/blank/code/blank.py +0 -0
  13. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/.templates/web/.gitignore +0 -0
  14. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/.templates/web/app/entry.client.js +0 -0
  15. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/.templates/web/app/routes.js +0 -0
  16. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +0 -0
  17. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/.templates/web/components/shiki/code.js +0 -0
  18. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/.templates/web/jsconfig.json +0 -0
  19. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/.templates/web/postcss.config.js +0 -0
  20. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/.templates/web/react-router.config.js +0 -0
  21. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/.templates/web/styles/__reflex_style_reset.css +0 -0
  22. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/.templates/web/utils/helpers/dataeditor.js +0 -0
  23. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/.templates/web/utils/helpers/debounce.js +0 -0
  24. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/.templates/web/utils/helpers/paste.js +0 -0
  25. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/.templates/web/utils/helpers/range.js +0 -0
  26. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/.templates/web/utils/helpers/throttle.js +0 -0
  27. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/.templates/web/utils/helpers/upload.js +0 -0
  28. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/.templates/web/utils/react-theme.js +0 -0
  29. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/.templates/web/vite-plugin-safari-cachebust.js +0 -0
  30. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/__init__.py +0 -0
  31. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/__init__.pyi +0 -0
  32. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/__main__.py +0 -0
  33. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/admin.py +0 -0
  34. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/app_mixins/__init__.py +0 -0
  35. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/app_mixins/lifespan.py +0 -0
  36. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/app_mixins/middleware.py +0 -0
  37. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/app_mixins/mixin.py +0 -0
  38. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/assets.py +0 -0
  39. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/base.py +0 -0
  40. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/compiler/__init__.py +0 -0
  41. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/compiler/compiler.py +0 -0
  42. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/compiler/templates.py +0 -0
  43. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/compiler/utils.py +0 -0
  44. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/__init__.py +0 -0
  45. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/__init__.pyi +0 -0
  46. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/base/__init__.py +0 -0
  47. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/base/__init__.pyi +0 -0
  48. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/base/app_wrap.py +0 -0
  49. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/base/app_wrap.pyi +0 -0
  50. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/base/bare.py +0 -0
  51. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/base/body.py +0 -0
  52. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/base/body.pyi +0 -0
  53. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/base/document.py +0 -0
  54. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/base/document.pyi +0 -0
  55. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/base/error_boundary.py +0 -0
  56. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/base/error_boundary.pyi +0 -0
  57. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/base/fragment.py +0 -0
  58. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/base/fragment.pyi +0 -0
  59. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/base/link.py +0 -0
  60. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/base/link.pyi +0 -0
  61. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/base/meta.py +0 -0
  62. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/base/meta.pyi +0 -0
  63. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/base/script.py +0 -0
  64. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/base/script.pyi +0 -0
  65. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/base/strict_mode.py +0 -0
  66. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/base/strict_mode.pyi +0 -0
  67. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/component.py +0 -0
  68. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/core/__init__.py +0 -0
  69. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/core/__init__.pyi +0 -0
  70. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/core/auto_scroll.py +0 -0
  71. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/core/auto_scroll.pyi +0 -0
  72. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/core/banner.py +0 -0
  73. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/core/banner.pyi +0 -0
  74. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/core/breakpoints.py +0 -0
  75. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/core/clipboard.py +0 -0
  76. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/core/clipboard.pyi +0 -0
  77. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/core/colors.py +0 -0
  78. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/core/cond.py +0 -0
  79. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/core/debounce.py +0 -0
  80. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/core/debounce.pyi +0 -0
  81. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/core/foreach.py +0 -0
  82. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/core/helmet.py +0 -0
  83. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/core/helmet.pyi +0 -0
  84. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/core/html.py +0 -0
  85. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/core/html.pyi +0 -0
  86. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/core/layout/__init__.py +0 -0
  87. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/core/match.py +0 -0
  88. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/core/responsive.py +0 -0
  89. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/core/sticky.py +0 -0
  90. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/core/sticky.pyi +0 -0
  91. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/core/upload.py +0 -0
  92. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/core/upload.pyi +0 -0
  93. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/core/window_events.py +0 -0
  94. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/core/window_events.pyi +0 -0
  95. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/datadisplay/__init__.py +0 -0
  96. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/datadisplay/__init__.pyi +0 -0
  97. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/datadisplay/code.py +0 -0
  98. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/datadisplay/code.pyi +0 -0
  99. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/datadisplay/dataeditor.py +0 -0
  100. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/datadisplay/dataeditor.pyi +0 -0
  101. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/datadisplay/logo.py +0 -0
  102. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/datadisplay/shiki_code_block.py +0 -0
  103. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/datadisplay/shiki_code_block.pyi +0 -0
  104. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/dynamic.py +0 -0
  105. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/el/__init__.py +0 -0
  106. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/el/__init__.pyi +0 -0
  107. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/el/element.py +0 -0
  108. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/el/element.pyi +0 -0
  109. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/el/elements/__init__.py +0 -0
  110. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/el/elements/__init__.pyi +0 -0
  111. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/el/elements/base.py +0 -0
  112. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/el/elements/base.pyi +0 -0
  113. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/el/elements/forms.py +0 -0
  114. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/el/elements/forms.pyi +0 -0
  115. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/el/elements/inline.py +0 -0
  116. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/el/elements/inline.pyi +0 -0
  117. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/el/elements/media.py +0 -0
  118. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/el/elements/media.pyi +0 -0
  119. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/el/elements/metadata.py +0 -0
  120. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/el/elements/metadata.pyi +0 -0
  121. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/el/elements/other.py +0 -0
  122. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/el/elements/other.pyi +0 -0
  123. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/el/elements/scripts.py +0 -0
  124. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/el/elements/scripts.pyi +0 -0
  125. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/el/elements/sectioning.py +0 -0
  126. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/el/elements/sectioning.pyi +0 -0
  127. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/el/elements/tables.py +0 -0
  128. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/el/elements/tables.pyi +0 -0
  129. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/el/elements/typography.py +0 -0
  130. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/el/elements/typography.pyi +0 -0
  131. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/field.py +0 -0
  132. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/gridjs/__init__.py +0 -0
  133. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/gridjs/datatable.py +0 -0
  134. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/gridjs/datatable.pyi +0 -0
  135. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/literals.py +0 -0
  136. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/lucide/__init__.py +0 -0
  137. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/lucide/icon.py +0 -0
  138. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/lucide/icon.pyi +0 -0
  139. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/markdown/__init__.py +0 -0
  140. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/markdown/markdown.py +0 -0
  141. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/markdown/markdown.pyi +0 -0
  142. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/moment/__init__.py +0 -0
  143. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/moment/moment.py +0 -0
  144. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/moment/moment.pyi +0 -0
  145. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/plotly/__init__.py +0 -0
  146. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/plotly/plotly.py +0 -0
  147. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/plotly/plotly.pyi +0 -0
  148. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/props.py +0 -0
  149. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/__init__.py +0 -0
  150. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/__init__.pyi +0 -0
  151. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/primitives/__init__.py +0 -0
  152. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/primitives/__init__.pyi +0 -0
  153. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/primitives/accordion.py +0 -0
  154. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/primitives/accordion.pyi +0 -0
  155. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/primitives/base.py +0 -0
  156. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/primitives/base.pyi +0 -0
  157. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/primitives/dialog.py +0 -0
  158. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/primitives/dialog.pyi +0 -0
  159. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/primitives/drawer.py +0 -0
  160. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/primitives/drawer.pyi +0 -0
  161. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/primitives/form.py +0 -0
  162. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/primitives/form.pyi +0 -0
  163. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/primitives/progress.py +0 -0
  164. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/primitives/progress.pyi +0 -0
  165. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/primitives/slider.py +0 -0
  166. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/primitives/slider.pyi +0 -0
  167. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/__init__.py +0 -0
  168. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/__init__.pyi +0 -0
  169. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/base.py +0 -0
  170. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/base.pyi +0 -0
  171. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/color_mode.py +0 -0
  172. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/color_mode.pyi +0 -0
  173. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/__init__.py +0 -0
  174. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/__init__.pyi +0 -0
  175. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/alert_dialog.py +0 -0
  176. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/alert_dialog.pyi +0 -0
  177. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/aspect_ratio.py +0 -0
  178. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/aspect_ratio.pyi +0 -0
  179. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/avatar.py +0 -0
  180. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/avatar.pyi +0 -0
  181. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/badge.py +0 -0
  182. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/badge.pyi +0 -0
  183. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/button.py +0 -0
  184. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/button.pyi +0 -0
  185. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/callout.py +0 -0
  186. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/callout.pyi +0 -0
  187. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/card.py +0 -0
  188. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/card.pyi +0 -0
  189. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/checkbox.py +0 -0
  190. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/checkbox.pyi +0 -0
  191. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/checkbox_cards.py +0 -0
  192. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/checkbox_cards.pyi +0 -0
  193. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/checkbox_group.py +0 -0
  194. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/checkbox_group.pyi +0 -0
  195. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/context_menu.py +0 -0
  196. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/context_menu.pyi +0 -0
  197. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/data_list.py +0 -0
  198. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/data_list.pyi +0 -0
  199. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/dialog.py +0 -0
  200. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/dialog.pyi +0 -0
  201. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/dropdown_menu.py +0 -0
  202. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/dropdown_menu.pyi +0 -0
  203. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/hover_card.py +0 -0
  204. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/hover_card.pyi +0 -0
  205. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/icon_button.py +0 -0
  206. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/icon_button.pyi +0 -0
  207. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/inset.py +0 -0
  208. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/inset.pyi +0 -0
  209. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/popover.py +0 -0
  210. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/popover.pyi +0 -0
  211. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/progress.py +0 -0
  212. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/progress.pyi +0 -0
  213. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/radio.py +0 -0
  214. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/radio.pyi +0 -0
  215. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/radio_cards.py +0 -0
  216. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/radio_cards.pyi +0 -0
  217. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/radio_group.py +0 -0
  218. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/radio_group.pyi +0 -0
  219. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/scroll_area.py +0 -0
  220. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/scroll_area.pyi +0 -0
  221. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/segmented_control.py +0 -0
  222. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/segmented_control.pyi +0 -0
  223. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/select.py +0 -0
  224. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/select.pyi +0 -0
  225. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/separator.py +0 -0
  226. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/separator.pyi +0 -0
  227. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/skeleton.py +0 -0
  228. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/skeleton.pyi +0 -0
  229. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/slider.py +0 -0
  230. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/slider.pyi +0 -0
  231. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/spinner.py +0 -0
  232. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/spinner.pyi +0 -0
  233. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/switch.py +0 -0
  234. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/switch.pyi +0 -0
  235. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/table.py +0 -0
  236. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/table.pyi +0 -0
  237. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/tabs.py +0 -0
  238. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/tabs.pyi +0 -0
  239. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/text_area.py +0 -0
  240. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/text_area.pyi +0 -0
  241. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/text_field.py +0 -0
  242. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/text_field.pyi +0 -0
  243. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/tooltip.py +0 -0
  244. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/components/tooltip.pyi +0 -0
  245. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/layout/__init__.py +0 -0
  246. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/layout/__init__.pyi +0 -0
  247. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/layout/base.py +0 -0
  248. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/layout/base.pyi +0 -0
  249. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/layout/box.py +0 -0
  250. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/layout/box.pyi +0 -0
  251. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/layout/center.py +0 -0
  252. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/layout/center.pyi +0 -0
  253. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/layout/container.py +0 -0
  254. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/layout/container.pyi +0 -0
  255. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/layout/flex.py +0 -0
  256. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/layout/flex.pyi +0 -0
  257. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/layout/grid.py +0 -0
  258. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/layout/grid.pyi +0 -0
  259. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/layout/list.py +0 -0
  260. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/layout/list.pyi +0 -0
  261. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/layout/section.py +0 -0
  262. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/layout/section.pyi +0 -0
  263. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/layout/spacer.py +0 -0
  264. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/layout/spacer.pyi +0 -0
  265. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/layout/stack.py +0 -0
  266. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/layout/stack.pyi +0 -0
  267. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/typography/__init__.py +0 -0
  268. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/typography/__init__.pyi +0 -0
  269. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/typography/base.py +0 -0
  270. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/typography/blockquote.py +0 -0
  271. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/typography/blockquote.pyi +0 -0
  272. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/typography/code.py +0 -0
  273. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/typography/code.pyi +0 -0
  274. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/typography/heading.py +0 -0
  275. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/typography/heading.pyi +0 -0
  276. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/typography/link.py +0 -0
  277. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/typography/link.pyi +0 -0
  278. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/typography/text.py +0 -0
  279. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/radix/themes/typography/text.pyi +0 -0
  280. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/react_player/__init__.py +0 -0
  281. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/react_player/audio.py +0 -0
  282. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/react_player/audio.pyi +0 -0
  283. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/react_player/react_player.py +0 -0
  284. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/react_player/react_player.pyi +0 -0
  285. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/react_player/video.py +0 -0
  286. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/react_player/video.pyi +0 -0
  287. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/react_router/__init__.py +0 -0
  288. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/react_router/dom.py +0 -0
  289. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/react_router/dom.pyi +0 -0
  290. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/recharts/__init__.py +0 -0
  291. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/recharts/__init__.pyi +0 -0
  292. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/recharts/cartesian.py +0 -0
  293. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/recharts/cartesian.pyi +0 -0
  294. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/recharts/charts.py +0 -0
  295. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/recharts/charts.pyi +0 -0
  296. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/recharts/general.py +0 -0
  297. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/recharts/general.pyi +0 -0
  298. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/recharts/polar.py +0 -0
  299. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/recharts/polar.pyi +0 -0
  300. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/recharts/recharts.py +0 -0
  301. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/recharts/recharts.pyi +0 -0
  302. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/sonner/__init__.py +0 -0
  303. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/sonner/toast.py +0 -0
  304. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/sonner/toast.pyi +0 -0
  305. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/tags/__init__.py +0 -0
  306. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/tags/cond_tag.py +0 -0
  307. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/tags/iter_tag.py +0 -0
  308. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/tags/match_tag.py +0 -0
  309. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/tags/tag.py +0 -0
  310. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/components/tags/tagless.py +0 -0
  311. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/config.py +0 -0
  312. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/constants/__init__.py +0 -0
  313. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/constants/base.py +0 -0
  314. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/constants/colors.py +0 -0
  315. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/constants/compiler.py +0 -0
  316. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/constants/config.py +0 -0
  317. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/constants/custom_components.py +0 -0
  318. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/constants/event.py +0 -0
  319. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/constants/installer.py +0 -0
  320. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/constants/route.py +0 -0
  321. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/constants/state.py +0 -0
  322. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/constants/utils.py +0 -0
  323. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/custom_components/__init__.py +0 -0
  324. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/custom_components/custom_components.py +0 -0
  325. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/environment.py +0 -0
  326. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/event.py +0 -0
  327. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/experimental/__init__.py +0 -0
  328. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/experimental/client_state.py +0 -0
  329. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/experimental/hooks.py +0 -0
  330. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/istate/__init__.py +0 -0
  331. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/istate/data.py +0 -0
  332. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/istate/dynamic.py +0 -0
  333. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/istate/manager/__init__.py +0 -0
  334. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/istate/manager/disk.py +0 -0
  335. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/istate/manager/memory.py +0 -0
  336. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/istate/manager/redis.py +0 -0
  337. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/istate/proxy.py +0 -0
  338. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/istate/storage.py +0 -0
  339. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/istate/wrappers.py +0 -0
  340. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/middleware/__init__.py +0 -0
  341. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/middleware/hydrate_middleware.py +0 -0
  342. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/middleware/middleware.py +0 -0
  343. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/model.py +0 -0
  344. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/page.py +0 -0
  345. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/plugins/__init__.py +0 -0
  346. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/plugins/_screenshot.py +0 -0
  347. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/plugins/base.py +0 -0
  348. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/plugins/shared_tailwind.py +0 -0
  349. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/plugins/sitemap.py +0 -0
  350. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/plugins/tailwind_v3.py +0 -0
  351. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/plugins/tailwind_v4.py +0 -0
  352. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/py.typed +0 -0
  353. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/reflex.py +0 -0
  354. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/route.py +0 -0
  355. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/state.py +0 -0
  356. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/style.py +0 -0
  357. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/testing.py +0 -0
  358. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/utils/__init__.py +0 -0
  359. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/utils/build.py +0 -0
  360. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/utils/compat.py +0 -0
  361. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/utils/console.py +0 -0
  362. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/utils/decorator.py +0 -0
  363. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/utils/exceptions.py +0 -0
  364. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/utils/exec.py +0 -0
  365. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/utils/export.py +0 -0
  366. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/utils/format.py +0 -0
  367. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/utils/frontend_skeleton.py +0 -0
  368. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/utils/imports.py +0 -0
  369. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/utils/js_runtimes.py +0 -0
  370. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/utils/lazy_loader.py +0 -0
  371. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/utils/misc.py +0 -0
  372. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/utils/monitoring.py +0 -0
  373. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/utils/net.py +0 -0
  374. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/utils/path_ops.py +0 -0
  375. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/utils/prerequisites.py +0 -0
  376. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/utils/processes.py +0 -0
  377. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/utils/pyi_generator.py +0 -0
  378. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/utils/redir.py +0 -0
  379. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/utils/registry.py +0 -0
  380. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/utils/rename.py +0 -0
  381. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/utils/serializers.py +0 -0
  382. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/utils/telemetry.py +0 -0
  383. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/utils/templates.py +0 -0
  384. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/utils/token_manager.py +0 -0
  385. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/vars/__init__.py +0 -0
  386. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/vars/base.py +0 -0
  387. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/vars/color.py +0 -0
  388. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/vars/datetime.py +0 -0
  389. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/vars/dep_tracking.py +0 -0
  390. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/vars/function.py +0 -0
  391. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/vars/number.py +0 -0
  392. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/vars/object.py +0 -0
  393. {reflex-0.8.15a1 → reflex-0.8.15a2}/reflex/vars/sequence.py +0 -0
  394. {reflex-0.8.15a1 → reflex-0.8.15a2}/scripts/hatch_build.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: reflex
3
- Version: 0.8.15a1
3
+ Version: 0.8.15a2
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "reflex"
3
- version = "0.8.15a1"
3
+ version = "0.8.15a2"
4
4
  description = "Web apps in pure Python."
5
5
  license.text = "Apache-2.0"
6
6
  authors = [
@@ -529,6 +529,14 @@ export const connect = async (
529
529
  navigate,
530
530
  params,
531
531
  ) => {
532
+ // Socket already allocated, just reconnect it if needed.
533
+ if (socket.current) {
534
+ if (!socket.current.connected) {
535
+ socket.current.reconnect();
536
+ }
537
+ return;
538
+ }
539
+
532
540
  // Get backend URL object from the endpoint.
533
541
  const endpoint = getBackendURL(EVENTURL);
534
542
  const on_hydrated_queue = [];
@@ -540,7 +548,9 @@ export const connect = async (
540
548
  protocols: [reflexEnvironment.version],
541
549
  autoUnref: false,
542
550
  query: { token: getToken() },
551
+ reconnection: false, // Reconnection will be handled manually.
543
552
  });
553
+ socket.current.wait_connect = !socket.current.connected;
544
554
  // Ensure undefined fields in events are sent as null instead of removed
545
555
  socket.current.io.encoder.replacer = (k, v) => (v === undefined ? null : v);
546
556
  socket.current.io.decoder.tryParse = (str) => {
@@ -550,6 +560,18 @@ export const connect = async (
550
560
  return false;
551
561
  }
552
562
  };
563
+ // Set up a reconnect helper function
564
+ socket.current.reconnect = () => {
565
+ if (
566
+ socket.current &&
567
+ !socket.current.connected &&
568
+ !socket.current.wait_connect
569
+ ) {
570
+ socket.current.wait_connect = true;
571
+ socket.current.io.opts.query = { token: getToken() }; // Update token for reconnect.
572
+ socket.current.connect();
573
+ }
574
+ };
553
575
 
554
576
  function checkVisibility() {
555
577
  if (document.visibilityState === "visible") {
@@ -565,7 +587,7 @@ export const connect = async (
565
587
  );
566
588
  } else if (!socket.current.connected) {
567
589
  console.log("Socket is disconnected, attempting to reconnect ");
568
- socket.current.connect();
590
+ socket.current.reconnect();
569
591
  } else {
570
592
  console.log("Socket is reconnected ");
571
593
  }
@@ -588,6 +610,7 @@ export const connect = async (
588
610
 
589
611
  // Once the socket is open, hydrate the page.
590
612
  socket.current.on("connect", async () => {
613
+ socket.current.wait_connect = false;
591
614
  setConnectErrors([]);
592
615
  window.addEventListener("pagehide", pagehideHandler);
593
616
  window.addEventListener("beforeunload", disconnectTrigger);
@@ -599,16 +622,33 @@ export const connect = async (
599
622
  });
600
623
 
601
624
  socket.current.on("connect_error", (error) => {
602
- setConnectErrors((connectErrors) => [connectErrors.slice(-9), error]);
625
+ socket.current.wait_connect = false;
626
+ let n_connect_errors = 0;
627
+ setConnectErrors((connectErrors) => {
628
+ const new_errors = [...connectErrors.slice(-9), error];
629
+ n_connect_errors = new_errors.length;
630
+ return new_errors;
631
+ });
632
+ window.setTimeout(() => {
633
+ if (socket.current && !socket.current.connected) {
634
+ socket.current.reconnect();
635
+ }
636
+ }, 200 * n_connect_errors); // Incremental backoff
603
637
  });
604
638
 
605
639
  // When the socket disconnects reset the event_processing flag
606
- socket.current.on("disconnect", () => {
607
- socket.current = null; // allow reconnect to occur automatically
640
+ socket.current.on("disconnect", (reason, details) => {
641
+ socket.current.wait_connect = false;
642
+ const try_reconnect =
643
+ reason !== "io server disconnect" && reason !== "io client disconnect";
608
644
  event_processing = false;
609
645
  window.removeEventListener("unload", disconnectTrigger);
610
646
  window.removeEventListener("beforeunload", disconnectTrigger);
611
647
  window.removeEventListener("pagehide", pagehideHandler);
648
+ if (try_reconnect) {
649
+ // Attempt to reconnect transient non-intentional disconnects.
650
+ socket.current.reconnect();
651
+ }
612
652
  });
613
653
 
614
654
  // On each received message, queue the updates and events.
@@ -785,6 +825,7 @@ export const useEventLoop = (
785
825
  const [searchParams] = useSearchParams();
786
826
  const [connectErrors, setConnectErrors] = useState([]);
787
827
  const params = useRef(paramsR);
828
+ const mounted = useRef(false);
788
829
 
789
830
  useEffect(() => {
790
831
  const { "*": splat, ...remainingParams } = paramsR;
@@ -796,11 +837,16 @@ export const useEventLoop = (
796
837
  }, [paramsR]);
797
838
 
798
839
  const ensureSocketConnected = useCallback(async () => {
840
+ if (!mounted.current) {
841
+ // During hot reload, some components may still have a reference to
842
+ // addEvents, so avoid reconnecting the socket of an unmounted event loop.
843
+ return;
844
+ }
799
845
  // only use websockets if state is present and backend is not disabled (reflex cloud).
800
846
  if (
801
847
  Object.keys(initialState).length > 1 &&
802
848
  !isBackendDisabled() &&
803
- !socket.current
849
+ !socket.current?.connected
804
850
  ) {
805
851
  // Initialize the websocket connection.
806
852
  await connect(
@@ -813,13 +859,23 @@ export const useEventLoop = (
813
859
  () => params.current,
814
860
  );
815
861
  }
816
- }, [socket, dispatch, setConnectErrors, client_storage, navigate, params]);
862
+ }, [
863
+ socket,
864
+ dispatch,
865
+ setConnectErrors,
866
+ client_storage,
867
+ navigate,
868
+ params,
869
+ mounted,
870
+ ]);
817
871
 
818
872
  // Function to add new events to the event queue.
819
873
  const addEvents = useCallback((events, args, event_actions) => {
820
874
  const _events = events.filter((e) => e !== undefined && e !== null);
821
-
822
- ensureSocketConnected();
875
+ if (!event_actions?.temporal) {
876
+ // Reconnect socket if needed for non-temporal events.
877
+ ensureSocketConnected();
878
+ }
823
879
 
824
880
  if (!(args instanceof Array)) {
825
881
  args = [args];
@@ -914,12 +970,16 @@ export const useEventLoop = (
914
970
  // Handle socket connect/disconnect.
915
971
  useEffect(() => {
916
972
  // Initialize the websocket connection.
973
+ mounted.current = true;
917
974
  ensureSocketConnected();
918
975
 
919
976
  // Cleanup function.
920
977
  return () => {
978
+ mounted.current = false;
921
979
  if (socket.current) {
922
980
  socket.current.disconnect();
981
+ socket.current.off();
982
+ socket.current = null;
923
983
  }
924
984
  };
925
985
  }, []);
@@ -1781,16 +1781,16 @@ async def process(
1781
1781
  name=f"reflex_emit_reload|{event.name}|{time.time()}|{event.token}",
1782
1782
  )
1783
1783
  return
1784
+ router_data[constants.RouteVar.PATH] = "/" + (
1785
+ app.router(path) or "404"
1786
+ if (path := router_data.get(constants.RouteVar.PATH))
1787
+ else "404"
1788
+ ).removeprefix("/")
1784
1789
  # re-assign only when the value is different
1785
1790
  if state.router_data != router_data:
1786
1791
  # assignment will recurse into substates and force recalculation of
1787
1792
  # dependent ComputedVar (dynamic route variables)
1788
1793
  state.router_data = router_data
1789
- router_data[constants.RouteVar.PATH] = "/" + (
1790
- app.router(path) or "404"
1791
- if (path := router_data.get(constants.RouteVar.PATH))
1792
- else "404"
1793
- ).removeprefix("/")
1794
1794
  state.router = RouterData.from_router_data(router_data)
1795
1795
 
1796
1796
  # Preprocess the event.
@@ -26,11 +26,40 @@ def redirect_script() -> str:
26
26
  const thisUrl = new URL(window.location.href);
27
27
  const params = new URLSearchParams(thisUrl.search)
28
28
 
29
+ function sameHostnameDifferentPort(one, two) {{
30
+ const hostnameOne = one.hostname;
31
+ const hostnameTwo = two.hostname;
32
+ const partsOne = hostnameOne.split(".");
33
+ const partsTwo = hostnameTwo.split(".");
34
+ if (partsOne.length !== partsTwo.length) {{ return false; }}
35
+ for (let i = 1; i < partsOne.length; i++) {{
36
+ if (partsOne[i] !== partsTwo[i]) {{ return false; }}
37
+ }}
38
+ const uniqueNameOne = partsOne[0];
39
+ const uniqueNameTwo = partsTwo[0];
40
+ const uniqueNamePartsOne = uniqueNameOne.split("-");
41
+ const uniqueNamePartsTwo = uniqueNameTwo.split("-");
42
+ if (uniqueNamePartsOne.length !== uniqueNamePartsTwo.length) {{ return false; }}
43
+ for (let i = 0; i < uniqueNamePartsOne.length - 1; i++) {{
44
+ if (uniqueNamePartsOne[i] !== uniqueNamePartsTwo[i]) {{ return false; }}
45
+ }}
46
+ return true;
47
+ }}
48
+
29
49
  function doRedirect(url) {{
30
50
  if (!window.sessionStorage.getItem("authenticated_github_codespaces")) {{
31
51
  const a = document.createElement("a");
32
52
  if (params.has("redirect_to")) {{
33
- a.href = params.get("redirect_to")
53
+ const redirect_to = new URL(params.get("redirect_to"));
54
+ if (!sameHostnameDifferentPort(thisUrl, redirect_to)) {{
55
+ console.warn("Reflex: Not redirecting to different hostname");
56
+ return;
57
+ }}
58
+ if (!redirect_to.hostname.endsWith(".app.github.dev")) {{
59
+ console.warn("Reflex: Not redirecting to non .app.github.dev hostname");
60
+ return;
61
+ }}
62
+ a.href = redirect_to.href;
34
63
  }} else if (!window.location.href.startsWith(url)) {{
35
64
  a.href = url + `?redirect_to=${{window.location.href}}`
36
65
  }} else {{
@@ -443,6 +443,13 @@ def get_attribute_access_type(cls: GenericType, name: str) -> GenericType | None
443
443
 
444
444
  from reflex.model import Model
445
445
 
446
+ if find_spec("sqlmodel"):
447
+ from sqlmodel import SQLModel
448
+
449
+ sqlmodel_types = (Model, SQLModel)
450
+ else:
451
+ sqlmodel_types = (Model,)
452
+
446
453
  if isinstance(cls, type) and issubclass(cls, DeclarativeBase):
447
454
  insp = sqlalchemy.inspect(cls)
448
455
  if name in insp.columns:
@@ -486,7 +493,7 @@ def get_attribute_access_type(cls: GenericType, name: str) -> GenericType | None
486
493
  elif (
487
494
  isinstance(cls, type)
488
495
  and not is_generic_alias(cls)
489
- and issubclass(cls, Model)
496
+ and issubclass(cls, sqlmodel_types)
490
497
  ):
491
498
  # Check in the annotations directly (for sqlmodel.Relationship)
492
499
  hints = get_type_hints(cls) # pyright: ignore [reportArgumentType]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes