reflex 0.7.3a1__tar.gz → 0.7.4a0__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.4a0/.gitignore +21 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/PKG-INFO +29 -22
- reflex-0.7.4a0/pyproject.toml +164 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/web/utils/state.js +1 -1
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/app.py +1 -1
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/app_mixins/middleware.py +2 -3
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/compiler/compiler.py +61 -4
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/core/upload.py +1 -1
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/plotly/plotly.py +9 -9
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/recharts/recharts.py +2 -2
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/sonner/toast.py +1 -1
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/config.py +2 -5
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/constants/__init__.py +1 -2
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/constants/base.py +3 -0
- reflex-0.7.4a0/reflex/constants/installer.py +104 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/state.py +8 -1
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/testing.py +7 -1
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/utils/build.py +3 -4
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/utils/exec.py +10 -11
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/utils/path_ops.py +15 -25
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/utils/prerequisites.py +113 -181
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/utils/processes.py +21 -18
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/utils/registry.py +5 -5
- reflex-0.7.3a1/benchmarks/__init__.py +0 -3
- reflex-0.7.3a1/benchmarks/benchmark_compile_times.py +0 -147
- reflex-0.7.3a1/benchmarks/benchmark_imports.py +0 -128
- reflex-0.7.3a1/benchmarks/benchmark_lighthouse.py +0 -75
- reflex-0.7.3a1/benchmarks/benchmark_package_size.py +0 -135
- reflex-0.7.3a1/benchmarks/benchmark_web_size.py +0 -106
- reflex-0.7.3a1/benchmarks/conftest.py +0 -20
- reflex-0.7.3a1/benchmarks/lighthouse.sh +0 -77
- reflex-0.7.3a1/benchmarks/utils.py +0 -74
- reflex-0.7.3a1/pyproject.toml +0 -203
- reflex-0.7.3a1/reflex/constants/installer.py +0 -201
- reflex-0.7.3a1/tests/__init__.py +0 -5
- reflex-0.7.3a1/tests/benchmarks/__init__.py +0 -0
- reflex-0.7.3a1/tests/benchmarks/conftest.py +0 -3
- reflex-0.7.3a1/tests/benchmarks/fixtures.py +0 -383
- reflex-0.7.3a1/tests/benchmarks/test_compilation.py +0 -25
- reflex-0.7.3a1/tests/benchmarks/test_evaluate.py +0 -11
- reflex-0.7.3a1/tests/integration/__init__.py +0 -1
- reflex-0.7.3a1/tests/integration/conftest.py +0 -43
- reflex-0.7.3a1/tests/integration/init-test/Dockerfile +0 -8
- reflex-0.7.3a1/tests/integration/init-test/in_docker_test_script.sh +0 -37
- reflex-0.7.3a1/tests/integration/shared/state.py +0 -9
- reflex-0.7.3a1/tests/integration/test_background_task.py +0 -381
- reflex-0.7.3a1/tests/integration/test_call_script.py +0 -542
- reflex-0.7.3a1/tests/integration/test_client_storage.py +0 -760
- reflex-0.7.3a1/tests/integration/test_component_state.py +0 -204
- reflex-0.7.3a1/tests/integration/test_computed_vars.py +0 -275
- reflex-0.7.3a1/tests/integration/test_connection_banner.py +0 -223
- reflex-0.7.3a1/tests/integration/test_deploy_url.py +0 -99
- reflex-0.7.3a1/tests/integration/test_dynamic_components.py +0 -170
- reflex-0.7.3a1/tests/integration/test_dynamic_routes.py +0 -430
- reflex-0.7.3a1/tests/integration/test_event_actions.py +0 -385
- reflex-0.7.3a1/tests/integration/test_event_chain.py +0 -579
- reflex-0.7.3a1/tests/integration/test_exception_handlers.py +0 -204
- reflex-0.7.3a1/tests/integration/test_extra_overlay_function.py +0 -87
- reflex-0.7.3a1/tests/integration/test_form_submit.py +0 -262
- reflex-0.7.3a1/tests/integration/test_input.py +0 -188
- reflex-0.7.3a1/tests/integration/test_large_state.py +0 -91
- reflex-0.7.3a1/tests/integration/test_lifespan.py +0 -133
- reflex-0.7.3a1/tests/integration/test_login_flow.py +0 -147
- reflex-0.7.3a1/tests/integration/test_media.py +0 -163
- reflex-0.7.3a1/tests/integration/test_memo.py +0 -67
- reflex-0.7.3a1/tests/integration/test_navigation.py +0 -93
- reflex-0.7.3a1/tests/integration/test_server_side_event.py +0 -184
- reflex-0.7.3a1/tests/integration/test_shared_state.py +0 -77
- reflex-0.7.3a1/tests/integration/test_state_inheritance.py +0 -452
- reflex-0.7.3a1/tests/integration/test_tailwind.py +0 -122
- reflex-0.7.3a1/tests/integration/test_upload.py +0 -503
- reflex-0.7.3a1/tests/integration/test_urls.py +0 -68
- reflex-0.7.3a1/tests/integration/test_var_operations.py +0 -975
- reflex-0.7.3a1/tests/integration/tests_playwright/test_appearance.py +0 -218
- reflex-0.7.3a1/tests/integration/tests_playwright/test_datetime_operations.py +0 -87
- reflex-0.7.3a1/tests/integration/tests_playwright/test_link_hover.py +0 -46
- reflex-0.7.3a1/tests/integration/tests_playwright/test_stateless_app.py +0 -59
- reflex-0.7.3a1/tests/integration/tests_playwright/test_table.py +0 -103
- reflex-0.7.3a1/tests/integration/utils.py +0 -191
- reflex-0.7.3a1/tests/test_node_version.py +0 -73
- reflex-0.7.3a1/tests/units/__init__.py +0 -5
- reflex-0.7.3a1/tests/units/assets/custom_script.js +0 -1
- reflex-0.7.3a1/tests/units/assets/test_assets.py +0 -81
- reflex-0.7.3a1/tests/units/compiler/__init__.py +0 -1
- reflex-0.7.3a1/tests/units/compiler/test_compiler.py +0 -219
- reflex-0.7.3a1/tests/units/compiler/test_compiler_utils.py +0 -7
- reflex-0.7.3a1/tests/units/components/__init__.py +0 -1
- reflex-0.7.3a1/tests/units/components/base/test_bare.py +0 -26
- reflex-0.7.3a1/tests/units/components/base/test_link.py +0 -15
- reflex-0.7.3a1/tests/units/components/base/test_script.py +0 -75
- reflex-0.7.3a1/tests/units/components/core/__init__.py +0 -0
- reflex-0.7.3a1/tests/units/components/core/test_banner.py +0 -59
- reflex-0.7.3a1/tests/units/components/core/test_colors.py +0 -136
- reflex-0.7.3a1/tests/units/components/core/test_cond.py +0 -146
- reflex-0.7.3a1/tests/units/components/core/test_debounce.py +0 -185
- reflex-0.7.3a1/tests/units/components/core/test_foreach.py +0 -325
- reflex-0.7.3a1/tests/units/components/core/test_html.py +0 -41
- reflex-0.7.3a1/tests/units/components/core/test_match.py +0 -317
- reflex-0.7.3a1/tests/units/components/core/test_responsive.py +0 -38
- reflex-0.7.3a1/tests/units/components/core/test_upload.py +0 -130
- reflex-0.7.3a1/tests/units/components/datadisplay/__init__.py +0 -1
- reflex-0.7.3a1/tests/units/components/datadisplay/conftest.py +0 -89
- reflex-0.7.3a1/tests/units/components/datadisplay/test_code.py +0 -13
- reflex-0.7.3a1/tests/units/components/datadisplay/test_dataeditor.py +0 -11
- reflex-0.7.3a1/tests/units/components/datadisplay/test_datatable.py +0 -124
- reflex-0.7.3a1/tests/units/components/datadisplay/test_shiki_code.py +0 -175
- reflex-0.7.3a1/tests/units/components/el/test_html.py +0 -6
- reflex-0.7.3a1/tests/units/components/el/test_svg.py +0 -74
- reflex-0.7.3a1/tests/units/components/forms/__init__.py +0 -0
- reflex-0.7.3a1/tests/units/components/forms/test_form.py +0 -20
- reflex-0.7.3a1/tests/units/components/graphing/__init__.py +0 -1
- reflex-0.7.3a1/tests/units/components/graphing/test_plotly.py +0 -44
- reflex-0.7.3a1/tests/units/components/graphing/test_recharts.py +0 -52
- reflex-0.7.3a1/tests/units/components/layout/__init__.py +0 -1
- reflex-0.7.3a1/tests/units/components/lucide/test_icon.py +0 -36
- reflex-0.7.3a1/tests/units/components/markdown/__init__.py +0 -0
- reflex-0.7.3a1/tests/units/components/markdown/test_markdown.py +0 -191
- reflex-0.7.3a1/tests/units/components/media/__init__.py +0 -1
- reflex-0.7.3a1/tests/units/components/media/test_image.py +0 -65
- reflex-0.7.3a1/tests/units/components/radix/test_icon_button.py +0 -30
- reflex-0.7.3a1/tests/units/components/radix/test_layout.py +0 -6
- reflex-0.7.3a1/tests/units/components/recharts/test_cartesian.py +0 -50
- reflex-0.7.3a1/tests/units/components/recharts/test_polar.py +0 -38
- reflex-0.7.3a1/tests/units/components/test_component.py +0 -2317
- reflex-0.7.3a1/tests/units/components/test_component_future_annotations.py +0 -37
- reflex-0.7.3a1/tests/units/components/test_component_state.py +0 -63
- reflex-0.7.3a1/tests/units/components/test_props.py +0 -59
- reflex-0.7.3a1/tests/units/components/test_tag.py +0 -135
- reflex-0.7.3a1/tests/units/components/typography/__init__.py +0 -0
- reflex-0.7.3a1/tests/units/components/typography/test_markdown.py +0 -49
- reflex-0.7.3a1/tests/units/conftest.py +0 -238
- reflex-0.7.3a1/tests/units/middleware/__init__.py +0 -0
- reflex-0.7.3a1/tests/units/middleware/conftest.py +0 -25
- reflex-0.7.3a1/tests/units/middleware/test_hydrate_middleware.py +0 -50
- reflex-0.7.3a1/tests/units/states/__init__.py +0 -34
- reflex-0.7.3a1/tests/units/states/mutation.py +0 -219
- reflex-0.7.3a1/tests/units/states/upload.py +0 -174
- reflex-0.7.3a1/tests/units/test_app.py +0 -1774
- reflex-0.7.3a1/tests/units/test_attribute_access_type.py +0 -416
- reflex-0.7.3a1/tests/units/test_base.py +0 -100
- reflex-0.7.3a1/tests/units/test_config.py +0 -291
- reflex-0.7.3a1/tests/units/test_db_config.py +0 -204
- reflex-0.7.3a1/tests/units/test_event.py +0 -481
- reflex-0.7.3a1/tests/units/test_health_endpoint.py +0 -130
- reflex-0.7.3a1/tests/units/test_model.py +0 -193
- reflex-0.7.3a1/tests/units/test_page.py +0 -79
- reflex-0.7.3a1/tests/units/test_prerequisites.py +0 -387
- reflex-0.7.3a1/tests/units/test_route.py +0 -122
- reflex-0.7.3a1/tests/units/test_sqlalchemy.py +0 -166
- reflex-0.7.3a1/tests/units/test_state.py +0 -3942
- reflex-0.7.3a1/tests/units/test_state_tree.py +0 -380
- reflex-0.7.3a1/tests/units/test_style.py +0 -554
- reflex-0.7.3a1/tests/units/test_telemetry.py +0 -49
- reflex-0.7.3a1/tests/units/test_testing.py +0 -40
- reflex-0.7.3a1/tests/units/test_var.py +0 -1920
- reflex-0.7.3a1/tests/units/utils/__init__.py +0 -0
- reflex-0.7.3a1/tests/units/utils/test_format.py +0 -715
- reflex-0.7.3a1/tests/units/utils/test_imports.py +0 -117
- reflex-0.7.3a1/tests/units/utils/test_serializers.py +0 -240
- reflex-0.7.3a1/tests/units/utils/test_types.py +0 -92
- reflex-0.7.3a1/tests/units/utils/test_utils.py +0 -698
- reflex-0.7.3a1/tests/units/vars/test_base.py +0 -63
- reflex-0.7.3a1/tests/units/vars/test_object.py +0 -163
- {reflex-0.7.3a1 → reflex-0.7.4a0}/LICENSE +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/README.md +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/apps/blank/assets/favicon.ico +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/apps/blank/code/__init__.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/apps/blank/code/blank.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/jinja/app/rxconfig.py.jinja2 +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/jinja/custom_components/README.md.jinja2 +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/jinja/custom_components/__init__.py.jinja2 +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/jinja/custom_components/demo_app.py.jinja2 +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/jinja/custom_components/pyproject.toml.jinja2 +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/jinja/custom_components/src.py.jinja2 +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/jinja/web/package.json.jinja2 +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/jinja/web/pages/_app.js.jinja2 +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/jinja/web/pages/_document.js.jinja2 +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/jinja/web/pages/base_page.js.jinja2 +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/jinja/web/pages/component.js.jinja2 +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/jinja/web/pages/custom_component.js.jinja2 +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/jinja/web/pages/index.js.jinja2 +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/jinja/web/pages/macros.js.jinja2 +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/jinja/web/pages/stateful_component.js.jinja2 +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/jinja/web/pages/stateful_components.js.jinja2 +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/jinja/web/pages/utils.js.jinja2 +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/jinja/web/styles/styles.css.jinja2 +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/jinja/web/tailwind.config.js.jinja2 +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/jinja/web/utils/context.js.jinja2 +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/jinja/web/utils/theme.js.jinja2 +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/web/.gitignore +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/web/components/shiki/code.js +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/web/jsconfig.json +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/web/next.config.js +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/web/postcss.config.js +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/web/styles/tailwind.css +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/web/utils/client_side_routing.js +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/web/utils/helpers/dataeditor.js +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/web/utils/helpers/debounce.js +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/web/utils/helpers/paste.js +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/web/utils/helpers/range.js +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/.templates/web/utils/helpers/throttle.js +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/__init__.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/__init__.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/__main__.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/admin.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/app_mixins/__init__.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/app_mixins/lifespan.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/app_mixins/mixin.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/app_module_for_backend.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/assets.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/base.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/compiler/__init__.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/compiler/templates.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/compiler/utils.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/__init__.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/__init__.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/base/__init__.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/base/__init__.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/base/app_wrap.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/base/app_wrap.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/base/bare.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/base/body.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/base/body.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/base/document.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/base/document.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/base/error_boundary.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/base/error_boundary.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/base/fragment.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/base/fragment.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/base/head.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/base/head.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/base/link.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/base/link.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/base/meta.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/base/meta.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/base/script.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/base/script.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/base/strict_mode.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/base/strict_mode.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/component.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/core/__init__.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/core/__init__.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/core/auto_scroll.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/core/auto_scroll.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/core/banner.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/core/banner.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/core/breakpoints.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/core/client_side_routing.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/core/client_side_routing.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/core/clipboard.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/core/clipboard.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/core/colors.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/core/cond.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/core/debounce.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/core/debounce.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/core/foreach.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/core/html.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/core/html.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/core/layout/__init__.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/core/match.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/core/responsive.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/core/sticky.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/core/sticky.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/core/upload.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/datadisplay/__init__.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/datadisplay/__init__.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/datadisplay/code.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/datadisplay/code.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/datadisplay/dataeditor.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/datadisplay/dataeditor.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/datadisplay/logo.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/datadisplay/shiki_code_block.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/datadisplay/shiki_code_block.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/dynamic.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/el/__init__.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/el/__init__.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/el/constants/__init__.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/el/constants/html.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/el/constants/react.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/el/constants/reflex.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/el/element.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/el/element.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/el/elements/__init__.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/el/elements/__init__.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/el/elements/base.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/el/elements/base.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/el/elements/forms.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/el/elements/forms.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/el/elements/inline.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/el/elements/inline.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/el/elements/media.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/el/elements/media.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/el/elements/metadata.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/el/elements/metadata.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/el/elements/other.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/el/elements/other.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/el/elements/scripts.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/el/elements/scripts.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/el/elements/sectioning.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/el/elements/sectioning.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/el/elements/tables.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/el/elements/tables.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/el/elements/typography.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/el/elements/typography.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/gridjs/__init__.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/gridjs/datatable.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/gridjs/datatable.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/literals.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/lucide/__init__.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/lucide/icon.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/lucide/icon.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/markdown/__init__.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/markdown/markdown.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/markdown/markdown.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/moment/__init__.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/moment/moment.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/moment/moment.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/next/__init__.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/next/base.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/next/base.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/next/image.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/next/image.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/next/link.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/next/link.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/next/video.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/next/video.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/plotly/__init__.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/plotly/plotly.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/props.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/__init__.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/__init__.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/primitives/__init__.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/primitives/__init__.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/primitives/accordion.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/primitives/accordion.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/primitives/base.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/primitives/base.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/primitives/drawer.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/primitives/drawer.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/primitives/form.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/primitives/form.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/primitives/progress.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/primitives/progress.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/primitives/slider.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/primitives/slider.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/__init__.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/__init__.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/base.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/base.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/color_mode.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/color_mode.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/__init__.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/__init__.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/alert_dialog.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/alert_dialog.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/aspect_ratio.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/aspect_ratio.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/avatar.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/avatar.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/badge.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/badge.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/button.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/button.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/callout.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/callout.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/card.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/card.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/checkbox.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/checkbox.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/checkbox_cards.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/checkbox_cards.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/checkbox_group.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/checkbox_group.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/context_menu.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/context_menu.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/data_list.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/data_list.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/dialog.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/dialog.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/dropdown_menu.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/dropdown_menu.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/hover_card.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/hover_card.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/icon_button.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/icon_button.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/inset.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/inset.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/popover.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/popover.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/progress.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/progress.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/radio.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/radio.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/radio_cards.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/radio_cards.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/radio_group.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/radio_group.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/scroll_area.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/scroll_area.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/segmented_control.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/segmented_control.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/select.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/select.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/separator.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/separator.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/skeleton.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/skeleton.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/slider.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/slider.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/spinner.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/spinner.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/switch.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/switch.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/table.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/table.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/tabs.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/tabs.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/text_area.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/text_area.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/text_field.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/text_field.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/tooltip.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/components/tooltip.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/layout/__init__.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/layout/__init__.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/layout/base.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/layout/base.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/layout/box.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/layout/box.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/layout/center.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/layout/center.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/layout/container.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/layout/container.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/layout/flex.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/layout/flex.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/layout/grid.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/layout/grid.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/layout/list.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/layout/list.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/layout/section.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/layout/section.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/layout/spacer.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/layout/spacer.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/layout/stack.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/layout/stack.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/typography/__init__.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/typography/__init__.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/typography/base.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/typography/blockquote.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/typography/blockquote.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/typography/code.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/typography/code.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/typography/heading.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/typography/heading.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/typography/link.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/typography/link.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/typography/text.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/radix/themes/typography/text.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/react_player/__init__.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/react_player/audio.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/react_player/audio.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/react_player/react_player.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/react_player/react_player.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/react_player/video.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/react_player/video.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/recharts/__init__.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/recharts/__init__.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/recharts/cartesian.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/recharts/cartesian.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/recharts/charts.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/recharts/charts.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/recharts/general.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/recharts/general.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/recharts/polar.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/recharts/polar.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/recharts/recharts.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/sonner/__init__.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/sonner/toast.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/suneditor/__init__.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/suneditor/editor.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/suneditor/editor.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/tags/__init__.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/tags/cond_tag.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/tags/iter_tag.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/tags/match_tag.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/tags/tag.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/components/tags/tagless.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/constants/colors.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/constants/compiler.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/constants/config.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/constants/custom_components.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/constants/event.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/constants/route.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/constants/state.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/constants/style.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/constants/utils.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/custom_components/__init__.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/custom_components/custom_components.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/event.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/experimental/__init__.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/experimental/client_state.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/experimental/hooks.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/experimental/layout.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/experimental/layout.pyi +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/experimental/misc.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/istate/__init__.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/istate/data.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/istate/dynamic.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/istate/proxy.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/istate/storage.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/istate/wrappers.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/middleware/__init__.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/middleware/hydrate_middleware.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/middleware/middleware.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/model.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/page.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/py.typed +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/reflex.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/route.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/style.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/utils/__init__.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/utils/codespaces.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/utils/compat.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/utils/console.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/utils/decorator.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/utils/exceptions.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/utils/export.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/utils/format.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/utils/imports.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/utils/lazy_loader.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/utils/net.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/utils/pyi_generator.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/utils/redir.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/utils/serializers.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/utils/telemetry.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/utils/types.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/vars/__init__.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/vars/base.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/vars/datetime.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/vars/dep_tracking.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/vars/function.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/vars/number.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/vars/object.py +0 -0
- {reflex-0.7.3a1 → reflex-0.7.4a0}/reflex/vars/sequence.py +0 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
**/.DS_Store
|
|
2
|
+
**/*.pyc
|
|
3
|
+
assets/external/*
|
|
4
|
+
dist/*
|
|
5
|
+
examples/
|
|
6
|
+
.web
|
|
7
|
+
.states
|
|
8
|
+
.idea
|
|
9
|
+
.vscode
|
|
10
|
+
.coverage
|
|
11
|
+
.coverage.*
|
|
12
|
+
.venv
|
|
13
|
+
venv
|
|
14
|
+
requirements.txt
|
|
15
|
+
.pyi_generator_last_run
|
|
16
|
+
.pyi_generator_diff
|
|
17
|
+
reflex.db
|
|
18
|
+
.codspeed
|
|
19
|
+
.env
|
|
20
|
+
.env.*
|
|
21
|
+
node_modules
|
|
@@ -1,45 +1,52 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: reflex
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.4a0
|
|
4
4
|
Summary: Web apps in pure Python.
|
|
5
|
-
Keywords: web,framework
|
|
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
5
|
Project-URL: homepage, https://reflex.dev
|
|
11
6
|
Project-URL: repository, https://github.com/reflex-dev/reflex
|
|
12
7
|
Project-URL: documentation, https://reflex.dev/docs/getting-started/introduction
|
|
8
|
+
Author-email: Nikhil Rao <nikhil@reflex.dev>, Alek Petuskey <alek@reflex.dev>, Masen Furer <masen@reflex.dev>, Elijah Ahianyo <elijahahianyo@gmail.com>, Thomas Brandeho <thomas@reflex.dev>, Khaleel Al-Adhami <khaleel@reflex.dev>
|
|
9
|
+
Maintainer-email: Masen Furer <masen@reflex.dev>, Thomas Brandeho <thomas@reflex.dev>, Khaleel Al-Adhami <khaleel@reflex.dev>
|
|
10
|
+
License: Apache-2.0
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Keywords: framework,web
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
13
20
|
Requires-Python: <4.0,>=3.10
|
|
21
|
+
Requires-Dist: alembic<2.0,>=1.11.1
|
|
22
|
+
Requires-Dist: build<2.0,>=1.0.3
|
|
23
|
+
Requires-Dist: charset-normalizer<4.0,>=3.3.2
|
|
24
|
+
Requires-Dist: distro<2.0,>=1.8.0; platform_system == 'Linux'
|
|
14
25
|
Requires-Dist: fastapi!=0.111.0,!=0.111.1,>=0.96.0
|
|
15
26
|
Requires-Dist: gunicorn<24.0,>=20.1.0
|
|
27
|
+
Requires-Dist: httpx<1.0,>=0.25.1
|
|
16
28
|
Requires-Dist: jinja2<4.0,>=3.1.2
|
|
29
|
+
Requires-Dist: lazy-loader>=0.4
|
|
30
|
+
Requires-Dist: packaging<25.0,>=23.1
|
|
31
|
+
Requires-Dist: platformdirs<5.0,>=3.10.0
|
|
17
32
|
Requires-Dist: psutil<8.0,>=5.9.4
|
|
18
33
|
Requires-Dist: pydantic<3.0,>=1.10.21
|
|
34
|
+
Requires-Dist: python-engineio!=4.6.0
|
|
19
35
|
Requires-Dist: python-multipart<0.1,>=0.0.5
|
|
20
36
|
Requires-Dist: python-socketio<6.0,>=5.7.0
|
|
21
37
|
Requires-Dist: redis<6.0,>=4.3.5
|
|
38
|
+
Requires-Dist: reflex-hosting-cli>=0.1.29
|
|
22
39
|
Requires-Dist: rich<14.0,>=13.0.0
|
|
40
|
+
Requires-Dist: setuptools>=75.0
|
|
23
41
|
Requires-Dist: sqlmodel<0.1,>=0.0.14
|
|
42
|
+
Requires-Dist: starlette-admin<1.0,>=0.11.0
|
|
43
|
+
Requires-Dist: tomlkit<1.0,>=0.12.4
|
|
44
|
+
Requires-Dist: twine<7.0,>=4.0.0
|
|
24
45
|
Requires-Dist: typer<1.0,>=0.15.1
|
|
46
|
+
Requires-Dist: typing-extensions>=4.6.0
|
|
25
47
|
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
48
|
Requires-Dist: wheel<1.0,>=0.42.0
|
|
36
|
-
Requires-Dist:
|
|
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
|
+
Requires-Dist: wrapt<2.0,>=1.17.0
|
|
43
50
|
Description-Content-Type: text/markdown
|
|
44
51
|
|
|
45
52
|
<div align="center">
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "reflex"
|
|
3
|
+
version = "0.7.4a0"
|
|
4
|
+
description = "Web apps in pure Python."
|
|
5
|
+
license = { text = "Apache-2.0" }
|
|
6
|
+
authors = [
|
|
7
|
+
{ name = "Nikhil Rao", email = "nikhil@reflex.dev" },
|
|
8
|
+
{ name = "Alek Petuskey", email = "alek@reflex.dev" },
|
|
9
|
+
{ name = "Masen Furer", email = "masen@reflex.dev" },
|
|
10
|
+
{ name = "Elijah Ahianyo", email = "elijahahianyo@gmail.com" },
|
|
11
|
+
{ name = "Thomas Brandeho", email = "thomas@reflex.dev" },
|
|
12
|
+
{ name = "Khaleel Al-Adhami", email = "khaleel@reflex.dev" },
|
|
13
|
+
]
|
|
14
|
+
maintainers = [
|
|
15
|
+
{ name = "Masen Furer", email = "masen@reflex.dev" },
|
|
16
|
+
{ name = "Thomas Brandeho", email = "thomas@reflex.dev" },
|
|
17
|
+
{ name = "Khaleel Al-Adhami", email = "khaleel@reflex.dev" },
|
|
18
|
+
]
|
|
19
|
+
readme = "README.md"
|
|
20
|
+
keywords = ["web", "framework"]
|
|
21
|
+
requires-python = ">=3.10,<4.0"
|
|
22
|
+
dependencies = [
|
|
23
|
+
"alembic >=1.11.1,<2.0",
|
|
24
|
+
"build >=1.0.3,<2.0",
|
|
25
|
+
"charset-normalizer >=3.3.2,<4.0",
|
|
26
|
+
"distro >=1.8.0,<2.0; platform_system == 'Linux'",
|
|
27
|
+
"fastapi >=0.96.0,!=0.111.0,!=0.111.1",
|
|
28
|
+
"gunicorn >=20.1.0,<24.0",
|
|
29
|
+
"httpx >=0.25.1,<1.0",
|
|
30
|
+
"jinja2 >=3.1.2,<4.0",
|
|
31
|
+
"lazy_loader >=0.4",
|
|
32
|
+
"packaging >=23.1,<25.0",
|
|
33
|
+
"platformdirs >=3.10.0,<5.0",
|
|
34
|
+
"psutil >=5.9.4,<8.0",
|
|
35
|
+
"pydantic >=1.10.21,<3.0",
|
|
36
|
+
"python-engineio !=4.6.0",
|
|
37
|
+
"python-multipart >=0.0.5,<0.1",
|
|
38
|
+
"python-socketio >=5.7.0,<6.0",
|
|
39
|
+
"redis >=4.3.5,<6.0",
|
|
40
|
+
"reflex-hosting-cli >=0.1.29",
|
|
41
|
+
"rich >=13.0.0,<14.0",
|
|
42
|
+
"setuptools >=75.0",
|
|
43
|
+
"starlette-admin >=0.11.0,<1.0",
|
|
44
|
+
"sqlmodel >=0.0.14,<0.1",
|
|
45
|
+
"tomlkit >=0.12.4,<1.0",
|
|
46
|
+
"twine >=4.0.0,<7.0",
|
|
47
|
+
"typer >=0.15.1,<1.0",
|
|
48
|
+
"typing_extensions >=4.6.0",
|
|
49
|
+
"uvicorn >=0.20.0",
|
|
50
|
+
"wheel >=0.42.0,<1.0",
|
|
51
|
+
"wrapt >=1.17.0,<2.0",
|
|
52
|
+
]
|
|
53
|
+
classifiers = [
|
|
54
|
+
"Development Status :: 4 - Beta",
|
|
55
|
+
"License :: OSI Approved :: Apache Software License",
|
|
56
|
+
"Programming Language :: Python :: 3",
|
|
57
|
+
"Programming Language :: Python :: 3.10",
|
|
58
|
+
"Programming Language :: Python :: 3.11",
|
|
59
|
+
"Programming Language :: Python :: 3.12",
|
|
60
|
+
"Programming Language :: Python :: 3.13",
|
|
61
|
+
]
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
[project.urls]
|
|
65
|
+
homepage = "https://reflex.dev"
|
|
66
|
+
repository = "https://github.com/reflex-dev/reflex"
|
|
67
|
+
documentation = "https://reflex.dev/docs/getting-started/introduction"
|
|
68
|
+
|
|
69
|
+
[project.scripts]
|
|
70
|
+
reflex = "reflex.reflex:cli"
|
|
71
|
+
|
|
72
|
+
[build-system]
|
|
73
|
+
requires = ["hatchling"]
|
|
74
|
+
build-backend = "hatchling.build"
|
|
75
|
+
|
|
76
|
+
[tool.hatch.build]
|
|
77
|
+
include = ["reflex"]
|
|
78
|
+
|
|
79
|
+
[tool.pyright]
|
|
80
|
+
reportIncompatibleMethodOverride = false
|
|
81
|
+
|
|
82
|
+
[tool.ruff]
|
|
83
|
+
target-version = "py310"
|
|
84
|
+
output-format = "concise"
|
|
85
|
+
lint.isort.split-on-trailing-comma = false
|
|
86
|
+
lint.select = [
|
|
87
|
+
"ANN001",
|
|
88
|
+
"B",
|
|
89
|
+
"C4",
|
|
90
|
+
"D",
|
|
91
|
+
"E",
|
|
92
|
+
"ERA",
|
|
93
|
+
"F",
|
|
94
|
+
"FURB",
|
|
95
|
+
"I",
|
|
96
|
+
"N",
|
|
97
|
+
"PERF",
|
|
98
|
+
"PGH",
|
|
99
|
+
"PTH",
|
|
100
|
+
"RUF",
|
|
101
|
+
"SIM",
|
|
102
|
+
"T",
|
|
103
|
+
"TRY",
|
|
104
|
+
"W",
|
|
105
|
+
]
|
|
106
|
+
lint.ignore = [
|
|
107
|
+
"B008",
|
|
108
|
+
"D205",
|
|
109
|
+
"E501",
|
|
110
|
+
"F403",
|
|
111
|
+
"SIM115",
|
|
112
|
+
"RUF006",
|
|
113
|
+
"RUF008",
|
|
114
|
+
"RUF012",
|
|
115
|
+
"TRY0",
|
|
116
|
+
]
|
|
117
|
+
lint.pydocstyle.convention = "google"
|
|
118
|
+
|
|
119
|
+
[tool.ruff.lint.per-file-ignores]
|
|
120
|
+
"__init__.py" = ["F401"]
|
|
121
|
+
"tests/*.py" = ["ANN001", "D100", "D103", "D104", "B018", "PERF", "T", "N"]
|
|
122
|
+
"benchmarks/*.py" = ["ANN001", "D100", "D103", "D104", "B018", "PERF", "T", "N"]
|
|
123
|
+
"reflex/.templates/*.py" = ["D100", "D103", "D104"]
|
|
124
|
+
"*.pyi" = ["D301", "D415", "D417", "D418", "E742", "N", "PGH"]
|
|
125
|
+
"pyi_generator.py" = ["N802"]
|
|
126
|
+
"reflex/constants/*.py" = ["N"]
|
|
127
|
+
"*/blank.py" = ["I001"]
|
|
128
|
+
|
|
129
|
+
[tool.pytest.ini_options]
|
|
130
|
+
filterwarnings = "ignore:fields may not start with an underscore:RuntimeWarning"
|
|
131
|
+
asyncio_default_fixture_loop_scope = "function"
|
|
132
|
+
asyncio_mode = "auto"
|
|
133
|
+
|
|
134
|
+
[tool.codespell]
|
|
135
|
+
skip = "docs/*,*.html,examples/*, *.pyi, poetry.lock, uv.lock"
|
|
136
|
+
ignore-words-list = "te, TreeE"
|
|
137
|
+
|
|
138
|
+
[dependency-groups]
|
|
139
|
+
dev = [
|
|
140
|
+
"asynctest >=0.13.0,<1.0",
|
|
141
|
+
"darglint >=1.8.1,<2.0",
|
|
142
|
+
"dill >=0.3.8",
|
|
143
|
+
"granian[reload] >= 2.0.0",
|
|
144
|
+
"numpy >=2.2.3,<3.0",
|
|
145
|
+
"pandas >=2.1.1,<3.0",
|
|
146
|
+
"pillow >=10.0.0,<12.0",
|
|
147
|
+
"playwright >=1.46.0",
|
|
148
|
+
"plotly >=5.13.0,<7.0",
|
|
149
|
+
"pre-commit >=4.1.0,<5.0",
|
|
150
|
+
"psycopg[binary] >=3.2.6,<4.0",
|
|
151
|
+
"pyright >=1.1.396,<1.2",
|
|
152
|
+
"pytest >=7.1.2,<9.0",
|
|
153
|
+
"pytest-asyncio >=0.24.0",
|
|
154
|
+
"pytest-benchmark >=4.0.0,<6.0",
|
|
155
|
+
"pytest-codspeed >=3.1.2,<4.0.0",
|
|
156
|
+
"pytest-cov >=4.0.0,<7.0",
|
|
157
|
+
"pytest-mock >=3.10.0,<4.0",
|
|
158
|
+
"pytest-playwright >=0.5.1",
|
|
159
|
+
"pytest-retry >=1.7.0,<2.0",
|
|
160
|
+
"pytest-split >=0.10.0,<1.0",
|
|
161
|
+
"ruff ==0.9.10",
|
|
162
|
+
"selenium >=4.11.0,<5.0",
|
|
163
|
+
"toml >=0.10.2,<1.0",
|
|
164
|
+
]
|
|
@@ -1063,7 +1063,7 @@ class App(MiddlewareMixin, LifespanMixin):
|
|
|
1063
1063
|
with stateful_pages_marker.open("r") as f:
|
|
1064
1064
|
stateful_pages = json.load(f)
|
|
1065
1065
|
for route in stateful_pages:
|
|
1066
|
-
console.
|
|
1066
|
+
console.debug(f"BE Evaluating stateful page: {route}")
|
|
1067
1067
|
self._compile_page(route, save_page=False)
|
|
1068
1068
|
self._enable_state()
|
|
1069
1069
|
self._add_optional_endpoints()
|
|
@@ -74,6 +74,7 @@ class MiddlewareMixin(AppMixin):
|
|
|
74
74
|
Returns:
|
|
75
75
|
The state update to return.
|
|
76
76
|
"""
|
|
77
|
+
out = update
|
|
77
78
|
for middleware in self._middlewares:
|
|
78
79
|
if asyncio.iscoroutinefunction(middleware.postprocess):
|
|
79
80
|
out = await middleware.postprocess(
|
|
@@ -89,6 +90,4 @@ class MiddlewareMixin(AppMixin):
|
|
|
89
90
|
event=event,
|
|
90
91
|
update=update,
|
|
91
92
|
)
|
|
92
|
-
|
|
93
|
-
return out # pyright: ignore [reportReturnType]
|
|
94
|
-
return update
|
|
93
|
+
return out # pyright: ignore[reportReturnType]
|
|
@@ -19,6 +19,7 @@ from reflex.components.component import (
|
|
|
19
19
|
from reflex.config import environment, get_config
|
|
20
20
|
from reflex.state import BaseState
|
|
21
21
|
from reflex.style import SYSTEM_COLOR_MODE
|
|
22
|
+
from reflex.utils import console, path_ops
|
|
22
23
|
from reflex.utils.exec import is_prod_mode
|
|
23
24
|
from reflex.utils.imports import ImportVar
|
|
24
25
|
from reflex.utils.prerequisites import get_web_dir
|
|
@@ -190,18 +191,74 @@ def _compile_root_stylesheet(stylesheets: list[str]) -> str:
|
|
|
190
191
|
if get_config().tailwind is not None
|
|
191
192
|
else []
|
|
192
193
|
)
|
|
194
|
+
|
|
195
|
+
failed_to_import_sass = False
|
|
193
196
|
for stylesheet in stylesheets:
|
|
194
197
|
if not utils.is_valid_url(stylesheet):
|
|
195
198
|
# check if stylesheet provided exists.
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
+
assets_app_path = Path.cwd() / constants.Dirs.APP_ASSETS
|
|
200
|
+
stylesheet_full_path = assets_app_path / stylesheet.strip("/")
|
|
201
|
+
|
|
199
202
|
if not stylesheet_full_path.exists():
|
|
200
203
|
raise FileNotFoundError(
|
|
201
204
|
f"The stylesheet file {stylesheet_full_path} does not exist."
|
|
202
205
|
)
|
|
203
|
-
|
|
206
|
+
|
|
207
|
+
if stylesheet_full_path.is_dir():
|
|
208
|
+
# NOTE: this can create an infinite loop, for example:
|
|
209
|
+
# assets/
|
|
210
|
+
# | dir_a/
|
|
211
|
+
# | | dir_c/ (symlink to "assets/dir_a")
|
|
212
|
+
# | dir_b/
|
|
213
|
+
# so to avoid the infinite loop, we don't include symbolic links
|
|
214
|
+
stylesheets += [
|
|
215
|
+
str(p.relative_to(assets_app_path))
|
|
216
|
+
for p in stylesheet_full_path.iterdir()
|
|
217
|
+
if not (p.is_symlink() and p.is_dir())
|
|
218
|
+
]
|
|
219
|
+
continue
|
|
220
|
+
|
|
221
|
+
if (
|
|
222
|
+
stylesheet_full_path.suffix[1:].lower()
|
|
223
|
+
in constants.Reflex.STYLESHEETS_SUPPORTED
|
|
224
|
+
):
|
|
225
|
+
target = (
|
|
226
|
+
Path.cwd()
|
|
227
|
+
/ constants.Dirs.WEB
|
|
228
|
+
/ constants.Dirs.STYLES
|
|
229
|
+
/ (stylesheet.rsplit(".", 1)[0].strip("/") + ".css")
|
|
230
|
+
)
|
|
231
|
+
target.parent.mkdir(parents=True, exist_ok=True)
|
|
232
|
+
|
|
233
|
+
if stylesheet_full_path.suffix == ".css":
|
|
234
|
+
path_ops.cp(src=stylesheet_full_path, dest=target, overwrite=True)
|
|
235
|
+
else:
|
|
236
|
+
try:
|
|
237
|
+
from sass import compile as sass_compile
|
|
238
|
+
|
|
239
|
+
target.write_text(
|
|
240
|
+
data=sass_compile(
|
|
241
|
+
filename=str(stylesheet_full_path),
|
|
242
|
+
output_style="compressed",
|
|
243
|
+
),
|
|
244
|
+
encoding="utf8",
|
|
245
|
+
)
|
|
246
|
+
except ImportError:
|
|
247
|
+
failed_to_import_sass = True
|
|
248
|
+
else:
|
|
249
|
+
raise FileNotFoundError(
|
|
250
|
+
f'The stylesheet file "{stylesheet_full_path}" is not a valid file.'
|
|
251
|
+
)
|
|
252
|
+
|
|
253
|
+
stylesheet = f"./{stylesheet.rsplit('.', 1)[0].strip('/')}.css"
|
|
254
|
+
|
|
204
255
|
sheets.append(stylesheet) if stylesheet not in sheets else None
|
|
256
|
+
|
|
257
|
+
if failed_to_import_sass:
|
|
258
|
+
console.error(
|
|
259
|
+
'The `libsass` package is required to compile sass/scss stylesheet files. Run `pip install "libsass>=0.23.0"`.'
|
|
260
|
+
)
|
|
261
|
+
|
|
205
262
|
return templates.STYLE.render(stylesheets=sheets)
|
|
206
263
|
|
|
207
264
|
|
|
@@ -71,7 +71,7 @@ class Plotly(NoSSRComponent):
|
|
|
71
71
|
|
|
72
72
|
library = "react-plotly.js@2.6.0"
|
|
73
73
|
|
|
74
|
-
lib_dependencies: list[str] = ["plotly.js@
|
|
74
|
+
lib_dependencies: list[str] = ["plotly.js@3.0.1"]
|
|
75
75
|
|
|
76
76
|
tag = "Plot"
|
|
77
77
|
|
|
@@ -289,7 +289,7 @@ class PlotlyBasic(Plotly):
|
|
|
289
289
|
|
|
290
290
|
library = "react-plotly.js@2.6.0"
|
|
291
291
|
|
|
292
|
-
lib_dependencies: list[str] = ["plotly.js-basic-dist-min@3.0.
|
|
292
|
+
lib_dependencies: list[str] = ["plotly.js-basic-dist-min@3.0.1"]
|
|
293
293
|
|
|
294
294
|
def add_imports(self) -> ImportDict | list[ImportDict]:
|
|
295
295
|
"""Add imports for the plotly basic component.
|
|
@@ -315,7 +315,7 @@ class PlotlyCartesian(Plotly):
|
|
|
315
315
|
|
|
316
316
|
library = "react-plotly.js@2.6.0"
|
|
317
317
|
|
|
318
|
-
lib_dependencies: list[str] = ["plotly.js-cartesian-dist-min@3.0.
|
|
318
|
+
lib_dependencies: list[str] = ["plotly.js-cartesian-dist-min@3.0.1"]
|
|
319
319
|
|
|
320
320
|
def add_imports(self) -> ImportDict | list[ImportDict]:
|
|
321
321
|
"""Add imports for the plotly cartesian component.
|
|
@@ -341,7 +341,7 @@ class PlotlyGeo(Plotly):
|
|
|
341
341
|
|
|
342
342
|
library = "react-plotly.js@2.6.0"
|
|
343
343
|
|
|
344
|
-
lib_dependencies: list[str] = ["plotly.js-geo-dist-min@3.0.
|
|
344
|
+
lib_dependencies: list[str] = ["plotly.js-geo-dist-min@3.0.1"]
|
|
345
345
|
|
|
346
346
|
def add_imports(self) -> ImportDict | list[ImportDict]:
|
|
347
347
|
"""Add imports for the plotly geo component.
|
|
@@ -367,7 +367,7 @@ class PlotlyGl3d(Plotly):
|
|
|
367
367
|
|
|
368
368
|
library = "react-plotly.js@2.6.0"
|
|
369
369
|
|
|
370
|
-
lib_dependencies: list[str] = ["plotly.js-gl3d-dist-min@3.0.
|
|
370
|
+
lib_dependencies: list[str] = ["plotly.js-gl3d-dist-min@3.0.1"]
|
|
371
371
|
|
|
372
372
|
def add_imports(self) -> ImportDict | list[ImportDict]:
|
|
373
373
|
"""Add imports for the plotly 3d component.
|
|
@@ -393,7 +393,7 @@ class PlotlyGl2d(Plotly):
|
|
|
393
393
|
|
|
394
394
|
library = "react-plotly.js@2.6.0"
|
|
395
395
|
|
|
396
|
-
lib_dependencies: list[str] = ["plotly.js-gl2d-dist-min@3.0.
|
|
396
|
+
lib_dependencies: list[str] = ["plotly.js-gl2d-dist-min@3.0.1"]
|
|
397
397
|
|
|
398
398
|
def add_imports(self) -> ImportDict | list[ImportDict]:
|
|
399
399
|
"""Add imports for the plotly 2d component.
|
|
@@ -419,7 +419,7 @@ class PlotlyMapbox(Plotly):
|
|
|
419
419
|
|
|
420
420
|
library = "react-plotly.js@2.6.0"
|
|
421
421
|
|
|
422
|
-
lib_dependencies: list[str] = ["plotly.js-mapbox-dist-min@3.0.
|
|
422
|
+
lib_dependencies: list[str] = ["plotly.js-mapbox-dist-min@3.0.1"]
|
|
423
423
|
|
|
424
424
|
def add_imports(self) -> ImportDict | list[ImportDict]:
|
|
425
425
|
"""Add imports for the plotly mapbox component.
|
|
@@ -445,7 +445,7 @@ class PlotlyFinance(Plotly):
|
|
|
445
445
|
|
|
446
446
|
library = "react-plotly.js@2.6.0"
|
|
447
447
|
|
|
448
|
-
lib_dependencies: list[str] = ["plotly.js-finance-dist-min@3.0.
|
|
448
|
+
lib_dependencies: list[str] = ["plotly.js-finance-dist-min@3.0.1"]
|
|
449
449
|
|
|
450
450
|
def add_imports(self) -> ImportDict | list[ImportDict]:
|
|
451
451
|
"""Add imports for the plotly finance component.
|
|
@@ -471,7 +471,7 @@ class PlotlyStrict(Plotly):
|
|
|
471
471
|
|
|
472
472
|
library = "react-plotly.js@2.6.0"
|
|
473
473
|
|
|
474
|
-
lib_dependencies: list[str] = ["plotly.js-strict-dist-min@3.0.
|
|
474
|
+
lib_dependencies: list[str] = ["plotly.js-strict-dist-min@3.0.1"]
|
|
475
475
|
|
|
476
476
|
def add_imports(self) -> ImportDict | list[ImportDict]:
|
|
477
477
|
"""Add imports for the plotly strict component.
|
|
@@ -8,7 +8,7 @@ from reflex.components.component import Component, MemoizationLeaf, NoSSRCompone
|
|
|
8
8
|
class Recharts(Component):
|
|
9
9
|
"""A component that wraps a recharts lib."""
|
|
10
10
|
|
|
11
|
-
library = "recharts@2.15.
|
|
11
|
+
library = "recharts@2.15.1"
|
|
12
12
|
|
|
13
13
|
def _get_style(self) -> dict:
|
|
14
14
|
return {"wrapperStyle": self.style}
|
|
@@ -17,7 +17,7 @@ class Recharts(Component):
|
|
|
17
17
|
class RechartsCharts(NoSSRComponent, MemoizationLeaf):
|
|
18
18
|
"""A component that wraps a recharts lib."""
|
|
19
19
|
|
|
20
|
-
library = "recharts@2.15.
|
|
20
|
+
library = "recharts@2.15.1"
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
LiteralAnimationEasing = Literal["ease", "ease-in", "ease-out", "ease-in-out", "linear"]
|
|
@@ -172,7 +172,7 @@ class ToastProps(PropsBase, NoExtrasAllowedProps):
|
|
|
172
172
|
class Toaster(Component):
|
|
173
173
|
"""A Toaster Component for displaying toast notifications."""
|
|
174
174
|
|
|
175
|
-
library: str | None = "sonner@
|
|
175
|
+
library: str | None = "sonner@2.0.1"
|
|
176
176
|
|
|
177
177
|
tag = "Toaster"
|
|
178
178
|
|
|
@@ -596,7 +596,7 @@ class EnvironmentVariables:
|
|
|
596
596
|
constants.CompileContext.UNDEFINED, internal=True
|
|
597
597
|
)
|
|
598
598
|
|
|
599
|
-
# Whether to use npm over bun to install frontend
|
|
599
|
+
# Whether to use npm over bun to install and run the frontend.
|
|
600
600
|
REFLEX_USE_NPM: EnvVar[bool] = env_var(False)
|
|
601
601
|
|
|
602
602
|
# The npm registry to use.
|
|
@@ -614,9 +614,6 @@ class EnvironmentVariables:
|
|
|
614
614
|
# Whether to use the system installed bun. If set to false, bun will be bundled with the app.
|
|
615
615
|
REFLEX_USE_SYSTEM_BUN: EnvVar[bool] = env_var(False)
|
|
616
616
|
|
|
617
|
-
# Whether to use the system installed node and npm. If set to false, node and npm will be bundled with the app.
|
|
618
|
-
REFLEX_USE_SYSTEM_NODE: EnvVar[bool] = env_var(False)
|
|
619
|
-
|
|
620
617
|
# The working directory for the next.js commands.
|
|
621
618
|
REFLEX_WEB_WORKDIR: EnvVar[Path] = env_var(Path(constants.Dirs.WEB))
|
|
622
619
|
|
|
@@ -964,7 +961,7 @@ class Config(Base):
|
|
|
964
961
|
env_var = "***"
|
|
965
962
|
|
|
966
963
|
if value != getattr(self, key):
|
|
967
|
-
console.
|
|
964
|
+
console.debug(
|
|
968
965
|
f"Overriding config value {key} with env var {key.upper()}={env_var}",
|
|
969
966
|
dedupe=True,
|
|
970
967
|
)
|
|
@@ -45,7 +45,7 @@ from .config import (
|
|
|
45
45
|
)
|
|
46
46
|
from .custom_components import CustomComponents
|
|
47
47
|
from .event import Endpoint, EventTriggers, SocketEvent
|
|
48
|
-
from .installer import Bun,
|
|
48
|
+
from .installer import Bun, Node, PackageJson
|
|
49
49
|
from .route import (
|
|
50
50
|
ROUTE_NOT_FOUND,
|
|
51
51
|
ROUTER,
|
|
@@ -94,7 +94,6 @@ __all__ = [
|
|
|
94
94
|
"EventTriggers",
|
|
95
95
|
"Expiration",
|
|
96
96
|
"Ext",
|
|
97
|
-
"Fnm",
|
|
98
97
|
"GitIgnore",
|
|
99
98
|
"Hooks",
|
|
100
99
|
"Imports",
|
|
@@ -88,6 +88,9 @@ class Reflex(SimpleNamespace):
|
|
|
88
88
|
|
|
89
89
|
RELEASES_URL = "https://api.github.com/repos/reflex-dev/templates/releases"
|
|
90
90
|
|
|
91
|
+
# The reflex stylesheet language supported
|
|
92
|
+
STYLESHEETS_SUPPORTED = ["css", "sass", "scss"]
|
|
93
|
+
|
|
91
94
|
|
|
92
95
|
class ReflexHostingCLI(SimpleNamespace):
|
|
93
96
|
"""Base constants concerning Reflex Hosting CLI."""
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"""File for constants related to the installation process. (Bun/Node)."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from types import SimpleNamespace
|
|
6
|
+
|
|
7
|
+
from .base import IS_WINDOWS
|
|
8
|
+
from .utils import classproperty
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
# Bun config.
|
|
12
|
+
class Bun(SimpleNamespace):
|
|
13
|
+
"""Bun constants."""
|
|
14
|
+
|
|
15
|
+
# The Bun version.
|
|
16
|
+
VERSION = "1.2.4"
|
|
17
|
+
|
|
18
|
+
# Min Bun Version
|
|
19
|
+
MIN_VERSION = "1.2.4"
|
|
20
|
+
|
|
21
|
+
# URL to bun install script.
|
|
22
|
+
INSTALL_URL = "https://raw.githubusercontent.com/reflex-dev/reflex/main/scripts/bun_install.sh"
|
|
23
|
+
|
|
24
|
+
# URL to windows install script.
|
|
25
|
+
WINDOWS_INSTALL_URL = (
|
|
26
|
+
"https://raw.githubusercontent.com/reflex-dev/reflex/main/scripts/install.ps1"
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
# Path of the bunfig file
|
|
30
|
+
CONFIG_PATH = "bunfig.toml"
|
|
31
|
+
|
|
32
|
+
@classproperty
|
|
33
|
+
@classmethod
|
|
34
|
+
def ROOT_PATH(cls):
|
|
35
|
+
"""The directory to store the bun.
|
|
36
|
+
|
|
37
|
+
Returns:
|
|
38
|
+
The directory to store the bun.
|
|
39
|
+
"""
|
|
40
|
+
from reflex.config import environment
|
|
41
|
+
|
|
42
|
+
return environment.REFLEX_DIR.get() / "bun"
|
|
43
|
+
|
|
44
|
+
@classproperty
|
|
45
|
+
@classmethod
|
|
46
|
+
def DEFAULT_PATH(cls):
|
|
47
|
+
"""Default bun path.
|
|
48
|
+
|
|
49
|
+
Returns:
|
|
50
|
+
The default bun path.
|
|
51
|
+
"""
|
|
52
|
+
return cls.ROOT_PATH / "bin" / ("bun" if not IS_WINDOWS else "bun.exe")
|
|
53
|
+
|
|
54
|
+
DEFAULT_CONFIG = """
|
|
55
|
+
[install]
|
|
56
|
+
registry = "{registry}"
|
|
57
|
+
"""
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
# Node / NPM config
|
|
61
|
+
class Node(SimpleNamespace):
|
|
62
|
+
"""Node/ NPM constants."""
|
|
63
|
+
|
|
64
|
+
# The Node version.
|
|
65
|
+
VERSION = "22.11.0"
|
|
66
|
+
# The minimum required node version.
|
|
67
|
+
MIN_VERSION = "18.18.0"
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
class PackageJson(SimpleNamespace):
|
|
71
|
+
"""Constants used to build the package.json file."""
|
|
72
|
+
|
|
73
|
+
class Commands(SimpleNamespace):
|
|
74
|
+
"""The commands to define in package.json."""
|
|
75
|
+
|
|
76
|
+
DEV = "next dev"
|
|
77
|
+
EXPORT = "next build"
|
|
78
|
+
EXPORT_SITEMAP = "next build && next-sitemap"
|
|
79
|
+
PROD = "next start"
|
|
80
|
+
|
|
81
|
+
PATH = "package.json"
|
|
82
|
+
|
|
83
|
+
DEPENDENCIES = {
|
|
84
|
+
"@emotion/react": "11.14.0",
|
|
85
|
+
"axios": "1.8.3",
|
|
86
|
+
"json5": "2.2.3",
|
|
87
|
+
"next": "15.0.4",
|
|
88
|
+
"next-sitemap": "4.2.3",
|
|
89
|
+
"next-themes": "0.4.6",
|
|
90
|
+
"react": "19.0.0",
|
|
91
|
+
"react-dom": "19.0.0",
|
|
92
|
+
"react-focus-lock": "2.13.6",
|
|
93
|
+
"socket.io-client": "4.8.1",
|
|
94
|
+
"universal-cookie": "7.2.2",
|
|
95
|
+
}
|
|
96
|
+
DEV_DEPENDENCIES = {
|
|
97
|
+
"autoprefixer": "10.4.21",
|
|
98
|
+
"postcss": "8.5.3",
|
|
99
|
+
"postcss-import": "16.1.0",
|
|
100
|
+
}
|
|
101
|
+
OVERRIDES = {
|
|
102
|
+
# This should always match the `react` version in DEPENDENCIES for recharts compatibility.
|
|
103
|
+
"react-is": "19.0.0"
|
|
104
|
+
}
|
|
@@ -905,7 +905,14 @@ class BaseState(Base, ABC, extra=pydantic.Extra.allow):
|
|
|
905
905
|
]
|
|
906
906
|
if len(parent_states) >= 2:
|
|
907
907
|
raise ValueError(f"Only one parent state is allowed {parent_states}.")
|
|
908
|
-
|
|
908
|
+
# The first non-mixin state in the mro is our parent.
|
|
909
|
+
for base in cls.mro()[1:]:
|
|
910
|
+
if base._mixin or not issubclass(base, BaseState):
|
|
911
|
+
continue
|
|
912
|
+
if base is BaseState:
|
|
913
|
+
break
|
|
914
|
+
return base
|
|
915
|
+
return None # No known parent
|
|
909
916
|
|
|
910
917
|
@classmethod
|
|
911
918
|
@functools.lru_cache()
|