reflex 0.7.2a2__tar.gz → 0.7.3a1__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 (544) hide show
  1. {reflex-0.7.2a2 → reflex-0.7.3a1}/PKG-INFO +52 -66
  2. {reflex-0.7.2a2 → reflex-0.7.3a1}/README.md +13 -20
  3. reflex-0.7.3a1/benchmarks/__init__.py +3 -0
  4. reflex-0.7.3a1/benchmarks/benchmark_compile_times.py +147 -0
  5. reflex-0.7.3a1/benchmarks/benchmark_imports.py +128 -0
  6. reflex-0.7.3a1/benchmarks/benchmark_lighthouse.py +75 -0
  7. reflex-0.7.3a1/benchmarks/benchmark_package_size.py +135 -0
  8. reflex-0.7.3a1/benchmarks/benchmark_web_size.py +106 -0
  9. reflex-0.7.3a1/benchmarks/conftest.py +20 -0
  10. reflex-0.7.3a1/benchmarks/lighthouse.sh +77 -0
  11. reflex-0.7.3a1/benchmarks/utils.py +74 -0
  12. reflex-0.7.3a1/pyproject.toml +203 -0
  13. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/web/pages/custom_component.js.jinja2 +6 -3
  14. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +1 -1
  15. reflex-0.7.3a1/reflex/.templates/web/components/shiki/code.js +39 -0
  16. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/web/postcss.config.js +1 -1
  17. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/web/utils/client_side_routing.js +18 -16
  18. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/web/utils/helpers/dataeditor.js +1 -1
  19. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/web/utils/helpers/range.js +30 -30
  20. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/web/utils/state.js +44 -22
  21. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/app_mixins/middleware.py +7 -7
  22. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/compiler/compiler.py +7 -0
  23. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/banner.py +1 -1
  24. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/foreach.py +3 -2
  25. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/datadisplay/logo.py +1 -1
  26. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/__init__.pyi +22 -0
  27. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/__init__.py +20 -1
  28. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/__init__.pyi +42 -1
  29. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/media.py +11 -0
  30. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/media.pyi +11 -0
  31. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/lucide/icon.py +8 -6
  32. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/lucide/icon.pyi +0 -1
  33. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/slider.py +2 -1
  34. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/config.py +13 -7
  35. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/custom_components/custom_components.py +23 -25
  36. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/event.py +7 -2
  37. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/istate/data.py +59 -7
  38. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/reflex.py +75 -32
  39. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/state.py +3 -3
  40. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/style.py +3 -3
  41. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/testing.py +4 -10
  42. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/exceptions.py +31 -1
  43. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/exec.py +4 -8
  44. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/export.py +2 -2
  45. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/prerequisites.py +3 -45
  46. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/pyi_generator.py +2 -2
  47. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/redir.py +3 -12
  48. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/vars/base.py +26 -3
  49. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/vars/number.py +22 -21
  50. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/vars/object.py +29 -0
  51. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/vars/sequence.py +37 -0
  52. reflex-0.7.3a1/tests/__init__.py +5 -0
  53. reflex-0.7.3a1/tests/benchmarks/__init__.py +0 -0
  54. reflex-0.7.3a1/tests/benchmarks/conftest.py +3 -0
  55. reflex-0.7.3a1/tests/benchmarks/fixtures.py +383 -0
  56. reflex-0.7.3a1/tests/benchmarks/test_compilation.py +25 -0
  57. reflex-0.7.3a1/tests/benchmarks/test_evaluate.py +11 -0
  58. reflex-0.7.3a1/tests/integration/__init__.py +1 -0
  59. reflex-0.7.3a1/tests/integration/conftest.py +43 -0
  60. reflex-0.7.3a1/tests/integration/init-test/Dockerfile +8 -0
  61. reflex-0.7.3a1/tests/integration/init-test/in_docker_test_script.sh +37 -0
  62. reflex-0.7.3a1/tests/integration/shared/state.py +9 -0
  63. reflex-0.7.3a1/tests/integration/test_background_task.py +381 -0
  64. reflex-0.7.3a1/tests/integration/test_call_script.py +542 -0
  65. reflex-0.7.3a1/tests/integration/test_client_storage.py +760 -0
  66. reflex-0.7.3a1/tests/integration/test_component_state.py +204 -0
  67. reflex-0.7.3a1/tests/integration/test_computed_vars.py +275 -0
  68. reflex-0.7.3a1/tests/integration/test_connection_banner.py +223 -0
  69. reflex-0.7.3a1/tests/integration/test_deploy_url.py +99 -0
  70. reflex-0.7.3a1/tests/integration/test_dynamic_components.py +170 -0
  71. reflex-0.7.3a1/tests/integration/test_dynamic_routes.py +430 -0
  72. reflex-0.7.3a1/tests/integration/test_event_actions.py +385 -0
  73. reflex-0.7.3a1/tests/integration/test_event_chain.py +579 -0
  74. reflex-0.7.3a1/tests/integration/test_exception_handlers.py +204 -0
  75. reflex-0.7.3a1/tests/integration/test_extra_overlay_function.py +87 -0
  76. reflex-0.7.3a1/tests/integration/test_form_submit.py +262 -0
  77. reflex-0.7.3a1/tests/integration/test_input.py +188 -0
  78. reflex-0.7.3a1/tests/integration/test_large_state.py +91 -0
  79. reflex-0.7.3a1/tests/integration/test_lifespan.py +133 -0
  80. reflex-0.7.3a1/tests/integration/test_login_flow.py +147 -0
  81. reflex-0.7.3a1/tests/integration/test_media.py +163 -0
  82. reflex-0.7.3a1/tests/integration/test_memo.py +67 -0
  83. reflex-0.7.3a1/tests/integration/test_navigation.py +93 -0
  84. reflex-0.7.3a1/tests/integration/test_server_side_event.py +184 -0
  85. reflex-0.7.3a1/tests/integration/test_shared_state.py +77 -0
  86. reflex-0.7.3a1/tests/integration/test_state_inheritance.py +452 -0
  87. reflex-0.7.3a1/tests/integration/test_tailwind.py +122 -0
  88. reflex-0.7.3a1/tests/integration/test_upload.py +503 -0
  89. reflex-0.7.3a1/tests/integration/test_urls.py +68 -0
  90. reflex-0.7.3a1/tests/integration/test_var_operations.py +975 -0
  91. reflex-0.7.3a1/tests/integration/tests_playwright/test_appearance.py +218 -0
  92. reflex-0.7.3a1/tests/integration/tests_playwright/test_datetime_operations.py +87 -0
  93. reflex-0.7.3a1/tests/integration/tests_playwright/test_link_hover.py +46 -0
  94. reflex-0.7.3a1/tests/integration/tests_playwright/test_stateless_app.py +59 -0
  95. reflex-0.7.3a1/tests/integration/tests_playwright/test_table.py +103 -0
  96. reflex-0.7.3a1/tests/integration/utils.py +191 -0
  97. reflex-0.7.3a1/tests/test_node_version.py +73 -0
  98. reflex-0.7.3a1/tests/units/__init__.py +5 -0
  99. reflex-0.7.3a1/tests/units/assets/custom_script.js +1 -0
  100. reflex-0.7.3a1/tests/units/assets/test_assets.py +81 -0
  101. reflex-0.7.3a1/tests/units/compiler/__init__.py +1 -0
  102. reflex-0.7.3a1/tests/units/compiler/test_compiler.py +219 -0
  103. reflex-0.7.3a1/tests/units/compiler/test_compiler_utils.py +7 -0
  104. reflex-0.7.3a1/tests/units/components/__init__.py +1 -0
  105. reflex-0.7.3a1/tests/units/components/base/test_bare.py +26 -0
  106. reflex-0.7.3a1/tests/units/components/base/test_link.py +15 -0
  107. reflex-0.7.3a1/tests/units/components/base/test_script.py +75 -0
  108. reflex-0.7.3a1/tests/units/components/core/__init__.py +0 -0
  109. reflex-0.7.3a1/tests/units/components/core/test_banner.py +59 -0
  110. reflex-0.7.3a1/tests/units/components/core/test_colors.py +136 -0
  111. reflex-0.7.3a1/tests/units/components/core/test_cond.py +146 -0
  112. reflex-0.7.3a1/tests/units/components/core/test_debounce.py +185 -0
  113. reflex-0.7.3a1/tests/units/components/core/test_foreach.py +325 -0
  114. reflex-0.7.3a1/tests/units/components/core/test_html.py +41 -0
  115. reflex-0.7.3a1/tests/units/components/core/test_match.py +317 -0
  116. reflex-0.7.3a1/tests/units/components/core/test_responsive.py +38 -0
  117. reflex-0.7.3a1/tests/units/components/core/test_upload.py +130 -0
  118. reflex-0.7.3a1/tests/units/components/datadisplay/__init__.py +1 -0
  119. reflex-0.7.3a1/tests/units/components/datadisplay/conftest.py +89 -0
  120. reflex-0.7.3a1/tests/units/components/datadisplay/test_code.py +13 -0
  121. reflex-0.7.3a1/tests/units/components/datadisplay/test_dataeditor.py +11 -0
  122. reflex-0.7.3a1/tests/units/components/datadisplay/test_datatable.py +124 -0
  123. reflex-0.7.3a1/tests/units/components/datadisplay/test_shiki_code.py +175 -0
  124. reflex-0.7.3a1/tests/units/components/el/test_html.py +6 -0
  125. reflex-0.7.3a1/tests/units/components/el/test_svg.py +74 -0
  126. reflex-0.7.3a1/tests/units/components/forms/__init__.py +0 -0
  127. reflex-0.7.3a1/tests/units/components/forms/test_form.py +20 -0
  128. reflex-0.7.3a1/tests/units/components/graphing/__init__.py +1 -0
  129. reflex-0.7.3a1/tests/units/components/graphing/test_plotly.py +44 -0
  130. reflex-0.7.3a1/tests/units/components/graphing/test_recharts.py +52 -0
  131. reflex-0.7.3a1/tests/units/components/layout/__init__.py +1 -0
  132. reflex-0.7.3a1/tests/units/components/lucide/test_icon.py +36 -0
  133. reflex-0.7.3a1/tests/units/components/markdown/__init__.py +0 -0
  134. reflex-0.7.3a1/tests/units/components/markdown/test_markdown.py +191 -0
  135. reflex-0.7.3a1/tests/units/components/media/__init__.py +1 -0
  136. reflex-0.7.3a1/tests/units/components/media/test_image.py +65 -0
  137. reflex-0.7.3a1/tests/units/components/radix/test_icon_button.py +30 -0
  138. reflex-0.7.3a1/tests/units/components/radix/test_layout.py +6 -0
  139. reflex-0.7.3a1/tests/units/components/recharts/test_cartesian.py +50 -0
  140. reflex-0.7.3a1/tests/units/components/recharts/test_polar.py +38 -0
  141. reflex-0.7.3a1/tests/units/components/test_component.py +2317 -0
  142. reflex-0.7.3a1/tests/units/components/test_component_future_annotations.py +37 -0
  143. reflex-0.7.3a1/tests/units/components/test_component_state.py +63 -0
  144. reflex-0.7.3a1/tests/units/components/test_props.py +59 -0
  145. reflex-0.7.3a1/tests/units/components/test_tag.py +135 -0
  146. reflex-0.7.3a1/tests/units/components/typography/__init__.py +0 -0
  147. reflex-0.7.3a1/tests/units/components/typography/test_markdown.py +49 -0
  148. reflex-0.7.3a1/tests/units/conftest.py +238 -0
  149. reflex-0.7.3a1/tests/units/middleware/__init__.py +0 -0
  150. reflex-0.7.3a1/tests/units/middleware/conftest.py +25 -0
  151. reflex-0.7.3a1/tests/units/middleware/test_hydrate_middleware.py +50 -0
  152. reflex-0.7.3a1/tests/units/states/__init__.py +34 -0
  153. reflex-0.7.3a1/tests/units/states/mutation.py +219 -0
  154. reflex-0.7.3a1/tests/units/states/upload.py +174 -0
  155. reflex-0.7.3a1/tests/units/test_app.py +1774 -0
  156. reflex-0.7.3a1/tests/units/test_attribute_access_type.py +416 -0
  157. reflex-0.7.3a1/tests/units/test_base.py +100 -0
  158. reflex-0.7.3a1/tests/units/test_config.py +291 -0
  159. reflex-0.7.3a1/tests/units/test_db_config.py +204 -0
  160. reflex-0.7.3a1/tests/units/test_event.py +481 -0
  161. reflex-0.7.3a1/tests/units/test_health_endpoint.py +130 -0
  162. reflex-0.7.3a1/tests/units/test_model.py +193 -0
  163. reflex-0.7.3a1/tests/units/test_page.py +79 -0
  164. reflex-0.7.3a1/tests/units/test_prerequisites.py +387 -0
  165. reflex-0.7.3a1/tests/units/test_route.py +122 -0
  166. reflex-0.7.3a1/tests/units/test_sqlalchemy.py +166 -0
  167. reflex-0.7.3a1/tests/units/test_state.py +3942 -0
  168. reflex-0.7.3a1/tests/units/test_state_tree.py +380 -0
  169. reflex-0.7.3a1/tests/units/test_style.py +554 -0
  170. reflex-0.7.3a1/tests/units/test_telemetry.py +49 -0
  171. reflex-0.7.3a1/tests/units/test_testing.py +40 -0
  172. reflex-0.7.3a1/tests/units/test_var.py +1920 -0
  173. reflex-0.7.3a1/tests/units/utils/__init__.py +0 -0
  174. reflex-0.7.3a1/tests/units/utils/test_format.py +715 -0
  175. reflex-0.7.3a1/tests/units/utils/test_imports.py +117 -0
  176. reflex-0.7.3a1/tests/units/utils/test_serializers.py +240 -0
  177. reflex-0.7.3a1/tests/units/utils/test_types.py +92 -0
  178. reflex-0.7.3a1/tests/units/utils/test_utils.py +698 -0
  179. reflex-0.7.3a1/tests/units/vars/test_base.py +63 -0
  180. reflex-0.7.3a1/tests/units/vars/test_object.py +163 -0
  181. reflex-0.7.2a2/pyproject.toml +0 -137
  182. reflex-0.7.2a2/reflex/.templates/web/components/shiki/code.js +0 -34
  183. {reflex-0.7.2a2 → reflex-0.7.3a1}/LICENSE +0 -0
  184. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/apps/blank/assets/favicon.ico +0 -0
  185. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/apps/blank/code/__init__.py +0 -0
  186. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/apps/blank/code/blank.py +0 -0
  187. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/app/rxconfig.py.jinja2 +0 -0
  188. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/custom_components/README.md.jinja2 +0 -0
  189. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/custom_components/__init__.py.jinja2 +0 -0
  190. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/custom_components/demo_app.py.jinja2 +0 -0
  191. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/custom_components/pyproject.toml.jinja2 +0 -0
  192. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/custom_components/src.py.jinja2 +0 -0
  193. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/web/package.json.jinja2 +0 -0
  194. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/web/pages/_app.js.jinja2 +0 -0
  195. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/web/pages/_document.js.jinja2 +0 -0
  196. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/web/pages/base_page.js.jinja2 +0 -0
  197. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/web/pages/component.js.jinja2 +0 -0
  198. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/web/pages/index.js.jinja2 +0 -0
  199. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/web/pages/macros.js.jinja2 +0 -0
  200. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/web/pages/stateful_component.js.jinja2 +0 -0
  201. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/web/pages/stateful_components.js.jinja2 +0 -0
  202. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/web/pages/utils.js.jinja2 +0 -0
  203. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/web/styles/styles.css.jinja2 +0 -0
  204. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/web/tailwind.config.js.jinja2 +0 -0
  205. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/web/utils/context.js.jinja2 +0 -0
  206. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/web/utils/theme.js.jinja2 +0 -0
  207. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/web/.gitignore +0 -0
  208. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/web/jsconfig.json +0 -0
  209. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/web/next.config.js +0 -0
  210. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/web/styles/tailwind.css +0 -0
  211. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/web/utils/helpers/debounce.js +0 -0
  212. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/web/utils/helpers/paste.js +0 -0
  213. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/web/utils/helpers/throttle.js +0 -0
  214. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/__init__.py +0 -0
  215. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/__init__.pyi +0 -0
  216. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/__main__.py +0 -0
  217. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/admin.py +0 -0
  218. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/app.py +0 -0
  219. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/app_mixins/__init__.py +0 -0
  220. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/app_mixins/lifespan.py +0 -0
  221. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/app_mixins/mixin.py +0 -0
  222. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/app_module_for_backend.py +0 -0
  223. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/assets.py +0 -0
  224. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/base.py +0 -0
  225. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/compiler/__init__.py +0 -0
  226. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/compiler/templates.py +0 -0
  227. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/compiler/utils.py +0 -0
  228. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/__init__.py +0 -0
  229. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/__init__.pyi +0 -0
  230. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/__init__.py +0 -0
  231. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/__init__.pyi +0 -0
  232. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/app_wrap.py +0 -0
  233. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/app_wrap.pyi +0 -0
  234. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/bare.py +0 -0
  235. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/body.py +0 -0
  236. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/body.pyi +0 -0
  237. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/document.py +0 -0
  238. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/document.pyi +0 -0
  239. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/error_boundary.py +0 -0
  240. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/error_boundary.pyi +0 -0
  241. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/fragment.py +0 -0
  242. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/fragment.pyi +0 -0
  243. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/head.py +0 -0
  244. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/head.pyi +0 -0
  245. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/link.py +0 -0
  246. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/link.pyi +0 -0
  247. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/meta.py +0 -0
  248. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/meta.pyi +0 -0
  249. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/script.py +0 -0
  250. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/script.pyi +0 -0
  251. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/strict_mode.py +0 -0
  252. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/strict_mode.pyi +0 -0
  253. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/component.py +0 -0
  254. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/__init__.py +0 -0
  255. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/__init__.pyi +0 -0
  256. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/auto_scroll.py +0 -0
  257. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/auto_scroll.pyi +0 -0
  258. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/banner.pyi +0 -0
  259. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/breakpoints.py +0 -0
  260. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/client_side_routing.py +0 -0
  261. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/client_side_routing.pyi +0 -0
  262. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/clipboard.py +0 -0
  263. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/clipboard.pyi +0 -0
  264. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/colors.py +0 -0
  265. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/cond.py +0 -0
  266. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/debounce.py +0 -0
  267. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/debounce.pyi +0 -0
  268. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/html.py +0 -0
  269. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/html.pyi +0 -0
  270. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/layout/__init__.py +0 -0
  271. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/match.py +0 -0
  272. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/responsive.py +0 -0
  273. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/sticky.py +0 -0
  274. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/sticky.pyi +0 -0
  275. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/upload.py +0 -0
  276. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/upload.pyi +0 -0
  277. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/datadisplay/__init__.py +0 -0
  278. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/datadisplay/__init__.pyi +0 -0
  279. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/datadisplay/code.py +0 -0
  280. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/datadisplay/code.pyi +0 -0
  281. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/datadisplay/dataeditor.py +0 -0
  282. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/datadisplay/dataeditor.pyi +0 -0
  283. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/datadisplay/shiki_code_block.py +0 -0
  284. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/datadisplay/shiki_code_block.pyi +0 -0
  285. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/dynamic.py +0 -0
  286. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/__init__.py +0 -0
  287. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/constants/__init__.py +0 -0
  288. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/constants/html.py +0 -0
  289. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/constants/react.py +0 -0
  290. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/constants/reflex.py +0 -0
  291. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/element.py +0 -0
  292. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/element.pyi +0 -0
  293. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/base.py +0 -0
  294. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/base.pyi +0 -0
  295. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/forms.py +0 -0
  296. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/forms.pyi +0 -0
  297. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/inline.py +0 -0
  298. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/inline.pyi +0 -0
  299. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/metadata.py +0 -0
  300. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/metadata.pyi +0 -0
  301. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/other.py +0 -0
  302. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/other.pyi +0 -0
  303. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/scripts.py +0 -0
  304. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/scripts.pyi +0 -0
  305. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/sectioning.py +0 -0
  306. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/sectioning.pyi +0 -0
  307. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/tables.py +0 -0
  308. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/tables.pyi +0 -0
  309. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/typography.py +0 -0
  310. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/typography.pyi +0 -0
  311. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/gridjs/__init__.py +0 -0
  312. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/gridjs/datatable.py +0 -0
  313. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/gridjs/datatable.pyi +0 -0
  314. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/literals.py +0 -0
  315. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/lucide/__init__.py +0 -0
  316. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/markdown/__init__.py +0 -0
  317. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/markdown/markdown.py +0 -0
  318. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/markdown/markdown.pyi +0 -0
  319. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/moment/__init__.py +0 -0
  320. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/moment/moment.py +0 -0
  321. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/moment/moment.pyi +0 -0
  322. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/next/__init__.py +0 -0
  323. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/next/base.py +0 -0
  324. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/next/base.pyi +0 -0
  325. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/next/image.py +0 -0
  326. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/next/image.pyi +0 -0
  327. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/next/link.py +0 -0
  328. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/next/link.pyi +0 -0
  329. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/next/video.py +0 -0
  330. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/next/video.pyi +0 -0
  331. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/plotly/__init__.py +0 -0
  332. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/plotly/plotly.py +0 -0
  333. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/plotly/plotly.pyi +0 -0
  334. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/props.py +0 -0
  335. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/__init__.py +0 -0
  336. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/__init__.pyi +0 -0
  337. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/primitives/__init__.py +0 -0
  338. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/primitives/__init__.pyi +0 -0
  339. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/primitives/accordion.py +0 -0
  340. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/primitives/accordion.pyi +0 -0
  341. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/primitives/base.py +0 -0
  342. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/primitives/base.pyi +0 -0
  343. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/primitives/drawer.py +0 -0
  344. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/primitives/drawer.pyi +0 -0
  345. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/primitives/form.py +0 -0
  346. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/primitives/form.pyi +0 -0
  347. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/primitives/progress.py +0 -0
  348. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/primitives/progress.pyi +0 -0
  349. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/primitives/slider.py +0 -0
  350. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/primitives/slider.pyi +0 -0
  351. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/__init__.py +0 -0
  352. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/__init__.pyi +0 -0
  353. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/base.py +0 -0
  354. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/base.pyi +0 -0
  355. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/color_mode.py +0 -0
  356. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/color_mode.pyi +0 -0
  357. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/__init__.py +0 -0
  358. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/__init__.pyi +0 -0
  359. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/alert_dialog.py +0 -0
  360. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/alert_dialog.pyi +0 -0
  361. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/aspect_ratio.py +0 -0
  362. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/aspect_ratio.pyi +0 -0
  363. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/avatar.py +0 -0
  364. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/avatar.pyi +0 -0
  365. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/badge.py +0 -0
  366. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/badge.pyi +0 -0
  367. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/button.py +0 -0
  368. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/button.pyi +0 -0
  369. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/callout.py +0 -0
  370. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/callout.pyi +0 -0
  371. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/card.py +0 -0
  372. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/card.pyi +0 -0
  373. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/checkbox.py +0 -0
  374. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/checkbox.pyi +0 -0
  375. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/checkbox_cards.py +0 -0
  376. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/checkbox_cards.pyi +0 -0
  377. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/checkbox_group.py +0 -0
  378. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/checkbox_group.pyi +0 -0
  379. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/context_menu.py +0 -0
  380. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/context_menu.pyi +0 -0
  381. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/data_list.py +0 -0
  382. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/data_list.pyi +0 -0
  383. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/dialog.py +0 -0
  384. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/dialog.pyi +0 -0
  385. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/dropdown_menu.py +0 -0
  386. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/dropdown_menu.pyi +0 -0
  387. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/hover_card.py +0 -0
  388. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/hover_card.pyi +0 -0
  389. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/icon_button.py +0 -0
  390. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/icon_button.pyi +0 -0
  391. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/inset.py +0 -0
  392. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/inset.pyi +0 -0
  393. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/popover.py +0 -0
  394. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/popover.pyi +0 -0
  395. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/progress.py +0 -0
  396. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/progress.pyi +0 -0
  397. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/radio.py +0 -0
  398. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/radio.pyi +0 -0
  399. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/radio_cards.py +0 -0
  400. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/radio_cards.pyi +0 -0
  401. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/radio_group.py +0 -0
  402. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/radio_group.pyi +0 -0
  403. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/scroll_area.py +0 -0
  404. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/scroll_area.pyi +0 -0
  405. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/segmented_control.py +0 -0
  406. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/segmented_control.pyi +0 -0
  407. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/select.py +0 -0
  408. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/select.pyi +0 -0
  409. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/separator.py +0 -0
  410. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/separator.pyi +0 -0
  411. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/skeleton.py +0 -0
  412. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/skeleton.pyi +0 -0
  413. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/slider.pyi +0 -0
  414. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/spinner.py +0 -0
  415. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/spinner.pyi +0 -0
  416. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/switch.py +0 -0
  417. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/switch.pyi +0 -0
  418. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/table.py +0 -0
  419. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/table.pyi +0 -0
  420. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/tabs.py +0 -0
  421. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/tabs.pyi +0 -0
  422. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/text_area.py +0 -0
  423. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/text_area.pyi +0 -0
  424. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/text_field.py +0 -0
  425. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/text_field.pyi +0 -0
  426. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/tooltip.py +0 -0
  427. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/tooltip.pyi +0 -0
  428. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/__init__.py +0 -0
  429. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/__init__.pyi +0 -0
  430. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/base.py +0 -0
  431. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/base.pyi +0 -0
  432. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/box.py +0 -0
  433. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/box.pyi +0 -0
  434. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/center.py +0 -0
  435. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/center.pyi +0 -0
  436. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/container.py +0 -0
  437. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/container.pyi +0 -0
  438. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/flex.py +0 -0
  439. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/flex.pyi +0 -0
  440. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/grid.py +0 -0
  441. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/grid.pyi +0 -0
  442. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/list.py +0 -0
  443. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/list.pyi +0 -0
  444. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/section.py +0 -0
  445. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/section.pyi +0 -0
  446. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/spacer.py +0 -0
  447. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/spacer.pyi +0 -0
  448. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/stack.py +0 -0
  449. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/stack.pyi +0 -0
  450. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/typography/__init__.py +0 -0
  451. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/typography/__init__.pyi +0 -0
  452. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/typography/base.py +0 -0
  453. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/typography/blockquote.py +0 -0
  454. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/typography/blockquote.pyi +0 -0
  455. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/typography/code.py +0 -0
  456. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/typography/code.pyi +0 -0
  457. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/typography/heading.py +0 -0
  458. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/typography/heading.pyi +0 -0
  459. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/typography/link.py +0 -0
  460. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/typography/link.pyi +0 -0
  461. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/typography/text.py +0 -0
  462. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/typography/text.pyi +0 -0
  463. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/react_player/__init__.py +0 -0
  464. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/react_player/audio.py +0 -0
  465. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/react_player/audio.pyi +0 -0
  466. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/react_player/react_player.py +0 -0
  467. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/react_player/react_player.pyi +0 -0
  468. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/react_player/video.py +0 -0
  469. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/react_player/video.pyi +0 -0
  470. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/recharts/__init__.py +0 -0
  471. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/recharts/__init__.pyi +0 -0
  472. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/recharts/cartesian.py +0 -0
  473. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/recharts/cartesian.pyi +0 -0
  474. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/recharts/charts.py +0 -0
  475. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/recharts/charts.pyi +0 -0
  476. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/recharts/general.py +0 -0
  477. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/recharts/general.pyi +0 -0
  478. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/recharts/polar.py +0 -0
  479. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/recharts/polar.pyi +0 -0
  480. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/recharts/recharts.py +0 -0
  481. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/recharts/recharts.pyi +0 -0
  482. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/sonner/__init__.py +0 -0
  483. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/sonner/toast.py +0 -0
  484. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/sonner/toast.pyi +0 -0
  485. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/suneditor/__init__.py +0 -0
  486. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/suneditor/editor.py +0 -0
  487. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/suneditor/editor.pyi +0 -0
  488. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/tags/__init__.py +0 -0
  489. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/tags/cond_tag.py +0 -0
  490. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/tags/iter_tag.py +0 -0
  491. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/tags/match_tag.py +0 -0
  492. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/tags/tag.py +0 -0
  493. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/tags/tagless.py +0 -0
  494. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/constants/__init__.py +0 -0
  495. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/constants/base.py +0 -0
  496. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/constants/colors.py +0 -0
  497. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/constants/compiler.py +0 -0
  498. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/constants/config.py +0 -0
  499. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/constants/custom_components.py +0 -0
  500. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/constants/event.py +0 -0
  501. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/constants/installer.py +0 -0
  502. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/constants/route.py +0 -0
  503. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/constants/state.py +0 -0
  504. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/constants/style.py +0 -0
  505. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/constants/utils.py +0 -0
  506. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/custom_components/__init__.py +0 -0
  507. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/experimental/__init__.py +0 -0
  508. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/experimental/client_state.py +0 -0
  509. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/experimental/hooks.py +0 -0
  510. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/experimental/layout.py +0 -0
  511. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/experimental/layout.pyi +0 -0
  512. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/experimental/misc.py +0 -0
  513. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/istate/__init__.py +0 -0
  514. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/istate/dynamic.py +0 -0
  515. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/istate/proxy.py +0 -0
  516. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/istate/storage.py +0 -0
  517. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/istate/wrappers.py +0 -0
  518. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/middleware/__init__.py +0 -0
  519. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/middleware/hydrate_middleware.py +0 -0
  520. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/middleware/middleware.py +0 -0
  521. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/model.py +0 -0
  522. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/page.py +0 -0
  523. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/py.typed +0 -0
  524. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/route.py +0 -0
  525. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/__init__.py +0 -0
  526. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/build.py +0 -0
  527. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/codespaces.py +0 -0
  528. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/compat.py +0 -0
  529. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/console.py +0 -0
  530. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/decorator.py +0 -0
  531. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/format.py +0 -0
  532. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/imports.py +0 -0
  533. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/lazy_loader.py +0 -0
  534. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/net.py +0 -0
  535. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/path_ops.py +0 -0
  536. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/processes.py +0 -0
  537. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/registry.py +0 -0
  538. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/serializers.py +0 -0
  539. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/telemetry.py +0 -0
  540. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/types.py +0 -0
  541. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/vars/__init__.py +0 -0
  542. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/vars/datetime.py +0 -0
  543. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/vars/dep_tracking.py +0 -0
  544. {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/vars/function.py +0 -0
@@ -1,54 +1,47 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: reflex
3
- Version: 0.7.2a2
3
+ Version: 0.7.3a1
4
4
  Summary: Web apps in pure Python.
5
- License: Apache-2.0
6
5
  Keywords: web,framework
7
- Author: Nikhil Rao
8
- Author-email: nikhil@reflex.dev
9
- Requires-Python: >=3.10,<4.0
10
- Classifier: Development Status :: 4 - Beta
11
- Classifier: License :: OSI Approved :: Apache Software License
12
- Classifier: Programming Language :: Python :: 3
13
- Classifier: Programming Language :: Python :: 3.10
14
- Classifier: Programming Language :: Python :: 3.11
15
- Classifier: Programming Language :: Python :: 3.12
16
- Classifier: Programming Language :: Python :: 3.13
17
- Requires-Dist: alembic (>=1.11.1,<2.0)
18
- Requires-Dist: build (>=1.0.3,<2.0)
19
- Requires-Dist: charset-normalizer (>=3.3.2,<4.0)
20
- Requires-Dist: distro (>=1.8.0,<2.0) ; sys_platform == "linux"
21
- Requires-Dist: fastapi (>=0.96.0,!=0.111.0,!=0.111.1)
22
- Requires-Dist: gunicorn (>=20.1.0,<24.0)
23
- Requires-Dist: httpx (>=0.25.1,<1.0)
24
- Requires-Dist: jinja2 (>=3.1.2,<4.0)
25
- Requires-Dist: lazy_loader (>=0.4)
26
- Requires-Dist: packaging (>=23.1,<25.0)
27
- Requires-Dist: platformdirs (>=3.10.0,<5.0)
28
- Requires-Dist: psutil (>=5.9.4,<7.0)
29
- Requires-Dist: pydantic (>=1.10.21,<3.0)
30
- Requires-Dist: python-engineio (!=4.6.0)
31
- Requires-Dist: python-multipart (>=0.0.5,<0.1)
32
- Requires-Dist: python-socketio (>=5.7.0,<6.0)
33
- Requires-Dist: redis (>=4.3.5,<6.0)
34
- Requires-Dist: reflex-hosting-cli (>=0.1.29)
35
- Requires-Dist: rich (>=13.0.0,<14.0)
36
- Requires-Dist: setuptools (>=75.0)
37
- Requires-Dist: sqlmodel (>=0.0.14,<0.1)
38
- Requires-Dist: starlette-admin (>=0.11.0,<1.0)
39
- Requires-Dist: tomlkit (>=0.12.4,<1.0)
40
- Requires-Dist: twine (>=4.0.0,<7.0)
41
- Requires-Dist: typer (>=0.15.1,<1.0)
42
- Requires-Dist: typing_extensions (>=4.6.0)
43
- Requires-Dist: uvicorn (>=0.20.0)
44
- Requires-Dist: wheel (>=0.42.0,<1.0)
45
- Requires-Dist: wrapt (>=1.17.0,<2.0)
46
- Project-URL: Documentation, https://reflex.dev/docs/getting-started/introduction
47
- Project-URL: Homepage, https://reflex.dev
48
- Project-URL: Repository, https://github.com/reflex-dev/reflex
6
+ Author: Elijah Ahianyo
7
+ Author-Email: Nikhil Rao <nikhil@reflex.dev>, Alek Petuskey <alek@reflex.dev>, Masen Furer <masen@reflex.dev>, =?utf-8?q?Thomas_Brand=C3=A9ho?= <thomas@reflex.dev>, Khaleel Al-Adhami <khaleel@reflex.dev>
8
+ Maintainer-Email: Masen Furer <masen@reflex.dev>, =?utf-8?q?Thomas_Brand=C3=A9ho?= <thomas@reflex.dev>, Khaleel Al-Adhami <khaleel@reflex.dev>
9
+ License-Expression: Apache-2.0
10
+ Project-URL: homepage, https://reflex.dev
11
+ Project-URL: repository, https://github.com/reflex-dev/reflex
12
+ Project-URL: documentation, https://reflex.dev/docs/getting-started/introduction
13
+ Requires-Python: <4.0,>=3.10
14
+ Requires-Dist: fastapi!=0.111.0,!=0.111.1,>=0.96.0
15
+ Requires-Dist: gunicorn<24.0,>=20.1.0
16
+ Requires-Dist: jinja2<4.0,>=3.1.2
17
+ Requires-Dist: psutil<8.0,>=5.9.4
18
+ Requires-Dist: pydantic<3.0,>=1.10.21
19
+ Requires-Dist: python-multipart<0.1,>=0.0.5
20
+ Requires-Dist: python-socketio<6.0,>=5.7.0
21
+ Requires-Dist: redis<6.0,>=4.3.5
22
+ Requires-Dist: rich<14.0,>=13.0.0
23
+ Requires-Dist: sqlmodel<0.1,>=0.0.14
24
+ Requires-Dist: typer<1.0,>=0.15.1
25
+ Requires-Dist: uvicorn>=0.20.0
26
+ Requires-Dist: starlette-admin<1.0,>=0.11.0
27
+ Requires-Dist: alembic<2.0,>=1.11.1
28
+ Requires-Dist: platformdirs<5.0,>=3.10.0
29
+ Requires-Dist: distro<2.0,>=1.8.0; platform_system == "Linux"
30
+ Requires-Dist: python-engineio!=4.6.0
31
+ Requires-Dist: wrapt<2.0,>=1.17.0
32
+ Requires-Dist: packaging<25.0,>=23.1
33
+ Requires-Dist: reflex-hosting-cli>=0.1.29
34
+ Requires-Dist: charset-normalizer<4.0,>=3.3.2
35
+ Requires-Dist: wheel<1.0,>=0.42.0
36
+ Requires-Dist: build<2.0,>=1.0.3
37
+ Requires-Dist: setuptools>=75.0
38
+ Requires-Dist: httpx<1.0,>=0.25.1
39
+ Requires-Dist: twine<7.0,>=4.0.0
40
+ Requires-Dist: tomlkit<1.0,>=0.12.4
41
+ Requires-Dist: lazy_loader>=0.4
42
+ Requires-Dist: typing_extensions>=4.6.0
49
43
  Description-Content-Type: text/markdown
50
44
 
51
-
52
45
  <div align="center">
53
46
  <img src="https://raw.githubusercontent.com/reflex-dev/reflex/main/docs/images/reflex_dark.svg#gh-light-mode-only" alt="Reflex Logo" width="300px">
54
47
  <img src="https://raw.githubusercontent.com/reflex-dev/reflex/main/docs/images/reflex_light.svg#gh-dark-mode-only" alt="Reflex Logo" width="300px">
@@ -56,10 +49,12 @@ Description-Content-Type: text/markdown
56
49
  <hr>
57
50
 
58
51
  ### **✨ Performant, customizable web apps in pure Python. Deploy in seconds. ✨**
52
+
59
53
  [![PyPI version](https://badge.fury.io/py/reflex.svg)](https://badge.fury.io/py/reflex)
60
54
  ![versions](https://img.shields.io/pypi/pyversions/reflex.svg)
61
55
  [![Documentation](https://img.shields.io/badge/Documentation%20-Introduction%20-%20%23007ec6)](https://reflex.dev/docs/getting-started/introduction)
62
56
  [![Discord](https://img.shields.io/discord/1029853095527727165?color=%237289da&label=Discord)](https://discord.gg/T5WSbC2YtQ)
57
+
63
58
  </div>
64
59
 
65
60
  ---
@@ -73,9 +68,10 @@ Description-Content-Type: text/markdown
73
68
  Reflex is a library to build full-stack web apps in pure Python.
74
69
 
75
70
  Key features:
76
- * **Pure Python** - Write your app's frontend and backend all in Python, no need to learn Javascript.
77
- * **Full Flexibility** - Reflex is easy to get started with, but can also scale to complex apps.
78
- * **Deploy Instantly** - After building, deploy your app with a [single command](https://reflex.dev/docs/hosting/deploy-quick-start/) or host it on your own server.
71
+
72
+ - **Pure Python** - Write your app's frontend and backend all in Python, no need to learn Javascript.
73
+ - **Full Flexibility** - Reflex is easy to get started with, but can also scale to complex apps.
74
+ - **Deploy Instantly** - After building, deploy your app with a [single command](https://reflex.dev/docs/hosting/deploy-quick-start/) or host it on your own server.
79
75
 
80
76
  See our [architecture page](https://reflex.dev/blog/2024-03-21-reflex-architecture/#the-reflex-architecture) to learn how Reflex works under the hood.
81
77
 
@@ -99,7 +95,7 @@ cd my_app_name
99
95
  reflex init
100
96
  ```
101
97
 
102
- This command initializes a template app in your new directory.
98
+ This command initializes a template app in your new directory.
103
99
 
104
100
  You can run this app in development mode:
105
101
 
@@ -111,7 +107,6 @@ You should see your app running at http://localhost:3000.
111
107
 
112
108
  Now you can modify the source code in `my_app_name/my_app_name.py`. Reflex has fast refreshes so you can see your changes instantly when you save your code.
113
109
 
114
-
115
110
  ## 🫧 Example App
116
111
 
117
112
  Let's go over an example: creating an image generation UI around [DALL·E](https://platform.openai.com/docs/guides/images/image-generation?context=node). For simplicity, we just call the [OpenAI API](https://platform.openai.com/docs/api-reference/authentication), but you could replace this with an ML model run locally.
@@ -126,8 +121,6 @@ Let's go over an example: creating an image generation UI around [DALL·E](https
126
121
 
127
122
  Here is the complete code to create this. This is all done in one Python file!
128
123
 
129
-
130
-
131
124
  ```python
132
125
  import reflex as rx
133
126
  import openai
@@ -167,7 +160,7 @@ def index():
167
160
  width="25em",
168
161
  ),
169
162
  rx.button(
170
- "Generate Image",
163
+ "Generate Image",
171
164
  on_click=State.get_image,
172
165
  width="25em",
173
166
  loading=State.processing
@@ -187,17 +180,12 @@ app = rx.App()
187
180
  app.add_page(index, title="Reflex:DALL-E")
188
181
  ```
189
182
 
190
-
191
-
192
-
193
-
194
183
  ## Let's break this down.
195
184
 
196
185
  <div align="center">
197
186
  <img src="docs/images/dalle_colored_code_example.png" alt="Explaining the differences between backend and frontend parts of the DALL-E app." width="900" />
198
187
  </div>
199
188
 
200
-
201
189
  ### **Reflex UI**
202
190
 
203
191
  Let's start with the UI.
@@ -275,11 +263,10 @@ You can create a multi-page app by adding more pages.
275
263
 
276
264
  <div align="center">
277
265
 
278
- 📑 [Docs](https://reflex.dev/docs/getting-started/introduction) &nbsp; | &nbsp; 🗞️ [Blog](https://reflex.dev/blog) &nbsp; | &nbsp; 📱 [Component Library](https://reflex.dev/docs/library) &nbsp; | &nbsp; 🖼️ [Templates](https://reflex.dev/templates/) &nbsp; | &nbsp; 🛸 [Deployment](https://reflex.dev/docs/hosting/deploy-quick-start) &nbsp;
266
+ 📑 [Docs](https://reflex.dev/docs/getting-started/introduction) &nbsp; | &nbsp; 🗞️ [Blog](https://reflex.dev/blog) &nbsp; | &nbsp; 📱 [Component Library](https://reflex.dev/docs/library) &nbsp; | &nbsp; 🖼️ [Templates](https://reflex.dev/templates/) &nbsp; | &nbsp; 🛸 [Deployment](https://reflex.dev/docs/hosting/deploy-quick-start) &nbsp;
279
267
 
280
268
  </div>
281
269
 
282
-
283
270
  ## ✅ Status
284
271
 
285
272
  Reflex launched in December 2022 with the name Pynecone.
@@ -292,14 +279,14 @@ Reflex has new releases and features coming every other week! Make sure to :star
292
279
 
293
280
  We welcome contributions of any size! Below are some good ways to get started in the Reflex community.
294
281
 
295
- - **Join Our Discord**: Our [Discord](https://discord.gg/T5WSbC2YtQ) is the best place to get help on your Reflex project and to discuss how you can contribute.
296
- - **GitHub Discussions**: A great way to talk about features you want added or things that are confusing/need clarification.
297
- - **GitHub Issues**: [Issues](https://github.com/reflex-dev/reflex/issues) are an excellent way to report bugs. Additionally, you can try and solve an existing issue and submit a PR.
282
+ - **Join Our Discord**: Our [Discord](https://discord.gg/T5WSbC2YtQ) is the best place to get help on your Reflex project and to discuss how you can contribute.
283
+ - **GitHub Discussions**: A great way to talk about features you want added or things that are confusing/need clarification.
284
+ - **GitHub Issues**: [Issues](https://github.com/reflex-dev/reflex/issues) are an excellent way to report bugs. Additionally, you can try and solve an existing issue and submit a PR.
298
285
 
299
286
  We are actively looking for contributors, no matter your skill level or experience. To contribute check out [CONTRIBUTING.md](https://github.com/reflex-dev/reflex/blob/main/CONTRIBUTING.md)
300
287
 
301
-
302
288
  ## All Thanks To Our Contributors:
289
+
303
290
  <a href="https://github.com/reflex-dev/reflex/graphs/contributors">
304
291
  <img src="https://contrib.rocks/image?repo=reflex-dev/reflex" />
305
292
  </a>
@@ -307,4 +294,3 @@ We are actively looking for contributors, no matter your skill level or experien
307
294
  ## License
308
295
 
309
296
  Reflex is open-source and licensed under the [Apache License 2.0](LICENSE).
310
-
@@ -1,4 +1,3 @@
1
-
2
1
  <div align="center">
3
2
  <img src="https://raw.githubusercontent.com/reflex-dev/reflex/main/docs/images/reflex_dark.svg#gh-light-mode-only" alt="Reflex Logo" width="300px">
4
3
  <img src="https://raw.githubusercontent.com/reflex-dev/reflex/main/docs/images/reflex_light.svg#gh-dark-mode-only" alt="Reflex Logo" width="300px">
@@ -6,10 +5,12 @@
6
5
  <hr>
7
6
 
8
7
  ### **✨ Performant, customizable web apps in pure Python. Deploy in seconds. ✨**
8
+
9
9
  [![PyPI version](https://badge.fury.io/py/reflex.svg)](https://badge.fury.io/py/reflex)
10
10
  ![versions](https://img.shields.io/pypi/pyversions/reflex.svg)
11
11
  [![Documentation](https://img.shields.io/badge/Documentation%20-Introduction%20-%20%23007ec6)](https://reflex.dev/docs/getting-started/introduction)
12
12
  [![Discord](https://img.shields.io/discord/1029853095527727165?color=%237289da&label=Discord)](https://discord.gg/T5WSbC2YtQ)
13
+
13
14
  </div>
14
15
 
15
16
  ---
@@ -23,9 +24,10 @@
23
24
  Reflex is a library to build full-stack web apps in pure Python.
24
25
 
25
26
  Key features:
26
- * **Pure Python** - Write your app's frontend and backend all in Python, no need to learn Javascript.
27
- * **Full Flexibility** - Reflex is easy to get started with, but can also scale to complex apps.
28
- * **Deploy Instantly** - After building, deploy your app with a [single command](https://reflex.dev/docs/hosting/deploy-quick-start/) or host it on your own server.
27
+
28
+ - **Pure Python** - Write your app's frontend and backend all in Python, no need to learn Javascript.
29
+ - **Full Flexibility** - Reflex is easy to get started with, but can also scale to complex apps.
30
+ - **Deploy Instantly** - After building, deploy your app with a [single command](https://reflex.dev/docs/hosting/deploy-quick-start/) or host it on your own server.
29
31
 
30
32
  See our [architecture page](https://reflex.dev/blog/2024-03-21-reflex-architecture/#the-reflex-architecture) to learn how Reflex works under the hood.
31
33
 
@@ -49,7 +51,7 @@ cd my_app_name
49
51
  reflex init
50
52
  ```
51
53
 
52
- This command initializes a template app in your new directory.
54
+ This command initializes a template app in your new directory.
53
55
 
54
56
  You can run this app in development mode:
55
57
 
@@ -61,7 +63,6 @@ You should see your app running at http://localhost:3000.
61
63
 
62
64
  Now you can modify the source code in `my_app_name/my_app_name.py`. Reflex has fast refreshes so you can see your changes instantly when you save your code.
63
65
 
64
-
65
66
  ## 🫧 Example App
66
67
 
67
68
  Let's go over an example: creating an image generation UI around [DALL·E](https://platform.openai.com/docs/guides/images/image-generation?context=node). For simplicity, we just call the [OpenAI API](https://platform.openai.com/docs/api-reference/authentication), but you could replace this with an ML model run locally.
@@ -76,8 +77,6 @@ Let's go over an example: creating an image generation UI around [DALL·E](https
76
77
 
77
78
  Here is the complete code to create this. This is all done in one Python file!
78
79
 
79
-
80
-
81
80
  ```python
82
81
  import reflex as rx
83
82
  import openai
@@ -117,7 +116,7 @@ def index():
117
116
  width="25em",
118
117
  ),
119
118
  rx.button(
120
- "Generate Image",
119
+ "Generate Image",
121
120
  on_click=State.get_image,
122
121
  width="25em",
123
122
  loading=State.processing
@@ -137,17 +136,12 @@ app = rx.App()
137
136
  app.add_page(index, title="Reflex:DALL-E")
138
137
  ```
139
138
 
140
-
141
-
142
-
143
-
144
139
  ## Let's break this down.
145
140
 
146
141
  <div align="center">
147
142
  <img src="docs/images/dalle_colored_code_example.png" alt="Explaining the differences between backend and frontend parts of the DALL-E app." width="900" />
148
143
  </div>
149
144
 
150
-
151
145
  ### **Reflex UI**
152
146
 
153
147
  Let's start with the UI.
@@ -225,11 +219,10 @@ You can create a multi-page app by adding more pages.
225
219
 
226
220
  <div align="center">
227
221
 
228
- 📑 [Docs](https://reflex.dev/docs/getting-started/introduction) &nbsp; | &nbsp; 🗞️ [Blog](https://reflex.dev/blog) &nbsp; | &nbsp; 📱 [Component Library](https://reflex.dev/docs/library) &nbsp; | &nbsp; 🖼️ [Templates](https://reflex.dev/templates/) &nbsp; | &nbsp; 🛸 [Deployment](https://reflex.dev/docs/hosting/deploy-quick-start) &nbsp;
222
+ 📑 [Docs](https://reflex.dev/docs/getting-started/introduction) &nbsp; | &nbsp; 🗞️ [Blog](https://reflex.dev/blog) &nbsp; | &nbsp; 📱 [Component Library](https://reflex.dev/docs/library) &nbsp; | &nbsp; 🖼️ [Templates](https://reflex.dev/templates/) &nbsp; | &nbsp; 🛸 [Deployment](https://reflex.dev/docs/hosting/deploy-quick-start) &nbsp;
229
223
 
230
224
  </div>
231
225
 
232
-
233
226
  ## ✅ Status
234
227
 
235
228
  Reflex launched in December 2022 with the name Pynecone.
@@ -242,14 +235,14 @@ Reflex has new releases and features coming every other week! Make sure to :star
242
235
 
243
236
  We welcome contributions of any size! Below are some good ways to get started in the Reflex community.
244
237
 
245
- - **Join Our Discord**: Our [Discord](https://discord.gg/T5WSbC2YtQ) is the best place to get help on your Reflex project and to discuss how you can contribute.
246
- - **GitHub Discussions**: A great way to talk about features you want added or things that are confusing/need clarification.
247
- - **GitHub Issues**: [Issues](https://github.com/reflex-dev/reflex/issues) are an excellent way to report bugs. Additionally, you can try and solve an existing issue and submit a PR.
238
+ - **Join Our Discord**: Our [Discord](https://discord.gg/T5WSbC2YtQ) is the best place to get help on your Reflex project and to discuss how you can contribute.
239
+ - **GitHub Discussions**: A great way to talk about features you want added or things that are confusing/need clarification.
240
+ - **GitHub Issues**: [Issues](https://github.com/reflex-dev/reflex/issues) are an excellent way to report bugs. Additionally, you can try and solve an existing issue and submit a PR.
248
241
 
249
242
  We are actively looking for contributors, no matter your skill level or experience. To contribute check out [CONTRIBUTING.md](https://github.com/reflex-dev/reflex/blob/main/CONTRIBUTING.md)
250
243
 
251
-
252
244
  ## All Thanks To Our Contributors:
245
+
253
246
  <a href="https://github.com/reflex-dev/reflex/graphs/contributors">
254
247
  <img src="https://contrib.rocks/image?repo=reflex-dev/reflex" />
255
248
  </a>
@@ -0,0 +1,3 @@
1
+ """Reflex benchmarks."""
2
+
3
+ WINDOWS_SKIP_REASON = "Takes too much time as a result of npm"
@@ -0,0 +1,147 @@
1
+ """Extracts the compile times from the JSON files in the specified directory and inserts them into the database."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import argparse
6
+ import json
7
+ import os
8
+ from pathlib import Path
9
+
10
+ from utils import send_data_to_posthog
11
+
12
+
13
+ def extract_stats_from_json(json_file: str) -> list[dict]:
14
+ """Extracts the stats from the JSON data and returns them as a list of dictionaries.
15
+
16
+ Args:
17
+ json_file: The JSON file to extract the stats data from.
18
+
19
+ Returns:
20
+ list[dict]: The stats for each test.
21
+ """
22
+ with Path(json_file).open() as file:
23
+ json_data = json.load(file)
24
+
25
+ # Load the JSON data if it is a string, otherwise assume it's already a dictionary
26
+ data = json.loads(json_data) if isinstance(json_data, str) else json_data
27
+
28
+ # Initialize an empty list to store the stats for each test
29
+ test_stats = []
30
+
31
+ # Iterate over each test in the 'benchmarks' list
32
+ for test in data.get("benchmarks", []):
33
+ group = test.get("group", None)
34
+ stats = test.get("stats", {})
35
+ full_name = test.get("fullname")
36
+ file_name = (
37
+ full_name.split("/")[-1].split("::")[0].strip(".py") if full_name else None
38
+ )
39
+ test_name = test.get("name", "Unknown Test")
40
+
41
+ test_stats.append(
42
+ {
43
+ "test_name": test_name,
44
+ "group": group,
45
+ "stats": stats,
46
+ "full_name": full_name,
47
+ "file_name": file_name,
48
+ }
49
+ )
50
+ return test_stats
51
+
52
+
53
+ def insert_benchmarking_data(
54
+ os_type_version: str,
55
+ python_version: str,
56
+ performance_data: list[dict],
57
+ commit_sha: str,
58
+ pr_title: str,
59
+ branch_name: str,
60
+ event_type: str,
61
+ pr_id: str,
62
+ ):
63
+ """Insert the benchmarking data into the database.
64
+
65
+ Args:
66
+ os_type_version: The OS type and version to insert.
67
+ python_version: The Python version to insert.
68
+ performance_data: The performance data of reflex web to insert.
69
+ commit_sha: The commit SHA to insert.
70
+ pr_title: The PR title to insert.
71
+ branch_name: The name of the branch.
72
+ event_type: Type of github event(push, pull request, etc).
73
+ pr_id: Id of the PR.
74
+ """
75
+ # Prepare the event data
76
+ properties = {
77
+ "os": os_type_version,
78
+ "python_version": python_version,
79
+ "distinct_id": commit_sha,
80
+ "pr_title": pr_title,
81
+ "branch_name": branch_name,
82
+ "event_type": event_type,
83
+ "performance": performance_data,
84
+ "pr_id": pr_id,
85
+ }
86
+
87
+ send_data_to_posthog("simple_app_benchmark", properties)
88
+
89
+
90
+ def main():
91
+ """Runs the benchmarks and inserts the results."""
92
+ # Get the commit SHA and JSON directory from the command line arguments
93
+ parser = argparse.ArgumentParser(description="Run benchmarks and process results.")
94
+ parser.add_argument(
95
+ "--os", help="The OS type and version to insert into the database."
96
+ )
97
+ parser.add_argument(
98
+ "--python-version", help="The Python version to insert into the database."
99
+ )
100
+ parser.add_argument(
101
+ "--commit-sha", help="The commit SHA to insert into the database."
102
+ )
103
+ parser.add_argument(
104
+ "--benchmark-json",
105
+ help="The JSON file containing the benchmark results.",
106
+ )
107
+ parser.add_argument(
108
+ "--pr-title",
109
+ help="The PR title to insert into the database.",
110
+ )
111
+ parser.add_argument(
112
+ "--branch-name",
113
+ help="The current branch",
114
+ required=True,
115
+ )
116
+ parser.add_argument(
117
+ "--event-type",
118
+ help="The github event type",
119
+ required=True,
120
+ )
121
+ parser.add_argument(
122
+ "--pr-id",
123
+ help="ID of the PR.",
124
+ required=True,
125
+ )
126
+ args = parser.parse_args()
127
+
128
+ # Get the PR title from env or the args. For the PR merge or push event, there is no PR title, leaving it empty.
129
+ pr_title = args.pr_title or os.getenv("PR_TITLE", "")
130
+
131
+ # Get the results of pytest benchmarks
132
+ cleaned_benchmark_results = extract_stats_from_json(args.benchmark_json)
133
+ # Insert the data into the database
134
+ insert_benchmarking_data(
135
+ os_type_version=args.os,
136
+ python_version=args.python_version,
137
+ performance_data=cleaned_benchmark_results,
138
+ commit_sha=args.commit_sha,
139
+ pr_title=pr_title,
140
+ branch_name=args.branch_name,
141
+ event_type=args.event_type,
142
+ pr_id=args.pr_id,
143
+ )
144
+
145
+
146
+ if __name__ == "__main__":
147
+ main()
@@ -0,0 +1,128 @@
1
+ """Extract and upload benchmarking data to PostHog."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import argparse
6
+ import json
7
+ import os
8
+ from pathlib import Path
9
+
10
+ from utils import send_data_to_posthog
11
+
12
+
13
+ def extract_stats_from_json(json_file: str) -> dict:
14
+ """Extracts the stats from the JSON data and returns them as dictionaries.
15
+
16
+ Args:
17
+ json_file: The JSON file to extract the stats data from.
18
+
19
+ Returns:
20
+ dict: The stats for each test.
21
+ """
22
+ with Path(json_file).open() as file:
23
+ json_data = json.load(file)
24
+
25
+ # Load the JSON data if it is a string, otherwise assume it's already a dictionary
26
+ data = json.loads(json_data) if isinstance(json_data, str) else json_data
27
+
28
+ result = data.get("results", [{}])[0]
29
+ return {
30
+ k: v
31
+ for k, v in result.items()
32
+ if k in ("mean", "stddev", "median", "min", "max")
33
+ }
34
+
35
+
36
+ def insert_benchmarking_data(
37
+ os_type_version: str,
38
+ python_version: str,
39
+ performance_data: dict,
40
+ commit_sha: str,
41
+ pr_title: str,
42
+ branch_name: str,
43
+ pr_id: str,
44
+ app_name: str,
45
+ ):
46
+ """Insert the benchmarking data into the database.
47
+
48
+ Args:
49
+ os_type_version: The OS type and version to insert.
50
+ python_version: The Python version to insert.
51
+ performance_data: The imports performance data to insert.
52
+ commit_sha: The commit SHA to insert.
53
+ pr_title: The PR title to insert.
54
+ branch_name: The name of the branch.
55
+ pr_id: Id of the PR.
56
+ app_name: The name of the app being measured.
57
+ """
58
+ properties = {
59
+ "os": os_type_version,
60
+ "python_version": python_version,
61
+ "distinct_id": commit_sha,
62
+ "pr_title": pr_title,
63
+ "branch_name": branch_name,
64
+ "pr_id": pr_id,
65
+ "performance": performance_data,
66
+ "app_name": app_name,
67
+ }
68
+
69
+ send_data_to_posthog("import_benchmark", properties)
70
+
71
+
72
+ def main():
73
+ """Runs the benchmarks and inserts the results."""
74
+ # Get the commit SHA and JSON directory from the command line arguments
75
+ parser = argparse.ArgumentParser(description="Run benchmarks and process results.")
76
+ parser.add_argument(
77
+ "--os", help="The OS type and version to insert into the database."
78
+ )
79
+ parser.add_argument(
80
+ "--python-version", help="The Python version to insert into the database."
81
+ )
82
+ parser.add_argument(
83
+ "--commit-sha", help="The commit SHA to insert into the database."
84
+ )
85
+ parser.add_argument(
86
+ "--benchmark-json",
87
+ help="The JSON file containing the benchmark results.",
88
+ )
89
+ parser.add_argument(
90
+ "--pr-title",
91
+ help="The PR title to insert into the database.",
92
+ )
93
+ parser.add_argument(
94
+ "--branch-name",
95
+ help="The current branch",
96
+ required=True,
97
+ )
98
+ parser.add_argument(
99
+ "--app-name",
100
+ help="The name of the app measured.",
101
+ required=True,
102
+ )
103
+ parser.add_argument(
104
+ "--pr-id",
105
+ help="ID of the PR.",
106
+ required=True,
107
+ )
108
+ args = parser.parse_args()
109
+
110
+ # Get the PR title from env or the args. For the PR merge or push event, there is no PR title, leaving it empty.
111
+ pr_title = args.pr_title or os.getenv("PR_TITLE", "")
112
+
113
+ cleaned_benchmark_results = extract_stats_from_json(args.benchmark_json)
114
+ # Insert the data into the database
115
+ insert_benchmarking_data(
116
+ os_type_version=args.os,
117
+ python_version=args.python_version,
118
+ performance_data=cleaned_benchmark_results,
119
+ commit_sha=args.commit_sha,
120
+ pr_title=pr_title,
121
+ branch_name=args.branch_name,
122
+ app_name=args.app_name,
123
+ pr_id=args.pr_id,
124
+ )
125
+
126
+
127
+ if __name__ == "__main__":
128
+ main()