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.
- {reflex-0.7.2a2 → reflex-0.7.3a1}/PKG-INFO +52 -66
- {reflex-0.7.2a2 → reflex-0.7.3a1}/README.md +13 -20
- reflex-0.7.3a1/benchmarks/__init__.py +3 -0
- reflex-0.7.3a1/benchmarks/benchmark_compile_times.py +147 -0
- reflex-0.7.3a1/benchmarks/benchmark_imports.py +128 -0
- reflex-0.7.3a1/benchmarks/benchmark_lighthouse.py +75 -0
- reflex-0.7.3a1/benchmarks/benchmark_package_size.py +135 -0
- reflex-0.7.3a1/benchmarks/benchmark_web_size.py +106 -0
- reflex-0.7.3a1/benchmarks/conftest.py +20 -0
- reflex-0.7.3a1/benchmarks/lighthouse.sh +77 -0
- reflex-0.7.3a1/benchmarks/utils.py +74 -0
- reflex-0.7.3a1/pyproject.toml +203 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/web/pages/custom_component.js.jinja2 +6 -3
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +1 -1
- reflex-0.7.3a1/reflex/.templates/web/components/shiki/code.js +39 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/web/postcss.config.js +1 -1
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/web/utils/client_side_routing.js +18 -16
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/web/utils/helpers/dataeditor.js +1 -1
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/web/utils/helpers/range.js +30 -30
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/web/utils/state.js +44 -22
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/app_mixins/middleware.py +7 -7
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/compiler/compiler.py +7 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/banner.py +1 -1
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/foreach.py +3 -2
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/datadisplay/logo.py +1 -1
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/__init__.pyi +22 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/__init__.py +20 -1
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/__init__.pyi +42 -1
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/media.py +11 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/media.pyi +11 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/lucide/icon.py +8 -6
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/lucide/icon.pyi +0 -1
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/slider.py +2 -1
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/config.py +13 -7
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/custom_components/custom_components.py +23 -25
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/event.py +7 -2
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/istate/data.py +59 -7
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/reflex.py +75 -32
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/state.py +3 -3
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/style.py +3 -3
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/testing.py +4 -10
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/exceptions.py +31 -1
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/exec.py +4 -8
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/export.py +2 -2
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/prerequisites.py +3 -45
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/pyi_generator.py +2 -2
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/redir.py +3 -12
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/vars/base.py +26 -3
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/vars/number.py +22 -21
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/vars/object.py +29 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/vars/sequence.py +37 -0
- reflex-0.7.3a1/tests/__init__.py +5 -0
- reflex-0.7.3a1/tests/benchmarks/__init__.py +0 -0
- reflex-0.7.3a1/tests/benchmarks/conftest.py +3 -0
- reflex-0.7.3a1/tests/benchmarks/fixtures.py +383 -0
- reflex-0.7.3a1/tests/benchmarks/test_compilation.py +25 -0
- reflex-0.7.3a1/tests/benchmarks/test_evaluate.py +11 -0
- reflex-0.7.3a1/tests/integration/__init__.py +1 -0
- reflex-0.7.3a1/tests/integration/conftest.py +43 -0
- reflex-0.7.3a1/tests/integration/init-test/Dockerfile +8 -0
- reflex-0.7.3a1/tests/integration/init-test/in_docker_test_script.sh +37 -0
- reflex-0.7.3a1/tests/integration/shared/state.py +9 -0
- reflex-0.7.3a1/tests/integration/test_background_task.py +381 -0
- reflex-0.7.3a1/tests/integration/test_call_script.py +542 -0
- reflex-0.7.3a1/tests/integration/test_client_storage.py +760 -0
- reflex-0.7.3a1/tests/integration/test_component_state.py +204 -0
- reflex-0.7.3a1/tests/integration/test_computed_vars.py +275 -0
- reflex-0.7.3a1/tests/integration/test_connection_banner.py +223 -0
- reflex-0.7.3a1/tests/integration/test_deploy_url.py +99 -0
- reflex-0.7.3a1/tests/integration/test_dynamic_components.py +170 -0
- reflex-0.7.3a1/tests/integration/test_dynamic_routes.py +430 -0
- reflex-0.7.3a1/tests/integration/test_event_actions.py +385 -0
- reflex-0.7.3a1/tests/integration/test_event_chain.py +579 -0
- reflex-0.7.3a1/tests/integration/test_exception_handlers.py +204 -0
- reflex-0.7.3a1/tests/integration/test_extra_overlay_function.py +87 -0
- reflex-0.7.3a1/tests/integration/test_form_submit.py +262 -0
- reflex-0.7.3a1/tests/integration/test_input.py +188 -0
- reflex-0.7.3a1/tests/integration/test_large_state.py +91 -0
- reflex-0.7.3a1/tests/integration/test_lifespan.py +133 -0
- reflex-0.7.3a1/tests/integration/test_login_flow.py +147 -0
- reflex-0.7.3a1/tests/integration/test_media.py +163 -0
- reflex-0.7.3a1/tests/integration/test_memo.py +67 -0
- reflex-0.7.3a1/tests/integration/test_navigation.py +93 -0
- reflex-0.7.3a1/tests/integration/test_server_side_event.py +184 -0
- reflex-0.7.3a1/tests/integration/test_shared_state.py +77 -0
- reflex-0.7.3a1/tests/integration/test_state_inheritance.py +452 -0
- reflex-0.7.3a1/tests/integration/test_tailwind.py +122 -0
- reflex-0.7.3a1/tests/integration/test_upload.py +503 -0
- reflex-0.7.3a1/tests/integration/test_urls.py +68 -0
- reflex-0.7.3a1/tests/integration/test_var_operations.py +975 -0
- reflex-0.7.3a1/tests/integration/tests_playwright/test_appearance.py +218 -0
- reflex-0.7.3a1/tests/integration/tests_playwright/test_datetime_operations.py +87 -0
- reflex-0.7.3a1/tests/integration/tests_playwright/test_link_hover.py +46 -0
- reflex-0.7.3a1/tests/integration/tests_playwright/test_stateless_app.py +59 -0
- reflex-0.7.3a1/tests/integration/tests_playwright/test_table.py +103 -0
- reflex-0.7.3a1/tests/integration/utils.py +191 -0
- reflex-0.7.3a1/tests/test_node_version.py +73 -0
- reflex-0.7.3a1/tests/units/__init__.py +5 -0
- reflex-0.7.3a1/tests/units/assets/custom_script.js +1 -0
- reflex-0.7.3a1/tests/units/assets/test_assets.py +81 -0
- reflex-0.7.3a1/tests/units/compiler/__init__.py +1 -0
- reflex-0.7.3a1/tests/units/compiler/test_compiler.py +219 -0
- reflex-0.7.3a1/tests/units/compiler/test_compiler_utils.py +7 -0
- reflex-0.7.3a1/tests/units/components/__init__.py +1 -0
- reflex-0.7.3a1/tests/units/components/base/test_bare.py +26 -0
- reflex-0.7.3a1/tests/units/components/base/test_link.py +15 -0
- reflex-0.7.3a1/tests/units/components/base/test_script.py +75 -0
- reflex-0.7.3a1/tests/units/components/core/__init__.py +0 -0
- reflex-0.7.3a1/tests/units/components/core/test_banner.py +59 -0
- reflex-0.7.3a1/tests/units/components/core/test_colors.py +136 -0
- reflex-0.7.3a1/tests/units/components/core/test_cond.py +146 -0
- reflex-0.7.3a1/tests/units/components/core/test_debounce.py +185 -0
- reflex-0.7.3a1/tests/units/components/core/test_foreach.py +325 -0
- reflex-0.7.3a1/tests/units/components/core/test_html.py +41 -0
- reflex-0.7.3a1/tests/units/components/core/test_match.py +317 -0
- reflex-0.7.3a1/tests/units/components/core/test_responsive.py +38 -0
- reflex-0.7.3a1/tests/units/components/core/test_upload.py +130 -0
- reflex-0.7.3a1/tests/units/components/datadisplay/__init__.py +1 -0
- reflex-0.7.3a1/tests/units/components/datadisplay/conftest.py +89 -0
- reflex-0.7.3a1/tests/units/components/datadisplay/test_code.py +13 -0
- reflex-0.7.3a1/tests/units/components/datadisplay/test_dataeditor.py +11 -0
- reflex-0.7.3a1/tests/units/components/datadisplay/test_datatable.py +124 -0
- reflex-0.7.3a1/tests/units/components/datadisplay/test_shiki_code.py +175 -0
- reflex-0.7.3a1/tests/units/components/el/test_html.py +6 -0
- reflex-0.7.3a1/tests/units/components/el/test_svg.py +74 -0
- reflex-0.7.3a1/tests/units/components/forms/__init__.py +0 -0
- reflex-0.7.3a1/tests/units/components/forms/test_form.py +20 -0
- reflex-0.7.3a1/tests/units/components/graphing/__init__.py +1 -0
- reflex-0.7.3a1/tests/units/components/graphing/test_plotly.py +44 -0
- reflex-0.7.3a1/tests/units/components/graphing/test_recharts.py +52 -0
- reflex-0.7.3a1/tests/units/components/layout/__init__.py +1 -0
- reflex-0.7.3a1/tests/units/components/lucide/test_icon.py +36 -0
- reflex-0.7.3a1/tests/units/components/markdown/__init__.py +0 -0
- reflex-0.7.3a1/tests/units/components/markdown/test_markdown.py +191 -0
- reflex-0.7.3a1/tests/units/components/media/__init__.py +1 -0
- reflex-0.7.3a1/tests/units/components/media/test_image.py +65 -0
- reflex-0.7.3a1/tests/units/components/radix/test_icon_button.py +30 -0
- reflex-0.7.3a1/tests/units/components/radix/test_layout.py +6 -0
- reflex-0.7.3a1/tests/units/components/recharts/test_cartesian.py +50 -0
- reflex-0.7.3a1/tests/units/components/recharts/test_polar.py +38 -0
- reflex-0.7.3a1/tests/units/components/test_component.py +2317 -0
- reflex-0.7.3a1/tests/units/components/test_component_future_annotations.py +37 -0
- reflex-0.7.3a1/tests/units/components/test_component_state.py +63 -0
- reflex-0.7.3a1/tests/units/components/test_props.py +59 -0
- reflex-0.7.3a1/tests/units/components/test_tag.py +135 -0
- reflex-0.7.3a1/tests/units/components/typography/__init__.py +0 -0
- reflex-0.7.3a1/tests/units/components/typography/test_markdown.py +49 -0
- reflex-0.7.3a1/tests/units/conftest.py +238 -0
- reflex-0.7.3a1/tests/units/middleware/__init__.py +0 -0
- reflex-0.7.3a1/tests/units/middleware/conftest.py +25 -0
- reflex-0.7.3a1/tests/units/middleware/test_hydrate_middleware.py +50 -0
- reflex-0.7.3a1/tests/units/states/__init__.py +34 -0
- reflex-0.7.3a1/tests/units/states/mutation.py +219 -0
- reflex-0.7.3a1/tests/units/states/upload.py +174 -0
- reflex-0.7.3a1/tests/units/test_app.py +1774 -0
- reflex-0.7.3a1/tests/units/test_attribute_access_type.py +416 -0
- reflex-0.7.3a1/tests/units/test_base.py +100 -0
- reflex-0.7.3a1/tests/units/test_config.py +291 -0
- reflex-0.7.3a1/tests/units/test_db_config.py +204 -0
- reflex-0.7.3a1/tests/units/test_event.py +481 -0
- reflex-0.7.3a1/tests/units/test_health_endpoint.py +130 -0
- reflex-0.7.3a1/tests/units/test_model.py +193 -0
- reflex-0.7.3a1/tests/units/test_page.py +79 -0
- reflex-0.7.3a1/tests/units/test_prerequisites.py +387 -0
- reflex-0.7.3a1/tests/units/test_route.py +122 -0
- reflex-0.7.3a1/tests/units/test_sqlalchemy.py +166 -0
- reflex-0.7.3a1/tests/units/test_state.py +3942 -0
- reflex-0.7.3a1/tests/units/test_state_tree.py +380 -0
- reflex-0.7.3a1/tests/units/test_style.py +554 -0
- reflex-0.7.3a1/tests/units/test_telemetry.py +49 -0
- reflex-0.7.3a1/tests/units/test_testing.py +40 -0
- reflex-0.7.3a1/tests/units/test_var.py +1920 -0
- reflex-0.7.3a1/tests/units/utils/__init__.py +0 -0
- reflex-0.7.3a1/tests/units/utils/test_format.py +715 -0
- reflex-0.7.3a1/tests/units/utils/test_imports.py +117 -0
- reflex-0.7.3a1/tests/units/utils/test_serializers.py +240 -0
- reflex-0.7.3a1/tests/units/utils/test_types.py +92 -0
- reflex-0.7.3a1/tests/units/utils/test_utils.py +698 -0
- reflex-0.7.3a1/tests/units/vars/test_base.py +63 -0
- reflex-0.7.3a1/tests/units/vars/test_object.py +163 -0
- reflex-0.7.2a2/pyproject.toml +0 -137
- reflex-0.7.2a2/reflex/.templates/web/components/shiki/code.js +0 -34
- {reflex-0.7.2a2 → reflex-0.7.3a1}/LICENSE +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/apps/blank/assets/favicon.ico +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/apps/blank/code/__init__.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/apps/blank/code/blank.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/app/rxconfig.py.jinja2 +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/custom_components/README.md.jinja2 +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/custom_components/__init__.py.jinja2 +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/custom_components/demo_app.py.jinja2 +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/custom_components/pyproject.toml.jinja2 +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/custom_components/src.py.jinja2 +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/web/package.json.jinja2 +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/web/pages/_app.js.jinja2 +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/web/pages/_document.js.jinja2 +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/web/pages/base_page.js.jinja2 +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/web/pages/component.js.jinja2 +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/web/pages/index.js.jinja2 +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/web/pages/macros.js.jinja2 +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/web/pages/stateful_component.js.jinja2 +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/web/pages/stateful_components.js.jinja2 +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/web/pages/utils.js.jinja2 +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/web/styles/styles.css.jinja2 +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/web/tailwind.config.js.jinja2 +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/web/utils/context.js.jinja2 +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/jinja/web/utils/theme.js.jinja2 +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/web/.gitignore +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/web/jsconfig.json +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/web/next.config.js +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/web/styles/tailwind.css +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/web/utils/helpers/debounce.js +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/web/utils/helpers/paste.js +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/.templates/web/utils/helpers/throttle.js +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/__init__.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/__init__.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/__main__.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/admin.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/app.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/app_mixins/__init__.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/app_mixins/lifespan.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/app_mixins/mixin.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/app_module_for_backend.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/assets.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/base.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/compiler/__init__.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/compiler/templates.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/compiler/utils.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/__init__.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/__init__.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/__init__.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/__init__.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/app_wrap.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/app_wrap.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/bare.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/body.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/body.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/document.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/document.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/error_boundary.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/error_boundary.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/fragment.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/fragment.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/head.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/head.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/link.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/link.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/meta.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/meta.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/script.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/script.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/strict_mode.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/base/strict_mode.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/component.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/__init__.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/__init__.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/auto_scroll.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/auto_scroll.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/banner.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/breakpoints.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/client_side_routing.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/client_side_routing.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/clipboard.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/clipboard.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/colors.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/cond.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/debounce.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/debounce.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/html.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/html.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/layout/__init__.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/match.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/responsive.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/sticky.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/sticky.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/upload.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/core/upload.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/datadisplay/__init__.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/datadisplay/__init__.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/datadisplay/code.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/datadisplay/code.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/datadisplay/dataeditor.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/datadisplay/dataeditor.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/datadisplay/shiki_code_block.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/datadisplay/shiki_code_block.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/dynamic.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/__init__.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/constants/__init__.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/constants/html.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/constants/react.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/constants/reflex.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/element.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/element.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/base.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/base.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/forms.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/forms.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/inline.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/inline.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/metadata.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/metadata.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/other.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/other.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/scripts.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/scripts.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/sectioning.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/sectioning.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/tables.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/tables.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/typography.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/el/elements/typography.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/gridjs/__init__.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/gridjs/datatable.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/gridjs/datatable.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/literals.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/lucide/__init__.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/markdown/__init__.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/markdown/markdown.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/markdown/markdown.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/moment/__init__.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/moment/moment.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/moment/moment.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/next/__init__.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/next/base.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/next/base.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/next/image.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/next/image.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/next/link.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/next/link.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/next/video.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/next/video.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/plotly/__init__.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/plotly/plotly.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/plotly/plotly.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/props.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/__init__.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/__init__.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/primitives/__init__.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/primitives/__init__.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/primitives/accordion.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/primitives/accordion.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/primitives/base.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/primitives/base.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/primitives/drawer.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/primitives/drawer.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/primitives/form.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/primitives/form.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/primitives/progress.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/primitives/progress.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/primitives/slider.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/primitives/slider.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/__init__.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/__init__.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/base.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/base.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/color_mode.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/color_mode.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/__init__.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/__init__.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/alert_dialog.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/alert_dialog.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/aspect_ratio.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/aspect_ratio.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/avatar.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/avatar.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/badge.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/badge.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/button.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/button.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/callout.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/callout.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/card.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/card.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/checkbox.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/checkbox.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/checkbox_cards.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/checkbox_cards.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/checkbox_group.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/checkbox_group.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/context_menu.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/context_menu.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/data_list.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/data_list.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/dialog.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/dialog.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/dropdown_menu.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/dropdown_menu.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/hover_card.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/hover_card.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/icon_button.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/icon_button.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/inset.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/inset.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/popover.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/popover.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/progress.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/progress.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/radio.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/radio.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/radio_cards.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/radio_cards.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/radio_group.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/radio_group.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/scroll_area.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/scroll_area.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/segmented_control.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/segmented_control.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/select.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/select.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/separator.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/separator.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/skeleton.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/skeleton.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/slider.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/spinner.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/spinner.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/switch.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/switch.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/table.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/table.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/tabs.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/tabs.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/text_area.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/text_area.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/text_field.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/text_field.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/tooltip.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/components/tooltip.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/__init__.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/__init__.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/base.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/base.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/box.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/box.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/center.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/center.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/container.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/container.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/flex.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/flex.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/grid.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/grid.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/list.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/list.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/section.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/section.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/spacer.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/spacer.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/stack.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/layout/stack.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/typography/__init__.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/typography/__init__.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/typography/base.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/typography/blockquote.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/typography/blockquote.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/typography/code.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/typography/code.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/typography/heading.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/typography/heading.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/typography/link.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/typography/link.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/typography/text.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/radix/themes/typography/text.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/react_player/__init__.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/react_player/audio.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/react_player/audio.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/react_player/react_player.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/react_player/react_player.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/react_player/video.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/react_player/video.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/recharts/__init__.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/recharts/__init__.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/recharts/cartesian.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/recharts/cartesian.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/recharts/charts.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/recharts/charts.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/recharts/general.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/recharts/general.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/recharts/polar.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/recharts/polar.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/recharts/recharts.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/recharts/recharts.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/sonner/__init__.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/sonner/toast.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/sonner/toast.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/suneditor/__init__.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/suneditor/editor.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/suneditor/editor.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/tags/__init__.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/tags/cond_tag.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/tags/iter_tag.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/tags/match_tag.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/tags/tag.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/components/tags/tagless.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/constants/__init__.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/constants/base.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/constants/colors.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/constants/compiler.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/constants/config.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/constants/custom_components.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/constants/event.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/constants/installer.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/constants/route.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/constants/state.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/constants/style.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/constants/utils.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/custom_components/__init__.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/experimental/__init__.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/experimental/client_state.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/experimental/hooks.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/experimental/layout.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/experimental/layout.pyi +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/experimental/misc.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/istate/__init__.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/istate/dynamic.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/istate/proxy.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/istate/storage.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/istate/wrappers.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/middleware/__init__.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/middleware/hydrate_middleware.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/middleware/middleware.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/model.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/page.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/py.typed +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/route.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/__init__.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/build.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/codespaces.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/compat.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/console.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/decorator.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/format.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/imports.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/lazy_loader.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/net.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/path_ops.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/processes.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/registry.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/serializers.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/telemetry.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/utils/types.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/vars/__init__.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/vars/datetime.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/vars/dep_tracking.py +0 -0
- {reflex-0.7.2a2 → reflex-0.7.3a1}/reflex/vars/function.py +0 -0
|
@@ -1,54 +1,47 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: reflex
|
|
3
|
-
Version: 0.7.
|
|
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:
|
|
8
|
-
Author-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
Requires-Dist:
|
|
18
|
-
Requires-Dist:
|
|
19
|
-
Requires-Dist:
|
|
20
|
-
Requires-Dist:
|
|
21
|
-
Requires-Dist:
|
|
22
|
-
Requires-Dist:
|
|
23
|
-
Requires-Dist:
|
|
24
|
-
Requires-Dist:
|
|
25
|
-
Requires-Dist:
|
|
26
|
-
Requires-Dist:
|
|
27
|
-
Requires-Dist:
|
|
28
|
-
Requires-Dist:
|
|
29
|
-
Requires-Dist:
|
|
30
|
-
Requires-Dist:
|
|
31
|
-
Requires-Dist: python-
|
|
32
|
-
Requires-Dist:
|
|
33
|
-
Requires-Dist:
|
|
34
|
-
Requires-Dist: reflex-hosting-cli
|
|
35
|
-
Requires-Dist:
|
|
36
|
-
Requires-Dist:
|
|
37
|
-
Requires-Dist:
|
|
38
|
-
Requires-Dist:
|
|
39
|
-
Requires-Dist:
|
|
40
|
-
Requires-Dist: twine
|
|
41
|
-
Requires-Dist:
|
|
42
|
-
Requires-Dist:
|
|
43
|
-
Requires-Dist:
|
|
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
|
[](https://badge.fury.io/py/reflex)
|
|
60
54
|

|
|
61
55
|
[](https://reflex.dev/docs/getting-started/introduction)
|
|
62
56
|
[](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
|
-
|
|
77
|
-
|
|
78
|
-
|
|
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) |
|
|
266
|
+
📑 [Docs](https://reflex.dev/docs/getting-started/introduction) | 🗞️ [Blog](https://reflex.dev/blog) | 📱 [Component Library](https://reflex.dev/docs/library) | 🖼️ [Templates](https://reflex.dev/templates/) | 🛸 [Deployment](https://reflex.dev/docs/hosting/deploy-quick-start)
|
|
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
|
-
-
|
|
296
|
-
-
|
|
297
|
-
-
|
|
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
|
[](https://badge.fury.io/py/reflex)
|
|
10
10
|

|
|
11
11
|
[](https://reflex.dev/docs/getting-started/introduction)
|
|
12
12
|
[](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
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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) |
|
|
222
|
+
📑 [Docs](https://reflex.dev/docs/getting-started/introduction) | 🗞️ [Blog](https://reflex.dev/blog) | 📱 [Component Library](https://reflex.dev/docs/library) | 🖼️ [Templates](https://reflex.dev/templates/) | 🛸 [Deployment](https://reflex.dev/docs/hosting/deploy-quick-start)
|
|
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
|
-
-
|
|
246
|
-
-
|
|
247
|
-
-
|
|
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,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()
|