reflex 0.8.7__tar.gz → 0.8.8__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.8.7 → reflex-0.8.8}/PKG-INFO +3 -4
- {reflex-0.8.7 → reflex-0.8.8}/pyproject.toml +4 -5
- {reflex-0.8.7 → reflex-0.8.8}/reflex/.templates/web/utils/state.js +5 -5
- {reflex-0.8.7 → reflex-0.8.8}/reflex/app.py +15 -7
- {reflex-0.8.7 → reflex-0.8.8}/reflex/app_mixins/lifespan.py +8 -2
- {reflex-0.8.7 → reflex-0.8.8}/reflex/compiler/compiler.py +14 -14
- reflex-0.8.8/reflex/compiler/templates.py +700 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/compiler/utils.py +30 -21
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/base/bare.py +17 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/component.py +38 -34
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/core/cond.py +6 -12
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/core/foreach.py +1 -1
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/core/match.py +83 -60
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/dynamic.py +3 -3
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/el/elements/forms.py +31 -14
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/el/elements/forms.pyi +0 -5
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/lucide/icon.py +2 -1
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/lucide/icon.pyi +2 -1
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/markdown/markdown.py +2 -2
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/primitives/accordion.py +1 -1
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/primitives/drawer.py +10 -22
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/primitives/drawer.pyi +4 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/primitives/form.py +1 -1
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/primitives/slider.py +1 -1
- reflex-0.8.8/reflex/components/tags/cond_tag.py +31 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/tags/iter_tag.py +0 -26
- reflex-0.8.8/reflex/components/tags/match_tag.py +31 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/tags/tag.py +3 -6
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/tags/tagless.py +14 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/constants/base.py +0 -2
- {reflex-0.8.7 → reflex-0.8.8}/reflex/constants/compiler.py +1 -1
- {reflex-0.8.7 → reflex-0.8.8}/reflex/constants/installer.py +4 -4
- {reflex-0.8.7 → reflex-0.8.8}/reflex/custom_components/custom_components.py +202 -15
- {reflex-0.8.7 → reflex-0.8.8}/reflex/event.py +1 -1
- {reflex-0.8.7 → reflex-0.8.8}/reflex/experimental/client_state.py +1 -1
- {reflex-0.8.7 → reflex-0.8.8}/reflex/istate/manager.py +2 -1
- {reflex-0.8.7 → reflex-0.8.8}/reflex/plugins/shared_tailwind.py +87 -62
- {reflex-0.8.7 → reflex-0.8.8}/reflex/plugins/tailwind_v3.py +2 -2
- {reflex-0.8.7 → reflex-0.8.8}/reflex/plugins/tailwind_v4.py +4 -4
- {reflex-0.8.7 → reflex-0.8.8}/reflex/state.py +5 -1
- {reflex-0.8.7 → reflex-0.8.8}/reflex/utils/format.py +3 -4
- {reflex-0.8.7 → reflex-0.8.8}/reflex/utils/frontend_skeleton.py +2 -2
- {reflex-0.8.7 → reflex-0.8.8}/reflex/utils/imports.py +18 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/utils/pyi_generator.py +10 -2
- {reflex-0.8.7 → reflex-0.8.8}/reflex/utils/telemetry.py +4 -1
- {reflex-0.8.7 → reflex-0.8.8}/reflex/utils/templates.py +1 -6
- reflex-0.8.7/reflex/.templates/jinja/app/rxconfig.py.jinja2 +0 -9
- reflex-0.8.7/reflex/.templates/jinja/custom_components/README.md.jinja2 +0 -9
- reflex-0.8.7/reflex/.templates/jinja/custom_components/__init__.py.jinja2 +0 -1
- reflex-0.8.7/reflex/.templates/jinja/custom_components/demo_app.py.jinja2 +0 -39
- reflex-0.8.7/reflex/.templates/jinja/custom_components/pyproject.toml.jinja2 +0 -25
- reflex-0.8.7/reflex/.templates/jinja/custom_components/src.py.jinja2 +0 -57
- reflex-0.8.7/reflex/.templates/jinja/web/package.json.jinja2 +0 -27
- reflex-0.8.7/reflex/.templates/jinja/web/pages/_app.js.jinja2 +0 -62
- reflex-0.8.7/reflex/.templates/jinja/web/pages/_document.js.jinja2 +0 -9
- reflex-0.8.7/reflex/.templates/jinja/web/pages/base_page.js.jinja2 +0 -21
- reflex-0.8.7/reflex/.templates/jinja/web/pages/component.js.jinja2 +0 -2
- reflex-0.8.7/reflex/.templates/jinja/web/pages/custom_component.js.jinja2 +0 -22
- reflex-0.8.7/reflex/.templates/jinja/web/pages/index.js.jinja2 +0 -18
- reflex-0.8.7/reflex/.templates/jinja/web/pages/macros.js.jinja2 +0 -38
- reflex-0.8.7/reflex/.templates/jinja/web/pages/stateful_component.js.jinja2 +0 -15
- reflex-0.8.7/reflex/.templates/jinja/web/pages/stateful_components.js.jinja2 +0 -5
- reflex-0.8.7/reflex/.templates/jinja/web/pages/utils.js.jinja2 +0 -93
- reflex-0.8.7/reflex/.templates/jinja/web/styles/styles.css.jinja2 +0 -6
- reflex-0.8.7/reflex/.templates/jinja/web/utils/context.js.jinja2 +0 -129
- reflex-0.8.7/reflex/.templates/jinja/web/utils/theme.js.jinja2 +0 -1
- reflex-0.8.7/reflex/.templates/jinja/web/vite.config.js.jinja2 +0 -74
- reflex-0.8.7/reflex/compiler/templates.py +0 -173
- reflex-0.8.7/reflex/components/tags/cond_tag.py +0 -22
- reflex-0.8.7/reflex/components/tags/match_tag.py +0 -22
- {reflex-0.8.7 → reflex-0.8.8}/.gitignore +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/LICENSE +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/README.md +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/.templates/apps/blank/assets/favicon.ico +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/.templates/apps/blank/code/__init__.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/.templates/apps/blank/code/blank.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/.templates/web/.gitignore +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/.templates/web/app/entry.client.js +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/.templates/web/app/routes.js +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/.templates/web/components/shiki/code.js +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/.templates/web/jsconfig.json +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/.templates/web/postcss.config.js +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/.templates/web/react-router.config.js +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/.templates/web/styles/__reflex_style_reset.css +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/.templates/web/utils/helpers/dataeditor.js +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/.templates/web/utils/helpers/debounce.js +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/.templates/web/utils/helpers/paste.js +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/.templates/web/utils/helpers/range.js +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/.templates/web/utils/helpers/throttle.js +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/.templates/web/utils/react-theme.js +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/.templates/web/vite-plugin-safari-cachebust.js +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/__init__.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/__init__.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/__main__.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/admin.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/app_mixins/__init__.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/app_mixins/middleware.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/app_mixins/mixin.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/assets.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/base.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/compiler/__init__.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/__init__.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/__init__.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/base/__init__.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/base/__init__.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/base/app_wrap.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/base/app_wrap.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/base/body.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/base/body.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/base/document.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/base/document.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/base/error_boundary.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/base/error_boundary.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/base/fragment.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/base/fragment.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/base/link.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/base/link.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/base/meta.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/base/meta.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/base/script.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/base/script.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/base/strict_mode.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/base/strict_mode.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/core/__init__.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/core/__init__.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/core/auto_scroll.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/core/auto_scroll.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/core/banner.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/core/banner.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/core/breakpoints.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/core/clipboard.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/core/clipboard.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/core/colors.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/core/debounce.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/core/debounce.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/core/helmet.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/core/helmet.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/core/html.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/core/html.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/core/layout/__init__.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/core/responsive.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/core/sticky.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/core/sticky.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/core/upload.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/core/upload.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/core/window_events.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/core/window_events.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/datadisplay/__init__.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/datadisplay/__init__.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/datadisplay/code.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/datadisplay/code.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/datadisplay/dataeditor.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/datadisplay/dataeditor.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/datadisplay/logo.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/datadisplay/shiki_code_block.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/datadisplay/shiki_code_block.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/el/__init__.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/el/__init__.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/el/element.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/el/element.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/el/elements/__init__.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/el/elements/__init__.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/el/elements/base.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/el/elements/base.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/el/elements/inline.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/el/elements/inline.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/el/elements/media.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/el/elements/media.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/el/elements/metadata.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/el/elements/metadata.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/el/elements/other.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/el/elements/other.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/el/elements/scripts.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/el/elements/scripts.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/el/elements/sectioning.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/el/elements/sectioning.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/el/elements/tables.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/el/elements/tables.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/el/elements/typography.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/el/elements/typography.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/field.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/gridjs/__init__.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/gridjs/datatable.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/gridjs/datatable.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/literals.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/lucide/__init__.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/markdown/__init__.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/markdown/markdown.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/moment/__init__.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/moment/moment.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/moment/moment.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/plotly/__init__.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/plotly/plotly.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/plotly/plotly.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/props.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/__init__.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/__init__.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/primitives/__init__.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/primitives/__init__.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/primitives/accordion.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/primitives/base.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/primitives/base.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/primitives/form.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/primitives/progress.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/primitives/progress.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/primitives/slider.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/__init__.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/__init__.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/base.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/base.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/color_mode.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/color_mode.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/__init__.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/__init__.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/alert_dialog.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/alert_dialog.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/aspect_ratio.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/aspect_ratio.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/avatar.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/avatar.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/badge.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/badge.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/button.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/button.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/callout.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/callout.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/card.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/card.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/checkbox.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/checkbox.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/checkbox_cards.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/checkbox_cards.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/checkbox_group.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/checkbox_group.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/context_menu.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/context_menu.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/data_list.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/data_list.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/dialog.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/dialog.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/dropdown_menu.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/dropdown_menu.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/hover_card.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/hover_card.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/icon_button.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/icon_button.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/inset.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/inset.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/popover.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/popover.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/progress.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/progress.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/radio.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/radio.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/radio_cards.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/radio_cards.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/radio_group.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/radio_group.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/scroll_area.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/scroll_area.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/segmented_control.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/segmented_control.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/select.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/select.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/separator.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/separator.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/skeleton.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/skeleton.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/slider.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/slider.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/spinner.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/spinner.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/switch.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/switch.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/table.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/table.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/tabs.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/tabs.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/text_area.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/text_area.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/text_field.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/text_field.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/tooltip.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/components/tooltip.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/layout/__init__.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/layout/__init__.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/layout/base.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/layout/base.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/layout/box.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/layout/box.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/layout/center.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/layout/center.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/layout/container.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/layout/container.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/layout/flex.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/layout/flex.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/layout/grid.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/layout/grid.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/layout/list.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/layout/list.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/layout/section.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/layout/section.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/layout/spacer.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/layout/spacer.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/layout/stack.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/layout/stack.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/typography/__init__.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/typography/__init__.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/typography/base.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/typography/blockquote.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/typography/blockquote.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/typography/code.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/typography/code.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/typography/heading.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/typography/heading.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/typography/link.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/typography/link.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/typography/text.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/radix/themes/typography/text.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/react_player/__init__.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/react_player/audio.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/react_player/audio.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/react_player/react_player.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/react_player/react_player.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/react_player/video.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/react_player/video.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/react_router/__init__.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/react_router/dom.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/react_router/dom.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/recharts/__init__.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/recharts/__init__.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/recharts/cartesian.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/recharts/cartesian.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/recharts/charts.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/recharts/charts.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/recharts/general.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/recharts/general.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/recharts/polar.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/recharts/polar.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/recharts/recharts.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/recharts/recharts.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/sonner/__init__.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/sonner/toast.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/sonner/toast.pyi +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/components/tags/__init__.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/config.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/constants/__init__.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/constants/colors.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/constants/config.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/constants/custom_components.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/constants/event.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/constants/route.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/constants/state.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/constants/utils.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/custom_components/__init__.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/environment.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/experimental/__init__.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/experimental/hooks.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/istate/__init__.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/istate/data.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/istate/dynamic.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/istate/proxy.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/istate/storage.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/istate/wrappers.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/middleware/__init__.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/middleware/hydrate_middleware.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/middleware/middleware.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/model.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/page.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/plugins/__init__.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/plugins/_screenshot.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/plugins/base.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/plugins/sitemap.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/py.typed +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/reflex.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/route.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/style.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/testing.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/utils/__init__.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/utils/build.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/utils/codespaces.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/utils/compat.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/utils/console.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/utils/decorator.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/utils/exceptions.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/utils/exec.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/utils/export.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/utils/js_runtimes.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/utils/lazy_loader.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/utils/misc.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/utils/monitoring.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/utils/net.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/utils/path_ops.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/utils/prerequisites.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/utils/processes.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/utils/redir.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/utils/registry.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/utils/rename.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/utils/serializers.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/utils/token_manager.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/utils/types.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/vars/__init__.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/vars/base.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/vars/datetime.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/vars/dep_tracking.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/vars/function.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/vars/number.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/vars/object.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/reflex/vars/sequence.py +0 -0
- {reflex-0.8.7 → reflex-0.8.8}/scripts/hatch_build.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: reflex
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.8
|
|
4
4
|
Summary: Web apps in pure Python.
|
|
5
5
|
Project-URL: homepage, https://reflex.dev
|
|
6
6
|
Project-URL: repository, https://github.com/reflex-dev/reflex
|
|
@@ -21,8 +21,7 @@ Requires-Python: <4.0,>=3.10
|
|
|
21
21
|
Requires-Dist: alembic<2.0,>=1.15.2
|
|
22
22
|
Requires-Dist: click>=8.2
|
|
23
23
|
Requires-Dist: granian[reload]>=2.4.0
|
|
24
|
-
Requires-Dist: httpx<1.0,>=0.
|
|
25
|
-
Requires-Dist: jinja2<4.0,>=3.1.2
|
|
24
|
+
Requires-Dist: httpx<1.0,>=0.23.3
|
|
26
25
|
Requires-Dist: packaging<26,>=24.2
|
|
27
26
|
Requires-Dist: platformdirs<5.0,>=4.3.7
|
|
28
27
|
Requires-Dist: psutil<8.0,>=7.0.0; sys_platform == 'win32'
|
|
@@ -30,7 +29,7 @@ Requires-Dist: pydantic<3.0,>=1.10.21
|
|
|
30
29
|
Requires-Dist: python-multipart<1.0,>=0.0.20
|
|
31
30
|
Requires-Dist: python-socketio<6.0,>=5.12.0
|
|
32
31
|
Requires-Dist: redis<7.0,>=5.2.1
|
|
33
|
-
Requires-Dist: reflex-hosting-cli>=0.1.
|
|
32
|
+
Requires-Dist: reflex-hosting-cli>=0.1.55
|
|
34
33
|
Requires-Dist: rich<15,>=13
|
|
35
34
|
Requires-Dist: sqlmodel<0.1,>=0.0.24
|
|
36
35
|
Requires-Dist: starlette>=0.47.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "reflex"
|
|
3
|
-
version = "0.8.
|
|
3
|
+
version = "0.8.8"
|
|
4
4
|
description = "Web apps in pure Python."
|
|
5
5
|
license.text = "Apache-2.0"
|
|
6
6
|
authors = [
|
|
@@ -23,8 +23,7 @@ dependencies = [
|
|
|
23
23
|
"alembic >=1.15.2,<2.0",
|
|
24
24
|
"click >=8.2",
|
|
25
25
|
"granian[reload] >=2.4.0",
|
|
26
|
-
"httpx >=0.
|
|
27
|
-
"jinja2 >=3.1.2,<4.0",
|
|
26
|
+
"httpx >=0.23.3,<1.0",
|
|
28
27
|
"packaging >=24.2,<26",
|
|
29
28
|
"platformdirs >=4.3.7,<5.0",
|
|
30
29
|
"psutil >=7.0.0,<8.0; sys_platform == 'win32'",
|
|
@@ -32,7 +31,7 @@ dependencies = [
|
|
|
32
31
|
"python-multipart >=0.0.20,<1.0",
|
|
33
32
|
"python-socketio >=5.12.0,<6.0",
|
|
34
33
|
"redis >=5.2.1,<7.0",
|
|
35
|
-
"reflex-hosting-cli >=0.1.
|
|
34
|
+
"reflex-hosting-cli >=0.1.55",
|
|
36
35
|
"rich >=13,<15",
|
|
37
36
|
"sqlmodel >=0.0.24,<0.1",
|
|
38
37
|
"starlette >=0.47.0",
|
|
@@ -233,7 +232,7 @@ fail_fast = true
|
|
|
233
232
|
|
|
234
233
|
[[tool.pre-commit.repos]]
|
|
235
234
|
repo = "https://github.com/astral-sh/ruff-pre-commit"
|
|
236
|
-
rev = "v0.12.
|
|
235
|
+
rev = "v0.12.9"
|
|
237
236
|
hooks = [
|
|
238
237
|
{ id = "ruff-format", args = [
|
|
239
238
|
"reflex",
|
|
@@ -415,7 +415,7 @@ export const applyRestEvent = async (event, socket, navigate, params) => {
|
|
|
415
415
|
if (event.payload.files === undefined || event.payload.files.length === 0) {
|
|
416
416
|
// Submit the event over the websocket to trigger the event handler.
|
|
417
417
|
return await applyEvent(
|
|
418
|
-
|
|
418
|
+
ReflexEvent(event.name, { files: [] }),
|
|
419
419
|
socket,
|
|
420
420
|
navigate,
|
|
421
421
|
params,
|
|
@@ -775,7 +775,7 @@ export const uploadFiles = async (
|
|
|
775
775
|
* @param {string} handler The client handler to process event.
|
|
776
776
|
* @returns The event object.
|
|
777
777
|
*/
|
|
778
|
-
export const
|
|
778
|
+
export const ReflexEvent = (
|
|
779
779
|
name,
|
|
780
780
|
payload = {},
|
|
781
781
|
event_actions = {},
|
|
@@ -987,7 +987,7 @@ export const useEventLoop = (
|
|
|
987
987
|
|
|
988
988
|
window.onerror = function (msg, url, lineNo, columnNo, error) {
|
|
989
989
|
addEvents([
|
|
990
|
-
|
|
990
|
+
ReflexEvent(`${exception_state_name}.handle_frontend_exception`, {
|
|
991
991
|
info: error.name + ": " + error.message + "\n" + error.stack,
|
|
992
992
|
component_stack: "",
|
|
993
993
|
}),
|
|
@@ -999,7 +999,7 @@ export const useEventLoop = (
|
|
|
999
999
|
//https://github.com/mknichel/javascript-errors?tab=readme-ov-file#promise-rejection-events
|
|
1000
1000
|
window.onunhandledrejection = function (event) {
|
|
1001
1001
|
addEvents([
|
|
1002
|
-
|
|
1002
|
+
ReflexEvent(`${exception_state_name}.handle_frontend_exception`, {
|
|
1003
1003
|
info:
|
|
1004
1004
|
event.reason?.name +
|
|
1005
1005
|
": " +
|
|
@@ -1072,7 +1072,7 @@ export const useEventLoop = (
|
|
|
1072
1072
|
if (storage_to_state_map[e.key]) {
|
|
1073
1073
|
const vars = {};
|
|
1074
1074
|
vars[storage_to_state_map[e.key]] = e.newValue;
|
|
1075
|
-
const event =
|
|
1075
|
+
const event = ReflexEvent(
|
|
1076
1076
|
`${state_name}.reflex___state____update_vars_internal_state.update_vars_internal`,
|
|
1077
1077
|
{ vars: vars },
|
|
1078
1078
|
);
|
|
@@ -12,6 +12,7 @@ import inspect
|
|
|
12
12
|
import io
|
|
13
13
|
import json
|
|
14
14
|
import sys
|
|
15
|
+
import time
|
|
15
16
|
import traceback
|
|
16
17
|
import urllib.parse
|
|
17
18
|
from collections.abc import (
|
|
@@ -1310,9 +1311,9 @@ class App(MiddlewareMixin, LifespanMixin):
|
|
|
1310
1311
|
self.head_components,
|
|
1311
1312
|
html_lang=self.html_lang,
|
|
1312
1313
|
html_custom_attrs=(
|
|
1313
|
-
{"suppressHydrationWarning":
|
|
1314
|
+
{"suppressHydrationWarning": True, **self.html_custom_attrs}
|
|
1314
1315
|
if self.html_custom_attrs
|
|
1315
|
-
else {"suppressHydrationWarning":
|
|
1316
|
+
else {"suppressHydrationWarning": True}
|
|
1316
1317
|
),
|
|
1317
1318
|
)
|
|
1318
1319
|
)
|
|
@@ -1582,7 +1583,10 @@ class App(MiddlewareMixin, LifespanMixin):
|
|
|
1582
1583
|
sid=state.router.session.session_id,
|
|
1583
1584
|
)
|
|
1584
1585
|
|
|
1585
|
-
task = asyncio.create_task(
|
|
1586
|
+
task = asyncio.create_task(
|
|
1587
|
+
_coro(),
|
|
1588
|
+
name=f"reflex_background_task|{event.name}|{time.time()}|{event.token}",
|
|
1589
|
+
)
|
|
1586
1590
|
self._background_tasks.add(task)
|
|
1587
1591
|
# Clean up task from background_tasks set when complete.
|
|
1588
1592
|
task.add_done_callback(self._background_tasks.discard)
|
|
@@ -1727,7 +1731,8 @@ async def process(
|
|
|
1727
1731
|
"reload",
|
|
1728
1732
|
data=event,
|
|
1729
1733
|
to=sid,
|
|
1730
|
-
)
|
|
1734
|
+
),
|
|
1735
|
+
name=f"reflex_emit_reload|{event.name}|{time.time()}|{event.token}",
|
|
1731
1736
|
)
|
|
1732
1737
|
return
|
|
1733
1738
|
# re-assign only when the value is different
|
|
@@ -2028,7 +2033,8 @@ class EventNamespace(AsyncNamespace):
|
|
|
2028
2033
|
if disconnect_token:
|
|
2029
2034
|
# Use async cleanup through token manager
|
|
2030
2035
|
task = asyncio.create_task(
|
|
2031
|
-
self._token_manager.disconnect_token(disconnect_token, sid)
|
|
2036
|
+
self._token_manager.disconnect_token(disconnect_token, sid),
|
|
2037
|
+
name=f"reflex_disconnect_token|{disconnect_token}|{time.time()}",
|
|
2032
2038
|
)
|
|
2033
2039
|
# Don't await to avoid blocking disconnect, but handle potential errors
|
|
2034
2040
|
task.add_done_callback(
|
|
@@ -2047,12 +2053,14 @@ class EventNamespace(AsyncNamespace):
|
|
|
2047
2053
|
# If the sid is None, we are not connected to a client. Prevent sending
|
|
2048
2054
|
# updates to all clients.
|
|
2049
2055
|
return
|
|
2050
|
-
|
|
2056
|
+
token = self.sid_to_token.get(sid)
|
|
2057
|
+
if token is None:
|
|
2051
2058
|
console.warn(f"Attempting to send delta to disconnected websocket {sid}")
|
|
2052
2059
|
return
|
|
2053
2060
|
# Creating a task prevents the update from being blocked behind other coroutines.
|
|
2054
2061
|
await asyncio.create_task(
|
|
2055
|
-
self.emit(str(constants.SocketEvent.EVENT), update, to=sid)
|
|
2062
|
+
self.emit(str(constants.SocketEvent.EVENT), update, to=sid),
|
|
2063
|
+
name=f"reflex_emit_event|{token}|{sid}|{time.time()}",
|
|
2056
2064
|
)
|
|
2057
2065
|
|
|
2058
2066
|
async def on_event(self, sid: str, data: Any):
|
|
@@ -7,6 +7,7 @@ import contextlib
|
|
|
7
7
|
import dataclasses
|
|
8
8
|
import functools
|
|
9
9
|
import inspect
|
|
10
|
+
import time
|
|
10
11
|
from collections.abc import Callable, Coroutine
|
|
11
12
|
|
|
12
13
|
from starlette.applications import Starlette
|
|
@@ -36,6 +37,7 @@ class LifespanMixin(AppMixin):
|
|
|
36
37
|
if isinstance(task, asyncio.Task):
|
|
37
38
|
running_tasks.append(task)
|
|
38
39
|
else:
|
|
40
|
+
task_name = task.__name__
|
|
39
41
|
signature = inspect.signature(task)
|
|
40
42
|
if "app" in signature.parameters:
|
|
41
43
|
task = functools.partial(task, app=app)
|
|
@@ -44,7 +46,10 @@ class LifespanMixin(AppMixin):
|
|
|
44
46
|
await stack.enter_async_context(_t)
|
|
45
47
|
console.debug(run_msg.format(type="asynccontextmanager"))
|
|
46
48
|
elif isinstance(_t, Coroutine):
|
|
47
|
-
task_ = asyncio.create_task(
|
|
49
|
+
task_ = asyncio.create_task(
|
|
50
|
+
_t,
|
|
51
|
+
name=f"reflex_lifespan_task|{task_name}|{time.time()}",
|
|
52
|
+
)
|
|
48
53
|
task_.add_done_callback(lambda t: t.result())
|
|
49
54
|
running_tasks.append(task_)
|
|
50
55
|
console.debug(run_msg.format(type="coroutine"))
|
|
@@ -70,9 +75,10 @@ class LifespanMixin(AppMixin):
|
|
|
70
75
|
msg = f"Task {task.__name__} of type generator must be decorated with contextlib.asynccontextmanager."
|
|
71
76
|
raise InvalidLifespanTaskTypeError(msg)
|
|
72
77
|
|
|
78
|
+
task_name = task.__name__ # pyright: ignore [reportAttributeAccessIssue]
|
|
73
79
|
if task_kwargs:
|
|
74
80
|
original_task = task
|
|
75
81
|
task = functools.partial(task, **task_kwargs) # pyright: ignore [reportArgumentType]
|
|
76
82
|
functools.update_wrapper(task, original_task) # pyright: ignore [reportArgumentType]
|
|
77
83
|
self.lifespan_tasks.add(task)
|
|
78
|
-
console.debug(f"Registered lifespan task: {
|
|
84
|
+
console.debug(f"Registered lifespan task: {task_name}")
|
|
@@ -6,7 +6,7 @@ import sys
|
|
|
6
6
|
from collections.abc import Callable, Iterable, Sequence
|
|
7
7
|
from inspect import getmodule
|
|
8
8
|
from pathlib import Path
|
|
9
|
-
from typing import TYPE_CHECKING
|
|
9
|
+
from typing import TYPE_CHECKING, Any
|
|
10
10
|
|
|
11
11
|
from reflex import constants
|
|
12
12
|
from reflex.compiler import templates, utils
|
|
@@ -53,7 +53,7 @@ def _compile_document_root(root: Component) -> str:
|
|
|
53
53
|
"""
|
|
54
54
|
document_root_imports = root._get_all_imports()
|
|
55
55
|
_apply_common_imports(document_root_imports)
|
|
56
|
-
return templates.
|
|
56
|
+
return templates.document_root_template(
|
|
57
57
|
imports=utils.compile_imports(document_root_imports),
|
|
58
58
|
document=root.render(),
|
|
59
59
|
)
|
|
@@ -93,7 +93,7 @@ def _compile_app(app_root: Component) -> str:
|
|
|
93
93
|
app_root_imports = app_root._get_all_imports()
|
|
94
94
|
_apply_common_imports(app_root_imports)
|
|
95
95
|
|
|
96
|
-
return templates.
|
|
96
|
+
return templates.app_root_template(
|
|
97
97
|
imports=utils.compile_imports(app_root_imports),
|
|
98
98
|
custom_codes=app_root._get_all_custom_code(),
|
|
99
99
|
hooks=app_root._get_all_hooks(),
|
|
@@ -112,7 +112,7 @@ def _compile_theme(theme: str) -> str:
|
|
|
112
112
|
Returns:
|
|
113
113
|
The compiled theme.
|
|
114
114
|
"""
|
|
115
|
-
return templates.
|
|
115
|
+
return templates.theme_template(theme=theme)
|
|
116
116
|
|
|
117
117
|
|
|
118
118
|
def _compile_contexts(state: type[BaseState] | None, theme: Component | None) -> str:
|
|
@@ -130,17 +130,17 @@ def _compile_contexts(state: type[BaseState] | None, theme: Component | None) ->
|
|
|
130
130
|
appearance = LiteralVar.create(SYSTEM_COLOR_MODE)
|
|
131
131
|
|
|
132
132
|
return (
|
|
133
|
-
templates.
|
|
133
|
+
templates.context_template(
|
|
134
134
|
initial_state=utils.compile_state(state),
|
|
135
135
|
state_name=state.get_name(),
|
|
136
136
|
client_storage=utils.compile_client_storage(state),
|
|
137
137
|
is_dev_mode=not is_prod_mode(),
|
|
138
|
-
default_color_mode=appearance,
|
|
138
|
+
default_color_mode=str(appearance),
|
|
139
139
|
)
|
|
140
140
|
if state
|
|
141
|
-
else templates.
|
|
141
|
+
else templates.context_template(
|
|
142
142
|
is_dev_mode=not is_prod_mode(),
|
|
143
|
-
default_color_mode=appearance,
|
|
143
|
+
default_color_mode=str(appearance),
|
|
144
144
|
)
|
|
145
145
|
)
|
|
146
146
|
|
|
@@ -159,7 +159,7 @@ def _compile_page(component: BaseComponent) -> str:
|
|
|
159
159
|
imports = utils.compile_imports(imports)
|
|
160
160
|
|
|
161
161
|
# Compile the code to render the component.
|
|
162
|
-
return templates.
|
|
162
|
+
return templates.page_template(
|
|
163
163
|
imports=imports,
|
|
164
164
|
dynamic_imports=component._get_all_dynamic_imports(),
|
|
165
165
|
custom_codes=component._get_all_custom_code(),
|
|
@@ -321,7 +321,7 @@ def _compile_root_stylesheet(stylesheets: list[str], reset_style: bool = True) -
|
|
|
321
321
|
'The `libsass` package is required to compile sass/scss stylesheet files. Run `pip install "libsass>=0.23.0"`.'
|
|
322
322
|
)
|
|
323
323
|
|
|
324
|
-
return templates.
|
|
324
|
+
return templates.styles_template(stylesheets=sheets)
|
|
325
325
|
|
|
326
326
|
|
|
327
327
|
def _compile_component(component: Component | StatefulComponent) -> str:
|
|
@@ -333,7 +333,7 @@ def _compile_component(component: Component | StatefulComponent) -> str:
|
|
|
333
333
|
Returns:
|
|
334
334
|
The compiled component.
|
|
335
335
|
"""
|
|
336
|
-
return templates.
|
|
336
|
+
return templates.component_template(component=component)
|
|
337
337
|
|
|
338
338
|
|
|
339
339
|
def _compile_components(
|
|
@@ -376,7 +376,7 @@ def _compile_components(
|
|
|
376
376
|
|
|
377
377
|
# Compile the components page.
|
|
378
378
|
return (
|
|
379
|
-
templates.
|
|
379
|
+
templates.custom_component_template(
|
|
380
380
|
imports=utils.compile_imports(imports),
|
|
381
381
|
components=component_renders,
|
|
382
382
|
dynamic_imports=dynamic_imports,
|
|
@@ -456,7 +456,7 @@ def _compile_stateful_components(
|
|
|
456
456
|
if rendered_components:
|
|
457
457
|
_apply_common_imports(all_imports)
|
|
458
458
|
|
|
459
|
-
return templates.
|
|
459
|
+
return templates.stateful_components_template(
|
|
460
460
|
imports=utils.compile_imports(all_imports),
|
|
461
461
|
memoized_code="\n".join(rendered_components),
|
|
462
462
|
)
|
|
@@ -465,7 +465,7 @@ def _compile_stateful_components(
|
|
|
465
465
|
def compile_document_root(
|
|
466
466
|
head_components: list[Component],
|
|
467
467
|
html_lang: str | None = None,
|
|
468
|
-
html_custom_attrs: dict[str, Var |
|
|
468
|
+
html_custom_attrs: dict[str, Var | Any] | None = None,
|
|
469
469
|
) -> tuple[str, str]:
|
|
470
470
|
"""Compile the document root.
|
|
471
471
|
|