reflex 0.7.9a2__tar.gz → 0.7.10a1__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 (407) hide show
  1. {reflex-0.7.9a2 → reflex-0.7.10a1}/PKG-INFO +2 -2
  2. {reflex-0.7.9a2 → reflex-0.7.10a1}/pyproject.toml +3 -4
  3. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/app.py +12 -4
  4. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/component.py +38 -11
  5. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/core/upload.py +48 -16
  6. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/core/upload.pyi +7 -0
  7. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/react_player/audio.pyi +0 -4
  8. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/react_player/react_player.py +21 -7
  9. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/react_player/react_player.pyi +0 -4
  10. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/react_player/video.pyi +0 -4
  11. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/config.py +2 -2
  12. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/constants/__init__.py +2 -0
  13. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/constants/base.py +1 -1
  14. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/constants/config.py +7 -0
  15. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/constants/installer.py +19 -5
  16. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/event.py +24 -0
  17. reflex-0.7.10a1/reflex/istate/manager.py +858 -0
  18. reflex-0.7.10a1/reflex/istate/proxy.py +757 -0
  19. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/reflex.py +15 -9
  20. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/state.py +91 -1622
  21. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/testing.py +20 -13
  22. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/utils/prerequisites.py +33 -40
  23. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/utils/pyi_generator.py +5 -4
  24. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/utils/redir.py +7 -0
  25. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/utils/serializers.py +14 -0
  26. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/vars/base.py +13 -1
  27. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/vars/number.py +16 -8
  28. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/vars/sequence.py +2 -1
  29. reflex-0.7.9a2/reflex/istate/proxy.py +0 -33
  30. {reflex-0.7.9a2 → reflex-0.7.10a1}/.gitignore +0 -0
  31. {reflex-0.7.9a2 → reflex-0.7.10a1}/LICENSE +0 -0
  32. {reflex-0.7.9a2 → reflex-0.7.10a1}/README.md +0 -0
  33. {reflex-0.7.9a2 → reflex-0.7.10a1}/hatch_build.py +0 -0
  34. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/apps/blank/assets/favicon.ico +0 -0
  35. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/apps/blank/code/__init__.py +0 -0
  36. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/apps/blank/code/blank.py +0 -0
  37. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/jinja/app/rxconfig.py.jinja2 +0 -0
  38. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/jinja/custom_components/README.md.jinja2 +0 -0
  39. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/jinja/custom_components/__init__.py.jinja2 +0 -0
  40. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/jinja/custom_components/demo_app.py.jinja2 +0 -0
  41. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/jinja/custom_components/pyproject.toml.jinja2 +0 -0
  42. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/jinja/custom_components/src.py.jinja2 +0 -0
  43. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/jinja/web/package.json.jinja2 +0 -0
  44. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/jinja/web/pages/_app.js.jinja2 +0 -0
  45. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/jinja/web/pages/_document.js.jinja2 +0 -0
  46. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/jinja/web/pages/base_page.js.jinja2 +0 -0
  47. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/jinja/web/pages/component.js.jinja2 +0 -0
  48. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/jinja/web/pages/custom_component.js.jinja2 +0 -0
  49. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/jinja/web/pages/index.js.jinja2 +0 -0
  50. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/jinja/web/pages/macros.js.jinja2 +0 -0
  51. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/jinja/web/pages/stateful_component.js.jinja2 +0 -0
  52. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/jinja/web/pages/stateful_components.js.jinja2 +0 -0
  53. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/jinja/web/pages/utils.js.jinja2 +0 -0
  54. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/jinja/web/styles/styles.css.jinja2 +0 -0
  55. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/jinja/web/tailwind.config.js.jinja2 +0 -0
  56. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/jinja/web/utils/context.js.jinja2 +0 -0
  57. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/jinja/web/utils/theme.js.jinja2 +0 -0
  58. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/web/.gitignore +0 -0
  59. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +0 -0
  60. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/web/components/shiki/code.js +0 -0
  61. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/web/jsconfig.json +0 -0
  62. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/web/next.config.js +0 -0
  63. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/web/postcss.config.js +0 -0
  64. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/web/styles/tailwind.css +0 -0
  65. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/web/utils/client_side_routing.js +0 -0
  66. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/web/utils/helpers/dataeditor.js +0 -0
  67. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/web/utils/helpers/debounce.js +0 -0
  68. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/web/utils/helpers/paste.js +0 -0
  69. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/web/utils/helpers/range.js +0 -0
  70. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/web/utils/helpers/throttle.js +0 -0
  71. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/.templates/web/utils/state.js +0 -0
  72. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/__init__.py +0 -0
  73. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/__init__.pyi +0 -0
  74. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/__main__.py +0 -0
  75. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/admin.py +0 -0
  76. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/app_mixins/__init__.py +0 -0
  77. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/app_mixins/lifespan.py +0 -0
  78. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/app_mixins/middleware.py +0 -0
  79. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/app_mixins/mixin.py +0 -0
  80. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/assets.py +0 -0
  81. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/base.py +0 -0
  82. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/compiler/__init__.py +0 -0
  83. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/compiler/compiler.py +0 -0
  84. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/compiler/templates.py +0 -0
  85. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/compiler/utils.py +0 -0
  86. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/__init__.py +0 -0
  87. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/__init__.pyi +0 -0
  88. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/base/__init__.py +0 -0
  89. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/base/__init__.pyi +0 -0
  90. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/base/app_wrap.py +0 -0
  91. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/base/app_wrap.pyi +0 -0
  92. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/base/bare.py +0 -0
  93. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/base/body.py +0 -0
  94. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/base/body.pyi +0 -0
  95. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/base/document.py +0 -0
  96. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/base/document.pyi +0 -0
  97. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/base/error_boundary.py +0 -0
  98. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/base/error_boundary.pyi +0 -0
  99. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/base/fragment.py +0 -0
  100. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/base/fragment.pyi +0 -0
  101. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/base/head.py +0 -0
  102. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/base/head.pyi +0 -0
  103. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/base/link.py +0 -0
  104. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/base/link.pyi +0 -0
  105. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/base/meta.py +0 -0
  106. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/base/meta.pyi +0 -0
  107. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/base/script.py +0 -0
  108. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/base/script.pyi +0 -0
  109. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/base/strict_mode.py +0 -0
  110. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/base/strict_mode.pyi +0 -0
  111. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/core/__init__.py +0 -0
  112. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/core/__init__.pyi +0 -0
  113. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/core/auto_scroll.py +0 -0
  114. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/core/auto_scroll.pyi +0 -0
  115. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/core/banner.py +0 -0
  116. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/core/banner.pyi +0 -0
  117. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/core/breakpoints.py +0 -0
  118. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/core/client_side_routing.py +0 -0
  119. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/core/client_side_routing.pyi +0 -0
  120. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/core/clipboard.py +0 -0
  121. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/core/clipboard.pyi +0 -0
  122. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/core/colors.py +0 -0
  123. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/core/cond.py +0 -0
  124. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/core/debounce.py +0 -0
  125. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/core/debounce.pyi +0 -0
  126. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/core/foreach.py +0 -0
  127. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/core/html.py +0 -0
  128. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/core/html.pyi +0 -0
  129. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/core/layout/__init__.py +0 -0
  130. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/core/match.py +0 -0
  131. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/core/responsive.py +0 -0
  132. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/core/sticky.py +0 -0
  133. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/core/sticky.pyi +0 -0
  134. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/datadisplay/__init__.py +0 -0
  135. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/datadisplay/__init__.pyi +0 -0
  136. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/datadisplay/code.py +0 -0
  137. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/datadisplay/code.pyi +0 -0
  138. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/datadisplay/dataeditor.py +0 -0
  139. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/datadisplay/dataeditor.pyi +0 -0
  140. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/datadisplay/logo.py +0 -0
  141. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/datadisplay/shiki_code_block.py +0 -0
  142. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/datadisplay/shiki_code_block.pyi +0 -0
  143. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/dynamic.py +0 -0
  144. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/el/__init__.py +0 -0
  145. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/el/__init__.pyi +0 -0
  146. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/el/constants/__init__.py +0 -0
  147. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/el/constants/html.py +0 -0
  148. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/el/constants/react.py +0 -0
  149. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/el/constants/reflex.py +0 -0
  150. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/el/element.py +0 -0
  151. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/el/element.pyi +0 -0
  152. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/el/elements/__init__.py +0 -0
  153. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/el/elements/__init__.pyi +0 -0
  154. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/el/elements/base.py +0 -0
  155. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/el/elements/base.pyi +0 -0
  156. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/el/elements/forms.py +0 -0
  157. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/el/elements/forms.pyi +0 -0
  158. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/el/elements/inline.py +0 -0
  159. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/el/elements/inline.pyi +0 -0
  160. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/el/elements/media.py +0 -0
  161. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/el/elements/media.pyi +0 -0
  162. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/el/elements/metadata.py +0 -0
  163. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/el/elements/metadata.pyi +0 -0
  164. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/el/elements/other.py +0 -0
  165. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/el/elements/other.pyi +0 -0
  166. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/el/elements/scripts.py +0 -0
  167. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/el/elements/scripts.pyi +0 -0
  168. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/el/elements/sectioning.py +0 -0
  169. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/el/elements/sectioning.pyi +0 -0
  170. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/el/elements/tables.py +0 -0
  171. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/el/elements/tables.pyi +0 -0
  172. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/el/elements/typography.py +0 -0
  173. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/el/elements/typography.pyi +0 -0
  174. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/gridjs/__init__.py +0 -0
  175. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/gridjs/datatable.py +0 -0
  176. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/gridjs/datatable.pyi +0 -0
  177. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/literals.py +0 -0
  178. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/lucide/__init__.py +0 -0
  179. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/lucide/icon.py +0 -0
  180. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/lucide/icon.pyi +0 -0
  181. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/markdown/__init__.py +0 -0
  182. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/markdown/markdown.py +0 -0
  183. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/markdown/markdown.pyi +0 -0
  184. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/moment/__init__.py +0 -0
  185. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/moment/moment.py +0 -0
  186. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/moment/moment.pyi +0 -0
  187. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/next/__init__.py +0 -0
  188. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/next/base.py +0 -0
  189. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/next/base.pyi +0 -0
  190. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/next/image.py +0 -0
  191. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/next/image.pyi +0 -0
  192. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/next/link.py +0 -0
  193. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/next/link.pyi +0 -0
  194. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/next/video.py +0 -0
  195. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/next/video.pyi +0 -0
  196. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/plotly/__init__.py +0 -0
  197. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/plotly/plotly.py +0 -0
  198. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/plotly/plotly.pyi +0 -0
  199. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/props.py +0 -0
  200. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/__init__.py +0 -0
  201. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/__init__.pyi +0 -0
  202. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/primitives/__init__.py +0 -0
  203. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/primitives/__init__.pyi +0 -0
  204. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/primitives/accordion.py +0 -0
  205. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/primitives/accordion.pyi +0 -0
  206. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/primitives/base.py +0 -0
  207. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/primitives/base.pyi +0 -0
  208. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/primitives/drawer.py +0 -0
  209. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/primitives/drawer.pyi +0 -0
  210. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/primitives/form.py +0 -0
  211. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/primitives/form.pyi +0 -0
  212. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/primitives/progress.py +0 -0
  213. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/primitives/progress.pyi +0 -0
  214. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/primitives/slider.py +0 -0
  215. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/primitives/slider.pyi +0 -0
  216. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/__init__.py +0 -0
  217. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/__init__.pyi +0 -0
  218. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/base.py +0 -0
  219. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/base.pyi +0 -0
  220. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/color_mode.py +0 -0
  221. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/color_mode.pyi +0 -0
  222. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/__init__.py +0 -0
  223. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/__init__.pyi +0 -0
  224. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/alert_dialog.py +0 -0
  225. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/alert_dialog.pyi +0 -0
  226. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/aspect_ratio.py +0 -0
  227. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/aspect_ratio.pyi +0 -0
  228. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/avatar.py +0 -0
  229. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/avatar.pyi +0 -0
  230. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/badge.py +0 -0
  231. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/badge.pyi +0 -0
  232. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/button.py +0 -0
  233. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/button.pyi +0 -0
  234. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/callout.py +0 -0
  235. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/callout.pyi +0 -0
  236. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/card.py +0 -0
  237. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/card.pyi +0 -0
  238. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/checkbox.py +0 -0
  239. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/checkbox.pyi +0 -0
  240. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/checkbox_cards.py +0 -0
  241. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/checkbox_cards.pyi +0 -0
  242. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/checkbox_group.py +0 -0
  243. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/checkbox_group.pyi +0 -0
  244. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/context_menu.py +0 -0
  245. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/context_menu.pyi +0 -0
  246. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/data_list.py +0 -0
  247. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/data_list.pyi +0 -0
  248. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/dialog.py +0 -0
  249. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/dialog.pyi +0 -0
  250. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/dropdown_menu.py +0 -0
  251. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/dropdown_menu.pyi +0 -0
  252. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/hover_card.py +0 -0
  253. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/hover_card.pyi +0 -0
  254. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/icon_button.py +0 -0
  255. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/icon_button.pyi +0 -0
  256. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/inset.py +0 -0
  257. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/inset.pyi +0 -0
  258. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/popover.py +0 -0
  259. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/popover.pyi +0 -0
  260. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/progress.py +0 -0
  261. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/progress.pyi +0 -0
  262. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/radio.py +0 -0
  263. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/radio.pyi +0 -0
  264. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/radio_cards.py +0 -0
  265. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/radio_cards.pyi +0 -0
  266. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/radio_group.py +0 -0
  267. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/radio_group.pyi +0 -0
  268. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/scroll_area.py +0 -0
  269. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/scroll_area.pyi +0 -0
  270. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/segmented_control.py +0 -0
  271. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/segmented_control.pyi +0 -0
  272. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/select.py +0 -0
  273. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/select.pyi +0 -0
  274. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/separator.py +0 -0
  275. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/separator.pyi +0 -0
  276. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/skeleton.py +0 -0
  277. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/skeleton.pyi +0 -0
  278. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/slider.py +0 -0
  279. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/slider.pyi +0 -0
  280. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/spinner.py +0 -0
  281. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/spinner.pyi +0 -0
  282. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/switch.py +0 -0
  283. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/switch.pyi +0 -0
  284. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/table.py +0 -0
  285. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/table.pyi +0 -0
  286. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/tabs.py +0 -0
  287. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/tabs.pyi +0 -0
  288. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/text_area.py +0 -0
  289. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/text_area.pyi +0 -0
  290. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/text_field.py +0 -0
  291. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/text_field.pyi +0 -0
  292. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/tooltip.py +0 -0
  293. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/components/tooltip.pyi +0 -0
  294. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/layout/__init__.py +0 -0
  295. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/layout/__init__.pyi +0 -0
  296. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/layout/base.py +0 -0
  297. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/layout/base.pyi +0 -0
  298. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/layout/box.py +0 -0
  299. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/layout/box.pyi +0 -0
  300. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/layout/center.py +0 -0
  301. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/layout/center.pyi +0 -0
  302. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/layout/container.py +0 -0
  303. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/layout/container.pyi +0 -0
  304. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/layout/flex.py +0 -0
  305. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/layout/flex.pyi +0 -0
  306. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/layout/grid.py +0 -0
  307. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/layout/grid.pyi +0 -0
  308. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/layout/list.py +0 -0
  309. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/layout/list.pyi +0 -0
  310. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/layout/section.py +0 -0
  311. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/layout/section.pyi +0 -0
  312. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/layout/spacer.py +0 -0
  313. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/layout/spacer.pyi +0 -0
  314. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/layout/stack.py +0 -0
  315. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/layout/stack.pyi +0 -0
  316. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/typography/__init__.py +0 -0
  317. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/typography/__init__.pyi +0 -0
  318. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/typography/base.py +0 -0
  319. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/typography/blockquote.py +0 -0
  320. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/typography/blockquote.pyi +0 -0
  321. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/typography/code.py +0 -0
  322. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/typography/code.pyi +0 -0
  323. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/typography/heading.py +0 -0
  324. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/typography/heading.pyi +0 -0
  325. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/typography/link.py +0 -0
  326. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/typography/link.pyi +0 -0
  327. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/typography/text.py +0 -0
  328. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/radix/themes/typography/text.pyi +0 -0
  329. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/react_player/__init__.py +0 -0
  330. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/react_player/audio.py +0 -0
  331. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/react_player/video.py +0 -0
  332. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/recharts/__init__.py +0 -0
  333. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/recharts/__init__.pyi +0 -0
  334. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/recharts/cartesian.py +0 -0
  335. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/recharts/cartesian.pyi +0 -0
  336. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/recharts/charts.py +0 -0
  337. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/recharts/charts.pyi +0 -0
  338. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/recharts/general.py +0 -0
  339. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/recharts/general.pyi +0 -0
  340. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/recharts/polar.py +0 -0
  341. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/recharts/polar.pyi +0 -0
  342. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/recharts/recharts.py +0 -0
  343. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/recharts/recharts.pyi +0 -0
  344. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/sonner/__init__.py +0 -0
  345. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/sonner/toast.py +0 -0
  346. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/sonner/toast.pyi +0 -0
  347. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/suneditor/__init__.py +0 -0
  348. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/suneditor/editor.py +0 -0
  349. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/suneditor/editor.pyi +0 -0
  350. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/tags/__init__.py +0 -0
  351. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/tags/cond_tag.py +0 -0
  352. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/tags/iter_tag.py +0 -0
  353. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/tags/match_tag.py +0 -0
  354. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/tags/tag.py +0 -0
  355. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/components/tags/tagless.py +0 -0
  356. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/constants/colors.py +0 -0
  357. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/constants/compiler.py +0 -0
  358. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/constants/custom_components.py +0 -0
  359. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/constants/event.py +0 -0
  360. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/constants/route.py +0 -0
  361. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/constants/state.py +0 -0
  362. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/constants/style.py +0 -0
  363. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/constants/utils.py +0 -0
  364. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/custom_components/__init__.py +0 -0
  365. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/custom_components/custom_components.py +0 -0
  366. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/experimental/__init__.py +0 -0
  367. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/experimental/client_state.py +0 -0
  368. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/experimental/hooks.py +0 -0
  369. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/experimental/layout.py +0 -0
  370. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/experimental/layout.pyi +0 -0
  371. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/istate/__init__.py +0 -0
  372. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/istate/data.py +0 -0
  373. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/istate/dynamic.py +0 -0
  374. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/istate/storage.py +0 -0
  375. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/istate/wrappers.py +0 -0
  376. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/middleware/__init__.py +0 -0
  377. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/middleware/hydrate_middleware.py +0 -0
  378. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/middleware/middleware.py +0 -0
  379. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/model.py +0 -0
  380. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/page.py +0 -0
  381. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/py.typed +0 -0
  382. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/route.py +0 -0
  383. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/style.py +0 -0
  384. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/utils/__init__.py +0 -0
  385. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/utils/build.py +0 -0
  386. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/utils/codespaces.py +0 -0
  387. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/utils/compat.py +0 -0
  388. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/utils/console.py +0 -0
  389. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/utils/decorator.py +0 -0
  390. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/utils/exceptions.py +0 -0
  391. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/utils/exec.py +0 -0
  392. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/utils/export.py +0 -0
  393. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/utils/format.py +0 -0
  394. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/utils/imports.py +0 -0
  395. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/utils/lazy_loader.py +0 -0
  396. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/utils/misc.py +0 -0
  397. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/utils/net.py +0 -0
  398. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/utils/path_ops.py +0 -0
  399. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/utils/processes.py +0 -0
  400. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/utils/registry.py +0 -0
  401. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/utils/telemetry.py +0 -0
  402. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/utils/types.py +0 -0
  403. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/vars/__init__.py +0 -0
  404. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/vars/datetime.py +0 -0
  405. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/vars/dep_tracking.py +0 -0
  406. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/vars/function.py +0 -0
  407. {reflex-0.7.9a2 → reflex-0.7.10a1}/reflex/vars/object.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: reflex
3
- Version: 0.7.9a2
3
+ Version: 0.7.10a1
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
@@ -31,7 +31,7 @@ Requires-Dist: pydantic<3.0,>=1.10.21
31
31
  Requires-Dist: python-multipart<1.0,>=0.0.20
32
32
  Requires-Dist: python-socketio<6.0,>=5.12.0
33
33
  Requires-Dist: redis<6.0,>=5.2.1
34
- Requires-Dist: reflex-hosting-cli>=0.1.43
34
+ Requires-Dist: reflex-hosting-cli>=0.1.47
35
35
  Requires-Dist: rich<15,>=13
36
36
  Requires-Dist: sqlmodel<0.1,>=0.0.24
37
37
  Requires-Dist: typing-extensions>=4.13.0
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "reflex"
3
- version = "0.7.9a2"
3
+ version = "0.7.10a1"
4
4
  description = "Web apps in pure Python."
5
5
  license = { text = "Apache-2.0" }
6
6
  authors = [
@@ -32,7 +32,7 @@ dependencies = [
32
32
  "python-socketio >=5.12.0,<6.0",
33
33
  "python-multipart >=0.0.20,<1.0",
34
34
  "redis >=5.2.1,<6.0",
35
- "reflex-hosting-cli >=0.1.43",
35
+ "reflex-hosting-cli >=0.1.47",
36
36
  "rich >=13,<15",
37
37
  "sqlmodel >=0.0.24,<0.1",
38
38
  "click >=8",
@@ -150,7 +150,7 @@ dev = [
150
150
  "plotly >=6.0",
151
151
  "pre-commit >=4.2",
152
152
  "psycopg[binary] >=3.2",
153
- "pyright >=1.1.399",
153
+ "pyright >=1.1.400",
154
154
  "pytest >=8.3",
155
155
  "pytest-asyncio >=0.26",
156
156
  "pytest-benchmark >=5.1",
@@ -165,5 +165,4 @@ dev = [
165
165
  "selenium >=4.31",
166
166
  "starlette-admin >=0.14",
167
167
  "uvicorn >=0.34.0",
168
-
169
168
  ]
@@ -29,7 +29,7 @@ from starlette.datastructures import Headers
29
29
  from starlette.datastructures import UploadFile as StarletteUploadFile
30
30
  from starlette.exceptions import HTTPException
31
31
  from starlette.middleware import cors
32
- from starlette.requests import Request
32
+ from starlette.requests import ClientDisconnect, Request
33
33
  from starlette.responses import JSONResponse, Response, StreamingResponse
34
34
  from starlette.staticfiles import StaticFiles
35
35
  from typing_extensions import deprecated
@@ -488,7 +488,7 @@ class App(MiddlewareMixin, LifespanMixin):
488
488
  set_breakpoints(self.style.pop("breakpoints"))
489
489
 
490
490
  # Set up the API.
491
- self._api = Starlette(lifespan=self._run_lifespan_tasks)
491
+ self._api = Starlette()
492
492
  App._add_cors(self._api)
493
493
  self._add_default_endpoints()
494
494
 
@@ -629,6 +629,7 @@ class App(MiddlewareMixin, LifespanMixin):
629
629
 
630
630
  if not self._api:
631
631
  raise ValueError("The app has not been initialized.")
632
+
632
633
  if self._cached_fastapi_app is not None:
633
634
  asgi_app = self._cached_fastapi_app
634
635
  asgi_app.mount("", self._api)
@@ -653,7 +654,11 @@ class App(MiddlewareMixin, LifespanMixin):
653
654
  # Transform the asgi app.
654
655
  asgi_app = api_transformer(asgi_app)
655
656
 
656
- return asgi_app
657
+ top_asgi_app = Starlette(lifespan=self._run_lifespan_tasks)
658
+ top_asgi_app.mount("", asgi_app)
659
+ App._add_cors(top_asgi_app)
660
+
661
+ return top_asgi_app
657
662
 
658
663
  def _add_default_endpoints(self):
659
664
  """Add default api endpoints (ping)."""
@@ -1828,7 +1833,10 @@ def upload(app: App):
1828
1833
  from reflex.utils.exceptions import UploadTypeError, UploadValueError
1829
1834
 
1830
1835
  # Get the files from the request.
1831
- files = await request.form()
1836
+ try:
1837
+ files = await request.form()
1838
+ except ClientDisconnect:
1839
+ return Response() # user cancelled
1832
1840
  files = files.getlist("files")
1833
1841
  if not files:
1834
1842
  raise UploadValueError("No files were uploaded.")
@@ -43,6 +43,7 @@ from reflex.event import (
43
43
  no_args_event_spec,
44
44
  parse_args_spec,
45
45
  run_script,
46
+ unwrap_var_annotation,
46
47
  )
47
48
  from reflex.style import Style, format_as_emotion
48
49
  from reflex.utils import console, format, imports, types
@@ -50,14 +51,15 @@ from reflex.utils.imports import ImportDict, ImportVar, ParsedImportDict, parse_
50
51
  from reflex.vars import VarData
51
52
  from reflex.vars.base import (
52
53
  CachedVarOperation,
54
+ LiteralNoneVar,
53
55
  LiteralVar,
54
56
  Var,
55
57
  cached_property_no_lock,
56
58
  )
57
59
  from reflex.vars.function import ArgsFunctionOperation, FunctionStringVar, FunctionVar
58
60
  from reflex.vars.number import ternary_operation
59
- from reflex.vars.object import ObjectVar
60
- from reflex.vars.sequence import LiteralArrayVar
61
+ from reflex.vars.object import LiteralObjectVar, ObjectVar
62
+ from reflex.vars.sequence import LiteralArrayVar, LiteralStringVar, StringVar
61
63
 
62
64
 
63
65
  class BaseComponent(Base, ABC):
@@ -598,13 +600,36 @@ class Component(BaseComponent, ABC):
598
600
  # Convert class_name to str if it's list
599
601
  class_name = kwargs.get("class_name", "")
600
602
  if isinstance(class_name, (list, tuple)):
601
- if any(isinstance(c, Var) for c in class_name):
603
+ has_var = False
604
+ for c in class_name:
605
+ if isinstance(c, str):
606
+ continue
607
+ if isinstance(c, Var):
608
+ if not isinstance(c, StringVar) and not issubclass(
609
+ c._var_type, str
610
+ ):
611
+ raise TypeError(
612
+ f"Invalid class_name passed for prop {type(self).__name__}.class_name, expected type str, got value {c._js_expr} of type {c._var_type}."
613
+ )
614
+ has_var = True
615
+ else:
616
+ raise TypeError(
617
+ f"Invalid class_name passed for prop {type(self).__name__}.class_name, expected type str, got value {c} of type {type(c)}."
618
+ )
619
+ if has_var:
602
620
  kwargs["class_name"] = LiteralArrayVar.create(
603
621
  class_name, _var_type=list[str]
604
622
  ).join(" ")
605
623
  else:
606
624
  kwargs["class_name"] = " ".join(class_name)
607
-
625
+ elif (
626
+ isinstance(class_name, Var)
627
+ and not isinstance(class_name, StringVar)
628
+ and not issubclass(class_name._var_type, str)
629
+ ):
630
+ raise TypeError(
631
+ f"Invalid class_name passed for prop {type(self).__name__}.class_name, expected type str, got value {class_name._js_expr} of type {class_name._var_type}."
632
+ )
608
633
  # Construct the component.
609
634
  for key, value in kwargs.items():
610
635
  setattr(self, key, value)
@@ -1146,7 +1171,7 @@ class Component(BaseComponent, ABC):
1146
1171
  vars.append(comp_prop)
1147
1172
  elif isinstance(comp_prop, str):
1148
1173
  # Collapse VarData encoded in f-strings.
1149
- var = LiteralVar.create(comp_prop)
1174
+ var = LiteralStringVar.create(comp_prop)
1150
1175
  if var._get_all_var_data() is not None:
1151
1176
  vars.append(var)
1152
1177
 
@@ -1912,8 +1937,8 @@ def _register_custom_component(
1912
1937
  prop: (
1913
1938
  Var(
1914
1939
  "",
1915
- _var_type=annotation,
1916
- )
1940
+ _var_type=unwrap_var_annotation(annotation),
1941
+ ).guess_type()
1917
1942
  if not types.safe_issubclass(annotation, EventHandler)
1918
1943
  else EventSpec(handler=EventHandler(fn=lambda: []))
1919
1944
  )
@@ -2494,7 +2519,7 @@ def render_dict_to_var(tag: dict | Component | str, imported_names: set[str]) ->
2494
2519
  return Var.create(tag)
2495
2520
 
2496
2521
  if "iterable" in tag:
2497
- function_return = Var.create(
2522
+ function_return = LiteralArrayVar.create(
2498
2523
  [
2499
2524
  render_dict_to_var(child.render(), imported_names)
2500
2525
  for child in tag["children"]
@@ -2537,7 +2562,7 @@ def render_dict_to_var(tag: dict | Component | str, imported_names: set[str]) ->
2537
2562
  render_dict_to_var(tag["true_value"], imported_names),
2538
2563
  render_dict_to_var(tag["false_value"], imported_names)
2539
2564
  if tag["false_value"] is not None
2540
- else Var.create(None),
2565
+ else LiteralNoneVar.create(),
2541
2566
  )
2542
2567
 
2543
2568
  props = {}
@@ -2553,7 +2578,9 @@ def render_dict_to_var(tag: dict | Component | str, imported_names: set[str]) ->
2553
2578
  value = prop_str[prop + 2 : -1]
2554
2579
  props[key] = value
2555
2580
 
2556
- props = Var.create({Var.create(k): Var(v) for k, v in props.items()})
2581
+ props = LiteralObjectVar.create(
2582
+ {LiteralStringVar.create(k): Var(v) for k, v in props.items()}
2583
+ )
2557
2584
 
2558
2585
  for prop in special_props:
2559
2586
  props = props.merge(prop)
@@ -2564,7 +2591,7 @@ def render_dict_to_var(tag: dict | Component | str, imported_names: set[str]) ->
2564
2591
  tag_name = Var(raw_tag_name or "Fragment")
2565
2592
 
2566
2593
  tag_name = (
2567
- Var.create(raw_tag_name)
2594
+ LiteralStringVar.create(raw_tag_name)
2568
2595
  if raw_tag_name
2569
2596
  and raw_tag_name.split(".")[0] not in imported_names
2570
2597
  and raw_tag_name.lower() == raw_tag_name
@@ -13,6 +13,7 @@ from reflex.components.component import (
13
13
  MemoizationLeaf,
14
14
  StatefulComponent,
15
15
  )
16
+ from reflex.components.core.cond import cond
16
17
  from reflex.components.el.elements.forms import Input
17
18
  from reflex.components.radix.themes.layout.box import Box
18
19
  from reflex.config import environment
@@ -28,6 +29,7 @@ from reflex.event import (
28
29
  parse_args_spec,
29
30
  run_script,
30
31
  )
32
+ from reflex.style import Style
31
33
  from reflex.utils import format
32
34
  from reflex.utils.imports import ImportVar
33
35
  from reflex.vars import VarData
@@ -231,6 +233,9 @@ class Upload(MemoizationLeaf):
231
233
  # Fired when files are dropped.
232
234
  on_drop: EventHandler[_on_drop_spec]
233
235
 
236
+ # Style rules to apply when actively dragging.
237
+ drag_active_style: Style | None = None
238
+
234
239
  @classmethod
235
240
  def create(cls, *children, **props) -> Component:
236
241
  """Create an upload component.
@@ -266,25 +271,46 @@ class Upload(MemoizationLeaf):
266
271
  # If on_drop is not provided, save files to be uploaded later.
267
272
  upload_props["on_drop"] = upload_file(upload_props["id"])
268
273
  else:
269
- on_drop = upload_props["on_drop"]
270
- if isinstance(on_drop, (EventHandler, EventSpec)):
271
- # Call the lambda to get the event chain.
272
- on_drop = call_event_handler(on_drop, _on_drop_spec)
273
- elif isinstance(on_drop, Callable):
274
- # Call the lambda to get the event chain.
275
- on_drop = call_event_fn(on_drop, _on_drop_spec)
276
- if isinstance(on_drop, EventSpec):
277
- # Update the provided args for direct use with on_drop.
278
- on_drop = on_drop.with_args(
279
- args=tuple(
280
- cls._update_arg_tuple_for_on_drop(arg_value)
281
- for arg_value in on_drop.args
282
- ),
283
- )
274
+ on_drop = (
275
+ [on_drop_prop]
276
+ if not isinstance(on_drop_prop := upload_props["on_drop"], Sequence)
277
+ else list(on_drop_prop)
278
+ )
279
+ for ix, event in enumerate(on_drop):
280
+ if isinstance(event, (EventHandler, EventSpec)):
281
+ # Call the lambda to get the event chain.
282
+ event = call_event_handler(event, _on_drop_spec)
283
+ elif isinstance(event, Callable):
284
+ # Call the lambda to get the event chain.
285
+ event = call_event_fn(event, _on_drop_spec)
286
+ if isinstance(event, EventSpec):
287
+ # Update the provided args for direct use with on_drop.
288
+ event = event.with_args(
289
+ args=tuple(
290
+ cls._update_arg_tuple_for_on_drop(arg_value)
291
+ for arg_value in event.args
292
+ ),
293
+ )
294
+ on_drop[ix] = event
284
295
  upload_props["on_drop"] = on_drop
285
296
 
286
297
  input_props_unique_name = get_unique_variable_name()
287
298
  root_props_unique_name = get_unique_variable_name()
299
+ is_drag_active_unique_name = get_unique_variable_name()
300
+ drag_active_css_class_unique_name = get_unique_variable_name() + "-drag-active"
301
+
302
+ # Handle special style when dragging over the drop zone.
303
+ if "drag_active_style" in props:
304
+ props.setdefault("style", Style())[
305
+ f"&:where(.{drag_active_css_class_unique_name})"
306
+ ] = props.pop("drag_active_style")
307
+ props["class_name"].append(
308
+ cond(
309
+ Var(is_drag_active_unique_name),
310
+ drag_active_css_class_unique_name,
311
+ "",
312
+ ),
313
+ )
288
314
 
289
315
  event_var, callback_str = StatefulComponent._get_memoized_event_triggers(
290
316
  GhostUpload.create(on_drop=upload_props["on_drop"])
@@ -303,7 +329,13 @@ class Upload(MemoizationLeaf):
303
329
  }
304
330
  )
305
331
 
306
- left_side = f"const {{getRootProps: {root_props_unique_name}, getInputProps: {input_props_unique_name}}} "
332
+ left_side = (
333
+ "const { "
334
+ f"getRootProps: {root_props_unique_name}, "
335
+ f"getInputProps: {input_props_unique_name}, "
336
+ f"isDragActive: {is_drag_active_unique_name}"
337
+ "}"
338
+ )
307
339
  right_side = f"useDropzone({use_dropzone_arguments!s})"
308
340
 
309
341
  var_data = VarData.merge(
@@ -12,6 +12,7 @@ from reflex.components.component import Component, ComponentNamespace, Memoizati
12
12
  from reflex.components.core.breakpoints import Breakpoints
13
13
  from reflex.constants import Dirs
14
14
  from reflex.event import CallableEventSpec, EventSpec, EventType
15
+ from reflex.style import Style
15
16
  from reflex.utils.imports import ImportVar
16
17
  from reflex.vars import VarData
17
18
  from reflex.vars.base import Var
@@ -157,6 +158,7 @@ class Upload(MemoizationLeaf):
157
158
  no_click: Var[bool] | bool | None = None,
158
159
  no_drag: Var[bool] | bool | None = None,
159
160
  no_keyboard: Var[bool] | bool | None = None,
161
+ drag_active_style: Style | None = None,
160
162
  style: Sequence[Mapping[str, Any]]
161
163
  | Mapping[str, Any]
162
164
  | Var[Mapping[str, Any]]
@@ -199,6 +201,7 @@ class Upload(MemoizationLeaf):
199
201
  no_drag: Whether to disable drag and drop.
200
202
  no_keyboard: Whether to disable using the space/enter keys to upload.
201
203
  on_drop: Fired when files are dropped.
204
+ drag_active_style: Style rules to apply when actively dragging.
202
205
  style: The style of the component.
203
206
  key: A unique key for the component.
204
207
  id: The id for the component.
@@ -227,6 +230,7 @@ class StyledUpload(Upload):
227
230
  no_click: Var[bool] | bool | None = None,
228
231
  no_drag: Var[bool] | bool | None = None,
229
232
  no_keyboard: Var[bool] | bool | None = None,
233
+ drag_active_style: Style | None = None,
230
234
  style: Sequence[Mapping[str, Any]]
231
235
  | Mapping[str, Any]
232
236
  | Var[Mapping[str, Any]]
@@ -269,6 +273,7 @@ class StyledUpload(Upload):
269
273
  no_drag: Whether to disable drag and drop.
270
274
  no_keyboard: Whether to disable using the space/enter keys to upload.
271
275
  on_drop: Fired when files are dropped.
276
+ drag_active_style: Style rules to apply when actively dragging.
272
277
  style: The style of the component.
273
278
  key: A unique key for the component.
274
279
  id: The id for the component.
@@ -297,6 +302,7 @@ class UploadNamespace(ComponentNamespace):
297
302
  no_click: Var[bool] | bool | None = None,
298
303
  no_drag: Var[bool] | bool | None = None,
299
304
  no_keyboard: Var[bool] | bool | None = None,
305
+ drag_active_style: Style | None = None,
300
306
  style: Sequence[Mapping[str, Any]]
301
307
  | Mapping[str, Any]
302
308
  | Var[Mapping[str, Any]]
@@ -339,6 +345,7 @@ class UploadNamespace(ComponentNamespace):
339
345
  no_drag: Whether to disable drag and drop.
340
346
  no_keyboard: Whether to disable using the space/enter keys to upload.
341
347
  on_drop: Fired when files are dropped.
348
+ drag_active_style: Style rules to apply when actively dragging.
342
349
  style: The style of the component.
343
350
  key: A unique key for the component.
344
351
  id: The id for the component.
@@ -27,8 +27,6 @@ class Audio(ReactPlayer):
27
27
  light: Var[bool] | bool | None = None,
28
28
  volume: Var[float] | float | None = None,
29
29
  muted: Var[bool] | bool | None = None,
30
- width: Var[str] | str | None = None,
31
- height: Var[str] | str | None = None,
32
30
  style: Sequence[Mapping[str, Any]]
33
31
  | Mapping[str, Any]
34
32
  | Var[Mapping[str, Any]]
@@ -83,8 +81,6 @@ class Audio(ReactPlayer):
83
81
  light: Set to true to show just the video thumbnail, which loads the full player on click
84
82
  volume: Set the volume of the player, between 0 and 1
85
83
  muted: Mutes the player
86
- width: Set the width of the player: ex:640px
87
- height: Set the height of the player: ex:640px
88
84
  on_ready: Called when media is loaded and ready to play. If playing is set to true, media will play immediately.
89
85
  on_start: Called when media starts playing.
90
86
  on_play: Called when media starts or resumes playing after pausing or buffering.
@@ -2,7 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import TypedDict
5
+ from typing import Any, TypedDict
6
6
 
7
7
  from reflex.components.component import NoSSRComponent
8
8
  from reflex.event import EventHandler, no_args_event_spec, passthrough_event_spec
@@ -50,12 +50,6 @@ class ReactPlayer(NoSSRComponent):
50
50
  # Mutes the player
51
51
  muted: Var[bool]
52
52
 
53
- # Set the width of the player: ex:640px
54
- width: Var[str]
55
-
56
- # Set the height of the player: ex:640px
57
- height: Var[str]
58
-
59
53
  # Called when media is loaded and ready to play. If playing is set to true, media will play immediately.
60
54
  on_ready: EventHandler[no_args_event_spec]
61
55
 
@@ -103,3 +97,23 @@ class ReactPlayer(NoSSRComponent):
103
97
 
104
98
  # Called when picture-in-picture mode is disabled.
105
99
  on_disable_pip: EventHandler[no_args_event_spec]
100
+
101
+ def _render(self, props: dict[str, Any] | None = None):
102
+ """Render the component. Adds width and height set to None because
103
+ react-player will set them to some random value that overrides the
104
+ css width and height.
105
+
106
+ Args:
107
+ props: The props to pass to the component.
108
+
109
+ Returns:
110
+ The rendered component.
111
+ """
112
+ return (
113
+ super()
114
+ ._render(props)
115
+ .add_props(
116
+ width=Var.create(None),
117
+ height=Var.create(None),
118
+ )
119
+ )
@@ -30,8 +30,6 @@ class ReactPlayer(NoSSRComponent):
30
30
  light: Var[bool] | bool | None = None,
31
31
  volume: Var[float] | float | None = None,
32
32
  muted: Var[bool] | bool | None = None,
33
- width: Var[str] | str | None = None,
34
- height: Var[str] | str | None = None,
35
33
  style: Sequence[Mapping[str, Any]]
36
34
  | Mapping[str, Any]
37
35
  | Var[Mapping[str, Any]]
@@ -86,8 +84,6 @@ class ReactPlayer(NoSSRComponent):
86
84
  light: Set to true to show just the video thumbnail, which loads the full player on click
87
85
  volume: Set the volume of the player, between 0 and 1
88
86
  muted: Mutes the player
89
- width: Set the width of the player: ex:640px
90
- height: Set the height of the player: ex:640px
91
87
  on_ready: Called when media is loaded and ready to play. If playing is set to true, media will play immediately.
92
88
  on_start: Called when media starts playing.
93
89
  on_play: Called when media starts or resumes playing after pausing or buffering.
@@ -27,8 +27,6 @@ class Video(ReactPlayer):
27
27
  light: Var[bool] | bool | None = None,
28
28
  volume: Var[float] | float | None = None,
29
29
  muted: Var[bool] | bool | None = None,
30
- width: Var[str] | str | None = None,
31
- height: Var[str] | str | None = None,
32
30
  style: Sequence[Mapping[str, Any]]
33
31
  | Mapping[str, Any]
34
32
  | Var[Mapping[str, Any]]
@@ -83,8 +81,6 @@ class Video(ReactPlayer):
83
81
  light: Set to true to show just the video thumbnail, which loads the full player on click
84
82
  volume: Set the volume of the player, between 0 and 1
85
83
  muted: Mutes the player
86
- width: Set the width of the player: ex:640px
87
- height: Set the height of the player: ex:640px
88
84
  on_ready: Called when media is loaded and ready to play. If playing is set to true, media will play immediately.
89
85
  on_start: Called when media starts playing.
90
86
  on_play: Called when media starts or resumes playing after pausing or buffering.
@@ -55,7 +55,7 @@ def _load_dotenv_from_str(env_files: str) -> None:
55
55
 
56
56
  if load_dotenv is None:
57
57
  console.error(
58
- """The `python-dotenv` package is required to load environment variables from a file. Run `pip install "python-dotenv>=1.0.1"`."""
58
+ """The `python-dotenv` package is required to load environment variables from a file. Run `pip install "python-dotenv>=1.1.0"`."""
59
59
  )
60
60
  return
61
61
 
@@ -68,7 +68,7 @@ def _load_dotenv_from_str(env_files: str) -> None:
68
68
 
69
69
 
70
70
  # Load the env files at import time if they are set in the ENV_FILE environment variable.
71
- if load_dotenv is not None and (env_files := os.getenv("ENV_FILE")):
71
+ if env_files := os.getenv("ENV_FILE"):
72
72
  _load_dotenv_from_str(env_files)
73
73
 
74
74
 
@@ -41,6 +41,7 @@ from .config import (
41
41
  DefaultPorts,
42
42
  Expiration,
43
43
  GitIgnore,
44
+ PyprojectToml,
44
45
  RequirementsTxt,
45
46
  )
46
47
  from .custom_components import CustomComponents
@@ -106,6 +107,7 @@ __all__ = [
106
107
  "Page404",
107
108
  "PageNames",
108
109
  "Ping",
110
+ "PyprojectToml",
109
111
  "Reflex",
110
112
  "RequirementsTxt",
111
113
  "RouteArgType",
@@ -134,7 +134,7 @@ class Templates(SimpleNamespace):
134
134
  DEFAULT_TEMPLATE_URL = "https://blank-template.reflex.run"
135
135
 
136
136
  # The reflex.build frontend host
137
- REFLEX_BUILD_FRONTEND = "https://flexgen.reflex.run"
137
+ REFLEX_BUILD_FRONTEND = "https://reflex.build"
138
138
 
139
139
  # The reflex.build backend host
140
140
  REFLEX_BUILD_BACKEND = "https://flexgen-prod-flexgen.fly.dev"
@@ -49,6 +49,13 @@ class GitIgnore(SimpleNamespace):
49
49
  }
50
50
 
51
51
 
52
+ class PyprojectToml(SimpleNamespace):
53
+ """Pyproject.toml constants."""
54
+
55
+ # The pyproject.toml file.
56
+ FILE = "pyproject.toml"
57
+
58
+
52
59
  class RequirementsTxt(SimpleNamespace):
53
60
  """Requirements.txt constants."""
54
61
 
@@ -14,7 +14,7 @@ class Bun(SimpleNamespace):
14
14
  """Bun constants."""
15
15
 
16
16
  # The Bun version.
17
- VERSION = "1.2.10"
17
+ VERSION = "1.2.11"
18
18
 
19
19
  # Min Bun Version
20
20
  MIN_VERSION = "1.2.8"
@@ -86,6 +86,18 @@ def _determine_nextjs_version() -> str:
86
86
  return default_version
87
87
 
88
88
 
89
+ def _determine_react_version() -> str:
90
+ default_version = "19.1.0"
91
+ if (version := os.getenv("REACT_VERSION")) and version != default_version:
92
+ from reflex.utils import console
93
+
94
+ console.warn(
95
+ f"You have requested react@{version} but the supported version is {default_version}, abandon all hope ye who enter here."
96
+ )
97
+ return version
98
+ return default_version
99
+
100
+
89
101
  class PackageJson(SimpleNamespace):
90
102
  """Constants used to build the package.json file."""
91
103
 
@@ -99,15 +111,17 @@ class PackageJson(SimpleNamespace):
99
111
 
100
112
  PATH = "package.json"
101
113
 
114
+ _react_version = _determine_react_version()
115
+
102
116
  DEPENDENCIES = {
103
117
  "@emotion/react": "11.14.0",
104
- "axios": "1.8.4",
118
+ "axios": "1.9.0",
105
119
  "json5": "2.2.3",
106
120
  "next": _determine_nextjs_version(),
107
121
  "next-sitemap": "4.2.3",
108
122
  "next-themes": "0.4.6",
109
- "react": "19.1.0",
110
- "react-dom": "19.1.0",
123
+ "react": _react_version,
124
+ "react-dom": _react_version,
111
125
  "react-focus-lock": "2.13.6",
112
126
  "socket.io-client": "4.8.1",
113
127
  "universal-cookie": "7.2.2",
@@ -119,5 +133,5 @@ class PackageJson(SimpleNamespace):
119
133
  }
120
134
  OVERRIDES = {
121
135
  # This should always match the `react` version in DEPENDENCIES for recharts compatibility.
122
- "react-is": "19.1.0"
136
+ "react-is": _react_version
123
137
  }
@@ -2066,6 +2066,30 @@ class EventNamespace:
2066
2066
  setattr(func, BACKGROUND_TASK_MARKER, True)
2067
2067
  if getattr(func, "__name__", "").startswith("_"):
2068
2068
  raise ValueError("Event handlers cannot be private.")
2069
+
2070
+ qualname: str | None = getattr(func, "__qualname__", None)
2071
+
2072
+ if qualname and (
2073
+ len(func_path := qualname.split(".")) == 1
2074
+ or func_path[-2] == "<locals>"
2075
+ ):
2076
+ from reflex.state import BaseState
2077
+
2078
+ types = get_type_hints(func)
2079
+ state_arg_name = next(iter(inspect.signature(func).parameters), None)
2080
+ state_cls = state_arg_name and types.get(state_arg_name)
2081
+ if state_cls and issubclass(state_cls, BaseState):
2082
+ name = (
2083
+ (func.__module__ + "." + qualname)
2084
+ .replace(".", "_")
2085
+ .replace("<locals>", "_")
2086
+ .removeprefix("_")
2087
+ )
2088
+ object.__setattr__(func, "__name__", name)
2089
+ object.__setattr__(func, "__qualname__", name)
2090
+ state_cls._add_event_handler(name, func)
2091
+ return getattr(state_cls, name)
2092
+
2069
2093
  return func # pyright: ignore [reportReturnType]
2070
2094
 
2071
2095
  if func is not None: