reflex 0.6.8__tar.gz → 0.6.8a1__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 (397) hide show
  1. {reflex-0.6.8 → reflex-0.6.8a1}/PKG-INFO +3 -1
  2. {reflex-0.6.8 → reflex-0.6.8a1}/pyproject.toml +6 -1
  3. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/app.py +6 -0
  4. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/config.py +5 -0
  5. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/event.py +2 -7
  6. reflex-0.6.8a1/reflex/proxy.py +119 -0
  7. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/testing.py +16 -5
  8. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/utils/console.py +6 -1
  9. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/vars/base.py +1 -1
  10. {reflex-0.6.8 → reflex-0.6.8a1}/LICENSE +0 -0
  11. {reflex-0.6.8 → reflex-0.6.8a1}/README.md +0 -0
  12. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/apps/blank/assets/favicon.ico +0 -0
  13. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/apps/blank/code/__init__.py +0 -0
  14. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/apps/blank/code/blank.py +0 -0
  15. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/jinja/app/rxconfig.py.jinja2 +0 -0
  16. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/jinja/custom_components/README.md.jinja2 +0 -0
  17. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/jinja/custom_components/__init__.py.jinja2 +0 -0
  18. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/jinja/custom_components/demo_app.py.jinja2 +0 -0
  19. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/jinja/custom_components/pyproject.toml.jinja2 +0 -0
  20. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/jinja/custom_components/src.py.jinja2 +0 -0
  21. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/jinja/web/package.json.jinja2 +0 -0
  22. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/jinja/web/pages/_app.js.jinja2 +0 -0
  23. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/jinja/web/pages/_document.js.jinja2 +0 -0
  24. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/jinja/web/pages/base_page.js.jinja2 +0 -0
  25. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/jinja/web/pages/component.js.jinja2 +0 -0
  26. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/jinja/web/pages/custom_component.js.jinja2 +0 -0
  27. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/jinja/web/pages/index.js.jinja2 +0 -0
  28. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/jinja/web/pages/macros.js.jinja2 +0 -0
  29. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/jinja/web/pages/stateful_component.js.jinja2 +0 -0
  30. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/jinja/web/pages/stateful_components.js.jinja2 +0 -0
  31. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/jinja/web/pages/utils.js.jinja2 +0 -0
  32. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/jinja/web/styles/styles.css.jinja2 +0 -0
  33. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/jinja/web/tailwind.config.js.jinja2 +0 -0
  34. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/jinja/web/utils/context.js.jinja2 +0 -0
  35. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/jinja/web/utils/theme.js.jinja2 +0 -0
  36. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/web/.gitignore +0 -0
  37. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +0 -0
  38. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/web/components/shiki/code.js +0 -0
  39. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/web/jsconfig.json +0 -0
  40. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/web/next.config.js +0 -0
  41. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/web/postcss.config.js +0 -0
  42. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/web/styles/tailwind.css +0 -0
  43. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/web/utils/client_side_routing.js +0 -0
  44. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/web/utils/helpers/dataeditor.js +0 -0
  45. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/web/utils/helpers/debounce.js +0 -0
  46. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/web/utils/helpers/paste.js +0 -0
  47. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/web/utils/helpers/range.js +0 -0
  48. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/web/utils/helpers/throttle.js +0 -0
  49. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/.templates/web/utils/state.js +0 -0
  50. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/__init__.py +0 -0
  51. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/__init__.pyi +0 -0
  52. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/__main__.py +0 -0
  53. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/admin.py +0 -0
  54. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/app_mixins/__init__.py +0 -0
  55. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/app_mixins/lifespan.py +0 -0
  56. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/app_mixins/middleware.py +0 -0
  57. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/app_mixins/mixin.py +0 -0
  58. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/app_module_for_backend.py +0 -0
  59. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/assets.py +0 -0
  60. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/base.py +0 -0
  61. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/compiler/__init__.py +0 -0
  62. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/compiler/compiler.py +0 -0
  63. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/compiler/templates.py +0 -0
  64. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/compiler/utils.py +0 -0
  65. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/__init__.py +0 -0
  66. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/__init__.pyi +0 -0
  67. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/base/__init__.py +0 -0
  68. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/base/__init__.pyi +0 -0
  69. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/base/app_wrap.py +0 -0
  70. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/base/app_wrap.pyi +0 -0
  71. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/base/bare.py +0 -0
  72. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/base/body.py +0 -0
  73. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/base/body.pyi +0 -0
  74. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/base/document.py +0 -0
  75. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/base/document.pyi +0 -0
  76. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/base/error_boundary.py +0 -0
  77. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/base/error_boundary.pyi +0 -0
  78. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/base/fragment.py +0 -0
  79. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/base/fragment.pyi +0 -0
  80. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/base/head.py +0 -0
  81. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/base/head.pyi +0 -0
  82. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/base/link.py +0 -0
  83. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/base/link.pyi +0 -0
  84. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/base/meta.py +0 -0
  85. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/base/meta.pyi +0 -0
  86. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/base/script.py +0 -0
  87. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/base/script.pyi +0 -0
  88. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/component.py +0 -0
  89. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/core/__init__.py +0 -0
  90. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/core/__init__.pyi +0 -0
  91. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/core/banner.py +0 -0
  92. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/core/banner.pyi +0 -0
  93. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/core/breakpoints.py +0 -0
  94. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/core/client_side_routing.py +0 -0
  95. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/core/client_side_routing.pyi +0 -0
  96. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/core/clipboard.py +0 -0
  97. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/core/clipboard.pyi +0 -0
  98. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/core/colors.py +0 -0
  99. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/core/cond.py +0 -0
  100. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/core/debounce.py +0 -0
  101. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/core/debounce.pyi +0 -0
  102. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/core/foreach.py +0 -0
  103. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/core/html.py +0 -0
  104. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/core/html.pyi +0 -0
  105. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/core/layout/__init__.py +0 -0
  106. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/core/match.py +0 -0
  107. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/core/responsive.py +0 -0
  108. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/core/upload.py +0 -0
  109. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/core/upload.pyi +0 -0
  110. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/datadisplay/__init__.py +0 -0
  111. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/datadisplay/__init__.pyi +0 -0
  112. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/datadisplay/code.py +0 -0
  113. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/datadisplay/code.pyi +0 -0
  114. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/datadisplay/dataeditor.py +0 -0
  115. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/datadisplay/dataeditor.pyi +0 -0
  116. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/datadisplay/logo.py +0 -0
  117. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/datadisplay/shiki_code_block.py +0 -0
  118. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/datadisplay/shiki_code_block.pyi +0 -0
  119. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/dynamic.py +0 -0
  120. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/el/__init__.py +0 -0
  121. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/el/__init__.pyi +0 -0
  122. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/el/constants/__init__.py +0 -0
  123. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/el/constants/html.py +0 -0
  124. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/el/constants/react.py +0 -0
  125. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/el/constants/reflex.py +0 -0
  126. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/el/element.py +0 -0
  127. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/el/element.pyi +0 -0
  128. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/el/elements/__init__.py +0 -0
  129. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/el/elements/__init__.pyi +0 -0
  130. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/el/elements/base.py +0 -0
  131. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/el/elements/base.pyi +0 -0
  132. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/el/elements/forms.py +0 -0
  133. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/el/elements/forms.pyi +0 -0
  134. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/el/elements/inline.py +0 -0
  135. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/el/elements/inline.pyi +0 -0
  136. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/el/elements/media.py +0 -0
  137. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/el/elements/media.pyi +0 -0
  138. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/el/elements/metadata.py +0 -0
  139. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/el/elements/metadata.pyi +0 -0
  140. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/el/elements/other.py +0 -0
  141. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/el/elements/other.pyi +0 -0
  142. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/el/elements/scripts.py +0 -0
  143. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/el/elements/scripts.pyi +0 -0
  144. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/el/elements/sectioning.py +0 -0
  145. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/el/elements/sectioning.pyi +0 -0
  146. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/el/elements/tables.py +0 -0
  147. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/el/elements/tables.pyi +0 -0
  148. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/el/elements/typography.py +0 -0
  149. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/el/elements/typography.pyi +0 -0
  150. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/gridjs/__init__.py +0 -0
  151. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/gridjs/datatable.py +0 -0
  152. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/gridjs/datatable.pyi +0 -0
  153. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/literals.py +0 -0
  154. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/lucide/__init__.py +0 -0
  155. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/lucide/icon.py +0 -0
  156. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/lucide/icon.pyi +0 -0
  157. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/markdown/__init__.py +0 -0
  158. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/markdown/markdown.py +0 -0
  159. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/markdown/markdown.pyi +0 -0
  160. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/moment/__init__.py +0 -0
  161. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/moment/moment.py +0 -0
  162. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/moment/moment.pyi +0 -0
  163. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/next/__init__.py +0 -0
  164. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/next/base.py +0 -0
  165. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/next/base.pyi +0 -0
  166. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/next/image.py +0 -0
  167. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/next/image.pyi +0 -0
  168. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/next/link.py +0 -0
  169. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/next/link.pyi +0 -0
  170. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/next/video.py +0 -0
  171. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/next/video.pyi +0 -0
  172. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/plotly/__init__.py +0 -0
  173. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/plotly/plotly.py +0 -0
  174. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/plotly/plotly.pyi +0 -0
  175. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/props.py +0 -0
  176. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/__init__.py +0 -0
  177. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/__init__.pyi +0 -0
  178. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/primitives/__init__.py +0 -0
  179. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/primitives/__init__.pyi +0 -0
  180. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/primitives/accordion.py +0 -0
  181. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/primitives/accordion.pyi +0 -0
  182. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/primitives/base.py +0 -0
  183. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/primitives/base.pyi +0 -0
  184. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/primitives/drawer.py +0 -0
  185. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/primitives/drawer.pyi +0 -0
  186. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/primitives/form.py +0 -0
  187. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/primitives/form.pyi +0 -0
  188. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/primitives/progress.py +0 -0
  189. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/primitives/progress.pyi +0 -0
  190. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/primitives/slider.py +0 -0
  191. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/primitives/slider.pyi +0 -0
  192. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/__init__.py +0 -0
  193. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/__init__.pyi +0 -0
  194. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/base.py +0 -0
  195. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/base.pyi +0 -0
  196. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/color_mode.py +0 -0
  197. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/color_mode.pyi +0 -0
  198. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/__init__.py +0 -0
  199. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/__init__.pyi +0 -0
  200. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/alert_dialog.py +0 -0
  201. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/alert_dialog.pyi +0 -0
  202. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/aspect_ratio.py +0 -0
  203. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/aspect_ratio.pyi +0 -0
  204. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/avatar.py +0 -0
  205. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/avatar.pyi +0 -0
  206. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/badge.py +0 -0
  207. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/badge.pyi +0 -0
  208. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/button.py +0 -0
  209. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/button.pyi +0 -0
  210. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/callout.py +0 -0
  211. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/callout.pyi +0 -0
  212. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/card.py +0 -0
  213. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/card.pyi +0 -0
  214. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/checkbox.py +0 -0
  215. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/checkbox.pyi +0 -0
  216. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/checkbox_cards.py +0 -0
  217. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/checkbox_cards.pyi +0 -0
  218. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/checkbox_group.py +0 -0
  219. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/checkbox_group.pyi +0 -0
  220. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/context_menu.py +0 -0
  221. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/context_menu.pyi +0 -0
  222. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/data_list.py +0 -0
  223. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/data_list.pyi +0 -0
  224. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/dialog.py +0 -0
  225. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/dialog.pyi +0 -0
  226. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/dropdown_menu.py +0 -0
  227. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/dropdown_menu.pyi +0 -0
  228. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/hover_card.py +0 -0
  229. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/hover_card.pyi +0 -0
  230. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/icon_button.py +0 -0
  231. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/icon_button.pyi +0 -0
  232. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/inset.py +0 -0
  233. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/inset.pyi +0 -0
  234. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/popover.py +0 -0
  235. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/popover.pyi +0 -0
  236. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/progress.py +0 -0
  237. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/progress.pyi +0 -0
  238. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/radio.py +0 -0
  239. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/radio.pyi +0 -0
  240. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/radio_cards.py +0 -0
  241. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/radio_cards.pyi +0 -0
  242. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/radio_group.py +0 -0
  243. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/radio_group.pyi +0 -0
  244. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/scroll_area.py +0 -0
  245. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/scroll_area.pyi +0 -0
  246. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/segmented_control.py +0 -0
  247. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/segmented_control.pyi +0 -0
  248. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/select.py +0 -0
  249. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/select.pyi +0 -0
  250. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/separator.py +0 -0
  251. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/separator.pyi +0 -0
  252. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/skeleton.py +0 -0
  253. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/skeleton.pyi +0 -0
  254. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/slider.py +0 -0
  255. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/slider.pyi +0 -0
  256. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/spinner.py +0 -0
  257. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/spinner.pyi +0 -0
  258. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/switch.py +0 -0
  259. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/switch.pyi +0 -0
  260. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/table.py +0 -0
  261. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/table.pyi +0 -0
  262. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/tabs.py +0 -0
  263. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/tabs.pyi +0 -0
  264. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/text_area.py +0 -0
  265. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/text_area.pyi +0 -0
  266. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/text_field.py +0 -0
  267. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/text_field.pyi +0 -0
  268. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/tooltip.py +0 -0
  269. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/components/tooltip.pyi +0 -0
  270. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/layout/__init__.py +0 -0
  271. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/layout/__init__.pyi +0 -0
  272. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/layout/base.py +0 -0
  273. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/layout/base.pyi +0 -0
  274. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/layout/box.py +0 -0
  275. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/layout/box.pyi +0 -0
  276. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/layout/center.py +0 -0
  277. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/layout/center.pyi +0 -0
  278. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/layout/container.py +0 -0
  279. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/layout/container.pyi +0 -0
  280. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/layout/flex.py +0 -0
  281. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/layout/flex.pyi +0 -0
  282. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/layout/grid.py +0 -0
  283. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/layout/grid.pyi +0 -0
  284. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/layout/list.py +0 -0
  285. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/layout/list.pyi +0 -0
  286. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/layout/section.py +0 -0
  287. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/layout/section.pyi +0 -0
  288. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/layout/spacer.py +0 -0
  289. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/layout/spacer.pyi +0 -0
  290. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/layout/stack.py +0 -0
  291. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/layout/stack.pyi +0 -0
  292. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/typography/__init__.py +0 -0
  293. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/typography/__init__.pyi +0 -0
  294. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/typography/base.py +0 -0
  295. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/typography/blockquote.py +0 -0
  296. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/typography/blockquote.pyi +0 -0
  297. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/typography/code.py +0 -0
  298. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/typography/code.pyi +0 -0
  299. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/typography/heading.py +0 -0
  300. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/typography/heading.pyi +0 -0
  301. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/typography/link.py +0 -0
  302. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/typography/link.pyi +0 -0
  303. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/typography/text.py +0 -0
  304. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/radix/themes/typography/text.pyi +0 -0
  305. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/react_player/__init__.py +0 -0
  306. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/react_player/audio.py +0 -0
  307. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/react_player/audio.pyi +0 -0
  308. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/react_player/react_player.py +0 -0
  309. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/react_player/react_player.pyi +0 -0
  310. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/react_player/video.py +0 -0
  311. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/react_player/video.pyi +0 -0
  312. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/recharts/__init__.py +0 -0
  313. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/recharts/__init__.pyi +0 -0
  314. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/recharts/cartesian.py +0 -0
  315. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/recharts/cartesian.pyi +0 -0
  316. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/recharts/charts.py +0 -0
  317. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/recharts/charts.pyi +0 -0
  318. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/recharts/general.py +0 -0
  319. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/recharts/general.pyi +0 -0
  320. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/recharts/polar.py +0 -0
  321. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/recharts/polar.pyi +0 -0
  322. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/recharts/recharts.py +0 -0
  323. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/recharts/recharts.pyi +0 -0
  324. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/sonner/__init__.py +0 -0
  325. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/sonner/toast.py +0 -0
  326. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/sonner/toast.pyi +0 -0
  327. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/suneditor/__init__.py +0 -0
  328. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/suneditor/editor.py +0 -0
  329. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/suneditor/editor.pyi +0 -0
  330. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/tags/__init__.py +0 -0
  331. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/tags/cond_tag.py +0 -0
  332. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/tags/iter_tag.py +0 -0
  333. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/tags/match_tag.py +0 -0
  334. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/tags/tag.py +0 -0
  335. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/components/tags/tagless.py +0 -0
  336. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/constants/__init__.py +0 -0
  337. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/constants/base.py +0 -0
  338. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/constants/colors.py +0 -0
  339. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/constants/compiler.py +0 -0
  340. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/constants/config.py +0 -0
  341. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/constants/custom_components.py +0 -0
  342. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/constants/event.py +0 -0
  343. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/constants/installer.py +0 -0
  344. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/constants/route.py +0 -0
  345. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/constants/state.py +0 -0
  346. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/constants/style.py +0 -0
  347. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/constants/utils.py +0 -0
  348. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/custom_components/__init__.py +0 -0
  349. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/custom_components/custom_components.py +0 -0
  350. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/experimental/__init__.py +0 -0
  351. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/experimental/assets.py +0 -0
  352. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/experimental/client_state.py +0 -0
  353. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/experimental/hooks.py +0 -0
  354. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/experimental/layout.py +0 -0
  355. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/experimental/layout.pyi +0 -0
  356. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/experimental/misc.py +0 -0
  357. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/istate/__init__.py +0 -0
  358. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/istate/data.py +0 -0
  359. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/istate/dynamic.py +0 -0
  360. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/istate/proxy.py +0 -0
  361. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/istate/storage.py +0 -0
  362. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/istate/wrappers.py +0 -0
  363. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/middleware/__init__.py +0 -0
  364. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/middleware/hydrate_middleware.py +0 -0
  365. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/middleware/middleware.py +0 -0
  366. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/model.py +0 -0
  367. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/page.py +0 -0
  368. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/reflex.py +0 -0
  369. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/route.py +0 -0
  370. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/state.py +0 -0
  371. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/style.py +0 -0
  372. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/utils/__init__.py +0 -0
  373. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/utils/build.py +0 -0
  374. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/utils/codespaces.py +0 -0
  375. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/utils/compat.py +0 -0
  376. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/utils/exceptions.py +0 -0
  377. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/utils/exec.py +0 -0
  378. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/utils/export.py +0 -0
  379. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/utils/format.py +0 -0
  380. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/utils/imports.py +0 -0
  381. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/utils/lazy_loader.py +0 -0
  382. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/utils/net.py +0 -0
  383. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/utils/path_ops.py +0 -0
  384. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/utils/prerequisites.py +0 -0
  385. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/utils/processes.py +0 -0
  386. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/utils/pyi_generator.py +0 -0
  387. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/utils/redir.py +0 -0
  388. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/utils/registry.py +0 -0
  389. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/utils/serializers.py +0 -0
  390. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/utils/telemetry.py +0 -0
  391. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/utils/types.py +0 -0
  392. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/vars/__init__.py +0 -0
  393. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/vars/datetime.py +0 -0
  394. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/vars/function.py +0 -0
  395. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/vars/number.py +0 -0
  396. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/vars/object.py +0 -0
  397. {reflex-0.6.8 → reflex-0.6.8a1}/reflex/vars/sequence.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: reflex
3
- Version: 0.6.8
3
+ Version: 0.6.8a1
4
4
  Summary: Web apps in pure Python.
5
5
  Home-page: https://reflex.dev
6
6
  License: Apache-2.0
@@ -15,7 +15,9 @@ Classifier: Programming Language :: Python :: 3.9
15
15
  Classifier: Programming Language :: Python :: 3.10
16
16
  Classifier: Programming Language :: Python :: 3.11
17
17
  Classifier: Programming Language :: Python :: 3.12
18
+ Provides-Extra: proxy
18
19
  Requires-Dist: alembic (>=1.11.1,<2.0)
20
+ Requires-Dist: asgiproxy (==0.1.1) ; extra == "proxy"
19
21
  Requires-Dist: build (>=1.0.3,<2.0)
20
22
  Requires-Dist: charset-normalizer (>=3.3.2,<4.0)
21
23
  Requires-Dist: distro (>=1.8.0,<2.0) ; sys_platform == "linux"
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "reflex"
3
- version = "0.6.8"
3
+ version = "0.6.8a1"
4
4
  description = "Web apps in pure Python."
5
5
  license = "Apache-2.0"
6
6
  authors = [
@@ -49,6 +49,7 @@ setuptools = ">=75.0"
49
49
  httpx = ">=0.25.1,<1.0"
50
50
  twine = ">=4.0.0,<7.0"
51
51
  tomlkit = ">=0.12.4,<1.0"
52
+ asgiproxy = { version = "==0.1.1", optional = true }
52
53
  lazy_loader = ">=0.4"
53
54
  reflex-chakra = ">=0.6.0"
54
55
  typing_extensions = ">=4.6.0"
@@ -72,10 +73,14 @@ selenium = ">=4.11.0,<5.0"
72
73
  pytest-benchmark = ">=4.0.0,<6.0"
73
74
  playwright = ">=1.46.0"
74
75
  pytest-playwright = ">=0.5.1"
76
+ asgiproxy = "==0.1.1"
75
77
 
76
78
  [tool.poetry.scripts]
77
79
  reflex = "reflex.reflex:cli"
78
80
 
81
+ [tool.poetry.extras]
82
+ proxy = ["asgiproxy"]
83
+
79
84
  [build-system]
80
85
  requires = ["poetry-core>=1.5.1"]
81
86
  build-backend = "poetry.core.masonry.api"
@@ -331,6 +331,12 @@ class App(MiddlewareMixin, LifespanMixin):
331
331
 
332
332
  self.register_lifespan_task(windows_hot_reload_lifespan_hack)
333
333
 
334
+ # Enable proxying to frontend server.
335
+ if not environment.REFLEX_BACKEND_ONLY.get():
336
+ from reflex.proxy import proxy_middleware
337
+
338
+ self.register_lifespan_task(proxy_middleware)
339
+
334
340
  def _enable_state(self) -> None:
335
341
  """Enable state for the app."""
336
342
  if not self.state:
@@ -26,6 +26,7 @@ from typing import (
26
26
 
27
27
  from typing_extensions import Annotated, get_type_hints
28
28
 
29
+ from reflex.utils.console import set_log_level
29
30
  from reflex.utils.exceptions import ConfigError, EnvironmentVarValueError
30
31
  from reflex.utils.types import GenericType, is_union, value_inside_optional
31
32
 
@@ -599,6 +600,7 @@ class Config(Base):
599
600
  class Config:
600
601
  """Pydantic config for the config."""
601
602
 
603
+ use_enum_values = False
602
604
  validate_assignment = True
603
605
 
604
606
  # The name of the app (should match the name of the app directory).
@@ -718,6 +720,9 @@ class Config(Base):
718
720
  self._non_default_attributes.update(kwargs)
719
721
  self._replace_defaults(**kwargs)
720
722
 
723
+ # Set the log level for this process
724
+ set_log_level(self.loglevel)
725
+
721
726
  if (
722
727
  self.state_manager_mode == constants.StateManagerMode.REDIS
723
728
  and not self.redis_url
@@ -437,7 +437,6 @@ class EventChain(EventActionsMixin):
437
437
  value: EventType,
438
438
  args_spec: ArgsSpec | Sequence[ArgsSpec],
439
439
  key: Optional[str] = None,
440
- **event_chain_kwargs,
441
440
  ) -> Union[EventChain, Var]:
442
441
  """Create an event chain from a variety of input types.
443
442
 
@@ -445,7 +444,6 @@ class EventChain(EventActionsMixin):
445
444
  value: The value to create the event chain from.
446
445
  args_spec: The args_spec of the event trigger being bound.
447
446
  key: The key of the event trigger being bound.
448
- **event_chain_kwargs: Additional kwargs to pass to the EventChain constructor.
449
447
 
450
448
  Returns:
451
449
  The event chain.
@@ -464,7 +462,6 @@ class EventChain(EventActionsMixin):
464
462
  value=value.guess_type(),
465
463
  args_spec=args_spec,
466
464
  key=key,
467
- **event_chain_kwargs,
468
465
  )
469
466
  else:
470
467
  raise ValueError(
@@ -504,9 +501,7 @@ class EventChain(EventActionsMixin):
504
501
  result = call_event_fn(value, args_spec, key=key)
505
502
  if isinstance(result, Var):
506
503
  # Recursively call this function if the lambda returned an EventChain Var.
507
- return cls.create(
508
- value=result, args_spec=args_spec, key=key, **event_chain_kwargs
509
- )
504
+ return cls.create(value=result, args_spec=args_spec, key=key)
510
505
  events = [*result]
511
506
 
512
507
  # Otherwise, raise an error.
@@ -523,7 +518,7 @@ class EventChain(EventActionsMixin):
523
518
  return cls(
524
519
  events=events,
525
520
  args_spec=args_spec,
526
- **event_chain_kwargs,
521
+ event_actions={},
527
522
  )
528
523
 
529
524
 
@@ -0,0 +1,119 @@
1
+ """Handle proxying frontend requests from the backend server."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import asyncio
6
+ from contextlib import asynccontextmanager
7
+ from typing import Any, AsyncGenerator
8
+ from urllib.parse import urlparse
9
+
10
+ from fastapi import FastAPI
11
+ from starlette.types import ASGIApp, Receive, Scope, Send
12
+
13
+ from .config import get_config
14
+ from .utils import console
15
+
16
+ try:
17
+ import aiohttp
18
+ from asgiproxy.config import BaseURLProxyConfigMixin, ProxyConfig
19
+ from asgiproxy.context import ProxyContext
20
+ from asgiproxy.proxies.http import proxy_http
21
+ from asgiproxy.simple_proxy import make_simple_proxy_app
22
+ except ImportError:
23
+
24
+ @asynccontextmanager
25
+ async def proxy_middleware(*args, **kwargs) -> AsyncGenerator[None, None]:
26
+ """A no-op proxy middleware for when asgiproxy is not installed.
27
+
28
+ Args:
29
+ *args: The positional arguments.
30
+ **kwargs: The keyword arguments.
31
+
32
+ Yields:
33
+ None
34
+ """
35
+ yield
36
+ else:
37
+ MAX_PROXY_RETRY = 25
38
+
39
+ async def proxy_http_with_retry(
40
+ *,
41
+ context: ProxyContext,
42
+ scope: Scope,
43
+ receive: Receive,
44
+ send: Send,
45
+ ) -> Any:
46
+ """Proxy an HTTP request with retries.
47
+
48
+ Args:
49
+ context: The proxy context.
50
+ scope: The request scope.
51
+ receive: The receive channel.
52
+ send: The send channel.
53
+
54
+ Returns:
55
+ The response from `proxy_http`.
56
+ """
57
+ for _attempt in range(MAX_PROXY_RETRY):
58
+ try:
59
+ return await proxy_http(
60
+ context=context,
61
+ scope=scope,
62
+ receive=receive,
63
+ send=send,
64
+ )
65
+ except aiohttp.ClientError as err: # noqa: PERF203
66
+ console.debug(
67
+ f"Retrying request {scope['path']} due to client error {err!r}."
68
+ )
69
+ await asyncio.sleep(0.3)
70
+ except Exception as ex:
71
+ console.debug(
72
+ f"Retrying request {scope['path']} due to unhandled exception {ex!r}."
73
+ )
74
+ await asyncio.sleep(0.3)
75
+
76
+ def _get_proxy_app_with_context(frontend_host: str) -> tuple[ProxyContext, ASGIApp]:
77
+ """Get the proxy app with the given frontend host.
78
+
79
+ Args:
80
+ frontend_host: The frontend host to proxy requests to.
81
+
82
+ Returns:
83
+ The proxy context and app.
84
+ """
85
+
86
+ class LocalProxyConfig(BaseURLProxyConfigMixin, ProxyConfig):
87
+ upstream_base_url = frontend_host
88
+ rewrite_host_header = urlparse(upstream_base_url).netloc
89
+
90
+ proxy_context = ProxyContext(LocalProxyConfig())
91
+ proxy_app = make_simple_proxy_app(
92
+ proxy_context, proxy_http_handler=proxy_http_with_retry
93
+ )
94
+ return proxy_context, proxy_app
95
+
96
+ @asynccontextmanager
97
+ async def proxy_middleware( # pyright: ignore[reportGeneralTypeIssues]
98
+ app: FastAPI,
99
+ ) -> AsyncGenerator[None, None]:
100
+ """A middleware to proxy requests to the separate frontend server.
101
+
102
+ The proxy is installed on the / endpoint of the FastAPI instance.
103
+
104
+ Args:
105
+ app: The FastAPI instance.
106
+
107
+ Yields:
108
+ None
109
+ """
110
+ config = get_config()
111
+ backend_port = config.backend_port
112
+ frontend_host = f"http://localhost:{config.frontend_port}"
113
+ proxy_context, proxy_app = _get_proxy_app_with_context(frontend_host)
114
+ app.mount("/", proxy_app)
115
+ console.debug(
116
+ f"Proxying '/' requests on port {backend_port} to {frontend_host}"
117
+ )
118
+ async with proxy_context:
119
+ yield
@@ -44,6 +44,7 @@ import reflex.utils.format
44
44
  import reflex.utils.prerequisites
45
45
  import reflex.utils.processes
46
46
  from reflex.config import environment
47
+ from reflex.proxy import proxy_middleware
47
48
  from reflex.state import (
48
49
  BaseState,
49
50
  StateManager,
@@ -298,6 +299,9 @@ class AppHarness:
298
299
  self.state_manager = StateManagerRedis.create(self.app_instance.state)
299
300
  else:
300
301
  self.state_manager = self.app_instance._state_manager
302
+ # Disable proxy for app harness tests.
303
+ if proxy_middleware in self.app_instance.lifespan_tasks:
304
+ self.app_instance.lifespan_tasks.remove(proxy_middleware)
301
305
 
302
306
  def _reload_state_module(self):
303
307
  """Reload the rx.State module to avoid conflict when reloading."""
@@ -365,9 +369,12 @@ class AppHarness:
365
369
  def _start_frontend(self):
366
370
  # Set up the frontend.
367
371
  with chdir(self.app_path):
372
+ backend_host, backend_port = self._poll_for_servers().getsockname()
368
373
  config = reflex.config.get_config()
374
+ config.backend_port = backend_port
369
375
  config.api_url = "http://{0}:{1}".format(
370
- *self._poll_for_servers().getsockname(),
376
+ backend_host,
377
+ backend_port,
371
378
  )
372
379
  reflex.utils.build.setup_frontend(self.app_path)
373
380
 
@@ -392,6 +399,7 @@ class AppHarness:
392
399
  self.frontend_url = m.group(1)
393
400
  config = reflex.config.get_config()
394
401
  config.deploy_url = self.frontend_url
402
+ config.frontend_port = int(self.frontend_url.rpartition(":")[2])
395
403
  break
396
404
  if self.frontend_url is None:
397
405
  raise RuntimeError("Frontend did not start")
@@ -915,17 +923,20 @@ class AppHarnessProd(AppHarness):
915
923
  root=web_root,
916
924
  error_page_map=error_page_map,
917
925
  ) as self.frontend_server:
918
- self.frontend_url = "http://localhost:{1}".format(
919
- *self.frontend_server.socket.getsockname()
920
- )
926
+ config = reflex.config.get_config()
927
+ config.frontend_port = self.frontend_server.server_address[1]
928
+ self.frontend_url = f"http://localhost:{config.frontend_port}"
921
929
  self.frontend_server.serve_forever()
922
930
 
923
931
  def _start_frontend(self):
924
932
  # Set up the frontend.
925
933
  with chdir(self.app_path):
934
+ backend_host, backend_port = self._poll_for_servers().getsockname()
926
935
  config = reflex.config.get_config()
936
+ config.backend_port = backend_port
927
937
  config.api_url = "http://{0}:{1}".format(
928
- *self._poll_for_servers().getsockname(),
938
+ backend_host,
939
+ backend_port,
929
940
  )
930
941
  reflex.reflex.export(
931
942
  zipping=False,
@@ -2,6 +2,8 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import os
6
+
5
7
  from rich.console import Console
6
8
  from rich.progress import MofNCompleteColumn, Progress, TimeElapsedColumn
7
9
  from rich.prompt import Prompt
@@ -12,7 +14,7 @@ from reflex.constants import LogLevel
12
14
  _console = Console()
13
15
 
14
16
  # The current log level.
15
- _LOG_LEVEL = LogLevel.INFO
17
+ _LOG_LEVEL = LogLevel.DEFAULT
16
18
 
17
19
  # Deprecated features who's warning has been printed.
18
20
  _EMITTED_DEPRECATION_WARNINGS = set()
@@ -61,6 +63,9 @@ def set_log_level(log_level: LogLevel):
61
63
  raise ValueError(f"Invalid log level: {log_level}") from ae
62
64
 
63
65
  global _LOG_LEVEL
66
+ if log_level != _LOG_LEVEL:
67
+ # Set the loglevel persistently for subprocesses
68
+ os.environ["LOGLEVEL"] = log_level.value
64
69
  _LOG_LEVEL = log_level
65
70
 
66
71
 
@@ -581,7 +581,7 @@ class Var(Generic[VAR_TYPE]):
581
581
 
582
582
  # Try to pull the imports and hooks from contained values.
583
583
  if not isinstance(value, str):
584
- return LiteralVar.create(value, _var_data=_var_data)
584
+ return LiteralVar.create(value)
585
585
 
586
586
  if _var_is_string is False or _var_is_local is True:
587
587
  return cls(
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes