reflex 0.8.1a2__tar.gz → 0.8.2__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.1a2 → reflex-0.8.2}/PKG-INFO +1 -1
- {reflex-0.8.1a2 → reflex-0.8.2}/pyproject.toml +2 -2
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/apps/blank/code/blank.py +0 -1
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/app.py +39 -17
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/compiler/compiler.py +1 -2
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/base/meta.py +1 -7
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/el/elements/metadata.py +3 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/config.py +141 -54
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/constants/installer.py +4 -3
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/environment.py +2 -2
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/istate/data.py +2 -2
- reflex-0.8.2/reflex/plugins/__init__.py +15 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/plugins/sitemap.py +4 -1
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/utils/console.py +9 -8
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/utils/processes.py +16 -4
- reflex-0.8.1a2/reflex/plugins/__init__.py +0 -8
- {reflex-0.8.1a2 → reflex-0.8.2}/.gitignore +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/LICENSE +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/README.md +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/apps/blank/assets/favicon.ico +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/apps/blank/code/__init__.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/jinja/app/rxconfig.py.jinja2 +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/jinja/custom_components/README.md.jinja2 +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/jinja/custom_components/__init__.py.jinja2 +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/jinja/custom_components/demo_app.py.jinja2 +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/jinja/custom_components/pyproject.toml.jinja2 +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/jinja/custom_components/src.py.jinja2 +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/jinja/web/package.json.jinja2 +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/jinja/web/pages/_app.js.jinja2 +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/jinja/web/pages/_document.js.jinja2 +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/jinja/web/pages/base_page.js.jinja2 +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/jinja/web/pages/component.js.jinja2 +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/jinja/web/pages/custom_component.js.jinja2 +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/jinja/web/pages/index.js.jinja2 +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/jinja/web/pages/macros.js.jinja2 +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/jinja/web/pages/stateful_component.js.jinja2 +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/jinja/web/pages/stateful_components.js.jinja2 +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/jinja/web/pages/utils.js.jinja2 +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/jinja/web/styles/styles.css.jinja2 +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/jinja/web/utils/context.js.jinja2 +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/jinja/web/utils/theme.js.jinja2 +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/web/.gitignore +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/web/app/entry.client.js +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/web/app/routes.js +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/web/components/shiki/code.js +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/web/jsconfig.json +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/web/postcss.config.js +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/web/react-router.config.js +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/web/styles/__reflex_style_reset.css +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/web/utils/client_side_routing.js +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/web/utils/helpers/dataeditor.js +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/web/utils/helpers/debounce.js +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/web/utils/helpers/paste.js +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/web/utils/helpers/range.js +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/web/utils/helpers/throttle.js +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/web/utils/react-theme.js +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/web/utils/state.js +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/web/vite-plugin-safari-cachebust.js +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/.templates/web/vite.config.js +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/__init__.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/__init__.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/__main__.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/admin.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/app_mixins/__init__.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/app_mixins/lifespan.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/app_mixins/middleware.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/app_mixins/mixin.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/assets.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/base.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/compiler/__init__.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/compiler/templates.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/compiler/utils.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/__init__.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/__init__.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/base/__init__.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/base/__init__.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/base/app_wrap.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/base/app_wrap.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/base/bare.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/base/body.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/base/body.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/base/document.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/base/document.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/base/error_boundary.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/base/error_boundary.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/base/fragment.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/base/fragment.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/base/link.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/base/link.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/base/meta.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/base/script.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/base/script.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/base/strict_mode.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/base/strict_mode.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/component.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/core/__init__.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/core/__init__.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/core/auto_scroll.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/core/auto_scroll.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/core/banner.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/core/banner.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/core/breakpoints.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/core/client_side_routing.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/core/client_side_routing.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/core/clipboard.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/core/clipboard.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/core/colors.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/core/cond.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/core/debounce.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/core/debounce.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/core/foreach.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/core/helmet.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/core/helmet.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/core/html.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/core/html.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/core/layout/__init__.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/core/match.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/core/responsive.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/core/sticky.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/core/sticky.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/core/upload.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/core/upload.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/datadisplay/__init__.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/datadisplay/__init__.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/datadisplay/code.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/datadisplay/code.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/datadisplay/dataeditor.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/datadisplay/dataeditor.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/datadisplay/logo.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/datadisplay/shiki_code_block.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/datadisplay/shiki_code_block.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/dynamic.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/el/__init__.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/el/__init__.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/el/constants/__init__.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/el/constants/html.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/el/constants/react.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/el/constants/reflex.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/el/element.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/el/element.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/el/elements/__init__.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/el/elements/__init__.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/el/elements/base.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/el/elements/base.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/el/elements/forms.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/el/elements/forms.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/el/elements/inline.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/el/elements/inline.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/el/elements/media.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/el/elements/media.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/el/elements/metadata.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/el/elements/other.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/el/elements/other.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/el/elements/scripts.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/el/elements/scripts.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/el/elements/sectioning.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/el/elements/sectioning.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/el/elements/tables.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/el/elements/tables.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/el/elements/typography.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/el/elements/typography.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/field.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/gridjs/__init__.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/gridjs/datatable.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/gridjs/datatable.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/literals.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/lucide/__init__.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/lucide/icon.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/lucide/icon.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/markdown/__init__.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/markdown/markdown.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/markdown/markdown.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/moment/__init__.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/moment/moment.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/moment/moment.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/plotly/__init__.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/plotly/plotly.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/plotly/plotly.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/props.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/__init__.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/__init__.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/primitives/__init__.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/primitives/__init__.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/primitives/accordion.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/primitives/accordion.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/primitives/base.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/primitives/base.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/primitives/drawer.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/primitives/drawer.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/primitives/form.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/primitives/form.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/primitives/progress.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/primitives/progress.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/primitives/slider.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/primitives/slider.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/__init__.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/__init__.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/base.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/base.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/color_mode.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/color_mode.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/__init__.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/__init__.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/alert_dialog.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/alert_dialog.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/aspect_ratio.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/aspect_ratio.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/avatar.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/avatar.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/badge.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/badge.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/button.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/button.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/callout.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/callout.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/card.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/card.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/checkbox.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/checkbox.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/checkbox_cards.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/checkbox_cards.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/checkbox_group.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/checkbox_group.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/context_menu.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/context_menu.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/data_list.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/data_list.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/dialog.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/dialog.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/dropdown_menu.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/dropdown_menu.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/hover_card.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/hover_card.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/icon_button.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/icon_button.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/inset.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/inset.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/popover.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/popover.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/progress.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/progress.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/radio.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/radio.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/radio_cards.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/radio_cards.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/radio_group.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/radio_group.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/scroll_area.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/scroll_area.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/segmented_control.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/segmented_control.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/select.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/select.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/separator.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/separator.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/skeleton.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/skeleton.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/slider.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/slider.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/spinner.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/spinner.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/switch.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/switch.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/table.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/table.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/tabs.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/tabs.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/text_area.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/text_area.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/text_field.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/text_field.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/tooltip.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/components/tooltip.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/layout/__init__.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/layout/__init__.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/layout/base.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/layout/base.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/layout/box.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/layout/box.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/layout/center.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/layout/center.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/layout/container.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/layout/container.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/layout/flex.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/layout/flex.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/layout/grid.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/layout/grid.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/layout/list.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/layout/list.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/layout/section.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/layout/section.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/layout/spacer.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/layout/spacer.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/layout/stack.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/layout/stack.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/typography/__init__.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/typography/__init__.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/typography/base.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/typography/blockquote.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/typography/blockquote.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/typography/code.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/typography/code.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/typography/heading.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/typography/heading.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/typography/link.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/typography/link.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/typography/text.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/radix/themes/typography/text.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/react_player/__init__.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/react_player/audio.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/react_player/audio.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/react_player/react_player.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/react_player/react_player.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/react_player/video.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/react_player/video.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/react_router/__init__.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/react_router/dom.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/react_router/dom.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/recharts/__init__.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/recharts/__init__.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/recharts/cartesian.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/recharts/cartesian.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/recharts/charts.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/recharts/charts.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/recharts/general.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/recharts/general.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/recharts/polar.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/recharts/polar.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/recharts/recharts.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/recharts/recharts.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/sonner/__init__.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/sonner/toast.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/sonner/toast.pyi +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/tags/__init__.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/tags/cond_tag.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/tags/iter_tag.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/tags/match_tag.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/tags/tag.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/components/tags/tagless.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/constants/__init__.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/constants/base.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/constants/colors.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/constants/compiler.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/constants/config.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/constants/custom_components.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/constants/event.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/constants/route.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/constants/state.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/constants/utils.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/custom_components/__init__.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/custom_components/custom_components.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/event.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/experimental/__init__.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/experimental/client_state.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/experimental/hooks.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/istate/__init__.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/istate/dynamic.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/istate/manager.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/istate/proxy.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/istate/storage.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/istate/wrappers.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/middleware/__init__.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/middleware/hydrate_middleware.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/middleware/middleware.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/model.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/page.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/plugins/base.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/plugins/shared_tailwind.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/plugins/tailwind_v3.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/plugins/tailwind_v4.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/py.typed +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/reflex.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/route.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/state.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/style.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/testing.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/utils/__init__.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/utils/build.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/utils/codespaces.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/utils/compat.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/utils/decorator.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/utils/exceptions.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/utils/exec.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/utils/export.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/utils/format.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/utils/imports.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/utils/lazy_loader.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/utils/misc.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/utils/net.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/utils/path_ops.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/utils/prerequisites.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/utils/pyi_generator.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/utils/redir.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/utils/registry.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/utils/serializers.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/utils/telemetry.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/utils/types.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/vars/__init__.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/vars/base.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/vars/datetime.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/vars/dep_tracking.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/vars/function.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/vars/number.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/vars/object.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/reflex/vars/sequence.py +0 -0
- {reflex-0.8.1a2 → reflex-0.8.2}/scripts/hatch_build.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "reflex"
|
|
3
|
-
version = "0.8.
|
|
3
|
+
version = "0.8.2"
|
|
4
4
|
description = "Web apps in pure Python."
|
|
5
5
|
license.text = "Apache-2.0"
|
|
6
6
|
authors = [
|
|
@@ -229,7 +229,7 @@ fail_fast = true
|
|
|
229
229
|
|
|
230
230
|
[[tool.pre-commit.repos]]
|
|
231
231
|
repo = "https://github.com/astral-sh/ruff-pre-commit"
|
|
232
|
-
rev = "v0.12.
|
|
232
|
+
rev = "v0.12.2"
|
|
233
233
|
hooks = [
|
|
234
234
|
{ id = "ruff-format", args = [
|
|
235
235
|
"reflex",
|
|
@@ -22,6 +22,7 @@ from collections.abc import (
|
|
|
22
22
|
Sequence,
|
|
23
23
|
)
|
|
24
24
|
from datetime import datetime
|
|
25
|
+
from itertools import chain
|
|
25
26
|
from pathlib import Path
|
|
26
27
|
from timeit import default_timer as timer
|
|
27
28
|
from types import SimpleNamespace
|
|
@@ -238,10 +239,6 @@ def default_error_boundary(*children: Component, **props) -> Component:
|
|
|
238
239
|
)
|
|
239
240
|
|
|
240
241
|
|
|
241
|
-
class OverlayFragment(Fragment):
|
|
242
|
-
"""Alias for Fragment, used to wrap the overlay_component."""
|
|
243
|
-
|
|
244
|
-
|
|
245
242
|
@dataclasses.dataclass(frozen=True)
|
|
246
243
|
class UploadFile(StarletteUploadFile):
|
|
247
244
|
"""A file uploaded to the server.
|
|
@@ -369,6 +366,11 @@ class App(MiddlewareMixin, LifespanMixin):
|
|
|
369
366
|
)
|
|
370
367
|
)
|
|
371
368
|
|
|
369
|
+
# Extra app wraps to be applied to the whole app.
|
|
370
|
+
extra_app_wraps: dict[tuple[int, str], Callable[[bool], Component | None]] = (
|
|
371
|
+
dataclasses.field(default_factory=dict)
|
|
372
|
+
)
|
|
373
|
+
|
|
372
374
|
# Components to add to the head of every page.
|
|
373
375
|
head_components: list[Component] = dataclasses.field(default_factory=list)
|
|
374
376
|
|
|
@@ -515,8 +517,8 @@ class App(MiddlewareMixin, LifespanMixin):
|
|
|
515
517
|
async_mode="asgi",
|
|
516
518
|
cors_allowed_origins=(
|
|
517
519
|
"*"
|
|
518
|
-
if config.cors_allowed_origins ==
|
|
519
|
-
else config.cors_allowed_origins
|
|
520
|
+
if config.cors_allowed_origins == ("*",)
|
|
521
|
+
else list(config.cors_allowed_origins)
|
|
520
522
|
),
|
|
521
523
|
cors_credentials=True,
|
|
522
524
|
max_http_buffer_size=environment.REFLEX_SOCKET_MAX_HTTP_BUFFER_SIZE.get(),
|
|
@@ -1031,25 +1033,31 @@ class App(MiddlewareMixin, LifespanMixin):
|
|
|
1031
1033
|
# By default, compile the app.
|
|
1032
1034
|
return True
|
|
1033
1035
|
|
|
1034
|
-
def _add_overlay_to_component(
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1036
|
+
def _add_overlay_to_component(
|
|
1037
|
+
self, component: Component, overlay_component: Component
|
|
1038
|
+
) -> Component:
|
|
1038
1039
|
children = component.children
|
|
1039
|
-
overlay_component = self._generate_component(self.overlay_component)
|
|
1040
1040
|
|
|
1041
1041
|
if children[0] == overlay_component:
|
|
1042
1042
|
return component
|
|
1043
1043
|
|
|
1044
|
-
|
|
1045
|
-
return OverlayFragment.create(overlay_component, *children)
|
|
1044
|
+
return Fragment.create(overlay_component, *children)
|
|
1046
1045
|
|
|
1047
1046
|
def _setup_overlay_component(self):
|
|
1048
1047
|
"""If a State is not used and no overlay_component is specified, do not render the connection modal."""
|
|
1049
|
-
if self.
|
|
1050
|
-
|
|
1048
|
+
if self.overlay_component is None:
|
|
1049
|
+
return
|
|
1050
|
+
console.deprecate(
|
|
1051
|
+
feature_name="overlay_component",
|
|
1052
|
+
reason="Use `extra_app_wraps` to add the overlay component instead.",
|
|
1053
|
+
deprecation_version="0.8.2",
|
|
1054
|
+
removal_version="0.9.0",
|
|
1055
|
+
)
|
|
1056
|
+
overlay_component = self._generate_component(self.overlay_component)
|
|
1051
1057
|
for k, component in self._pages.items():
|
|
1052
|
-
self._pages[k] = self._add_overlay_to_component(
|
|
1058
|
+
self._pages[k] = self._add_overlay_to_component(
|
|
1059
|
+
component, overlay_component
|
|
1060
|
+
)
|
|
1053
1061
|
|
|
1054
1062
|
def _setup_sticky_badge(self):
|
|
1055
1063
|
"""Add the sticky badge to the app."""
|
|
@@ -1261,7 +1269,10 @@ class App(MiddlewareMixin, LifespanMixin):
|
|
|
1261
1269
|
app_wrappers[(1, "ToasterProvider")] = toast_provider
|
|
1262
1270
|
|
|
1263
1271
|
# Add the app wraps to the app.
|
|
1264
|
-
for key, app_wrap in
|
|
1272
|
+
for key, app_wrap in chain(
|
|
1273
|
+
self.app_wraps.items(), self.extra_app_wraps.items()
|
|
1274
|
+
):
|
|
1275
|
+
# If the app wrap is a callable, generate the component
|
|
1265
1276
|
component = app_wrap(self._state is not None)
|
|
1266
1277
|
if component is not None:
|
|
1267
1278
|
app_wrappers[key] = component
|
|
@@ -2076,9 +2087,20 @@ class EventNamespace(AsyncNamespace):
|
|
|
2076
2087
|
# Get the client IP
|
|
2077
2088
|
try:
|
|
2078
2089
|
client_ip = environ["asgi.scope"]["client"][0]
|
|
2090
|
+
headers["asgi-scope-client"] = client_ip
|
|
2079
2091
|
except (KeyError, IndexError):
|
|
2080
2092
|
client_ip = environ.get("REMOTE_ADDR", "0.0.0.0")
|
|
2081
2093
|
|
|
2094
|
+
# Unroll reverse proxy forwarded headers.
|
|
2095
|
+
client_ip = (
|
|
2096
|
+
headers.get(
|
|
2097
|
+
"x-forwarded-for",
|
|
2098
|
+
client_ip,
|
|
2099
|
+
)
|
|
2100
|
+
.partition(",")[0]
|
|
2101
|
+
.strip()
|
|
2102
|
+
)
|
|
2103
|
+
|
|
2082
2104
|
async with contextlib.aclosing(
|
|
2083
2105
|
process(self.app, event, sid, headers, client_ip)
|
|
2084
2106
|
) as updates_gen:
|
|
@@ -828,10 +828,9 @@ def compile_unevaluated_page(
|
|
|
828
828
|
enable_state = True
|
|
829
829
|
break
|
|
830
830
|
|
|
831
|
-
from reflex.app import OverlayFragment
|
|
832
831
|
from reflex.utils.format import make_default_page_title
|
|
833
832
|
|
|
834
|
-
component =
|
|
833
|
+
component = Fragment.create(component)
|
|
835
834
|
|
|
836
835
|
meta_args = {
|
|
837
836
|
"title": (
|
|
@@ -4,6 +4,7 @@ from __future__ import annotations
|
|
|
4
4
|
|
|
5
5
|
from reflex.components.base.bare import Bare
|
|
6
6
|
from reflex.components.el import elements
|
|
7
|
+
from reflex.components.el.elements.metadata import Meta as Meta # for compatibility
|
|
7
8
|
from reflex.vars.base import Var
|
|
8
9
|
|
|
9
10
|
|
|
@@ -26,13 +27,6 @@ class Title(elements.Title):
|
|
|
26
27
|
return super().render()
|
|
27
28
|
|
|
28
29
|
|
|
29
|
-
class Meta(elements.Meta):
|
|
30
|
-
"""A component that displays metadata for the current page."""
|
|
31
|
-
|
|
32
|
-
# The type of metadata value.
|
|
33
|
-
property: Var[str]
|
|
34
|
-
|
|
35
|
-
|
|
36
30
|
class Description(elements.Meta):
|
|
37
31
|
"""A component that displays the title of the current page."""
|
|
38
32
|
|
|
@@ -1,21 +1,18 @@
|
|
|
1
1
|
"""The Reflex config."""
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
import dataclasses
|
|
5
4
|
import importlib
|
|
6
5
|
import os
|
|
7
6
|
import sys
|
|
8
7
|
import threading
|
|
9
8
|
import urllib.parse
|
|
9
|
+
from collections.abc import Sequence
|
|
10
10
|
from importlib.util import find_spec
|
|
11
11
|
from pathlib import Path
|
|
12
12
|
from types import ModuleType
|
|
13
|
-
from typing import Any, ClassVar
|
|
14
|
-
|
|
15
|
-
import pydantic.v1 as pydantic
|
|
13
|
+
from typing import TYPE_CHECKING, Any, ClassVar
|
|
16
14
|
|
|
17
15
|
from reflex import constants
|
|
18
|
-
from reflex.base import Base
|
|
19
16
|
from reflex.constants.base import LogLevel
|
|
20
17
|
from reflex.environment import EnvironmentVariables as EnvironmentVariables
|
|
21
18
|
from reflex.environment import EnvVar as EnvVar
|
|
@@ -28,12 +25,13 @@ from reflex.environment import (
|
|
|
28
25
|
from reflex.environment import env_var as env_var
|
|
29
26
|
from reflex.environment import environment as environment
|
|
30
27
|
from reflex.plugins import Plugin
|
|
28
|
+
from reflex.plugins.sitemap import SitemapPlugin
|
|
31
29
|
from reflex.utils import console
|
|
32
30
|
from reflex.utils.exceptions import ConfigError
|
|
33
|
-
from reflex.utils.types import true_type_for_pydantic_field
|
|
34
31
|
|
|
35
32
|
|
|
36
|
-
|
|
33
|
+
@dataclasses.dataclass(kw_only=True)
|
|
34
|
+
class DBConfig:
|
|
37
35
|
"""Database config."""
|
|
38
36
|
|
|
39
37
|
engine: str
|
|
@@ -51,7 +49,7 @@ class DBConfig(Base):
|
|
|
51
49
|
password: str | None = None,
|
|
52
50
|
host: str | None = None,
|
|
53
51
|
port: int | None = 5432,
|
|
54
|
-
) -> DBConfig:
|
|
52
|
+
) -> "DBConfig":
|
|
55
53
|
"""Create an instance with postgresql engine.
|
|
56
54
|
|
|
57
55
|
Args:
|
|
@@ -81,7 +79,7 @@ class DBConfig(Base):
|
|
|
81
79
|
password: str | None = None,
|
|
82
80
|
host: str | None = None,
|
|
83
81
|
port: int | None = 5432,
|
|
84
|
-
) -> DBConfig:
|
|
82
|
+
) -> "DBConfig":
|
|
85
83
|
"""Create an instance with postgresql+psycopg engine.
|
|
86
84
|
|
|
87
85
|
Args:
|
|
@@ -107,7 +105,7 @@ class DBConfig(Base):
|
|
|
107
105
|
def sqlite(
|
|
108
106
|
cls,
|
|
109
107
|
database: str,
|
|
110
|
-
) -> DBConfig:
|
|
108
|
+
) -> "DBConfig":
|
|
111
109
|
"""Create an instance with sqlite engine.
|
|
112
110
|
|
|
113
111
|
Args:
|
|
@@ -145,32 +143,9 @@ class DBConfig(Base):
|
|
|
145
143
|
_sensitive_env_vars = {"DB_URL", "ASYNC_DB_URL", "REDIS_URL"}
|
|
146
144
|
|
|
147
145
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
By default, the config is defined in an `rxconfig.py` file in the root of the app.
|
|
152
|
-
|
|
153
|
-
```python
|
|
154
|
-
# rxconfig.py
|
|
155
|
-
import reflex as rx
|
|
156
|
-
|
|
157
|
-
config = rx.Config(
|
|
158
|
-
app_name="myapp",
|
|
159
|
-
api_url="http://localhost:8000",
|
|
160
|
-
)
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
Every config value can be overridden by an environment variable with the same name in uppercase.
|
|
164
|
-
For example, `db_url` can be overridden by setting the `DB_URL` environment variable.
|
|
165
|
-
|
|
166
|
-
See the [configuration](https://reflex.dev/docs/getting-started/configuration/) docs for more info.
|
|
167
|
-
"""
|
|
168
|
-
|
|
169
|
-
class Config: # pyright: ignore [reportIncompatibleVariableOverride]
|
|
170
|
-
"""Pydantic config for the config."""
|
|
171
|
-
|
|
172
|
-
validate_assignment = True
|
|
173
|
-
use_enum_values = False
|
|
146
|
+
@dataclasses.dataclass(kw_only=True)
|
|
147
|
+
class BaseConfig:
|
|
148
|
+
"""Base config for the Reflex app."""
|
|
174
149
|
|
|
175
150
|
# The name of the app (should match the name of the app directory).
|
|
176
151
|
app_name: str
|
|
@@ -218,13 +193,13 @@ class Config(Base):
|
|
|
218
193
|
static_page_generation_timeout: int = 60
|
|
219
194
|
|
|
220
195
|
# List of origins that are allowed to connect to the backend API.
|
|
221
|
-
cors_allowed_origins:
|
|
196
|
+
cors_allowed_origins: Sequence[str] = dataclasses.field(default=("*",))
|
|
222
197
|
|
|
223
198
|
# Whether to use React strict mode.
|
|
224
199
|
react_strict_mode: bool = True
|
|
225
200
|
|
|
226
201
|
# Additional frontend packages to install.
|
|
227
|
-
frontend_packages: list[str] =
|
|
202
|
+
frontend_packages: list[str] = dataclasses.field(default_factory=list)
|
|
228
203
|
|
|
229
204
|
# Indicate which type of state manager to use
|
|
230
205
|
state_manager_mode: constants.StateManagerMode = constants.StateManagerMode.DISK
|
|
@@ -239,7 +214,9 @@ class Config(Base):
|
|
|
239
214
|
redis_token_expiration: int = constants.Expiration.TOKEN
|
|
240
215
|
|
|
241
216
|
# Attributes that were explicitly set by the user.
|
|
242
|
-
_non_default_attributes: set[str] =
|
|
217
|
+
_non_default_attributes: set[str] = dataclasses.field(
|
|
218
|
+
default_factory=set, init=False
|
|
219
|
+
)
|
|
243
220
|
|
|
244
221
|
# Path to file containing key-values pairs to override in the environment; Dotenv format.
|
|
245
222
|
env_file: str | None = None
|
|
@@ -257,21 +234,58 @@ class Config(Base):
|
|
|
257
234
|
extra_overlay_function: str | None = None
|
|
258
235
|
|
|
259
236
|
# List of plugins to use in the app.
|
|
260
|
-
plugins: list[Plugin] =
|
|
237
|
+
plugins: list[Plugin] = dataclasses.field(default_factory=list)
|
|
238
|
+
|
|
239
|
+
# List of fully qualified import paths of plugins to disable in the app (e.g. reflex.plugins.sitemap.SitemapPlugin).
|
|
240
|
+
disable_plugins: list[str] = dataclasses.field(default_factory=list)
|
|
261
241
|
|
|
262
242
|
_prefixes: ClassVar[list[str]] = ["REFLEX_"]
|
|
263
243
|
|
|
264
|
-
|
|
265
|
-
|
|
244
|
+
|
|
245
|
+
_PLUGINS_ENABLED_BY_DEFAULT = [
|
|
246
|
+
SitemapPlugin,
|
|
247
|
+
]
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
@dataclasses.dataclass(kw_only=True, init=False)
|
|
251
|
+
class Config(BaseConfig):
|
|
252
|
+
"""The config defines runtime settings for the app.
|
|
253
|
+
|
|
254
|
+
By default, the config is defined in an `rxconfig.py` file in the root of the app.
|
|
255
|
+
|
|
256
|
+
```python
|
|
257
|
+
# rxconfig.py
|
|
258
|
+
import reflex as rx
|
|
259
|
+
|
|
260
|
+
config = rx.Config(
|
|
261
|
+
app_name="myapp",
|
|
262
|
+
api_url="http://localhost:8000",
|
|
263
|
+
)
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
Every config value can be overridden by an environment variable with the same name in uppercase and a REFLEX_ prefix.
|
|
267
|
+
For example, `db_url` can be overridden by setting the `REFLEX_DB_URL` environment variable.
|
|
268
|
+
|
|
269
|
+
See the [configuration](https://reflex.dev/docs/getting-started/configuration/) docs for more info.
|
|
270
|
+
"""
|
|
271
|
+
|
|
272
|
+
def _post_init(self, **kwargs):
|
|
273
|
+
"""Post-initialization method to set up the config.
|
|
274
|
+
|
|
275
|
+
This method is called after the config is initialized. It sets up the
|
|
276
|
+
environment variables, updates the config from the environment, and
|
|
277
|
+
replaces default URLs if ports were set.
|
|
266
278
|
|
|
267
279
|
Args:
|
|
268
|
-
|
|
269
|
-
**kwargs: The kwargs to pass to the Pydantic init method.
|
|
280
|
+
**kwargs: The kwargs passed to the Pydantic init method.
|
|
270
281
|
|
|
271
282
|
Raises:
|
|
272
283
|
ConfigError: If some values in the config are invalid.
|
|
273
284
|
"""
|
|
274
|
-
|
|
285
|
+
class_fields = self.class_fields()
|
|
286
|
+
for key, value in kwargs.items():
|
|
287
|
+
if key not in class_fields:
|
|
288
|
+
setattr(self, key, value)
|
|
275
289
|
|
|
276
290
|
# Clean up this code when we remove plain envvar in 0.8.0
|
|
277
291
|
env_loglevel = os.environ.get("REFLEX_LOGLEVEL")
|
|
@@ -285,9 +299,12 @@ class Config(Base):
|
|
|
285
299
|
for key, env_value in env_kwargs.items():
|
|
286
300
|
setattr(self, key, env_value)
|
|
287
301
|
|
|
302
|
+
# Add builtin plugins if not disabled.
|
|
303
|
+
self._add_builtin_plugins()
|
|
304
|
+
|
|
288
305
|
# Update default URLs if ports were set
|
|
289
306
|
kwargs.update(env_kwargs)
|
|
290
|
-
self._non_default_attributes.
|
|
307
|
+
self._non_default_attributes = set(kwargs.keys())
|
|
291
308
|
self._replace_defaults(**kwargs)
|
|
292
309
|
|
|
293
310
|
if (
|
|
@@ -297,6 +314,74 @@ class Config(Base):
|
|
|
297
314
|
msg = f"{self._prefixes[0]}REDIS_URL is required when using the redis state manager."
|
|
298
315
|
raise ConfigError(msg)
|
|
299
316
|
|
|
317
|
+
def _add_builtin_plugins(self):
|
|
318
|
+
"""Add the builtin plugins to the config."""
|
|
319
|
+
for plugin in _PLUGINS_ENABLED_BY_DEFAULT:
|
|
320
|
+
plugin_name = plugin.__module__ + "." + plugin.__qualname__
|
|
321
|
+
if plugin_name not in self.disable_plugins:
|
|
322
|
+
if not any(isinstance(p, plugin) for p in self.plugins):
|
|
323
|
+
console.warn(
|
|
324
|
+
f"`{plugin_name}` plugin is enabled by default, but not explicitly added to the config. "
|
|
325
|
+
"If you want to use it, please add it to the `plugins` list in your config inside of `rxconfig.py`. "
|
|
326
|
+
f"To disable this plugin, set `disable_plugins` to `{[plugin_name, *self.disable_plugins]!r}`.",
|
|
327
|
+
)
|
|
328
|
+
self.plugins.append(plugin())
|
|
329
|
+
else:
|
|
330
|
+
if any(isinstance(p, plugin) for p in self.plugins):
|
|
331
|
+
console.warn(
|
|
332
|
+
f"`{plugin_name}` is disabled in the config, but it is still present in the `plugins` list. "
|
|
333
|
+
"Please remove it from the `plugins` list in your config inside of `rxconfig.py`.",
|
|
334
|
+
)
|
|
335
|
+
|
|
336
|
+
for disabled_plugin in self.disable_plugins:
|
|
337
|
+
if not isinstance(disabled_plugin, str):
|
|
338
|
+
console.warn(
|
|
339
|
+
f"reflex.Config.disable_plugins should only contain strings, but got {disabled_plugin!r}. "
|
|
340
|
+
)
|
|
341
|
+
if not any(
|
|
342
|
+
plugin.__module__ + "." + plugin.__qualname__ == disabled_plugin
|
|
343
|
+
for plugin in _PLUGINS_ENABLED_BY_DEFAULT
|
|
344
|
+
):
|
|
345
|
+
console.warn(
|
|
346
|
+
f"`{disabled_plugin}` is disabled in the config, but it is not a built-in plugin. "
|
|
347
|
+
"Please remove it from the `disable_plugins` list in your config inside of `rxconfig.py`.",
|
|
348
|
+
)
|
|
349
|
+
|
|
350
|
+
@classmethod
|
|
351
|
+
def class_fields(cls) -> set[str]:
|
|
352
|
+
"""Get the fields of the config class.
|
|
353
|
+
|
|
354
|
+
Returns:
|
|
355
|
+
The fields of the config class.
|
|
356
|
+
"""
|
|
357
|
+
return {field.name for field in dataclasses.fields(cls)}
|
|
358
|
+
|
|
359
|
+
if not TYPE_CHECKING:
|
|
360
|
+
|
|
361
|
+
def __init__(self, **kwargs):
|
|
362
|
+
"""Initialize the config values.
|
|
363
|
+
|
|
364
|
+
Args:
|
|
365
|
+
**kwargs: The kwargs to pass to the Pydantic init method.
|
|
366
|
+
|
|
367
|
+
# noqa: DAR101 self
|
|
368
|
+
"""
|
|
369
|
+
class_fields = self.class_fields()
|
|
370
|
+
super().__init__(**{k: v for k, v in kwargs.items() if k in class_fields})
|
|
371
|
+
self._post_init(**kwargs)
|
|
372
|
+
|
|
373
|
+
def json(self) -> str:
|
|
374
|
+
"""Get the config as a JSON string.
|
|
375
|
+
|
|
376
|
+
Returns:
|
|
377
|
+
The config as a JSON string.
|
|
378
|
+
"""
|
|
379
|
+
import json
|
|
380
|
+
|
|
381
|
+
from reflex.utils.serializers import serialize
|
|
382
|
+
|
|
383
|
+
return json.dumps(self, default=serialize)
|
|
384
|
+
|
|
300
385
|
@property
|
|
301
386
|
def app_module(self) -> ModuleType | None:
|
|
302
387
|
"""Return the app module if `app_module_import` is set.
|
|
@@ -333,11 +418,13 @@ class Config(Base):
|
|
|
333
418
|
|
|
334
419
|
updated_values = {}
|
|
335
420
|
# Iterate over the fields.
|
|
336
|
-
for
|
|
421
|
+
for field in dataclasses.fields(self):
|
|
337
422
|
# The env var name is the key in uppercase.
|
|
338
423
|
environment_variable = None
|
|
339
424
|
for prefix in self._prefixes:
|
|
340
|
-
if environment_variable := os.environ.get(
|
|
425
|
+
if environment_variable := os.environ.get(
|
|
426
|
+
f"{prefix}{field.name.upper()}"
|
|
427
|
+
):
|
|
341
428
|
break
|
|
342
429
|
|
|
343
430
|
# If the env var is set, override the config value.
|
|
@@ -345,19 +432,19 @@ class Config(Base):
|
|
|
345
432
|
# Interpret the value.
|
|
346
433
|
value = interpret_env_var_value(
|
|
347
434
|
environment_variable,
|
|
348
|
-
|
|
435
|
+
field.type,
|
|
349
436
|
field.name,
|
|
350
437
|
)
|
|
351
438
|
|
|
352
439
|
# Set the value.
|
|
353
|
-
updated_values[
|
|
440
|
+
updated_values[field.name] = value
|
|
354
441
|
|
|
355
|
-
if
|
|
442
|
+
if field.name.upper() in _sensitive_env_vars:
|
|
356
443
|
environment_variable = "***"
|
|
357
444
|
|
|
358
|
-
if value != getattr(self,
|
|
445
|
+
if value != getattr(self, field.name):
|
|
359
446
|
console.debug(
|
|
360
|
-
f"Overriding config value {
|
|
447
|
+
f"Overriding config value {field.name} with env var {field.name.upper()}={environment_variable}",
|
|
361
448
|
dedupe=True,
|
|
362
449
|
)
|
|
363
450
|
return updated_values
|
|
@@ -14,7 +14,7 @@ class Bun(SimpleNamespace):
|
|
|
14
14
|
"""Bun constants."""
|
|
15
15
|
|
|
16
16
|
# The Bun version.
|
|
17
|
-
VERSION = "1.2.
|
|
17
|
+
VERSION = "1.2.18"
|
|
18
18
|
|
|
19
19
|
# Min Bun Version
|
|
20
20
|
MIN_VERSION = "1.2.17"
|
|
@@ -104,7 +104,7 @@ class PackageJson(SimpleNamespace):
|
|
|
104
104
|
class Commands(SimpleNamespace):
|
|
105
105
|
"""The commands to define in package.json."""
|
|
106
106
|
|
|
107
|
-
DEV = "react-router dev"
|
|
107
|
+
DEV = "react-router dev --host"
|
|
108
108
|
EXPORT = "react-router build"
|
|
109
109
|
PROD = "serve ./build/client"
|
|
110
110
|
|
|
@@ -143,10 +143,11 @@ class PackageJson(SimpleNamespace):
|
|
|
143
143
|
"postcss-import": "16.1.1",
|
|
144
144
|
"@react-router/dev": _react_router_version,
|
|
145
145
|
"@react-router/fs-routes": _react_router_version,
|
|
146
|
-
"rolldown-vite": "7.0.
|
|
146
|
+
"rolldown-vite": "7.0.8",
|
|
147
147
|
}
|
|
148
148
|
OVERRIDES = {
|
|
149
149
|
# This should always match the `react` version in DEPENDENCIES for recharts compatibility.
|
|
150
150
|
"react-is": _react_version,
|
|
151
151
|
"cookie": "1.0.2",
|
|
152
|
+
"rollup": "4.44.2",
|
|
152
153
|
}
|
|
@@ -10,7 +10,7 @@ import inspect
|
|
|
10
10
|
import multiprocessing
|
|
11
11
|
import os
|
|
12
12
|
import platform
|
|
13
|
-
from collections.abc import Callable
|
|
13
|
+
from collections.abc import Callable, Sequence
|
|
14
14
|
from functools import lru_cache
|
|
15
15
|
from pathlib import Path
|
|
16
16
|
from typing import (
|
|
@@ -227,7 +227,7 @@ def interpret_env_var_value(
|
|
|
227
227
|
return interpret_existing_path_env(value, field_name)
|
|
228
228
|
if field_type is Plugin:
|
|
229
229
|
return interpret_plugin_env(value, field_name)
|
|
230
|
-
if get_origin(field_type)
|
|
230
|
+
if get_origin(field_type) in (list, Sequence):
|
|
231
231
|
return [
|
|
232
232
|
interpret_env_var_value(
|
|
233
233
|
v,
|
|
@@ -202,8 +202,8 @@ class RouterData:
|
|
|
202
202
|
The PageData object.
|
|
203
203
|
"""
|
|
204
204
|
console.deprecate(
|
|
205
|
-
"RouterData.page",
|
|
206
|
-
"Use RouterData.url instead",
|
|
205
|
+
feature_name="RouterData.page",
|
|
206
|
+
reason="Use RouterData.url instead",
|
|
207
207
|
deprecation_version="0.8.1",
|
|
208
208
|
removal_version="0.9.0",
|
|
209
209
|
)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"""Reflex Plugin System."""
|
|
2
|
+
|
|
3
|
+
from .base import CommonContext, Plugin, PreCompileContext
|
|
4
|
+
from .sitemap import SitemapPlugin
|
|
5
|
+
from .tailwind_v3 import TailwindV3Plugin
|
|
6
|
+
from .tailwind_v4 import TailwindV4Plugin
|
|
7
|
+
|
|
8
|
+
__all__ = [
|
|
9
|
+
"CommonContext",
|
|
10
|
+
"Plugin",
|
|
11
|
+
"PreCompileContext",
|
|
12
|
+
"SitemapPlugin",
|
|
13
|
+
"TailwindV3Plugin",
|
|
14
|
+
"TailwindV4Plugin",
|
|
15
|
+
]
|
|
@@ -193,7 +193,7 @@ def sitemap_task(unevaluated_pages: Sequence["UnevaluatedPage"]) -> tuple[str, s
|
|
|
193
193
|
)
|
|
194
194
|
|
|
195
195
|
|
|
196
|
-
class
|
|
196
|
+
class SitemapPlugin(PluginBase):
|
|
197
197
|
"""Sitemap plugin for Reflex."""
|
|
198
198
|
|
|
199
199
|
def pre_compile(self, **context):
|
|
@@ -204,3 +204,6 @@ class Plugin(PluginBase):
|
|
|
204
204
|
"""
|
|
205
205
|
unevaluated_pages = context.get("unevaluated_pages", [])
|
|
206
206
|
context["add_save_task"](sitemap_task, unevaluated_pages)
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
Plugin = SitemapPlugin
|