reflex 0.8.15a0__tar.gz → 0.8.15a1__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.15a0 → reflex-0.8.15a1}/PKG-INFO +4 -3
- {reflex-0.8.15a0 → reflex-0.8.15a1}/pyproject.toml +5 -4
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/__init__.py +11 -6
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/__init__.pyi +9 -2
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/base.py +8 -11
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/field.py +3 -1
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/markdown/markdown.py +101 -27
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/constants/base.py +5 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/constants/installer.py +2 -2
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/event.py +3 -0
- reflex-0.8.15a1/reflex/istate/manager/__init__.py +120 -0
- reflex-0.8.15a1/reflex/istate/manager/disk.py +210 -0
- reflex-0.8.15a1/reflex/istate/manager/memory.py +76 -0
- reflex-0.8.15a0/reflex/istate/manager.py → reflex-0.8.15a1/reflex/istate/manager/redis.py +5 -372
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/model.py +5 -1
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/state.py +14 -9
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/testing.py +4 -8
- reflex-0.8.15a1/reflex/utils/compat.py +94 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/utils/misc.py +2 -1
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/utils/monitoring.py +1 -2
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/utils/prerequisites.py +17 -3
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/utils/processes.py +3 -1
- reflex-0.8.15a1/reflex/utils/redir.py +43 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/utils/types.py +1 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/vars/base.py +106 -25
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/vars/color.py +28 -8
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/vars/datetime.py +6 -2
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/vars/dep_tracking.py +2 -2
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/vars/number.py +26 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/vars/object.py +23 -6
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/vars/sequence.py +32 -1
- reflex-0.8.15a0/reflex/utils/compat.py +0 -46
- reflex-0.8.15a0/reflex/utils/redir.py +0 -59
- {reflex-0.8.15a0 → reflex-0.8.15a1}/.gitignore +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/LICENSE +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/README.md +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/.templates/apps/blank/assets/favicon.ico +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/.templates/apps/blank/code/__init__.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/.templates/apps/blank/code/blank.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/.templates/web/.gitignore +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/.templates/web/app/entry.client.js +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/.templates/web/app/routes.js +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/.templates/web/components/shiki/code.js +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/.templates/web/jsconfig.json +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/.templates/web/postcss.config.js +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/.templates/web/react-router.config.js +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/.templates/web/styles/__reflex_style_reset.css +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/.templates/web/utils/helpers/dataeditor.js +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/.templates/web/utils/helpers/debounce.js +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/.templates/web/utils/helpers/paste.js +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/.templates/web/utils/helpers/range.js +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/.templates/web/utils/helpers/throttle.js +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/.templates/web/utils/helpers/upload.js +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/.templates/web/utils/react-theme.js +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/.templates/web/utils/state.js +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/.templates/web/vite-plugin-safari-cachebust.js +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/__main__.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/admin.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/app.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/app_mixins/__init__.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/app_mixins/lifespan.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/app_mixins/middleware.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/app_mixins/mixin.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/assets.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/compiler/__init__.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/compiler/compiler.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/compiler/templates.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/compiler/utils.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/__init__.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/__init__.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/base/__init__.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/base/__init__.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/base/app_wrap.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/base/app_wrap.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/base/bare.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/base/body.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/base/body.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/base/document.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/base/document.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/base/error_boundary.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/base/error_boundary.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/base/fragment.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/base/fragment.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/base/link.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/base/link.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/base/meta.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/base/meta.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/base/script.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/base/script.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/base/strict_mode.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/base/strict_mode.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/component.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/core/__init__.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/core/__init__.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/core/auto_scroll.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/core/auto_scroll.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/core/banner.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/core/banner.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/core/breakpoints.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/core/clipboard.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/core/clipboard.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/core/colors.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/core/cond.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/core/debounce.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/core/debounce.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/core/foreach.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/core/helmet.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/core/helmet.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/core/html.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/core/html.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/core/layout/__init__.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/core/match.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/core/responsive.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/core/sticky.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/core/sticky.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/core/upload.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/core/upload.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/core/window_events.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/core/window_events.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/datadisplay/__init__.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/datadisplay/__init__.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/datadisplay/code.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/datadisplay/code.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/datadisplay/dataeditor.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/datadisplay/dataeditor.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/datadisplay/logo.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/datadisplay/shiki_code_block.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/datadisplay/shiki_code_block.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/dynamic.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/el/__init__.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/el/__init__.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/el/element.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/el/element.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/el/elements/__init__.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/el/elements/__init__.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/el/elements/base.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/el/elements/base.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/el/elements/forms.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/el/elements/forms.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/el/elements/inline.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/el/elements/inline.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/el/elements/media.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/el/elements/media.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/el/elements/metadata.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/el/elements/metadata.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/el/elements/other.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/el/elements/other.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/el/elements/scripts.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/el/elements/scripts.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/el/elements/sectioning.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/el/elements/sectioning.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/el/elements/tables.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/el/elements/tables.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/el/elements/typography.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/el/elements/typography.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/gridjs/__init__.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/gridjs/datatable.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/gridjs/datatable.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/literals.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/lucide/__init__.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/lucide/icon.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/lucide/icon.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/markdown/__init__.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/markdown/markdown.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/moment/__init__.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/moment/moment.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/moment/moment.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/plotly/__init__.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/plotly/plotly.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/plotly/plotly.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/props.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/__init__.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/__init__.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/primitives/__init__.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/primitives/__init__.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/primitives/accordion.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/primitives/accordion.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/primitives/base.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/primitives/base.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/primitives/dialog.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/primitives/dialog.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/primitives/drawer.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/primitives/drawer.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/primitives/form.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/primitives/form.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/primitives/progress.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/primitives/progress.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/primitives/slider.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/primitives/slider.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/__init__.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/__init__.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/base.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/base.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/color_mode.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/color_mode.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/__init__.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/__init__.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/alert_dialog.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/alert_dialog.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/aspect_ratio.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/aspect_ratio.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/avatar.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/avatar.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/badge.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/badge.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/button.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/button.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/callout.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/callout.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/card.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/card.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/checkbox.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/checkbox.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/checkbox_cards.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/checkbox_cards.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/checkbox_group.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/checkbox_group.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/context_menu.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/context_menu.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/data_list.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/data_list.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/dialog.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/dialog.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/dropdown_menu.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/dropdown_menu.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/hover_card.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/hover_card.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/icon_button.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/icon_button.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/inset.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/inset.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/popover.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/popover.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/progress.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/progress.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/radio.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/radio.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/radio_cards.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/radio_cards.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/radio_group.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/radio_group.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/scroll_area.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/scroll_area.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/segmented_control.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/segmented_control.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/select.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/select.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/separator.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/separator.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/skeleton.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/skeleton.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/slider.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/slider.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/spinner.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/spinner.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/switch.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/switch.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/table.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/table.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/tabs.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/tabs.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/text_area.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/text_area.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/text_field.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/text_field.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/tooltip.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/components/tooltip.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/layout/__init__.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/layout/__init__.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/layout/base.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/layout/base.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/layout/box.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/layout/box.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/layout/center.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/layout/center.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/layout/container.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/layout/container.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/layout/flex.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/layout/flex.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/layout/grid.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/layout/grid.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/layout/list.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/layout/list.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/layout/section.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/layout/section.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/layout/spacer.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/layout/spacer.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/layout/stack.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/layout/stack.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/typography/__init__.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/typography/__init__.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/typography/base.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/typography/blockquote.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/typography/blockquote.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/typography/code.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/typography/code.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/typography/heading.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/typography/heading.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/typography/link.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/typography/link.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/typography/text.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/radix/themes/typography/text.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/react_player/__init__.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/react_player/audio.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/react_player/audio.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/react_player/react_player.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/react_player/react_player.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/react_player/video.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/react_player/video.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/react_router/__init__.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/react_router/dom.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/react_router/dom.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/recharts/__init__.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/recharts/__init__.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/recharts/cartesian.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/recharts/cartesian.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/recharts/charts.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/recharts/charts.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/recharts/general.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/recharts/general.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/recharts/polar.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/recharts/polar.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/recharts/recharts.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/recharts/recharts.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/sonner/__init__.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/sonner/toast.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/sonner/toast.pyi +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/tags/__init__.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/tags/cond_tag.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/tags/iter_tag.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/tags/match_tag.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/tags/tag.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/components/tags/tagless.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/config.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/constants/__init__.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/constants/colors.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/constants/compiler.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/constants/config.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/constants/custom_components.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/constants/event.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/constants/route.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/constants/state.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/constants/utils.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/custom_components/__init__.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/custom_components/custom_components.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/environment.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/experimental/__init__.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/experimental/client_state.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/experimental/hooks.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/istate/__init__.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/istate/data.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/istate/dynamic.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/istate/proxy.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/istate/storage.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/istate/wrappers.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/middleware/__init__.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/middleware/hydrate_middleware.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/middleware/middleware.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/page.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/plugins/__init__.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/plugins/_screenshot.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/plugins/base.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/plugins/shared_tailwind.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/plugins/sitemap.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/plugins/tailwind_v3.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/plugins/tailwind_v4.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/py.typed +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/reflex.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/route.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/style.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/utils/__init__.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/utils/build.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/utils/codespaces.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/utils/console.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/utils/decorator.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/utils/exceptions.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/utils/exec.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/utils/export.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/utils/format.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/utils/frontend_skeleton.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/utils/imports.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/utils/js_runtimes.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/utils/lazy_loader.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/utils/net.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/utils/path_ops.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/utils/pyi_generator.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/utils/registry.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/utils/rename.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/utils/serializers.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/utils/telemetry.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/utils/templates.py +4 -4
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/utils/token_manager.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/vars/__init__.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/reflex/vars/function.py +0 -0
- {reflex-0.8.15a0 → reflex-0.8.15a1}/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.15a1
|
|
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
|
|
@@ -18,10 +18,11 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
18
18
|
Classifier: Programming Language :: Python :: 3.11
|
|
19
19
|
Classifier: Programming Language :: Python :: 3.12
|
|
20
20
|
Classifier: Programming Language :: Python :: 3.13
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
21
22
|
Requires-Python: <4.0,>=3.10
|
|
22
23
|
Requires-Dist: alembic<2.0,>=1.15.2
|
|
23
24
|
Requires-Dist: click>=8.2
|
|
24
|
-
Requires-Dist: granian[reload]>=2.
|
|
25
|
+
Requires-Dist: granian[reload]>=2.5.5
|
|
25
26
|
Requires-Dist: httpx<1.0,>=0.23.3
|
|
26
27
|
Requires-Dist: packaging<26,>=24.2
|
|
27
28
|
Requires-Dist: platformdirs<5.0,>=4.3.7
|
|
@@ -32,7 +33,7 @@ Requires-Dist: python-socketio<6.0,>=5.12.0
|
|
|
32
33
|
Requires-Dist: redis<7.0,>=5.2.1
|
|
33
34
|
Requires-Dist: reflex-hosting-cli>=0.1.55
|
|
34
35
|
Requires-Dist: rich<15,>=13
|
|
35
|
-
Requires-Dist: sqlmodel<0.1,>=0.0.
|
|
36
|
+
Requires-Dist: sqlmodel<0.1,>=0.0.27
|
|
36
37
|
Requires-Dist: starlette>=0.47.0
|
|
37
38
|
Requires-Dist: typing-extensions>=4.13.0
|
|
38
39
|
Requires-Dist: wrapt<2.0,>=1.17.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "reflex"
|
|
3
|
-
version = "0.8.
|
|
3
|
+
version = "0.8.15a1"
|
|
4
4
|
description = "Web apps in pure Python."
|
|
5
5
|
license.text = "Apache-2.0"
|
|
6
6
|
authors = [
|
|
@@ -22,7 +22,7 @@ requires-python = ">=3.10,<4.0"
|
|
|
22
22
|
dependencies = [
|
|
23
23
|
"alembic >=1.15.2,<2.0",
|
|
24
24
|
"click >=8.2",
|
|
25
|
-
"granian[reload] >=2.
|
|
25
|
+
"granian[reload] >=2.5.5",
|
|
26
26
|
"httpx >=0.23.3,<1.0",
|
|
27
27
|
"packaging >=24.2,<26",
|
|
28
28
|
"platformdirs >=4.3.7,<5.0",
|
|
@@ -33,7 +33,7 @@ dependencies = [
|
|
|
33
33
|
"redis >=5.2.1,<7.0",
|
|
34
34
|
"reflex-hosting-cli >=0.1.55",
|
|
35
35
|
"rich >=13,<15",
|
|
36
|
-
"sqlmodel >=0.0.
|
|
36
|
+
"sqlmodel >=0.0.27,<0.1",
|
|
37
37
|
"starlette >=0.47.0",
|
|
38
38
|
"typing_extensions >=4.13.0",
|
|
39
39
|
"wrapt >=1.17.0,<2.0",
|
|
@@ -47,6 +47,7 @@ classifiers = [
|
|
|
47
47
|
"Programming Language :: Python :: 3.11",
|
|
48
48
|
"Programming Language :: Python :: 3.12",
|
|
49
49
|
"Programming Language :: Python :: 3.13",
|
|
50
|
+
"Programming Language :: Python :: 3.14",
|
|
50
51
|
]
|
|
51
52
|
|
|
52
53
|
[project.optional-dependencies]
|
|
@@ -89,7 +90,7 @@ dev = [
|
|
|
89
90
|
"pytest-cov",
|
|
90
91
|
"pytest-mock",
|
|
91
92
|
"pytest-playwright",
|
|
92
|
-
"pytest-
|
|
93
|
+
"pytest-rerunfailures",
|
|
93
94
|
"pytest-split",
|
|
94
95
|
"pytest",
|
|
95
96
|
"python-dotenv",
|
|
@@ -84,13 +84,18 @@ In the example above, you will be able to do `rx.list`
|
|
|
84
84
|
|
|
85
85
|
from __future__ import annotations
|
|
86
86
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
87
|
+
import sys
|
|
88
|
+
|
|
89
|
+
from reflex.utils import lazy_loader
|
|
90
|
+
|
|
91
|
+
if sys.version_info < (3, 11):
|
|
92
|
+
from reflex.utils import console
|
|
91
93
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
+
console.warn(
|
|
95
|
+
"Reflex support for Python 3.10 is deprecated and will be removed in a future release. Please upgrade to Python 3.11 or higher for continued support."
|
|
96
|
+
)
|
|
97
|
+
del console
|
|
98
|
+
del sys
|
|
94
99
|
|
|
95
100
|
RADIX_THEMES_MAPPING: dict = {
|
|
96
101
|
"components.radix.themes.base": ["color_mode", "theme", "theme_panel"],
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
# This file was generated by `reflex/utils/pyi_generator.py`!
|
|
4
4
|
# ------------------------------------------------------
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
import sys
|
|
7
7
|
|
|
8
8
|
from . import (
|
|
9
9
|
admin,
|
|
@@ -160,7 +160,14 @@ from .utils.misc import run_in_thread
|
|
|
160
160
|
from .utils.serializers import serializer
|
|
161
161
|
from .vars import Field, Var, field
|
|
162
162
|
|
|
163
|
-
|
|
163
|
+
if sys.version_info < (3, 11):
|
|
164
|
+
from reflex.utils import console
|
|
165
|
+
|
|
166
|
+
console.warn(
|
|
167
|
+
"Reflex support for Python 3.10 is deprecated and will be removed in a future release. Please upgrade to Python 3.11 or higher for continued support."
|
|
168
|
+
)
|
|
169
|
+
del console
|
|
170
|
+
del sys
|
|
164
171
|
RADIX_THEMES_MAPPING: dict
|
|
165
172
|
RADIX_THEMES_COMPONENTS_MAPPING: dict
|
|
166
173
|
RADIX_THEMES_LAYOUT_MAPPING: dict
|
|
@@ -5,7 +5,9 @@ from importlib.util import find_spec
|
|
|
5
5
|
if find_spec("pydantic") and find_spec("pydantic.v1"):
|
|
6
6
|
from pydantic.v1 import BaseModel
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
from reflex.utils.compat import ModelMetaclassLazyAnnotations
|
|
9
|
+
|
|
10
|
+
class Base(BaseModel, metaclass=ModelMetaclassLazyAnnotations):
|
|
9
11
|
"""The base class subclassed by all Reflex classes.
|
|
10
12
|
|
|
11
13
|
This class wraps Pydantic and provides common methods such as
|
|
@@ -22,22 +24,17 @@ if find_spec("pydantic") and find_spec("pydantic.v1"):
|
|
|
22
24
|
use_enum_values = True
|
|
23
25
|
extra = "allow"
|
|
24
26
|
|
|
25
|
-
def
|
|
26
|
-
"""
|
|
27
|
-
|
|
28
|
-
Args:
|
|
29
|
-
*args: Positional arguments.
|
|
30
|
-
**kwargs: Keyword arguments.
|
|
31
|
-
"""
|
|
27
|
+
def __init_subclass__(cls):
|
|
28
|
+
"""Warn that rx.Base is deprecated."""
|
|
32
29
|
from reflex.utils import console
|
|
33
30
|
|
|
34
31
|
console.deprecate(
|
|
35
32
|
feature_name="rx.Base",
|
|
36
|
-
reason="You can subclass from `pydantic.BaseModel` directly instead or use dataclasses if possible.",
|
|
37
|
-
deprecation_version="0.8.
|
|
33
|
+
reason=f"{cls!r} is subclassing rx.Base. You can subclass from `pydantic.BaseModel` directly instead or use dataclasses if possible.",
|
|
34
|
+
deprecation_version="0.8.15",
|
|
38
35
|
removal_version="0.9.0",
|
|
39
36
|
)
|
|
40
|
-
super().
|
|
37
|
+
super().__init_subclass__()
|
|
41
38
|
|
|
42
39
|
def json(self) -> str:
|
|
43
40
|
"""Convert the object to a json string.
|
|
@@ -7,6 +7,7 @@ from dataclasses import _MISSING_TYPE, MISSING
|
|
|
7
7
|
from typing import Annotated, Any, Generic, TypeVar, get_origin
|
|
8
8
|
|
|
9
9
|
from reflex.utils import types
|
|
10
|
+
from reflex.utils.compat import annotations_from_namespace
|
|
10
11
|
|
|
11
12
|
FIELD_TYPE = TypeVar("FIELD_TYPE")
|
|
12
13
|
|
|
@@ -117,7 +118,8 @@ class FieldBasedMeta(type):
|
|
|
117
118
|
cls, namespace: dict[str, Any], name: str
|
|
118
119
|
) -> dict[str, Any]:
|
|
119
120
|
return types.resolve_annotations(
|
|
120
|
-
namespace
|
|
121
|
+
annotations_from_namespace(namespace),
|
|
122
|
+
namespace["__module__"],
|
|
121
123
|
)
|
|
122
124
|
|
|
123
125
|
@classmethod
|
|
@@ -38,6 +38,84 @@ _REHYPE_PLUGINS = LiteralVar.create([_REHYPE_KATEX, _REHYPE_RAW])
|
|
|
38
38
|
NO_PROPS_TAGS = ("ul", "ol", "li")
|
|
39
39
|
|
|
40
40
|
|
|
41
|
+
def _h1(value: object):
|
|
42
|
+
from reflex.components.radix.themes.typography.heading import Heading
|
|
43
|
+
|
|
44
|
+
return Heading.create(value, as_="h1", size="6", margin_y="0.5em")
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def _h2(value: object):
|
|
48
|
+
from reflex.components.radix.themes.typography.heading import Heading
|
|
49
|
+
|
|
50
|
+
return Heading.create(value, as_="h2", size="5", margin_y="0.5em")
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def _h3(value: object):
|
|
54
|
+
from reflex.components.radix.themes.typography.heading import Heading
|
|
55
|
+
|
|
56
|
+
return Heading.create(value, as_="h3", size="4", margin_y="0.5em")
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def _h4(value: object):
|
|
60
|
+
from reflex.components.radix.themes.typography.heading import Heading
|
|
61
|
+
|
|
62
|
+
return Heading.create(value, as_="h4", size="3", margin_y="0.5em")
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def _h5(value: object):
|
|
66
|
+
from reflex.components.radix.themes.typography.heading import Heading
|
|
67
|
+
|
|
68
|
+
return Heading.create(value, as_="h5", size="2", margin_y="0.5em")
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def _h6(value: object):
|
|
72
|
+
from reflex.components.radix.themes.typography.heading import Heading
|
|
73
|
+
|
|
74
|
+
return Heading.create(value, as_="h6", size="1", margin_y="0.5em")
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def _p(value: object):
|
|
78
|
+
from reflex.components.radix.themes.typography.text import Text
|
|
79
|
+
|
|
80
|
+
return Text.create(value, margin_y="1em")
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def _ul(value: object):
|
|
84
|
+
from reflex.components.radix.themes.layout.list import UnorderedList
|
|
85
|
+
|
|
86
|
+
return UnorderedList.create(value, margin_y="1em")
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
def _ol(value: object):
|
|
90
|
+
from reflex.components.radix.themes.layout.list import OrderedList
|
|
91
|
+
|
|
92
|
+
return OrderedList.create(value, margin_y="1em")
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
def _li(value: object):
|
|
96
|
+
from reflex.components.radix.themes.layout.list import ListItem
|
|
97
|
+
|
|
98
|
+
return ListItem.create(value, margin_y="0.5em")
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
def _a(value: object):
|
|
102
|
+
from reflex.components.radix.themes.typography.link import Link
|
|
103
|
+
|
|
104
|
+
return Link.create(value)
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
def _code(value: object):
|
|
108
|
+
from reflex.components.radix.themes.typography.code import Code
|
|
109
|
+
|
|
110
|
+
return Code.create(value)
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
def _codeblock(value: object, **props):
|
|
114
|
+
from reflex.components.datadisplay.code import CodeBlock
|
|
115
|
+
|
|
116
|
+
return CodeBlock.create(value, margin_y="1em", wrap_long_lines=True, **props)
|
|
117
|
+
|
|
118
|
+
|
|
41
119
|
# Component Mapping
|
|
42
120
|
@lru_cache
|
|
43
121
|
def get_base_component_map() -> dict[str, Callable]:
|
|
@@ -46,33 +124,20 @@ def get_base_component_map() -> dict[str, Callable]:
|
|
|
46
124
|
Returns:
|
|
47
125
|
The base component map.
|
|
48
126
|
"""
|
|
49
|
-
from reflex.components.datadisplay.code import CodeBlock
|
|
50
|
-
from reflex.components.radix.themes.layout.list import (
|
|
51
|
-
ListItem,
|
|
52
|
-
OrderedList,
|
|
53
|
-
UnorderedList,
|
|
54
|
-
)
|
|
55
|
-
from reflex.components.radix.themes.typography.code import Code
|
|
56
|
-
from reflex.components.radix.themes.typography.heading import Heading
|
|
57
|
-
from reflex.components.radix.themes.typography.link import Link
|
|
58
|
-
from reflex.components.radix.themes.typography.text import Text
|
|
59
|
-
|
|
60
127
|
return {
|
|
61
|
-
"h1":
|
|
62
|
-
"h2":
|
|
63
|
-
"h3":
|
|
64
|
-
"h4":
|
|
65
|
-
"h5":
|
|
66
|
-
"h6":
|
|
67
|
-
"p":
|
|
68
|
-
"ul":
|
|
69
|
-
"ol":
|
|
70
|
-
"li":
|
|
71
|
-
"a":
|
|
72
|
-
"code":
|
|
73
|
-
"codeblock":
|
|
74
|
-
value, margin_y="1em", wrap_long_lines=True, **props
|
|
75
|
-
),
|
|
128
|
+
"h1": _h1,
|
|
129
|
+
"h2": _h2,
|
|
130
|
+
"h3": _h3,
|
|
131
|
+
"h4": _h4,
|
|
132
|
+
"h5": _h5,
|
|
133
|
+
"h6": _h6,
|
|
134
|
+
"p": _p,
|
|
135
|
+
"ul": _ul,
|
|
136
|
+
"ol": _ol,
|
|
137
|
+
"li": _li,
|
|
138
|
+
"a": _a,
|
|
139
|
+
"code": _code,
|
|
140
|
+
"codeblock": _codeblock,
|
|
76
141
|
}
|
|
77
142
|
|
|
78
143
|
|
|
@@ -413,7 +478,16 @@ let {_LANGUAGE!s} = match ? match[1] : '';
|
|
|
413
478
|
@staticmethod
|
|
414
479
|
def _component_map_hash(component_map: dict) -> str:
|
|
415
480
|
inp = str(
|
|
416
|
-
{
|
|
481
|
+
{
|
|
482
|
+
tag: (
|
|
483
|
+
f"{component.__module__}.{component.__qualname__}"
|
|
484
|
+
if (
|
|
485
|
+
"<" not in component.__name__
|
|
486
|
+
) # simple way to check against lambdas
|
|
487
|
+
else component(_MOCK_ARG)
|
|
488
|
+
)
|
|
489
|
+
for tag, component in component_map.items()
|
|
490
|
+
}
|
|
417
491
|
).encode()
|
|
418
492
|
return md5(inp).hexdigest()
|
|
419
493
|
|
|
@@ -134,6 +134,11 @@ class Templates(SimpleNamespace):
|
|
|
134
134
|
# The reflex.build frontend host
|
|
135
135
|
REFLEX_BUILD_FRONTEND = "https://build.reflex.dev"
|
|
136
136
|
|
|
137
|
+
# The reflex.build frontend with referrer
|
|
138
|
+
REFLEX_BUILD_FRONTEND_WITH_REFERRER = (
|
|
139
|
+
f"{REFLEX_BUILD_FRONTEND}/?utm_source=reflex_cli"
|
|
140
|
+
)
|
|
141
|
+
|
|
137
142
|
class Dirs(SimpleNamespace):
|
|
138
143
|
"""Folders used by the template system of Reflex."""
|
|
139
144
|
|
|
@@ -143,11 +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
|
-
"vite": "npm:rolldown-vite@7.1.
|
|
146
|
+
"vite": "npm:rolldown-vite@7.1.16",
|
|
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
|
-
"vite": "npm:rolldown-vite@7.1.
|
|
152
|
+
"vite": "npm:rolldown-vite@7.1.16",
|
|
153
153
|
}
|
|
@@ -1866,6 +1866,9 @@ def fix_events(
|
|
|
1866
1866
|
# Fix the events created by the handler.
|
|
1867
1867
|
out = []
|
|
1868
1868
|
for e in events:
|
|
1869
|
+
if callable(e) and getattr(e, "__name__", "") == "<lambda>":
|
|
1870
|
+
# A lambda was returned, assume the user wants to call it with no args.
|
|
1871
|
+
e = e()
|
|
1869
1872
|
if isinstance(e, Event):
|
|
1870
1873
|
# If the event is already an event, append it to the list.
|
|
1871
1874
|
out.append(e)
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"""State manager for managing client states."""
|
|
2
|
+
|
|
3
|
+
import contextlib
|
|
4
|
+
import dataclasses
|
|
5
|
+
from abc import ABC, abstractmethod
|
|
6
|
+
from collections.abc import AsyncIterator
|
|
7
|
+
|
|
8
|
+
from reflex import constants
|
|
9
|
+
from reflex.config import get_config
|
|
10
|
+
from reflex.state import BaseState
|
|
11
|
+
from reflex.utils import console, prerequisites
|
|
12
|
+
from reflex.utils.exceptions import InvalidStateManagerModeError
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
@dataclasses.dataclass
|
|
16
|
+
class StateManager(ABC):
|
|
17
|
+
"""A class to manage many client states."""
|
|
18
|
+
|
|
19
|
+
# The state class to use.
|
|
20
|
+
state: type[BaseState]
|
|
21
|
+
|
|
22
|
+
@classmethod
|
|
23
|
+
def create(cls, state: type[BaseState]):
|
|
24
|
+
"""Create a new state manager.
|
|
25
|
+
|
|
26
|
+
Args:
|
|
27
|
+
state: The state class to use.
|
|
28
|
+
|
|
29
|
+
Raises:
|
|
30
|
+
InvalidStateManagerModeError: If the state manager mode is invalid.
|
|
31
|
+
|
|
32
|
+
Returns:
|
|
33
|
+
The state manager (either disk, memory or redis).
|
|
34
|
+
"""
|
|
35
|
+
config = get_config()
|
|
36
|
+
if prerequisites.parse_redis_url() is not None:
|
|
37
|
+
config.state_manager_mode = constants.StateManagerMode.REDIS
|
|
38
|
+
if config.state_manager_mode == constants.StateManagerMode.MEMORY:
|
|
39
|
+
from reflex.istate.manager.memory import StateManagerMemory
|
|
40
|
+
|
|
41
|
+
return StateManagerMemory(state=state)
|
|
42
|
+
if config.state_manager_mode == constants.StateManagerMode.DISK:
|
|
43
|
+
from reflex.istate.manager.disk import StateManagerDisk
|
|
44
|
+
|
|
45
|
+
return StateManagerDisk(state=state)
|
|
46
|
+
if config.state_manager_mode == constants.StateManagerMode.REDIS:
|
|
47
|
+
redis = prerequisites.get_redis()
|
|
48
|
+
if redis is not None:
|
|
49
|
+
from reflex.istate.manager.redis import StateManagerRedis
|
|
50
|
+
|
|
51
|
+
# make sure expiration values are obtained only from the config object on creation
|
|
52
|
+
return StateManagerRedis(
|
|
53
|
+
state=state,
|
|
54
|
+
redis=redis,
|
|
55
|
+
token_expiration=config.redis_token_expiration,
|
|
56
|
+
lock_expiration=config.redis_lock_expiration,
|
|
57
|
+
lock_warning_threshold=config.redis_lock_warning_threshold,
|
|
58
|
+
)
|
|
59
|
+
msg = f"Expected one of: DISK, MEMORY, REDIS, got {config.state_manager_mode}"
|
|
60
|
+
raise InvalidStateManagerModeError(msg)
|
|
61
|
+
|
|
62
|
+
@abstractmethod
|
|
63
|
+
async def get_state(self, token: str) -> BaseState:
|
|
64
|
+
"""Get the state for a token.
|
|
65
|
+
|
|
66
|
+
Args:
|
|
67
|
+
token: The token to get the state for.
|
|
68
|
+
|
|
69
|
+
Returns:
|
|
70
|
+
The state for the token.
|
|
71
|
+
"""
|
|
72
|
+
|
|
73
|
+
@abstractmethod
|
|
74
|
+
async def set_state(self, token: str, state: BaseState):
|
|
75
|
+
"""Set the state for a token.
|
|
76
|
+
|
|
77
|
+
Args:
|
|
78
|
+
token: The token to set the state for.
|
|
79
|
+
state: The state to set.
|
|
80
|
+
"""
|
|
81
|
+
|
|
82
|
+
@abstractmethod
|
|
83
|
+
@contextlib.asynccontextmanager
|
|
84
|
+
async def modify_state(self, token: str) -> AsyncIterator[BaseState]:
|
|
85
|
+
"""Modify the state for a token while holding exclusive lock.
|
|
86
|
+
|
|
87
|
+
Args:
|
|
88
|
+
token: The token to modify the state for.
|
|
89
|
+
|
|
90
|
+
Yields:
|
|
91
|
+
The state for the token.
|
|
92
|
+
"""
|
|
93
|
+
yield self.state()
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def _default_token_expiration() -> int:
|
|
97
|
+
"""Get the default token expiration time.
|
|
98
|
+
|
|
99
|
+
Returns:
|
|
100
|
+
The default token expiration time.
|
|
101
|
+
"""
|
|
102
|
+
return get_config().redis_token_expiration
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def reset_disk_state_manager():
|
|
106
|
+
"""Reset the disk state manager."""
|
|
107
|
+
console.debug("Resetting disk state manager.")
|
|
108
|
+
states_directory = prerequisites.get_states_dir()
|
|
109
|
+
if states_directory.exists():
|
|
110
|
+
for path in states_directory.iterdir():
|
|
111
|
+
path.unlink()
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
def get_state_manager() -> StateManager:
|
|
115
|
+
"""Get the state manager for the app that is currently running.
|
|
116
|
+
|
|
117
|
+
Returns:
|
|
118
|
+
The state manager.
|
|
119
|
+
"""
|
|
120
|
+
return prerequisites.get_and_validate_app().app.state_manager
|