reflex 0.7.2a2__tar.gz → 0.7.2.dev1__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 (542) hide show
  1. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/PKG-INFO +39 -46
  2. reflex-0.7.2.dev1/benchmarks/__init__.py +3 -0
  3. reflex-0.7.2.dev1/benchmarks/benchmark_compile_times.py +147 -0
  4. reflex-0.7.2.dev1/benchmarks/benchmark_imports.py +128 -0
  5. reflex-0.7.2.dev1/benchmarks/benchmark_lighthouse.py +75 -0
  6. reflex-0.7.2.dev1/benchmarks/benchmark_package_size.py +135 -0
  7. reflex-0.7.2.dev1/benchmarks/benchmark_web_size.py +106 -0
  8. reflex-0.7.2.dev1/benchmarks/conftest.py +20 -0
  9. reflex-0.7.2.dev1/benchmarks/lighthouse.sh +77 -0
  10. reflex-0.7.2.dev1/benchmarks/utils.py +74 -0
  11. reflex-0.7.2.dev1/pyproject.toml +198 -0
  12. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/reflex.py +6 -2
  13. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/style.py +3 -3
  14. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/utils/prerequisites.py +3 -45
  15. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/utils/pyi_generator.py +2 -2
  16. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/utils/redir.py +3 -12
  17. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/vars/base.py +3 -2
  18. reflex-0.7.2.dev1/tests/__init__.py +5 -0
  19. reflex-0.7.2.dev1/tests/benchmarks/__init__.py +0 -0
  20. reflex-0.7.2.dev1/tests/benchmarks/conftest.py +3 -0
  21. reflex-0.7.2.dev1/tests/benchmarks/fixtures.py +383 -0
  22. reflex-0.7.2.dev1/tests/benchmarks/test_compilation.py +25 -0
  23. reflex-0.7.2.dev1/tests/benchmarks/test_evaluate.py +11 -0
  24. reflex-0.7.2.dev1/tests/integration/__init__.py +1 -0
  25. reflex-0.7.2.dev1/tests/integration/conftest.py +71 -0
  26. reflex-0.7.2.dev1/tests/integration/init-test/Dockerfile +8 -0
  27. reflex-0.7.2.dev1/tests/integration/init-test/in_docker_test_script.sh +37 -0
  28. reflex-0.7.2.dev1/tests/integration/shared/state.py +9 -0
  29. reflex-0.7.2.dev1/tests/integration/test_background_task.py +381 -0
  30. reflex-0.7.2.dev1/tests/integration/test_call_script.py +542 -0
  31. reflex-0.7.2.dev1/tests/integration/test_client_storage.py +760 -0
  32. reflex-0.7.2.dev1/tests/integration/test_component_state.py +204 -0
  33. reflex-0.7.2.dev1/tests/integration/test_computed_vars.py +275 -0
  34. reflex-0.7.2.dev1/tests/integration/test_connection_banner.py +223 -0
  35. reflex-0.7.2.dev1/tests/integration/test_deploy_url.py +99 -0
  36. reflex-0.7.2.dev1/tests/integration/test_dynamic_components.py +170 -0
  37. reflex-0.7.2.dev1/tests/integration/test_dynamic_routes.py +430 -0
  38. reflex-0.7.2.dev1/tests/integration/test_event_actions.py +385 -0
  39. reflex-0.7.2.dev1/tests/integration/test_event_chain.py +579 -0
  40. reflex-0.7.2.dev1/tests/integration/test_exception_handlers.py +204 -0
  41. reflex-0.7.2.dev1/tests/integration/test_extra_overlay_function.py +87 -0
  42. reflex-0.7.2.dev1/tests/integration/test_form_submit.py +262 -0
  43. reflex-0.7.2.dev1/tests/integration/test_input.py +188 -0
  44. reflex-0.7.2.dev1/tests/integration/test_large_state.py +91 -0
  45. reflex-0.7.2.dev1/tests/integration/test_lifespan.py +133 -0
  46. reflex-0.7.2.dev1/tests/integration/test_login_flow.py +147 -0
  47. reflex-0.7.2.dev1/tests/integration/test_media.py +163 -0
  48. reflex-0.7.2.dev1/tests/integration/test_navigation.py +93 -0
  49. reflex-0.7.2.dev1/tests/integration/test_server_side_event.py +184 -0
  50. reflex-0.7.2.dev1/tests/integration/test_shared_state.py +77 -0
  51. reflex-0.7.2.dev1/tests/integration/test_state_inheritance.py +452 -0
  52. reflex-0.7.2.dev1/tests/integration/test_tailwind.py +122 -0
  53. reflex-0.7.2.dev1/tests/integration/test_upload.py +503 -0
  54. reflex-0.7.2.dev1/tests/integration/test_urls.py +68 -0
  55. reflex-0.7.2.dev1/tests/integration/test_var_operations.py +885 -0
  56. reflex-0.7.2.dev1/tests/integration/tests_playwright/test_appearance.py +218 -0
  57. reflex-0.7.2.dev1/tests/integration/tests_playwright/test_datetime_operations.py +87 -0
  58. reflex-0.7.2.dev1/tests/integration/tests_playwright/test_link_hover.py +46 -0
  59. reflex-0.7.2.dev1/tests/integration/tests_playwright/test_stateless_app.py +59 -0
  60. reflex-0.7.2.dev1/tests/integration/tests_playwright/test_table.py +103 -0
  61. reflex-0.7.2.dev1/tests/integration/utils.py +191 -0
  62. reflex-0.7.2.dev1/tests/test_node_version.py +73 -0
  63. reflex-0.7.2.dev1/tests/units/__init__.py +5 -0
  64. reflex-0.7.2.dev1/tests/units/assets/custom_script.js +1 -0
  65. reflex-0.7.2.dev1/tests/units/assets/test_assets.py +81 -0
  66. reflex-0.7.2.dev1/tests/units/compiler/__init__.py +1 -0
  67. reflex-0.7.2.dev1/tests/units/compiler/test_compiler.py +219 -0
  68. reflex-0.7.2.dev1/tests/units/compiler/test_compiler_utils.py +7 -0
  69. reflex-0.7.2.dev1/tests/units/components/__init__.py +1 -0
  70. reflex-0.7.2.dev1/tests/units/components/base/test_bare.py +26 -0
  71. reflex-0.7.2.dev1/tests/units/components/base/test_link.py +15 -0
  72. reflex-0.7.2.dev1/tests/units/components/base/test_script.py +75 -0
  73. reflex-0.7.2.dev1/tests/units/components/core/__init__.py +0 -0
  74. reflex-0.7.2.dev1/tests/units/components/core/test_banner.py +59 -0
  75. reflex-0.7.2.dev1/tests/units/components/core/test_colors.py +136 -0
  76. reflex-0.7.2.dev1/tests/units/components/core/test_cond.py +146 -0
  77. reflex-0.7.2.dev1/tests/units/components/core/test_debounce.py +185 -0
  78. reflex-0.7.2.dev1/tests/units/components/core/test_foreach.py +325 -0
  79. reflex-0.7.2.dev1/tests/units/components/core/test_html.py +41 -0
  80. reflex-0.7.2.dev1/tests/units/components/core/test_match.py +317 -0
  81. reflex-0.7.2.dev1/tests/units/components/core/test_responsive.py +38 -0
  82. reflex-0.7.2.dev1/tests/units/components/core/test_upload.py +130 -0
  83. reflex-0.7.2.dev1/tests/units/components/datadisplay/__init__.py +1 -0
  84. reflex-0.7.2.dev1/tests/units/components/datadisplay/conftest.py +89 -0
  85. reflex-0.7.2.dev1/tests/units/components/datadisplay/test_code.py +13 -0
  86. reflex-0.7.2.dev1/tests/units/components/datadisplay/test_dataeditor.py +11 -0
  87. reflex-0.7.2.dev1/tests/units/components/datadisplay/test_datatable.py +124 -0
  88. reflex-0.7.2.dev1/tests/units/components/datadisplay/test_shiki_code.py +175 -0
  89. reflex-0.7.2.dev1/tests/units/components/el/test_html.py +6 -0
  90. reflex-0.7.2.dev1/tests/units/components/el/test_svg.py +74 -0
  91. reflex-0.7.2.dev1/tests/units/components/forms/__init__.py +0 -0
  92. reflex-0.7.2.dev1/tests/units/components/forms/test_form.py +20 -0
  93. reflex-0.7.2.dev1/tests/units/components/graphing/__init__.py +1 -0
  94. reflex-0.7.2.dev1/tests/units/components/graphing/test_plotly.py +44 -0
  95. reflex-0.7.2.dev1/tests/units/components/graphing/test_recharts.py +52 -0
  96. reflex-0.7.2.dev1/tests/units/components/layout/__init__.py +1 -0
  97. reflex-0.7.2.dev1/tests/units/components/lucide/test_icon.py +36 -0
  98. reflex-0.7.2.dev1/tests/units/components/markdown/__init__.py +0 -0
  99. reflex-0.7.2.dev1/tests/units/components/markdown/test_markdown.py +191 -0
  100. reflex-0.7.2.dev1/tests/units/components/media/__init__.py +1 -0
  101. reflex-0.7.2.dev1/tests/units/components/media/test_image.py +65 -0
  102. reflex-0.7.2.dev1/tests/units/components/radix/test_icon_button.py +30 -0
  103. reflex-0.7.2.dev1/tests/units/components/radix/test_layout.py +6 -0
  104. reflex-0.7.2.dev1/tests/units/components/recharts/test_cartesian.py +50 -0
  105. reflex-0.7.2.dev1/tests/units/components/recharts/test_polar.py +38 -0
  106. reflex-0.7.2.dev1/tests/units/components/test_component.py +2317 -0
  107. reflex-0.7.2.dev1/tests/units/components/test_component_future_annotations.py +37 -0
  108. reflex-0.7.2.dev1/tests/units/components/test_component_state.py +63 -0
  109. reflex-0.7.2.dev1/tests/units/components/test_props.py +59 -0
  110. reflex-0.7.2.dev1/tests/units/components/test_tag.py +135 -0
  111. reflex-0.7.2.dev1/tests/units/components/typography/__init__.py +0 -0
  112. reflex-0.7.2.dev1/tests/units/components/typography/test_markdown.py +49 -0
  113. reflex-0.7.2.dev1/tests/units/conftest.py +238 -0
  114. reflex-0.7.2.dev1/tests/units/middleware/__init__.py +0 -0
  115. reflex-0.7.2.dev1/tests/units/middleware/conftest.py +25 -0
  116. reflex-0.7.2.dev1/tests/units/middleware/test_hydrate_middleware.py +50 -0
  117. reflex-0.7.2.dev1/tests/units/states/__init__.py +34 -0
  118. reflex-0.7.2.dev1/tests/units/states/mutation.py +219 -0
  119. reflex-0.7.2.dev1/tests/units/states/upload.py +174 -0
  120. reflex-0.7.2.dev1/tests/units/test_app.py +1774 -0
  121. reflex-0.7.2.dev1/tests/units/test_attribute_access_type.py +416 -0
  122. reflex-0.7.2.dev1/tests/units/test_base.py +100 -0
  123. reflex-0.7.2.dev1/tests/units/test_config.py +291 -0
  124. reflex-0.7.2.dev1/tests/units/test_db_config.py +204 -0
  125. reflex-0.7.2.dev1/tests/units/test_event.py +481 -0
  126. reflex-0.7.2.dev1/tests/units/test_health_endpoint.py +130 -0
  127. reflex-0.7.2.dev1/tests/units/test_model.py +193 -0
  128. reflex-0.7.2.dev1/tests/units/test_page.py +79 -0
  129. reflex-0.7.2.dev1/tests/units/test_prerequisites.py +387 -0
  130. reflex-0.7.2.dev1/tests/units/test_route.py +122 -0
  131. reflex-0.7.2.dev1/tests/units/test_sqlalchemy.py +166 -0
  132. reflex-0.7.2.dev1/tests/units/test_state.py +3937 -0
  133. reflex-0.7.2.dev1/tests/units/test_state_tree.py +380 -0
  134. reflex-0.7.2.dev1/tests/units/test_style.py +554 -0
  135. reflex-0.7.2.dev1/tests/units/test_telemetry.py +49 -0
  136. reflex-0.7.2.dev1/tests/units/test_testing.py +40 -0
  137. reflex-0.7.2.dev1/tests/units/test_var.py +1920 -0
  138. reflex-0.7.2.dev1/tests/units/utils/__init__.py +0 -0
  139. reflex-0.7.2.dev1/tests/units/utils/test_format.py +714 -0
  140. reflex-0.7.2.dev1/tests/units/utils/test_imports.py +117 -0
  141. reflex-0.7.2.dev1/tests/units/utils/test_serializers.py +240 -0
  142. reflex-0.7.2.dev1/tests/units/utils/test_types.py +92 -0
  143. reflex-0.7.2.dev1/tests/units/utils/test_utils.py +698 -0
  144. reflex-0.7.2.dev1/tests/units/vars/test_base.py +63 -0
  145. reflex-0.7.2.dev1/tests/units/vars/test_object.py +163 -0
  146. reflex-0.7.2a2/pyproject.toml +0 -137
  147. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/LICENSE +0 -0
  148. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/README.md +0 -0
  149. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/apps/blank/assets/favicon.ico +0 -0
  150. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/apps/blank/code/__init__.py +0 -0
  151. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/apps/blank/code/blank.py +0 -0
  152. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/jinja/app/rxconfig.py.jinja2 +0 -0
  153. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/jinja/custom_components/README.md.jinja2 +0 -0
  154. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/jinja/custom_components/__init__.py.jinja2 +0 -0
  155. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/jinja/custom_components/demo_app.py.jinja2 +0 -0
  156. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/jinja/custom_components/pyproject.toml.jinja2 +0 -0
  157. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/jinja/custom_components/src.py.jinja2 +0 -0
  158. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/jinja/web/package.json.jinja2 +0 -0
  159. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/jinja/web/pages/_app.js.jinja2 +0 -0
  160. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/jinja/web/pages/_document.js.jinja2 +0 -0
  161. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/jinja/web/pages/base_page.js.jinja2 +0 -0
  162. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/jinja/web/pages/component.js.jinja2 +0 -0
  163. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/jinja/web/pages/custom_component.js.jinja2 +0 -0
  164. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/jinja/web/pages/index.js.jinja2 +0 -0
  165. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/jinja/web/pages/macros.js.jinja2 +0 -0
  166. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/jinja/web/pages/stateful_component.js.jinja2 +0 -0
  167. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/jinja/web/pages/stateful_components.js.jinja2 +0 -0
  168. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/jinja/web/pages/utils.js.jinja2 +0 -0
  169. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/jinja/web/styles/styles.css.jinja2 +0 -0
  170. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/jinja/web/tailwind.config.js.jinja2 +0 -0
  171. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/jinja/web/utils/context.js.jinja2 +0 -0
  172. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/jinja/web/utils/theme.js.jinja2 +0 -0
  173. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/web/.gitignore +0 -0
  174. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +0 -0
  175. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/web/components/shiki/code.js +0 -0
  176. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/web/jsconfig.json +0 -0
  177. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/web/next.config.js +0 -0
  178. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/web/postcss.config.js +0 -0
  179. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/web/styles/tailwind.css +0 -0
  180. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/web/utils/client_side_routing.js +0 -0
  181. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/web/utils/helpers/dataeditor.js +0 -0
  182. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/web/utils/helpers/debounce.js +0 -0
  183. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/web/utils/helpers/paste.js +0 -0
  184. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/web/utils/helpers/range.js +0 -0
  185. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/web/utils/helpers/throttle.js +0 -0
  186. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/.templates/web/utils/state.js +0 -0
  187. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/__init__.py +0 -0
  188. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/__init__.pyi +0 -0
  189. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/__main__.py +0 -0
  190. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/admin.py +0 -0
  191. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/app.py +0 -0
  192. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/app_mixins/__init__.py +0 -0
  193. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/app_mixins/lifespan.py +0 -0
  194. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/app_mixins/middleware.py +0 -0
  195. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/app_mixins/mixin.py +0 -0
  196. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/app_module_for_backend.py +0 -0
  197. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/assets.py +0 -0
  198. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/base.py +0 -0
  199. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/compiler/__init__.py +0 -0
  200. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/compiler/compiler.py +0 -0
  201. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/compiler/templates.py +0 -0
  202. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/compiler/utils.py +0 -0
  203. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/__init__.py +0 -0
  204. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/__init__.pyi +0 -0
  205. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/base/__init__.py +0 -0
  206. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/base/__init__.pyi +0 -0
  207. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/base/app_wrap.py +0 -0
  208. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/base/app_wrap.pyi +0 -0
  209. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/base/bare.py +0 -0
  210. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/base/body.py +0 -0
  211. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/base/body.pyi +0 -0
  212. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/base/document.py +0 -0
  213. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/base/document.pyi +0 -0
  214. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/base/error_boundary.py +0 -0
  215. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/base/error_boundary.pyi +0 -0
  216. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/base/fragment.py +0 -0
  217. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/base/fragment.pyi +0 -0
  218. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/base/head.py +0 -0
  219. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/base/head.pyi +0 -0
  220. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/base/link.py +0 -0
  221. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/base/link.pyi +0 -0
  222. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/base/meta.py +0 -0
  223. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/base/meta.pyi +0 -0
  224. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/base/script.py +0 -0
  225. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/base/script.pyi +0 -0
  226. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/base/strict_mode.py +0 -0
  227. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/base/strict_mode.pyi +0 -0
  228. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/component.py +0 -0
  229. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/core/__init__.py +0 -0
  230. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/core/__init__.pyi +0 -0
  231. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/core/auto_scroll.py +0 -0
  232. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/core/auto_scroll.pyi +0 -0
  233. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/core/banner.py +0 -0
  234. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/core/banner.pyi +0 -0
  235. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/core/breakpoints.py +0 -0
  236. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/core/client_side_routing.py +0 -0
  237. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/core/client_side_routing.pyi +0 -0
  238. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/core/clipboard.py +0 -0
  239. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/core/clipboard.pyi +0 -0
  240. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/core/colors.py +0 -0
  241. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/core/cond.py +0 -0
  242. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/core/debounce.py +0 -0
  243. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/core/debounce.pyi +0 -0
  244. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/core/foreach.py +0 -0
  245. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/core/html.py +0 -0
  246. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/core/html.pyi +0 -0
  247. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/core/layout/__init__.py +0 -0
  248. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/core/match.py +0 -0
  249. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/core/responsive.py +0 -0
  250. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/core/sticky.py +0 -0
  251. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/core/sticky.pyi +0 -0
  252. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/core/upload.py +0 -0
  253. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/core/upload.pyi +0 -0
  254. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/datadisplay/__init__.py +0 -0
  255. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/datadisplay/__init__.pyi +0 -0
  256. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/datadisplay/code.py +0 -0
  257. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/datadisplay/code.pyi +0 -0
  258. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/datadisplay/dataeditor.py +0 -0
  259. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/datadisplay/dataeditor.pyi +0 -0
  260. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/datadisplay/logo.py +0 -0
  261. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/datadisplay/shiki_code_block.py +0 -0
  262. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/datadisplay/shiki_code_block.pyi +0 -0
  263. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/dynamic.py +0 -0
  264. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/el/__init__.py +0 -0
  265. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/el/__init__.pyi +0 -0
  266. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/el/constants/__init__.py +0 -0
  267. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/el/constants/html.py +0 -0
  268. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/el/constants/react.py +0 -0
  269. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/el/constants/reflex.py +0 -0
  270. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/el/element.py +0 -0
  271. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/el/element.pyi +0 -0
  272. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/el/elements/__init__.py +0 -0
  273. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/el/elements/__init__.pyi +0 -0
  274. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/el/elements/base.py +0 -0
  275. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/el/elements/base.pyi +0 -0
  276. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/el/elements/forms.py +0 -0
  277. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/el/elements/forms.pyi +0 -0
  278. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/el/elements/inline.py +0 -0
  279. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/el/elements/inline.pyi +0 -0
  280. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/el/elements/media.py +0 -0
  281. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/el/elements/media.pyi +0 -0
  282. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/el/elements/metadata.py +0 -0
  283. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/el/elements/metadata.pyi +0 -0
  284. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/el/elements/other.py +0 -0
  285. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/el/elements/other.pyi +0 -0
  286. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/el/elements/scripts.py +0 -0
  287. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/el/elements/scripts.pyi +0 -0
  288. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/el/elements/sectioning.py +0 -0
  289. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/el/elements/sectioning.pyi +0 -0
  290. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/el/elements/tables.py +0 -0
  291. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/el/elements/tables.pyi +0 -0
  292. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/el/elements/typography.py +0 -0
  293. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/el/elements/typography.pyi +0 -0
  294. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/gridjs/__init__.py +0 -0
  295. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/gridjs/datatable.py +0 -0
  296. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/gridjs/datatable.pyi +0 -0
  297. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/literals.py +0 -0
  298. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/lucide/__init__.py +0 -0
  299. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/lucide/icon.py +0 -0
  300. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/lucide/icon.pyi +0 -0
  301. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/markdown/__init__.py +0 -0
  302. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/markdown/markdown.py +0 -0
  303. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/markdown/markdown.pyi +0 -0
  304. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/moment/__init__.py +0 -0
  305. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/moment/moment.py +0 -0
  306. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/moment/moment.pyi +0 -0
  307. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/next/__init__.py +0 -0
  308. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/next/base.py +0 -0
  309. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/next/base.pyi +0 -0
  310. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/next/image.py +0 -0
  311. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/next/image.pyi +0 -0
  312. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/next/link.py +0 -0
  313. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/next/link.pyi +0 -0
  314. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/next/video.py +0 -0
  315. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/next/video.pyi +0 -0
  316. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/plotly/__init__.py +0 -0
  317. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/plotly/plotly.py +0 -0
  318. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/plotly/plotly.pyi +0 -0
  319. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/props.py +0 -0
  320. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/__init__.py +0 -0
  321. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/__init__.pyi +0 -0
  322. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/primitives/__init__.py +0 -0
  323. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/primitives/__init__.pyi +0 -0
  324. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/primitives/accordion.py +0 -0
  325. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/primitives/accordion.pyi +0 -0
  326. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/primitives/base.py +0 -0
  327. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/primitives/base.pyi +0 -0
  328. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/primitives/drawer.py +0 -0
  329. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/primitives/drawer.pyi +0 -0
  330. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/primitives/form.py +0 -0
  331. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/primitives/form.pyi +0 -0
  332. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/primitives/progress.py +0 -0
  333. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/primitives/progress.pyi +0 -0
  334. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/primitives/slider.py +0 -0
  335. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/primitives/slider.pyi +0 -0
  336. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/__init__.py +0 -0
  337. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/__init__.pyi +0 -0
  338. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/base.py +0 -0
  339. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/base.pyi +0 -0
  340. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/color_mode.py +0 -0
  341. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/color_mode.pyi +0 -0
  342. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/__init__.py +0 -0
  343. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/__init__.pyi +0 -0
  344. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/alert_dialog.py +0 -0
  345. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/alert_dialog.pyi +0 -0
  346. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/aspect_ratio.py +0 -0
  347. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/aspect_ratio.pyi +0 -0
  348. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/avatar.py +0 -0
  349. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/avatar.pyi +0 -0
  350. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/badge.py +0 -0
  351. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/badge.pyi +0 -0
  352. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/button.py +0 -0
  353. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/button.pyi +0 -0
  354. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/callout.py +0 -0
  355. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/callout.pyi +0 -0
  356. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/card.py +0 -0
  357. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/card.pyi +0 -0
  358. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/checkbox.py +0 -0
  359. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/checkbox.pyi +0 -0
  360. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/checkbox_cards.py +0 -0
  361. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/checkbox_cards.pyi +0 -0
  362. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/checkbox_group.py +0 -0
  363. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/checkbox_group.pyi +0 -0
  364. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/context_menu.py +0 -0
  365. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/context_menu.pyi +0 -0
  366. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/data_list.py +0 -0
  367. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/data_list.pyi +0 -0
  368. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/dialog.py +0 -0
  369. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/dialog.pyi +0 -0
  370. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/dropdown_menu.py +0 -0
  371. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/dropdown_menu.pyi +0 -0
  372. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/hover_card.py +0 -0
  373. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/hover_card.pyi +0 -0
  374. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/icon_button.py +0 -0
  375. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/icon_button.pyi +0 -0
  376. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/inset.py +0 -0
  377. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/inset.pyi +0 -0
  378. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/popover.py +0 -0
  379. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/popover.pyi +0 -0
  380. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/progress.py +0 -0
  381. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/progress.pyi +0 -0
  382. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/radio.py +0 -0
  383. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/radio.pyi +0 -0
  384. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/radio_cards.py +0 -0
  385. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/radio_cards.pyi +0 -0
  386. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/radio_group.py +0 -0
  387. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/radio_group.pyi +0 -0
  388. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/scroll_area.py +0 -0
  389. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/scroll_area.pyi +0 -0
  390. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/segmented_control.py +0 -0
  391. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/segmented_control.pyi +0 -0
  392. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/select.py +0 -0
  393. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/select.pyi +0 -0
  394. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/separator.py +0 -0
  395. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/separator.pyi +0 -0
  396. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/skeleton.py +0 -0
  397. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/skeleton.pyi +0 -0
  398. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/slider.py +0 -0
  399. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/slider.pyi +0 -0
  400. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/spinner.py +0 -0
  401. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/spinner.pyi +0 -0
  402. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/switch.py +0 -0
  403. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/switch.pyi +0 -0
  404. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/table.py +0 -0
  405. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/table.pyi +0 -0
  406. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/tabs.py +0 -0
  407. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/tabs.pyi +0 -0
  408. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/text_area.py +0 -0
  409. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/text_area.pyi +0 -0
  410. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/text_field.py +0 -0
  411. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/text_field.pyi +0 -0
  412. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/tooltip.py +0 -0
  413. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/components/tooltip.pyi +0 -0
  414. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/layout/__init__.py +0 -0
  415. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/layout/__init__.pyi +0 -0
  416. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/layout/base.py +0 -0
  417. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/layout/base.pyi +0 -0
  418. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/layout/box.py +0 -0
  419. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/layout/box.pyi +0 -0
  420. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/layout/center.py +0 -0
  421. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/layout/center.pyi +0 -0
  422. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/layout/container.py +0 -0
  423. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/layout/container.pyi +0 -0
  424. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/layout/flex.py +0 -0
  425. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/layout/flex.pyi +0 -0
  426. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/layout/grid.py +0 -0
  427. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/layout/grid.pyi +0 -0
  428. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/layout/list.py +0 -0
  429. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/layout/list.pyi +0 -0
  430. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/layout/section.py +0 -0
  431. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/layout/section.pyi +0 -0
  432. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/layout/spacer.py +0 -0
  433. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/layout/spacer.pyi +0 -0
  434. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/layout/stack.py +0 -0
  435. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/layout/stack.pyi +0 -0
  436. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/typography/__init__.py +0 -0
  437. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/typography/__init__.pyi +0 -0
  438. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/typography/base.py +0 -0
  439. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/typography/blockquote.py +0 -0
  440. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/typography/blockquote.pyi +0 -0
  441. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/typography/code.py +0 -0
  442. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/typography/code.pyi +0 -0
  443. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/typography/heading.py +0 -0
  444. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/typography/heading.pyi +0 -0
  445. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/typography/link.py +0 -0
  446. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/typography/link.pyi +0 -0
  447. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/typography/text.py +0 -0
  448. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/radix/themes/typography/text.pyi +0 -0
  449. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/react_player/__init__.py +0 -0
  450. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/react_player/audio.py +0 -0
  451. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/react_player/audio.pyi +0 -0
  452. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/react_player/react_player.py +0 -0
  453. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/react_player/react_player.pyi +0 -0
  454. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/react_player/video.py +0 -0
  455. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/react_player/video.pyi +0 -0
  456. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/recharts/__init__.py +0 -0
  457. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/recharts/__init__.pyi +0 -0
  458. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/recharts/cartesian.py +0 -0
  459. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/recharts/cartesian.pyi +0 -0
  460. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/recharts/charts.py +0 -0
  461. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/recharts/charts.pyi +0 -0
  462. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/recharts/general.py +0 -0
  463. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/recharts/general.pyi +0 -0
  464. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/recharts/polar.py +0 -0
  465. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/recharts/polar.pyi +0 -0
  466. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/recharts/recharts.py +0 -0
  467. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/recharts/recharts.pyi +0 -0
  468. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/sonner/__init__.py +0 -0
  469. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/sonner/toast.py +0 -0
  470. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/sonner/toast.pyi +0 -0
  471. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/suneditor/__init__.py +0 -0
  472. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/suneditor/editor.py +0 -0
  473. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/suneditor/editor.pyi +0 -0
  474. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/tags/__init__.py +0 -0
  475. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/tags/cond_tag.py +0 -0
  476. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/tags/iter_tag.py +0 -0
  477. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/tags/match_tag.py +0 -0
  478. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/tags/tag.py +0 -0
  479. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/components/tags/tagless.py +0 -0
  480. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/config.py +0 -0
  481. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/constants/__init__.py +0 -0
  482. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/constants/base.py +0 -0
  483. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/constants/colors.py +0 -0
  484. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/constants/compiler.py +0 -0
  485. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/constants/config.py +0 -0
  486. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/constants/custom_components.py +0 -0
  487. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/constants/event.py +0 -0
  488. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/constants/installer.py +0 -0
  489. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/constants/route.py +0 -0
  490. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/constants/state.py +0 -0
  491. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/constants/style.py +0 -0
  492. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/constants/utils.py +0 -0
  493. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/custom_components/__init__.py +0 -0
  494. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/custom_components/custom_components.py +0 -0
  495. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/event.py +0 -0
  496. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/experimental/__init__.py +0 -0
  497. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/experimental/client_state.py +0 -0
  498. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/experimental/hooks.py +0 -0
  499. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/experimental/layout.py +0 -0
  500. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/experimental/layout.pyi +0 -0
  501. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/experimental/misc.py +0 -0
  502. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/istate/__init__.py +0 -0
  503. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/istate/data.py +0 -0
  504. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/istate/dynamic.py +0 -0
  505. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/istate/proxy.py +0 -0
  506. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/istate/storage.py +0 -0
  507. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/istate/wrappers.py +0 -0
  508. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/middleware/__init__.py +0 -0
  509. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/middleware/hydrate_middleware.py +0 -0
  510. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/middleware/middleware.py +0 -0
  511. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/model.py +0 -0
  512. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/page.py +0 -0
  513. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/py.typed +0 -0
  514. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/route.py +0 -0
  515. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/state.py +0 -0
  516. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/testing.py +0 -0
  517. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/utils/__init__.py +0 -0
  518. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/utils/build.py +0 -0
  519. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/utils/codespaces.py +0 -0
  520. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/utils/compat.py +0 -0
  521. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/utils/console.py +0 -0
  522. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/utils/decorator.py +0 -0
  523. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/utils/exceptions.py +0 -0
  524. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/utils/exec.py +0 -0
  525. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/utils/export.py +0 -0
  526. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/utils/format.py +0 -0
  527. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/utils/imports.py +0 -0
  528. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/utils/lazy_loader.py +0 -0
  529. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/utils/net.py +0 -0
  530. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/utils/path_ops.py +0 -0
  531. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/utils/processes.py +0 -0
  532. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/utils/registry.py +0 -0
  533. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/utils/serializers.py +0 -0
  534. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/utils/telemetry.py +0 -0
  535. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/utils/types.py +0 -0
  536. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/vars/__init__.py +0 -0
  537. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/vars/datetime.py +0 -0
  538. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/vars/dep_tracking.py +0 -0
  539. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/vars/function.py +0 -0
  540. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/vars/number.py +0 -0
  541. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/vars/object.py +0 -0
  542. {reflex-0.7.2a2 → reflex-0.7.2.dev1}/reflex/vars/sequence.py +0 -0
@@ -1,51 +1,45 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: reflex
3
- Version: 0.7.2a2
3
+ Version: 0.7.2.dev1
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
45
 
@@ -307,4 +301,3 @@ We are actively looking for contributors, no matter your skill level or experien
307
301
  ## License
308
302
 
309
303
  Reflex is open-source and licensed under the [Apache License 2.0](LICENSE).
310
-
@@ -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()
@@ -0,0 +1,75 @@
1
+ """Extracts the Lighthouse scores from the JSON files in the specified directory and inserts them into the database."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import json
6
+ import sys
7
+ from pathlib import Path
8
+
9
+ from utils import send_data_to_posthog
10
+
11
+
12
+ def insert_benchmarking_data(
13
+ lighthouse_data: dict,
14
+ commit_sha: str,
15
+ ):
16
+ """Insert the benchmarking data into the database.
17
+
18
+ Args:
19
+ lighthouse_data: The Lighthouse data to insert.
20
+ commit_sha: The commit SHA to insert.
21
+ """
22
+ properties = {
23
+ "distinct_id": commit_sha,
24
+ "lighthouse_data": lighthouse_data,
25
+ }
26
+
27
+ # Send the data to PostHog
28
+ send_data_to_posthog("lighthouse_benchmark", properties)
29
+
30
+
31
+ def get_lighthouse_scores(directory_path: str | Path) -> dict:
32
+ """Extracts the Lighthouse scores from the JSON files in the specified directory.
33
+
34
+ Args:
35
+ directory_path (str): The path to the directory containing the JSON files.
36
+
37
+ Returns:
38
+ dict: The Lighthouse scores.
39
+ """
40
+ scores = {}
41
+ directory_path = Path(directory_path)
42
+ try:
43
+ for filename in directory_path.iterdir():
44
+ if filename.suffix == ".json" and filename.stem != "manifest":
45
+ data = json.loads(filename.read_text())
46
+ # Extract scores and add them to the dictionary with the filename as key
47
+ scores[data["finalUrl"].replace("http://localhost:3000/", "/")] = {
48
+ "performance_score": data["categories"]["performance"]["score"],
49
+ "accessibility_score": data["categories"]["accessibility"]["score"],
50
+ "best_practices_score": data["categories"]["best-practices"][
51
+ "score"
52
+ ],
53
+ "seo_score": data["categories"]["seo"]["score"],
54
+ }
55
+ except Exception as e:
56
+ return {"error": e}
57
+
58
+ return scores
59
+
60
+
61
+ def main():
62
+ """Runs the benchmarks and inserts the results into the database."""
63
+ # Get the commit SHA and JSON directory from the command line arguments
64
+ commit_sha = sys.argv[1]
65
+ json_dir = sys.argv[2]
66
+
67
+ # Get the Lighthouse scores
68
+ lighthouse_scores = get_lighthouse_scores(json_dir)
69
+
70
+ # Insert the data into the database
71
+ insert_benchmarking_data(lighthouse_scores, commit_sha)
72
+
73
+
74
+ if __name__ == "__main__":
75
+ main()
@@ -0,0 +1,135 @@
1
+ """Checks the size of a specific directory and uploads result to Posthog."""
2
+
3
+ import argparse
4
+ import os
5
+ from pathlib import Path
6
+
7
+ from utils import get_directory_size, get_python_version, send_data_to_posthog
8
+
9
+
10
+ def get_package_size(venv_path: Path, os_name):
11
+ """Get the size of a specified package.
12
+
13
+ Args:
14
+ venv_path: The path to the venv.
15
+ os_name: Name of os.
16
+
17
+ Returns:
18
+ The total size of the package in bytes.
19
+
20
+ Raises:
21
+ ValueError: when venv does not exist or python version is None.
22
+ """
23
+ python_version = get_python_version(venv_path, os_name)
24
+ print("Python version:", python_version)
25
+ if python_version is None:
26
+ raise ValueError("Error: Failed to determine Python version.")
27
+
28
+ is_windows = "windows" in os_name
29
+
30
+ package_dir: Path = (
31
+ venv_path / "lib" / f"python{python_version}" / "site-packages"
32
+ if not is_windows
33
+ else venv_path / "Lib" / "site-packages"
34
+ )
35
+ if not package_dir.exists():
36
+ raise ValueError(
37
+ "Error: Virtual environment does not exist or is not activated."
38
+ )
39
+
40
+ total_size = get_directory_size(package_dir)
41
+ return total_size
42
+
43
+
44
+ def insert_benchmarking_data(
45
+ os_type_version: str,
46
+ python_version: str,
47
+ commit_sha: str,
48
+ pr_title: str,
49
+ branch_name: str,
50
+ pr_id: str,
51
+ path: str,
52
+ ):
53
+ """Insert the benchmarking data into PostHog.
54
+
55
+ Args:
56
+ os_type_version: The OS type and version to insert.
57
+ python_version: The Python version to insert.
58
+ commit_sha: The commit SHA to insert.
59
+ pr_title: The PR title to insert.
60
+ branch_name: The name of the branch.
61
+ pr_id: The id of the PR.
62
+ path: The path to the dir or file to check size.
63
+ """
64
+ if "./dist" in path:
65
+ size = get_directory_size(Path(path))
66
+ else:
67
+ size = get_package_size(Path(path), os_type_version)
68
+
69
+ # Prepare the event data
70
+ properties = {
71
+ "path": path,
72
+ "os": os_type_version,
73
+ "python_version": python_version,
74
+ "distinct_id": commit_sha,
75
+ "pr_title": pr_title,
76
+ "branch_name": branch_name,
77
+ "pr_id": pr_id,
78
+ "size_mb": round(
79
+ size / (1024 * 1024), 3
80
+ ), # save size in MB and round to 3 places
81
+ }
82
+
83
+ send_data_to_posthog("package_size", properties)
84
+
85
+
86
+ def main():
87
+ """Runs the benchmarks and inserts the results."""
88
+ parser = argparse.ArgumentParser(description="Run benchmarks and process results.")
89
+ parser.add_argument(
90
+ "--os", help="The OS type and version to insert into the database."
91
+ )
92
+ parser.add_argument(
93
+ "--python-version", help="The Python version to insert into the database."
94
+ )
95
+ parser.add_argument(
96
+ "--commit-sha", help="The commit SHA to insert into the database."
97
+ )
98
+ parser.add_argument(
99
+ "--pr-title",
100
+ help="The PR title to insert into the database.",
101
+ )
102
+ parser.add_argument(
103
+ "--branch-name",
104
+ help="The current branch",
105
+ required=True,
106
+ )
107
+ parser.add_argument(
108
+ "--pr-id",
109
+ help="The pr id",
110
+ required=True,
111
+ )
112
+ parser.add_argument(
113
+ "--path",
114
+ help="The path to the vnenv.",
115
+ required=True,
116
+ )
117
+ args = parser.parse_args()
118
+
119
+ # Get the PR title from env or the args. For the PR merge or push event, there is no PR title, leaving it empty.
120
+ pr_title = args.pr_title or os.getenv("PR_TITLE", "")
121
+
122
+ # Insert the data into the database
123
+ insert_benchmarking_data(
124
+ os_type_version=args.os,
125
+ python_version=args.python_version,
126
+ commit_sha=args.commit_sha,
127
+ pr_title=pr_title,
128
+ branch_name=args.branch_name,
129
+ pr_id=args.pr_id,
130
+ path=args.path,
131
+ )
132
+
133
+
134
+ if __name__ == "__main__":
135
+ main()
@@ -0,0 +1,106 @@
1
+ """Checks the size of a specific directory and uploads result to Posthog."""
2
+
3
+ import argparse
4
+ import os
5
+ from pathlib import Path
6
+
7
+ from utils import get_directory_size, send_data_to_posthog
8
+
9
+
10
+ def insert_benchmarking_data(
11
+ os_type_version: str,
12
+ python_version: str,
13
+ app_name: str,
14
+ commit_sha: str,
15
+ pr_title: str,
16
+ branch_name: str,
17
+ pr_id: str,
18
+ path: str,
19
+ ):
20
+ """Insert the benchmarking data into PostHog.
21
+
22
+ Args:
23
+ app_name: The name of the app being measured.
24
+ os_type_version: The OS type and version to insert.
25
+ python_version: The Python version to insert.
26
+ commit_sha: The commit SHA to insert.
27
+ pr_title: The PR title to insert.
28
+ branch_name: The name of the branch.
29
+ pr_id: The id of the PR.
30
+ path: The path to the dir or file to check size.
31
+ """
32
+ size = get_directory_size(Path(path))
33
+
34
+ # Prepare the event data
35
+ properties = {
36
+ "app_name": app_name,
37
+ "os": os_type_version,
38
+ "python_version": python_version,
39
+ "distinct_id": commit_sha,
40
+ "pr_title": pr_title,
41
+ "branch_name": branch_name,
42
+ "pr_id": pr_id,
43
+ "size_mb": round(
44
+ size / (1024 * 1024), 3
45
+ ), # save size in MB and round to 3 places
46
+ }
47
+
48
+ send_data_to_posthog("web-size", properties)
49
+
50
+
51
+ def main():
52
+ """Runs the benchmarks and inserts the results."""
53
+ parser = argparse.ArgumentParser(description="Run benchmarks and process results.")
54
+ parser.add_argument(
55
+ "--os", help="The OS type and version to insert into the database."
56
+ )
57
+ parser.add_argument(
58
+ "--python-version", help="The Python version to insert into the database."
59
+ )
60
+ parser.add_argument(
61
+ "--commit-sha", help="The commit SHA to insert into the database."
62
+ )
63
+ parser.add_argument(
64
+ "--pr-title",
65
+ help="The PR title to insert into the database.",
66
+ )
67
+ parser.add_argument(
68
+ "--branch-name",
69
+ help="The current branch",
70
+ required=True,
71
+ )
72
+ parser.add_argument(
73
+ "--app-name",
74
+ help="The name of the app measured.",
75
+ required=True,
76
+ )
77
+ parser.add_argument(
78
+ "--pr-id",
79
+ help="The pr id",
80
+ required=True,
81
+ )
82
+ parser.add_argument(
83
+ "--path",
84
+ help="The current path to app to check.",
85
+ required=True,
86
+ )
87
+ args = parser.parse_args()
88
+
89
+ # Get the PR title from env or the args. For the PR merge or push event, there is no PR title, leaving it empty.
90
+ pr_title = args.pr_title or os.getenv("PR_TITLE", "")
91
+
92
+ # Insert the data into the database
93
+ insert_benchmarking_data(
94
+ app_name=args.app_name,
95
+ os_type_version=args.os,
96
+ python_version=args.python_version,
97
+ commit_sha=args.commit_sha,
98
+ pr_title=pr_title,
99
+ branch_name=args.branch_name,
100
+ pr_id=args.pr_id,
101
+ path=args.path,
102
+ )
103
+
104
+
105
+ if __name__ == "__main__":
106
+ main()