reflex 0.8.14.post1__tar.gz → 0.8.15a0__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 (394) hide show
  1. {reflex-0.8.14.post1 → reflex-0.8.15a0}/PKG-INFO +5 -1
  2. {reflex-0.8.14.post1 → reflex-0.8.15a0}/pyproject.toml +8 -3
  3. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/__init__.py +1 -1
  4. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/__init__.pyi +2 -1
  5. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/app.py +5 -2
  6. reflex-0.8.15a0/reflex/base.py +75 -0
  7. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/datadisplay/dataeditor.py +17 -2
  8. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/datadisplay/dataeditor.pyi +6 -2
  9. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/lucide/icon.py +2 -1
  10. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/lucide/icon.pyi +2 -1
  11. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/sonner/toast.py +3 -2
  12. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/sonner/toast.pyi +3 -2
  13. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/constants/installer.py +3 -3
  14. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/environment.py +9 -1
  15. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/istate/proxy.py +35 -24
  16. reflex-0.8.15a0/reflex/model.py +636 -0
  17. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/plugins/tailwind_v4.py +2 -2
  18. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/reflex.py +16 -10
  19. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/state.py +21 -25
  20. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/testing.py +8 -6
  21. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/utils/build.py +11 -1
  22. reflex-0.8.15a0/reflex/utils/compat.py +46 -0
  23. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/utils/prerequisites.py +2 -1
  24. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/utils/serializers.py +21 -20
  25. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/utils/telemetry.py +0 -2
  26. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/utils/types.py +81 -90
  27. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/vars/base.py +2 -16
  28. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/vars/object.py +28 -1
  29. reflex-0.8.14.post1/reflex/base.py +0 -47
  30. reflex-0.8.14.post1/reflex/model.py +0 -617
  31. reflex-0.8.14.post1/reflex/utils/compat.py +0 -91
  32. {reflex-0.8.14.post1 → reflex-0.8.15a0}/.gitignore +0 -0
  33. {reflex-0.8.14.post1 → reflex-0.8.15a0}/LICENSE +0 -0
  34. {reflex-0.8.14.post1 → reflex-0.8.15a0}/README.md +0 -0
  35. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/.templates/apps/blank/assets/favicon.ico +0 -0
  36. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/.templates/apps/blank/code/__init__.py +0 -0
  37. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/.templates/apps/blank/code/blank.py +0 -0
  38. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/.templates/web/.gitignore +0 -0
  39. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/.templates/web/app/entry.client.js +0 -0
  40. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/.templates/web/app/routes.js +0 -0
  41. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +0 -0
  42. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/.templates/web/components/shiki/code.js +0 -0
  43. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/.templates/web/jsconfig.json +0 -0
  44. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/.templates/web/postcss.config.js +0 -0
  45. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/.templates/web/react-router.config.js +0 -0
  46. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/.templates/web/styles/__reflex_style_reset.css +0 -0
  47. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/.templates/web/utils/helpers/dataeditor.js +0 -0
  48. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/.templates/web/utils/helpers/debounce.js +0 -0
  49. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/.templates/web/utils/helpers/paste.js +0 -0
  50. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/.templates/web/utils/helpers/range.js +0 -0
  51. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/.templates/web/utils/helpers/throttle.js +0 -0
  52. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/.templates/web/utils/helpers/upload.js +0 -0
  53. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/.templates/web/utils/react-theme.js +0 -0
  54. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/.templates/web/utils/state.js +0 -0
  55. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/.templates/web/vite-plugin-safari-cachebust.js +0 -0
  56. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/__main__.py +0 -0
  57. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/admin.py +0 -0
  58. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/app_mixins/__init__.py +0 -0
  59. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/app_mixins/lifespan.py +0 -0
  60. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/app_mixins/middleware.py +0 -0
  61. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/app_mixins/mixin.py +0 -0
  62. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/assets.py +0 -0
  63. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/compiler/__init__.py +0 -0
  64. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/compiler/compiler.py +0 -0
  65. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/compiler/templates.py +0 -0
  66. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/compiler/utils.py +0 -0
  67. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/__init__.py +0 -0
  68. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/__init__.pyi +0 -0
  69. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/base/__init__.py +0 -0
  70. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/base/__init__.pyi +0 -0
  71. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/base/app_wrap.py +0 -0
  72. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/base/app_wrap.pyi +0 -0
  73. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/base/bare.py +0 -0
  74. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/base/body.py +0 -0
  75. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/base/body.pyi +0 -0
  76. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/base/document.py +0 -0
  77. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/base/document.pyi +0 -0
  78. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/base/error_boundary.py +0 -0
  79. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/base/error_boundary.pyi +0 -0
  80. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/base/fragment.py +0 -0
  81. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/base/fragment.pyi +0 -0
  82. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/base/link.py +0 -0
  83. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/base/link.pyi +0 -0
  84. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/base/meta.py +0 -0
  85. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/base/meta.pyi +0 -0
  86. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/base/script.py +0 -0
  87. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/base/script.pyi +0 -0
  88. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/base/strict_mode.py +0 -0
  89. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/base/strict_mode.pyi +0 -0
  90. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/component.py +0 -0
  91. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/core/__init__.py +0 -0
  92. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/core/__init__.pyi +0 -0
  93. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/core/auto_scroll.py +0 -0
  94. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/core/auto_scroll.pyi +0 -0
  95. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/core/banner.py +0 -0
  96. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/core/banner.pyi +0 -0
  97. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/core/breakpoints.py +0 -0
  98. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/core/clipboard.py +0 -0
  99. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/core/clipboard.pyi +0 -0
  100. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/core/colors.py +0 -0
  101. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/core/cond.py +0 -0
  102. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/core/debounce.py +0 -0
  103. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/core/debounce.pyi +0 -0
  104. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/core/foreach.py +0 -0
  105. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/core/helmet.py +0 -0
  106. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/core/helmet.pyi +0 -0
  107. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/core/html.py +0 -0
  108. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/core/html.pyi +0 -0
  109. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/core/layout/__init__.py +0 -0
  110. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/core/match.py +0 -0
  111. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/core/responsive.py +0 -0
  112. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/core/sticky.py +0 -0
  113. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/core/sticky.pyi +0 -0
  114. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/core/upload.py +0 -0
  115. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/core/upload.pyi +0 -0
  116. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/core/window_events.py +0 -0
  117. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/core/window_events.pyi +0 -0
  118. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/datadisplay/__init__.py +0 -0
  119. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/datadisplay/__init__.pyi +0 -0
  120. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/datadisplay/code.py +0 -0
  121. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/datadisplay/code.pyi +0 -0
  122. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/datadisplay/logo.py +0 -0
  123. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/datadisplay/shiki_code_block.py +0 -0
  124. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/datadisplay/shiki_code_block.pyi +0 -0
  125. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/dynamic.py +0 -0
  126. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/el/__init__.py +0 -0
  127. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/el/__init__.pyi +0 -0
  128. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/el/element.py +0 -0
  129. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/el/element.pyi +0 -0
  130. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/el/elements/__init__.py +0 -0
  131. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/el/elements/__init__.pyi +0 -0
  132. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/el/elements/base.py +0 -0
  133. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/el/elements/base.pyi +0 -0
  134. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/el/elements/forms.py +0 -0
  135. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/el/elements/forms.pyi +0 -0
  136. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/el/elements/inline.py +0 -0
  137. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/el/elements/inline.pyi +0 -0
  138. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/el/elements/media.py +0 -0
  139. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/el/elements/media.pyi +0 -0
  140. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/el/elements/metadata.py +0 -0
  141. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/el/elements/metadata.pyi +0 -0
  142. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/el/elements/other.py +0 -0
  143. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/el/elements/other.pyi +0 -0
  144. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/el/elements/scripts.py +0 -0
  145. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/el/elements/scripts.pyi +0 -0
  146. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/el/elements/sectioning.py +0 -0
  147. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/el/elements/sectioning.pyi +0 -0
  148. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/el/elements/tables.py +0 -0
  149. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/el/elements/tables.pyi +0 -0
  150. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/el/elements/typography.py +0 -0
  151. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/el/elements/typography.pyi +0 -0
  152. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/field.py +0 -0
  153. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/gridjs/__init__.py +0 -0
  154. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/gridjs/datatable.py +0 -0
  155. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/gridjs/datatable.pyi +0 -0
  156. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/literals.py +0 -0
  157. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/lucide/__init__.py +0 -0
  158. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/markdown/__init__.py +0 -0
  159. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/markdown/markdown.py +0 -0
  160. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/markdown/markdown.pyi +0 -0
  161. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/moment/__init__.py +0 -0
  162. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/moment/moment.py +0 -0
  163. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/moment/moment.pyi +0 -0
  164. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/plotly/__init__.py +0 -0
  165. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/plotly/plotly.py +0 -0
  166. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/plotly/plotly.pyi +0 -0
  167. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/props.py +0 -0
  168. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/__init__.py +0 -0
  169. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/__init__.pyi +0 -0
  170. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/primitives/__init__.py +0 -0
  171. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/primitives/__init__.pyi +0 -0
  172. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/primitives/accordion.py +0 -0
  173. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/primitives/accordion.pyi +0 -0
  174. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/primitives/base.py +0 -0
  175. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/primitives/base.pyi +0 -0
  176. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/primitives/dialog.py +0 -0
  177. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/primitives/dialog.pyi +0 -0
  178. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/primitives/drawer.py +0 -0
  179. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/primitives/drawer.pyi +0 -0
  180. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/primitives/form.py +0 -0
  181. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/primitives/form.pyi +0 -0
  182. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/primitives/progress.py +0 -0
  183. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/primitives/progress.pyi +0 -0
  184. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/primitives/slider.py +0 -0
  185. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/primitives/slider.pyi +0 -0
  186. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/__init__.py +0 -0
  187. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/__init__.pyi +0 -0
  188. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/base.py +0 -0
  189. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/base.pyi +0 -0
  190. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/color_mode.py +0 -0
  191. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/color_mode.pyi +0 -0
  192. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/__init__.py +0 -0
  193. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/__init__.pyi +0 -0
  194. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/alert_dialog.py +0 -0
  195. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/alert_dialog.pyi +0 -0
  196. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/aspect_ratio.py +0 -0
  197. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/aspect_ratio.pyi +0 -0
  198. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/avatar.py +0 -0
  199. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/avatar.pyi +0 -0
  200. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/badge.py +0 -0
  201. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/badge.pyi +0 -0
  202. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/button.py +0 -0
  203. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/button.pyi +0 -0
  204. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/callout.py +0 -0
  205. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/callout.pyi +0 -0
  206. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/card.py +0 -0
  207. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/card.pyi +0 -0
  208. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/checkbox.py +0 -0
  209. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/checkbox.pyi +0 -0
  210. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/checkbox_cards.py +0 -0
  211. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/checkbox_cards.pyi +0 -0
  212. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/checkbox_group.py +0 -0
  213. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/checkbox_group.pyi +0 -0
  214. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/context_menu.py +0 -0
  215. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/context_menu.pyi +0 -0
  216. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/data_list.py +0 -0
  217. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/data_list.pyi +0 -0
  218. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/dialog.py +0 -0
  219. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/dialog.pyi +0 -0
  220. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/dropdown_menu.py +0 -0
  221. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/dropdown_menu.pyi +0 -0
  222. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/hover_card.py +0 -0
  223. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/hover_card.pyi +0 -0
  224. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/icon_button.py +0 -0
  225. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/icon_button.pyi +0 -0
  226. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/inset.py +0 -0
  227. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/inset.pyi +0 -0
  228. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/popover.py +0 -0
  229. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/popover.pyi +0 -0
  230. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/progress.py +0 -0
  231. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/progress.pyi +0 -0
  232. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/radio.py +0 -0
  233. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/radio.pyi +0 -0
  234. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/radio_cards.py +0 -0
  235. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/radio_cards.pyi +0 -0
  236. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/radio_group.py +0 -0
  237. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/radio_group.pyi +0 -0
  238. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/scroll_area.py +0 -0
  239. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/scroll_area.pyi +0 -0
  240. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/segmented_control.py +0 -0
  241. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/segmented_control.pyi +0 -0
  242. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/select.py +0 -0
  243. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/select.pyi +0 -0
  244. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/separator.py +0 -0
  245. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/separator.pyi +0 -0
  246. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/skeleton.py +0 -0
  247. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/skeleton.pyi +0 -0
  248. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/slider.py +0 -0
  249. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/slider.pyi +0 -0
  250. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/spinner.py +0 -0
  251. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/spinner.pyi +0 -0
  252. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/switch.py +0 -0
  253. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/switch.pyi +0 -0
  254. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/table.py +0 -0
  255. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/table.pyi +0 -0
  256. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/tabs.py +0 -0
  257. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/tabs.pyi +0 -0
  258. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/text_area.py +0 -0
  259. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/text_area.pyi +0 -0
  260. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/text_field.py +0 -0
  261. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/text_field.pyi +0 -0
  262. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/tooltip.py +0 -0
  263. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/components/tooltip.pyi +0 -0
  264. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/layout/__init__.py +0 -0
  265. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/layout/__init__.pyi +0 -0
  266. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/layout/base.py +0 -0
  267. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/layout/base.pyi +0 -0
  268. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/layout/box.py +0 -0
  269. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/layout/box.pyi +0 -0
  270. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/layout/center.py +0 -0
  271. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/layout/center.pyi +0 -0
  272. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/layout/container.py +0 -0
  273. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/layout/container.pyi +0 -0
  274. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/layout/flex.py +0 -0
  275. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/layout/flex.pyi +0 -0
  276. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/layout/grid.py +0 -0
  277. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/layout/grid.pyi +0 -0
  278. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/layout/list.py +0 -0
  279. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/layout/list.pyi +0 -0
  280. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/layout/section.py +0 -0
  281. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/layout/section.pyi +0 -0
  282. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/layout/spacer.py +0 -0
  283. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/layout/spacer.pyi +0 -0
  284. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/layout/stack.py +0 -0
  285. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/layout/stack.pyi +0 -0
  286. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/typography/__init__.py +0 -0
  287. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/typography/__init__.pyi +0 -0
  288. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/typography/base.py +0 -0
  289. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/typography/blockquote.py +0 -0
  290. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/typography/blockquote.pyi +0 -0
  291. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/typography/code.py +0 -0
  292. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/typography/code.pyi +0 -0
  293. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/typography/heading.py +0 -0
  294. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/typography/heading.pyi +0 -0
  295. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/typography/link.py +0 -0
  296. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/typography/link.pyi +0 -0
  297. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/typography/text.py +0 -0
  298. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/radix/themes/typography/text.pyi +0 -0
  299. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/react_player/__init__.py +0 -0
  300. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/react_player/audio.py +0 -0
  301. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/react_player/audio.pyi +0 -0
  302. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/react_player/react_player.py +0 -0
  303. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/react_player/react_player.pyi +0 -0
  304. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/react_player/video.py +0 -0
  305. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/react_player/video.pyi +0 -0
  306. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/react_router/__init__.py +0 -0
  307. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/react_router/dom.py +0 -0
  308. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/react_router/dom.pyi +0 -0
  309. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/recharts/__init__.py +0 -0
  310. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/recharts/__init__.pyi +0 -0
  311. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/recharts/cartesian.py +0 -0
  312. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/recharts/cartesian.pyi +0 -0
  313. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/recharts/charts.py +0 -0
  314. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/recharts/charts.pyi +0 -0
  315. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/recharts/general.py +0 -0
  316. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/recharts/general.pyi +0 -0
  317. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/recharts/polar.py +0 -0
  318. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/recharts/polar.pyi +0 -0
  319. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/recharts/recharts.py +0 -0
  320. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/recharts/recharts.pyi +0 -0
  321. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/sonner/__init__.py +0 -0
  322. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/tags/__init__.py +0 -0
  323. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/tags/cond_tag.py +0 -0
  324. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/tags/iter_tag.py +0 -0
  325. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/tags/match_tag.py +0 -0
  326. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/tags/tag.py +0 -0
  327. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/components/tags/tagless.py +0 -0
  328. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/config.py +0 -0
  329. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/constants/__init__.py +0 -0
  330. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/constants/base.py +0 -0
  331. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/constants/colors.py +0 -0
  332. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/constants/compiler.py +0 -0
  333. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/constants/config.py +0 -0
  334. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/constants/custom_components.py +0 -0
  335. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/constants/event.py +0 -0
  336. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/constants/route.py +0 -0
  337. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/constants/state.py +0 -0
  338. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/constants/utils.py +0 -0
  339. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/custom_components/__init__.py +0 -0
  340. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/custom_components/custom_components.py +0 -0
  341. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/event.py +0 -0
  342. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/experimental/__init__.py +0 -0
  343. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/experimental/client_state.py +0 -0
  344. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/experimental/hooks.py +0 -0
  345. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/istate/__init__.py +0 -0
  346. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/istate/data.py +0 -0
  347. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/istate/dynamic.py +0 -0
  348. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/istate/manager.py +0 -0
  349. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/istate/storage.py +0 -0
  350. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/istate/wrappers.py +0 -0
  351. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/middleware/__init__.py +0 -0
  352. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/middleware/hydrate_middleware.py +0 -0
  353. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/middleware/middleware.py +0 -0
  354. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/page.py +0 -0
  355. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/plugins/__init__.py +0 -0
  356. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/plugins/_screenshot.py +0 -0
  357. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/plugins/base.py +0 -0
  358. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/plugins/shared_tailwind.py +0 -0
  359. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/plugins/sitemap.py +0 -0
  360. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/plugins/tailwind_v3.py +0 -0
  361. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/py.typed +0 -0
  362. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/route.py +0 -0
  363. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/style.py +0 -0
  364. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/utils/__init__.py +0 -0
  365. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/utils/codespaces.py +0 -0
  366. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/utils/console.py +0 -0
  367. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/utils/decorator.py +0 -0
  368. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/utils/exceptions.py +0 -0
  369. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/utils/exec.py +0 -0
  370. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/utils/export.py +0 -0
  371. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/utils/format.py +0 -0
  372. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/utils/frontend_skeleton.py +0 -0
  373. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/utils/imports.py +0 -0
  374. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/utils/js_runtimes.py +0 -0
  375. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/utils/lazy_loader.py +0 -0
  376. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/utils/misc.py +0 -0
  377. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/utils/monitoring.py +0 -0
  378. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/utils/net.py +0 -0
  379. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/utils/path_ops.py +0 -0
  380. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/utils/processes.py +0 -0
  381. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/utils/pyi_generator.py +0 -0
  382. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/utils/redir.py +0 -0
  383. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/utils/registry.py +0 -0
  384. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/utils/rename.py +0 -0
  385. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/utils/templates.py +0 -0
  386. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/utils/token_manager.py +0 -0
  387. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/vars/__init__.py +0 -0
  388. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/vars/color.py +0 -0
  389. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/vars/datetime.py +0 -0
  390. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/vars/dep_tracking.py +0 -0
  391. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/vars/function.py +0 -0
  392. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/vars/number.py +0 -0
  393. {reflex-0.8.14.post1 → reflex-0.8.15a0}/reflex/vars/sequence.py +0 -0
  394. {reflex-0.8.14.post1 → reflex-0.8.15a0}/scripts/hatch_build.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: reflex
3
- Version: 0.8.14.post1
3
+ Version: 0.8.15a0
4
4
  Summary: Web apps in pure Python.
5
5
  Project-URL: homepage, https://reflex.dev
6
6
  Project-URL: repository, https://github.com/reflex-dev/reflex
@@ -36,6 +36,10 @@ Requires-Dist: sqlmodel<0.1,>=0.0.24
36
36
  Requires-Dist: starlette>=0.47.0
37
37
  Requires-Dist: typing-extensions>=4.13.0
38
38
  Requires-Dist: wrapt<2.0,>=1.17.0
39
+ Provides-Extra: db
40
+ Requires-Dist: alembic<2.0,>=1.15.2; extra == 'db'
41
+ Requires-Dist: pydantic<3.0,>=1.10.21; extra == 'db'
42
+ Requires-Dist: sqlmodel<0.1,>=0.0.24; extra == 'db'
39
43
  Provides-Extra: monitoring
40
44
  Requires-Dist: pyleak<1.0,>=0.1.14; extra == 'monitoring'
41
45
  Description-Content-Type: text/markdown
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "reflex"
3
- version = "0.8.14post1"
3
+ version = "0.8.15a0"
4
4
  description = "Web apps in pure Python."
5
5
  license.text = "Apache-2.0"
6
6
  authors = [
@@ -50,6 +50,11 @@ classifiers = [
50
50
  ]
51
51
 
52
52
  [project.optional-dependencies]
53
+ db = [
54
+ "alembic >=1.15.2,<2.0",
55
+ "pydantic >=1.10.21,<3.0",
56
+ "sqlmodel >=0.0.24,<0.1",
57
+ ]
53
58
  monitoring = ["pyleak >=0.1.14,<1.0"]
54
59
 
55
60
  [project.urls]
@@ -229,7 +234,7 @@ fail_fast = true
229
234
 
230
235
  [[tool.pre-commit.repos]]
231
236
  repo = "https://github.com/astral-sh/ruff-pre-commit"
232
- rev = "v0.13.2"
237
+ rev = "v0.13.3"
233
238
  hooks = [
234
239
  { id = "ruff-format", args = [
235
240
  "reflex",
@@ -261,7 +266,7 @@ hooks = [
261
266
 
262
267
  [[tool.pre-commit.repos]]
263
268
  repo = "https://github.com/RobertCraigie/pyright-python"
264
- rev = "v1.1.405"
269
+ rev = "v1.1.406"
265
270
  hooks = [{ id = "pyright", args = ["reflex", "tests"], language = "system" }]
266
271
 
267
272
  [[tool.pre-commit.repos]]
@@ -323,7 +323,7 @@ _MAPPING: dict = {
323
323
  "SessionStorage",
324
324
  ],
325
325
  "middleware": ["middleware", "Middleware"],
326
- "model": ["asession", "session", "Model"],
326
+ "model": ["asession", "session", "Model", "ModelRegistry"],
327
327
  "page": ["page"],
328
328
  "state": [
329
329
  "var",
@@ -151,7 +151,7 @@ from .experimental import _x
151
151
  from .istate.storage import Cookie, LocalStorage, SessionStorage
152
152
  from .istate.wrappers import get_state
153
153
  from .middleware import Middleware, middleware
154
- from .model import Model, asession, session
154
+ from .model import Model, ModelRegistry, asession, session
155
155
  from .page import page
156
156
  from .state import ComponentState, State, dynamic, var
157
157
  from .style import Style, toggle_color_mode
@@ -192,6 +192,7 @@ __all__ = [
192
192
  "LocalStorage",
193
193
  "Middleware",
194
194
  "Model",
195
+ "ModelRegistry",
195
196
  "MomentDelta",
196
197
  "NoSSRComponent",
197
198
  "PropsBase",
@@ -83,7 +83,6 @@ from reflex.event import (
83
83
  get_hydrate_event,
84
84
  noop,
85
85
  )
86
- from reflex.model import Model, get_db_status
87
86
  from reflex.page import DECORATED_PAGES
88
87
  from reflex.route import (
89
88
  get_route_args,
@@ -648,7 +647,7 @@ class App(MiddlewareMixin, LifespanMixin):
648
647
 
649
648
  for api_transformer in api_transformers:
650
649
  if isinstance(api_transformer, Starlette):
651
- # Mount the api to the fastapi app.
650
+ # Mount the api to the starlette app.
652
651
  App._add_cors(api_transformer)
653
652
  api_transformer.mount("", asgi_app)
654
653
  asgi_app = api_transformer
@@ -957,6 +956,8 @@ class App(MiddlewareMixin, LifespanMixin):
957
956
  try:
958
957
  from starlette_admin.contrib.sqla.admin import Admin
959
958
  from starlette_admin.contrib.sqla.view import ModelView
959
+
960
+ from reflex.model import Model
960
961
  except ImportError:
961
962
  return
962
963
 
@@ -1849,6 +1850,8 @@ async def health(_request: Request) -> JSONResponse:
1849
1850
  tasks = []
1850
1851
 
1851
1852
  if prerequisites.check_db_used():
1853
+ from reflex.model import get_db_status
1854
+
1852
1855
  tasks.append(get_db_status())
1853
1856
  if prerequisites.check_redis_used():
1854
1857
  tasks.append(prerequisites.get_redis_status())
@@ -0,0 +1,75 @@
1
+ """Define the base Reflex class."""
2
+
3
+ from importlib.util import find_spec
4
+
5
+ if find_spec("pydantic") and find_spec("pydantic.v1"):
6
+ from pydantic.v1 import BaseModel
7
+
8
+ class Base(BaseModel):
9
+ """The base class subclassed by all Reflex classes.
10
+
11
+ This class wraps Pydantic and provides common methods such as
12
+ serialization and setting fields.
13
+
14
+ Any data structure that needs to be transferred between the
15
+ frontend and backend should subclass this class.
16
+ """
17
+
18
+ class Config:
19
+ """Pydantic config."""
20
+
21
+ arbitrary_types_allowed = True
22
+ use_enum_values = True
23
+ extra = "allow"
24
+
25
+ def __init__(self, *args, **kwargs):
26
+ """Initialize the base class.
27
+
28
+ Args:
29
+ *args: Positional arguments.
30
+ **kwargs: Keyword arguments.
31
+ """
32
+ from reflex.utils import console
33
+
34
+ console.deprecate(
35
+ feature_name="rx.Base",
36
+ reason="You can subclass from `pydantic.BaseModel` directly instead or use dataclasses if possible.",
37
+ deprecation_version="0.8.2",
38
+ removal_version="0.9.0",
39
+ )
40
+ super().__init__(*args, **kwargs)
41
+
42
+ def json(self) -> str:
43
+ """Convert the object to a json string.
44
+
45
+ Returns:
46
+ The object as a json string.
47
+ """
48
+ from reflex.utils.serializers import serialize
49
+
50
+ return self.__config__.json_dumps(
51
+ self.dict(),
52
+ default=serialize,
53
+ )
54
+ else:
55
+
56
+ class PydanticNotFoundFallback:
57
+ """Fallback base class for environments without Pydantic."""
58
+
59
+ def __init__(self, *args, **kwargs):
60
+ """Initialize the base class.
61
+
62
+ Args:
63
+ *args: Positional arguments.
64
+ **kwargs: Keyword arguments.
65
+
66
+ Raises:
67
+ ImportError: As Pydantic is not installed.
68
+ """
69
+ msg = (
70
+ "Pydantic is not installed. Please install it to use rx.Base."
71
+ "You can install it with `pip install pydantic`."
72
+ )
73
+ raise ImportError(msg)
74
+
75
+ Base = PydanticNotFoundFallback # pyright: ignore[reportAssignmentType]
@@ -2,11 +2,11 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import dataclasses
5
6
  from collections.abc import Mapping, Sequence
6
7
  from enum import Enum
7
8
  from typing import Any, Literal, TypedDict
8
9
 
9
- from reflex.base import Base
10
10
  from reflex.components.component import Component, NoSSRComponent
11
11
  from reflex.components.literals import LiteralRowMarker
12
12
  from reflex.event import EventHandler, no_args_event_spec, passthrough_event_spec
@@ -50,7 +50,8 @@ class GridColumnIcons(Enum):
50
50
  VideoUri = "video_uri"
51
51
 
52
52
 
53
- class DataEditorTheme(Base):
53
+ @dataclasses.dataclass
54
+ class DataEditorThemeBase:
54
55
  """The theme for the DataEditor component."""
55
56
 
56
57
  accent_color: str | None = None
@@ -87,6 +88,20 @@ class DataEditorTheme(Base):
87
88
  text_medium: str | None = None
88
89
 
89
90
 
91
+ @dataclasses.dataclass(init=False)
92
+ class DataEditorTheme(DataEditorThemeBase):
93
+ """The theme for the DataEditor component."""
94
+
95
+ def __init__(self, **kwargs: Any):
96
+ """Initialize the DataEditorTheme.
97
+
98
+ Args:
99
+ **kwargs: The keyword arguments to initialize the theme.
100
+ """
101
+ kwargs = {format.to_snake_case(k): v for k, v in kwargs.items()}
102
+ super().__init__(**kwargs)
103
+
104
+
90
105
  class Bounds(TypedDict):
91
106
  """The bounds of the group header."""
92
107
 
@@ -3,11 +3,11 @@
3
3
  # ------------------- DO NOT EDIT ----------------------
4
4
  # This file was generated by `reflex/utils/pyi_generator.py`!
5
5
  # ------------------------------------------------------
6
+ import dataclasses
6
7
  from collections.abc import Mapping, Sequence
7
8
  from enum import Enum
8
9
  from typing import Any, Literal, TypedDict
9
10
 
10
- from reflex.base import Base
11
11
  from reflex.components.component import NoSSRComponent
12
12
  from reflex.components.core.breakpoints import Breakpoints
13
13
  from reflex.event import EventType, PointerEventInfo
@@ -43,7 +43,8 @@ class GridColumnIcons(Enum):
43
43
  Uri = "uri"
44
44
  VideoUri = "video_uri"
45
45
 
46
- class DataEditorTheme(Base):
46
+ @dataclasses.dataclass
47
+ class DataEditorThemeBase:
47
48
  accent_color: str | None
48
49
  accent_fg: str | None
49
50
  accent_light: str | None
@@ -77,6 +78,9 @@ class DataEditorTheme(Base):
77
78
  text_light: str | None
78
79
  text_medium: str | None
79
80
 
81
+ @dataclasses.dataclass(init=False)
82
+ class DataEditorTheme(DataEditorThemeBase): ...
83
+
80
84
  class Bounds(TypedDict):
81
85
  x: int
82
86
  y: int
@@ -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.544.0"
9
+ LUCIDE_LIBRARY = "lucide-react@0.545.0"
10
10
 
11
11
 
12
12
  class LucideIconComponent(Component):
@@ -1129,6 +1129,7 @@ LUCIDE_ICON_LIST = [
1129
1129
  "monitor",
1130
1130
  "moon_star",
1131
1131
  "moon",
1132
+ "motorbike",
1132
1133
  "mountain_snow",
1133
1134
  "mountain",
1134
1135
  "mouse_off",
@@ -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.544.0"
14
+ LUCIDE_LIBRARY = "lucide-react@0.545.0"
15
15
 
16
16
  class LucideIconComponent(Component):
17
17
  @classmethod
@@ -1194,6 +1194,7 @@ LUCIDE_ICON_LIST = [
1194
1194
  "monitor",
1195
1195
  "moon_star",
1196
1196
  "moon",
1197
+ "motorbike",
1197
1198
  "mountain_snow",
1198
1199
  "mountain",
1199
1200
  "mouse_off",
@@ -2,9 +2,9 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import dataclasses
5
6
  from typing import Any, Literal
6
7
 
7
- from reflex.base import Base
8
8
  from reflex.components.component import Component, ComponentNamespace
9
9
  from reflex.components.lucide.icon import Icon
10
10
  from reflex.components.props import NoExtrasAllowedProps
@@ -35,7 +35,8 @@ toast_ref = Var(
35
35
  )
36
36
 
37
37
 
38
- class ToastAction(Base):
38
+ @dataclasses.dataclass
39
+ class ToastAction:
39
40
  """A toast action that render a button in the toast."""
40
41
 
41
42
  label: str
@@ -3,10 +3,10 @@
3
3
  # ------------------- DO NOT EDIT ----------------------
4
4
  # This file was generated by `reflex/utils/pyi_generator.py`!
5
5
  # ------------------------------------------------------
6
+ import dataclasses
6
7
  from collections.abc import Mapping, Sequence
7
8
  from typing import Any, Literal
8
9
 
9
- from reflex.base import Base
10
10
  from reflex.components.component import Component, ComponentNamespace
11
11
  from reflex.components.core.breakpoints import Breakpoints
12
12
  from reflex.components.lucide.icon import Icon
@@ -32,7 +32,8 @@ toast_ref = Var(
32
32
  _var_data=VarData(imports={f"$/{Dirs.STATE_PATH}": [ImportVar(tag="refs")]}),
33
33
  )
34
34
 
35
- class ToastAction(Base):
35
+ @dataclasses.dataclass
36
+ class ToastAction:
36
37
  label: str
37
38
  on_click: Any
38
39
 
@@ -87,7 +87,7 @@ def _determine_react_router_version() -> str:
87
87
 
88
88
 
89
89
  def _determine_react_version() -> str:
90
- default_version = "19.1.1"
90
+ default_version = "19.2.0"
91
91
  if (version := os.getenv("REACT_VERSION")) and version != default_version:
92
92
  from reflex.utils import console
93
93
 
@@ -143,11 +143,11 @@ class PackageJson(SimpleNamespace):
143
143
  "postcss-import": "16.1.1",
144
144
  "@react-router/dev": _react_router_version,
145
145
  "@react-router/fs-routes": _react_router_version,
146
- "vite": "npm:rolldown-vite@7.1.13",
146
+ "vite": "npm:rolldown-vite@7.1.14",
147
147
  }
148
148
  OVERRIDES = {
149
149
  # This should always match the `react` version in DEPENDENCIES for recharts compatibility.
150
150
  "react-is": _react_version,
151
151
  "cookie": "1.0.2",
152
- "vite": "npm:rolldown-vite@7.1.13",
152
+ "vite": "npm:rolldown-vite@7.1.14",
153
153
  }
@@ -24,6 +24,7 @@ from typing import (
24
24
  )
25
25
 
26
26
  from reflex import constants
27
+ from reflex.constants.base import LogLevel
27
28
  from reflex.plugins import Plugin
28
29
  from reflex.utils.exceptions import EnvironmentVarValueError
29
30
  from reflex.utils.types import GenericType, is_union, value_inside_optional
@@ -204,7 +205,8 @@ def interpret_env_var_value(
204
205
  The interpreted value.
205
206
 
206
207
  Raises:
207
- ValueError: If the environment variable type is invalid.
208
+ ValueError: If the value is invalid.
209
+ EnvironmentVarValueError: If the value is invalid for the specific type.
208
210
  """
209
211
  field_type = value_inside_optional(field_type)
210
212
 
@@ -218,6 +220,12 @@ def interpret_env_var_value(
218
220
  return interpret_boolean_env(value, field_name)
219
221
  if field_type is str:
220
222
  return value
223
+ if field_type is LogLevel:
224
+ loglevel = LogLevel.from_string(value)
225
+ if loglevel is None:
226
+ msg = f"Invalid log level value: {value} for {field_name}"
227
+ raise EnvironmentVarValueError(msg)
228
+ return loglevel
221
229
  if field_type is int:
222
230
  return interpret_int_env(value, field_name)
223
231
  if field_type is Path:
@@ -9,19 +9,16 @@ import functools
9
9
  import inspect
10
10
  import json
11
11
  from collections.abc import Callable, Sequence
12
+ from importlib.util import find_spec
12
13
  from types import MethodType
13
14
  from typing import TYPE_CHECKING, Any, SupportsIndex, TypeVar
14
15
 
15
- import pydantic
16
16
  import wrapt
17
- from pydantic import BaseModel as BaseModelV2
18
- from pydantic.v1 import BaseModel as BaseModelV1
19
- from sqlalchemy.orm import DeclarativeBase
20
17
 
21
18
  from reflex.base import Base
22
19
  from reflex.utils import prerequisites
23
20
  from reflex.utils.exceptions import ImmutableStateError
24
- from reflex.utils.serializers import serializer
21
+ from reflex.utils.serializers import can_serialize, serialize, serializer
25
22
  from reflex.vars.base import Var
26
23
 
27
24
  if TYPE_CHECKING:
@@ -339,6 +336,34 @@ class ReadOnlyStateProxy(StateProxy):
339
336
  raise NotImplementedError(msg)
340
337
 
341
338
 
339
+ if find_spec("pydantic"):
340
+ import pydantic
341
+
342
+ NEVER_WRAP_BASE_ATTRS = set(Base.__dict__) - {"set"} | set(
343
+ pydantic.BaseModel.__dict__
344
+ )
345
+ else:
346
+ NEVER_WRAP_BASE_ATTRS = {}
347
+
348
+ MUTABLE_TYPES = (
349
+ list,
350
+ dict,
351
+ set,
352
+ Base,
353
+ )
354
+
355
+ if find_spec("sqlalchemy"):
356
+ from sqlalchemy.orm import DeclarativeBase
357
+
358
+ MUTABLE_TYPES += (DeclarativeBase,)
359
+
360
+ if find_spec("pydantic"):
361
+ from pydantic import BaseModel as BaseModelV2
362
+ from pydantic.v1 import BaseModel as BaseModelV1
363
+
364
+ MUTABLE_TYPES += (BaseModelV1, BaseModelV2)
365
+
366
+
342
367
  class MutableProxy(wrapt.ObjectProxy):
343
368
  """A proxy for a mutable object that tracks changes."""
344
369
 
@@ -371,11 +396,6 @@ class MutableProxy(wrapt.ObjectProxy):
371
396
  "setdefault",
372
397
  }
373
398
 
374
- # These internal attributes on rx.Base should NOT be wrapped in a MutableProxy.
375
- __never_wrap_base_attrs__ = set(Base.__dict__) - {"set"} | set(
376
- pydantic.BaseModel.__dict__
377
- )
378
-
379
399
  # Dynamically generated classes for tracking dataclass mutations.
380
400
  __dataclass_proxies__: dict[type, type] = {}
381
401
 
@@ -539,7 +559,7 @@ class MutableProxy(wrapt.ObjectProxy):
539
559
 
540
560
  if (
541
561
  isinstance(self.__wrapped__, Base)
542
- and __name not in self.__never_wrap_base_attrs__
562
+ and __name not in NEVER_WRAP_BASE_ATTRS
543
563
  and hasattr(value, "__func__")
544
564
  ):
545
565
  # Wrap methods called on Base subclasses, which might do _anything_
@@ -669,7 +689,10 @@ def serialize_mutable_proxy(mp: MutableProxy):
669
689
  Returns:
670
690
  The wrapped object.
671
691
  """
672
- return mp.__wrapped__
692
+ obj = mp.__wrapped__
693
+ if can_serialize(type(obj)):
694
+ return serialize(obj)
695
+ return obj
673
696
 
674
697
 
675
698
  _orig_json_encoder_default = json.JSONEncoder.default
@@ -739,18 +762,6 @@ class ImmutableMutableProxy(MutableProxy):
739
762
  )
740
763
 
741
764
 
742
- # These types will be wrapped in MutableProxy
743
- MUTABLE_TYPES = (
744
- list,
745
- dict,
746
- set,
747
- Base,
748
- DeclarativeBase,
749
- BaseModelV2,
750
- BaseModelV1,
751
- )
752
-
753
-
754
765
  @functools.lru_cache(maxsize=1024)
755
766
  def is_mutable_type(type_: type) -> bool:
756
767
  """Check if a type is mutable and should be wrapped.