reflex 0.7.1a4__tar.gz → 0.7.2a1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of reflex might be problematic. Click here for more details.
- {reflex-0.7.1a4 → reflex-0.7.2a1}/PKG-INFO +3 -6
- {reflex-0.7.1a4 → reflex-0.7.2a1}/README.md +2 -5
- {reflex-0.7.1a4 → reflex-0.7.2a1}/pyproject.toml +1 -1
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/jinja/web/utils/context.js.jinja2 +8 -8
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +3 -3
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/admin.py +1 -2
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/app.py +46 -49
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/app_mixins/lifespan.py +2 -2
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/app_mixins/middleware.py +1 -2
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/assets.py +1 -2
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/base.py +2 -2
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/compiler/compiler.py +51 -16
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/compiler/utils.py +4 -13
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/base/app_wrap.pyi +7 -7
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/base/bare.py +3 -3
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/base/body.pyi +7 -7
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/base/document.py +1 -3
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/base/document.pyi +32 -32
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/base/error_boundary.py +2 -4
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/base/error_boundary.pyi +11 -13
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/base/fragment.pyi +7 -7
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/base/head.pyi +13 -13
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/base/link.pyi +22 -22
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/base/meta.py +5 -7
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/base/meta.pyi +40 -40
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/base/script.pyi +11 -14
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/base/strict_mode.pyi +7 -7
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/component.py +188 -113
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/core/auto_scroll.py +8 -1
- reflex-0.7.2a1/reflex/components/core/auto_scroll.pyi +257 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/core/banner.py +2 -4
- reflex-0.7.2a1/reflex/components/core/banner.pyi +701 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/core/breakpoints.py +5 -5
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/core/client_side_routing.pyi +14 -14
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/core/clipboard.py +4 -4
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/core/clipboard.pyi +12 -14
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/core/cond.py +17 -25
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/core/debounce.py +3 -3
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/core/debounce.pyi +14 -14
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/core/foreach.py +7 -2
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/core/html.py +1 -3
- reflex-0.7.2a1/reflex/components/core/html.pyi +258 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/core/match.py +15 -19
- reflex-0.7.2a1/reflex/components/core/sticky.pyi +1085 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/core/upload.py +4 -4
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/core/upload.pyi +62 -62
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/datadisplay/code.py +6 -6
- reflex-0.7.2a1/reflex/components/datadisplay/code.pyi +1617 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/datadisplay/dataeditor.py +49 -49
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/datadisplay/dataeditor.pyi +95 -123
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/datadisplay/logo.py +1 -3
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/datadisplay/shiki_code_block.py +8 -10
- reflex-0.7.2a1/reflex/components/datadisplay/shiki_code_block.pyi +2190 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/el/element.pyi +7 -7
- reflex-0.7.2a1/reflex/components/el/elements/base.pyi +329 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/el/elements/forms.py +23 -23
- reflex-0.7.2a1/reflex/components/el/elements/forms.pyi +3533 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/el/elements/inline.py +4 -4
- reflex-0.7.2a1/reflex/components/el/elements/inline.pyi +6822 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/el/elements/media.py +47 -47
- reflex-0.7.2a1/reflex/components/el/elements/media.pyi +6360 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/el/elements/metadata.py +1 -3
- reflex-0.7.2a1/reflex/components/el/elements/metadata.pyi +1127 -0
- reflex-0.7.2a1/reflex/components/el/elements/other.pyi +1706 -0
- reflex-0.7.2a1/reflex/components/el/elements/scripts.pyi +778 -0
- reflex-0.7.2a1/reflex/components/el/elements/sectioning.pyi +3628 -0
- reflex-0.7.2a1/reflex/components/el/elements/tables.pyi +2455 -0
- reflex-0.7.2a1/reflex/components/el/elements/typography.pyi +3647 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/gridjs/datatable.py +7 -7
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/gridjs/datatable.pyi +19 -19
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/lucide/icon.pyi +21 -21
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/markdown/markdown.py +2 -2
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/markdown/markdown.pyi +9 -9
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/moment/moment.py +11 -12
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/moment/moment.pyi +44 -47
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/next/base.pyi +7 -7
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/next/image.py +3 -3
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/next/image.pyi +19 -21
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/next/link.pyi +9 -9
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/next/video.py +1 -3
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/next/video.pyi +9 -9
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/plotly/plotly.py +22 -45
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/plotly/plotly.pyi +164 -164
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/primitives/accordion.py +14 -14
- reflex-0.7.2a1/reflex/components/radix/primitives/accordion.pyi +802 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/primitives/base.py +1 -3
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/primitives/base.pyi +15 -15
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/primitives/drawer.py +3 -3
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/primitives/drawer.pyi +110 -116
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/primitives/form.py +1 -1
- reflex-0.7.2a1/reflex/components/radix/primitives/form.pyi +1236 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/primitives/progress.py +6 -6
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/primitives/progress.pyi +225 -243
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/primitives/slider.py +6 -6
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/primitives/slider.pyi +52 -55
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/base.py +3 -6
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/base.pyi +197 -303
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/color_mode.py +5 -5
- reflex-0.7.2a1/reflex/components/radix/themes/color_mode.pyi +563 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/alert_dialog.pyi +229 -262
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/aspect_ratio.py +1 -3
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/aspect_ratio.pyi +8 -8
- reflex-0.7.2a1/reflex/components/radix/themes/components/avatar.pyi +146 -0
- reflex-0.7.2a1/reflex/components/radix/themes/components/badge.pyi +334 -0
- reflex-0.7.2a1/reflex/components/radix/themes/components/button.pyi +366 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/callout.py +2 -2
- reflex-0.7.2a1/reflex/components/radix/themes/components/callout.pyi +1457 -0
- reflex-0.7.2a1/reflex/components/radix/themes/components/card.pyi +273 -0
- reflex-0.7.2a1/reflex/components/radix/themes/components/checkbox.pyi +425 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/checkbox_cards.py +3 -7
- reflex-0.7.2a1/reflex/components/radix/themes/components/checkbox_cards.pyi +213 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/checkbox_group.py +2 -2
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/checkbox_group.pyi +83 -96
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/context_menu.py +18 -15
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/context_menu.pyi +408 -458
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/data_list.pyi +122 -147
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/dialog.pyi +231 -264
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/dropdown_menu.py +16 -13
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/dropdown_menu.pyi +223 -246
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/hover_card.py +2 -2
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/hover_card.pyi +237 -282
- reflex-0.7.2a1/reflex/components/radix/themes/components/icon_button.pyi +369 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/inset.py +8 -8
- reflex-0.7.2a1/reflex/components/radix/themes/components/inset.pyi +319 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/popover.py +2 -2
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/popover.pyi +229 -271
- reflex-0.7.2a1/reflex/components/radix/themes/components/progress.pyi +144 -0
- reflex-0.7.2a1/reflex/components/radix/themes/components/radio.pyi +135 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/radio_cards.py +4 -8
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/radio_cards.pyi +117 -154
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/radio_group.py +3 -3
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/radio_group.pyi +250 -291
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/scroll_area.pyi +14 -20
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/segmented_control.py +6 -6
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/segmented_control.pyi +89 -108
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/select.py +7 -7
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/select.pyi +376 -444
- reflex-0.7.2a1/reflex/components/radix/themes/components/separator.pyi +143 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/skeleton.pyi +32 -26
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/slider.py +8 -8
- reflex-0.7.2a1/reflex/components/radix/themes/components/slider.pyi +184 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/spinner.pyi +12 -19
- reflex-0.7.2a1/reflex/components/radix/themes/components/switch.pyi +157 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/table.py +9 -9
- reflex-0.7.2a1/reflex/components/radix/themes/components/table.pyi +1934 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/tabs.py +4 -4
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/tabs.pyi +120 -132
- reflex-0.7.2a1/reflex/components/radix/themes/components/text_area.pyi +390 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/text_field.py +2 -2
- reflex-0.7.2a1/reflex/components/radix/themes/components/text_field.pyi +903 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/tooltip.py +6 -6
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/tooltip.pyi +34 -43
- reflex-0.7.2a1/reflex/components/radix/themes/layout/base.pyi +158 -0
- reflex-0.7.2a1/reflex/components/radix/themes/layout/box.pyi +258 -0
- reflex-0.7.2a1/reflex/components/radix/themes/layout/center.pyi +307 -0
- reflex-0.7.2a1/reflex/components/radix/themes/layout/container.pyi +246 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/layout/flex.py +2 -2
- reflex-0.7.2a1/reflex/components/radix/themes/layout/flex.pyi +310 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/layout/grid.py +2 -2
- reflex-0.7.2a1/reflex/components/radix/themes/layout/grid.pyi +333 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/layout/list.py +2 -2
- reflex-0.7.2a1/reflex/components/radix/themes/layout/list.pyi +1020 -0
- reflex-0.7.2a1/reflex/components/radix/themes/layout/section.pyi +266 -0
- reflex-0.7.2a1/reflex/components/radix/themes/layout/spacer.pyi +307 -0
- reflex-0.7.2a1/reflex/components/radix/themes/layout/stack.pyi +833 -0
- reflex-0.7.2a1/reflex/components/radix/themes/typography/blockquote.pyi +339 -0
- reflex-0.7.2a1/reflex/components/radix/themes/typography/code.pyi +342 -0
- reflex-0.7.2a1/reflex/components/radix/themes/typography/heading.pyi +358 -0
- reflex-0.7.2a1/reflex/components/radix/themes/typography/link.pyi +404 -0
- reflex-0.7.2a1/reflex/components/radix/themes/typography/text.pyi +2170 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/react_player/audio.pyi +20 -22
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/react_player/react_player.pyi +19 -19
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/react_player/video.pyi +20 -22
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/recharts/cartesian.py +100 -97
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/recharts/cartesian.pyi +891 -1007
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/recharts/charts.py +42 -42
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/recharts/charts.pyi +212 -249
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/recharts/general.py +22 -21
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/recharts/general.pyi +198 -223
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/recharts/polar.py +42 -45
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/recharts/polar.pyi +254 -288
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/recharts/recharts.pyi +13 -13
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/sonner/toast.py +20 -20
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/sonner/toast.pyi +58 -61
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/suneditor/editor.py +9 -9
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/suneditor/editor.pyi +78 -83
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/tags/cond_tag.py +2 -2
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/tags/iter_tag.py +10 -14
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/tags/match_tag.py +2 -2
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/tags/tag.py +10 -10
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/config.py +36 -35
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/constants/__init__.py +56 -53
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/custom_components/custom_components.py +6 -7
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/event.py +38 -42
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/experimental/client_state.py +2 -4
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/experimental/layout.py +2 -2
- reflex-0.7.2a1/reflex/experimental/layout.pyi +793 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/istate/data.py +4 -5
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/middleware/hydrate_middleware.py +2 -2
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/middleware/middleware.py +2 -2
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/model.py +3 -5
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/page.py +2 -2
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/reflex.py +9 -10
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/state.py +77 -49
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/style.py +9 -3
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/testing.py +21 -24
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/utils/console.py +1 -1
- reflex-0.7.2a1/reflex/utils/decorator.py +50 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/utils/exec.py +6 -11
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/utils/export.py +2 -3
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/utils/format.py +4 -4
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/utils/imports.py +12 -12
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/utils/prerequisites.py +35 -84
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/utils/processes.py +5 -5
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/utils/pyi_generator.py +33 -22
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/utils/serializers.py +60 -15
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/utils/types.py +237 -56
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/vars/base.py +122 -72
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/vars/datetime.py +2 -2
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/vars/function.py +52 -55
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/vars/number.py +59 -5
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/vars/object.py +57 -26
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/vars/sequence.py +983 -958
- reflex-0.7.1a4/reflex/components/core/auto_scroll.pyi +0 -284
- reflex-0.7.1a4/reflex/components/core/banner.pyi +0 -755
- reflex-0.7.1a4/reflex/components/core/html.pyi +0 -287
- reflex-0.7.1a4/reflex/components/core/sticky.pyi +0 -1233
- reflex-0.7.1a4/reflex/components/datadisplay/code.pyi +0 -1623
- reflex-0.7.1a4/reflex/components/datadisplay/shiki_code_block.pyi +0 -2232
- reflex-0.7.1a4/reflex/components/el/elements/base.pyi +0 -356
- reflex-0.7.1a4/reflex/components/el/elements/forms.pyi +0 -3895
- reflex-0.7.1a4/reflex/components/el/elements/inline.pyi +0 -7584
- reflex-0.7.1a4/reflex/components/el/elements/media.pyi +0 -7058
- reflex-0.7.1a4/reflex/components/el/elements/metadata.pyi +0 -1241
- reflex-0.7.1a4/reflex/components/el/elements/other.pyi +0 -1895
- reflex-0.7.1a4/reflex/components/el/elements/scripts.pyi +0 -865
- reflex-0.7.1a4/reflex/components/el/elements/sectioning.pyi +0 -4033
- reflex-0.7.1a4/reflex/components/el/elements/tables.pyi +0 -2734
- reflex-0.7.1a4/reflex/components/el/elements/typography.pyi +0 -4054
- reflex-0.7.1a4/reflex/components/radix/primitives/accordion.pyi +0 -850
- reflex-0.7.1a4/reflex/components/radix/primitives/form.pyi +0 -1320
- reflex-0.7.1a4/reflex/components/radix/themes/color_mode.pyi +0 -633
- reflex-0.7.1a4/reflex/components/radix/themes/components/avatar.pyi +0 -161
- reflex-0.7.1a4/reflex/components/radix/themes/components/badge.pyi +0 -377
- reflex-0.7.1a4/reflex/components/radix/themes/components/button.pyi +0 -411
- reflex-0.7.1a4/reflex/components/radix/themes/components/callout.pyi +0 -1631
- reflex-0.7.1a4/reflex/components/radix/themes/components/card.pyi +0 -308
- reflex-0.7.1a4/reflex/components/radix/themes/components/checkbox.pyi +0 -460
- reflex-0.7.1a4/reflex/components/radix/themes/components/checkbox_cards.pyi +0 -247
- reflex-0.7.1a4/reflex/components/radix/themes/components/icon_button.pyi +0 -414
- reflex-0.7.1a4/reflex/components/radix/themes/components/inset.pyi +0 -379
- reflex-0.7.1a4/reflex/components/radix/themes/components/progress.pyi +0 -160
- reflex-0.7.1a4/reflex/components/radix/themes/components/radio.pyi +0 -148
- reflex-0.7.1a4/reflex/components/radix/themes/components/separator.pyi +0 -157
- reflex-0.7.1a4/reflex/components/radix/themes/components/slider.pyi +0 -207
- reflex-0.7.1a4/reflex/components/radix/themes/components/switch.pyi +0 -172
- reflex-0.7.1a4/reflex/components/radix/themes/components/table.pyi +0 -2288
- reflex-0.7.1a4/reflex/components/radix/themes/components/text_area.pyi +0 -440
- reflex-0.7.1a4/reflex/components/radix/themes/components/text_field.pyi +0 -998
- reflex-0.7.1a4/reflex/components/radix/themes/layout/base.pyi +0 -255
- reflex-0.7.1a4/reflex/components/radix/themes/layout/box.pyi +0 -285
- reflex-0.7.1a4/reflex/components/radix/themes/layout/center.pyi +0 -368
- reflex-0.7.1a4/reflex/components/radix/themes/layout/container.pyi +0 -279
- reflex-0.7.1a4/reflex/components/radix/themes/layout/flex.pyi +0 -371
- reflex-0.7.1a4/reflex/components/radix/themes/layout/grid.pyi +0 -403
- reflex-0.7.1a4/reflex/components/radix/themes/layout/list.pyi +0 -1123
- reflex-0.7.1a4/reflex/components/radix/themes/layout/section.pyi +0 -300
- reflex-0.7.1a4/reflex/components/radix/themes/layout/spacer.pyi +0 -368
- reflex-0.7.1a4/reflex/components/radix/themes/layout/stack.pyi +0 -976
- reflex-0.7.1a4/reflex/components/radix/themes/typography/blockquote.pyi +0 -381
- reflex-0.7.1a4/reflex/components/radix/themes/typography/code.pyi +0 -387
- reflex-0.7.1a4/reflex/components/radix/themes/typography/heading.pyi +0 -410
- reflex-0.7.1a4/reflex/components/radix/themes/typography/link.pyi +0 -460
- reflex-0.7.1a4/reflex/components/radix/themes/typography/text.pyi +0 -2446
- reflex-0.7.1a4/reflex/experimental/layout.pyi +0 -877
- reflex-0.7.1a4/reflex/utils/decorator.py +0 -25
- {reflex-0.7.1a4 → reflex-0.7.2a1}/LICENSE +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/apps/blank/assets/favicon.ico +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/apps/blank/code/__init__.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/apps/blank/code/blank.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/jinja/app/rxconfig.py.jinja2 +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/jinja/custom_components/README.md.jinja2 +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/jinja/custom_components/__init__.py.jinja2 +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/jinja/custom_components/demo_app.py.jinja2 +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/jinja/custom_components/pyproject.toml.jinja2 +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/jinja/custom_components/src.py.jinja2 +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/jinja/web/package.json.jinja2 +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/jinja/web/pages/_app.js.jinja2 +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/jinja/web/pages/_document.js.jinja2 +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/jinja/web/pages/base_page.js.jinja2 +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/jinja/web/pages/component.js.jinja2 +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/jinja/web/pages/custom_component.js.jinja2 +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/jinja/web/pages/index.js.jinja2 +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/jinja/web/pages/macros.js.jinja2 +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/jinja/web/pages/stateful_component.js.jinja2 +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/jinja/web/pages/stateful_components.js.jinja2 +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/jinja/web/pages/utils.js.jinja2 +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/jinja/web/styles/styles.css.jinja2 +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/jinja/web/tailwind.config.js.jinja2 +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/jinja/web/utils/theme.js.jinja2 +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/web/.gitignore +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/web/components/shiki/code.js +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/web/jsconfig.json +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/web/next.config.js +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/web/postcss.config.js +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/web/styles/tailwind.css +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/web/utils/client_side_routing.js +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/web/utils/helpers/dataeditor.js +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/web/utils/helpers/debounce.js +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/web/utils/helpers/paste.js +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/web/utils/helpers/range.js +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/web/utils/helpers/throttle.js +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/.templates/web/utils/state.js +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/__init__.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/__init__.pyi +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/__main__.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/app_mixins/__init__.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/app_mixins/mixin.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/app_module_for_backend.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/compiler/__init__.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/compiler/templates.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/__init__.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/__init__.pyi +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/base/__init__.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/base/__init__.pyi +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/base/app_wrap.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/base/body.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/base/fragment.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/base/head.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/base/link.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/base/script.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/base/strict_mode.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/core/__init__.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/core/__init__.pyi +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/core/client_side_routing.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/core/colors.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/core/layout/__init__.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/core/responsive.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/core/sticky.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/datadisplay/__init__.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/datadisplay/__init__.pyi +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/dynamic.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/el/__init__.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/el/__init__.pyi +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/el/constants/__init__.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/el/constants/html.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/el/constants/react.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/el/constants/reflex.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/el/element.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/el/elements/__init__.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/el/elements/__init__.pyi +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/el/elements/base.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/el/elements/other.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/el/elements/scripts.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/el/elements/sectioning.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/el/elements/tables.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/el/elements/typography.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/gridjs/__init__.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/literals.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/lucide/__init__.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/lucide/icon.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/markdown/__init__.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/moment/__init__.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/next/__init__.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/next/base.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/next/link.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/plotly/__init__.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/props.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/__init__.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/__init__.pyi +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/primitives/__init__.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/primitives/__init__.pyi +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/__init__.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/__init__.pyi +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/__init__.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/__init__.pyi +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/alert_dialog.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/avatar.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/badge.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/button.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/card.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/checkbox.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/data_list.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/dialog.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/icon_button.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/progress.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/radio.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/scroll_area.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/separator.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/skeleton.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/spinner.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/switch.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/components/text_area.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/layout/__init__.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/layout/__init__.pyi +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/layout/base.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/layout/box.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/layout/center.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/layout/container.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/layout/section.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/layout/spacer.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/layout/stack.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/typography/__init__.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/typography/__init__.pyi +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/typography/base.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/typography/blockquote.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/typography/code.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/typography/heading.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/typography/link.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/radix/themes/typography/text.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/react_player/__init__.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/react_player/audio.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/react_player/react_player.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/react_player/video.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/recharts/__init__.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/recharts/__init__.pyi +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/recharts/recharts.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/sonner/__init__.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/suneditor/__init__.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/tags/__init__.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/components/tags/tagless.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/constants/base.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/constants/colors.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/constants/compiler.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/constants/config.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/constants/custom_components.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/constants/event.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/constants/installer.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/constants/route.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/constants/state.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/constants/style.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/constants/utils.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/custom_components/__init__.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/experimental/__init__.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/experimental/hooks.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/experimental/misc.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/istate/__init__.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/istate/dynamic.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/istate/proxy.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/istate/storage.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/istate/wrappers.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/middleware/__init__.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/py.typed +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/route.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/utils/__init__.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/utils/build.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/utils/codespaces.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/utils/compat.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/utils/exceptions.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/utils/lazy_loader.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/utils/net.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/utils/path_ops.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/utils/redir.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/utils/registry.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/utils/telemetry.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/vars/__init__.py +0 -0
- {reflex-0.7.1a4 → reflex-0.7.2a1}/reflex/vars/dep_tracking.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: reflex
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.2a1
|
|
4
4
|
Summary: Web apps in pure Python.
|
|
5
5
|
License: Apache-2.0
|
|
6
6
|
Keywords: web,framework
|
|
@@ -48,9 +48,6 @@ Project-URL: Homepage, https://reflex.dev
|
|
|
48
48
|
Project-URL: Repository, https://github.com/reflex-dev/reflex
|
|
49
49
|
Description-Content-Type: text/markdown
|
|
50
50
|
|
|
51
|
-
```diff
|
|
52
|
-
+ Searching for Pynecone? You are in the right repo. Pynecone has been renamed to Reflex. +
|
|
53
|
-
```
|
|
54
51
|
|
|
55
52
|
<div align="center">
|
|
56
53
|
<img src="https://raw.githubusercontent.com/reflex-dev/reflex/main/docs/images/reflex_dark.svg#gh-light-mode-only" alt="Reflex Logo" width="300px">
|
|
@@ -287,9 +284,9 @@ You can create a multi-page app by adding more pages.
|
|
|
287
284
|
|
|
288
285
|
Reflex launched in December 2022 with the name Pynecone.
|
|
289
286
|
|
|
290
|
-
|
|
287
|
+
Beginning in 2025, [Reflex Cloud](https://cloud.reflex.dev) has launched to provide the best hosting experience for Reflex apps. We will continue to develop it and implement more features.
|
|
291
288
|
|
|
292
|
-
Reflex has new releases and features coming every week! Make sure to :star: star and :eyes: watch this repository to stay up to date.
|
|
289
|
+
Reflex has new releases and features coming every other week! Make sure to :star: star and :eyes: watch this repository to stay up to date.
|
|
293
290
|
|
|
294
291
|
## Contributing
|
|
295
292
|
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
```diff
|
|
2
|
-
+ Searching for Pynecone? You are in the right repo. Pynecone has been renamed to Reflex. +
|
|
3
|
-
```
|
|
4
1
|
|
|
5
2
|
<div align="center">
|
|
6
3
|
<img src="https://raw.githubusercontent.com/reflex-dev/reflex/main/docs/images/reflex_dark.svg#gh-light-mode-only" alt="Reflex Logo" width="300px">
|
|
@@ -237,9 +234,9 @@ You can create a multi-page app by adding more pages.
|
|
|
237
234
|
|
|
238
235
|
Reflex launched in December 2022 with the name Pynecone.
|
|
239
236
|
|
|
240
|
-
|
|
237
|
+
Beginning in 2025, [Reflex Cloud](https://cloud.reflex.dev) has launched to provide the best hosting experience for Reflex apps. We will continue to develop it and implement more features.
|
|
241
238
|
|
|
242
|
-
Reflex has new releases and features coming every week! Make sure to :star: star and :eyes: watch this repository to stay up to date.
|
|
239
|
+
Reflex has new releases and features coming every other week! Make sure to :star: star and :eyes: watch this repository to stay up to date.
|
|
243
240
|
|
|
244
241
|
## Contributing
|
|
245
242
|
|
|
@@ -78,9 +78,9 @@ export function UploadFilesProvider({ children }) {
|
|
|
78
78
|
return newFilesById
|
|
79
79
|
})
|
|
80
80
|
return (
|
|
81
|
-
<UploadFilesContext
|
|
81
|
+
<UploadFilesContext value={[filesById, setFilesById]}>
|
|
82
82
|
{children}
|
|
83
|
-
</UploadFilesContext
|
|
83
|
+
</UploadFilesContext>
|
|
84
84
|
)
|
|
85
85
|
}
|
|
86
86
|
|
|
@@ -92,9 +92,9 @@ export function EventLoopProvider({ children }) {
|
|
|
92
92
|
clientStorage,
|
|
93
93
|
)
|
|
94
94
|
return (
|
|
95
|
-
<EventLoopContext
|
|
95
|
+
<EventLoopContext value={[addEvents, connectErrors]}>
|
|
96
96
|
{children}
|
|
97
|
-
</EventLoopContext
|
|
97
|
+
</EventLoopContext>
|
|
98
98
|
)
|
|
99
99
|
}
|
|
100
100
|
|
|
@@ -112,13 +112,13 @@ export function StateProvider({ children }) {
|
|
|
112
112
|
|
|
113
113
|
return (
|
|
114
114
|
{% for state_name in initial_state %}
|
|
115
|
-
<StateContexts.{{state_name|var_name}}
|
|
115
|
+
<StateContexts.{{state_name|var_name}} value={ {{state_name|var_name}} }>
|
|
116
116
|
{% endfor %}
|
|
117
|
-
<DispatchContext
|
|
117
|
+
<DispatchContext value={dispatchers}>
|
|
118
118
|
{children}
|
|
119
|
-
</DispatchContext
|
|
119
|
+
</DispatchContext>
|
|
120
120
|
{% for state_name in initial_state|reverse %}
|
|
121
|
-
</StateContexts.{{state_name|var_name}}
|
|
121
|
+
</StateContexts.{{state_name|var_name}}>
|
|
122
122
|
{% endfor %}
|
|
123
123
|
)
|
|
124
124
|
}
|
|
@@ -36,17 +36,17 @@ export default function RadixThemesColorModeProvider({ children }) {
|
|
|
36
36
|
const allowedModes = ["light", "dark", "system"];
|
|
37
37
|
if (!allowedModes.includes(mode)) {
|
|
38
38
|
console.error(
|
|
39
|
-
`Invalid color mode "${mode}". Defaulting to "${defaultColorMode}"
|
|
39
|
+
`Invalid color mode "${mode}". Defaulting to "${defaultColorMode}".`,
|
|
40
40
|
);
|
|
41
41
|
mode = defaultColorMode;
|
|
42
42
|
}
|
|
43
43
|
setTheme(mode);
|
|
44
44
|
};
|
|
45
45
|
return (
|
|
46
|
-
<ColorModeContext
|
|
46
|
+
<ColorModeContext
|
|
47
47
|
value={{ rawColorMode, resolvedColorMode, toggleColorMode, setColorMode }}
|
|
48
48
|
>
|
|
49
49
|
{children}
|
|
50
|
-
</ColorModeContext
|
|
50
|
+
</ColorModeContext>
|
|
51
51
|
);
|
|
52
52
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"""The Reflex Admin Dashboard."""
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass, field
|
|
4
|
-
from typing import Optional
|
|
5
4
|
|
|
6
5
|
from starlette_admin.base import BaseAdmin as Admin
|
|
7
6
|
|
|
@@ -12,4 +11,4 @@ class AdminDash:
|
|
|
12
11
|
|
|
13
12
|
models: list = field(default_factory=list)
|
|
14
13
|
view_overrides: dict = field(default_factory=dict)
|
|
15
|
-
admin:
|
|
14
|
+
admin: Admin | None = None
|
|
@@ -25,12 +25,8 @@ from typing import (
|
|
|
25
25
|
Callable,
|
|
26
26
|
Coroutine,
|
|
27
27
|
Dict,
|
|
28
|
-
List,
|
|
29
28
|
MutableMapping,
|
|
30
|
-
Optional,
|
|
31
|
-
Set,
|
|
32
29
|
Type,
|
|
33
|
-
Union,
|
|
34
30
|
get_args,
|
|
35
31
|
get_type_hints,
|
|
36
32
|
)
|
|
@@ -167,7 +163,7 @@ def default_backend_exception_handler(exception: Exception) -> EventSpec:
|
|
|
167
163
|
)
|
|
168
164
|
|
|
169
165
|
|
|
170
|
-
def extra_overlay_function() ->
|
|
166
|
+
def extra_overlay_function() -> Component | None:
|
|
171
167
|
"""Extra overlay function to add to the overlay component.
|
|
172
168
|
|
|
173
169
|
Returns:
|
|
@@ -250,16 +246,16 @@ class UploadFile(StarletteUploadFile):
|
|
|
250
246
|
|
|
251
247
|
file: BinaryIO
|
|
252
248
|
|
|
253
|
-
path:
|
|
249
|
+
path: Path | None = dataclasses.field(default=None)
|
|
254
250
|
|
|
255
|
-
_deprecated_filename:
|
|
251
|
+
_deprecated_filename: str | None = dataclasses.field(default=None)
|
|
256
252
|
|
|
257
|
-
size:
|
|
253
|
+
size: int | None = dataclasses.field(default=None)
|
|
258
254
|
|
|
259
255
|
headers: Headers = dataclasses.field(default_factory=Headers)
|
|
260
256
|
|
|
261
257
|
@property
|
|
262
|
-
def name(self) ->
|
|
258
|
+
def name(self) -> str | None:
|
|
263
259
|
"""Get the name of the uploaded file.
|
|
264
260
|
|
|
265
261
|
Returns:
|
|
@@ -269,7 +265,7 @@ class UploadFile(StarletteUploadFile):
|
|
|
269
265
|
return self.path.name
|
|
270
266
|
|
|
271
267
|
@property
|
|
272
|
-
def filename(self) ->
|
|
268
|
+
def filename(self) -> str | None:
|
|
273
269
|
"""Get the filename of the uploaded file.
|
|
274
270
|
|
|
275
271
|
Returns:
|
|
@@ -290,13 +286,13 @@ class UploadFile(StarletteUploadFile):
|
|
|
290
286
|
class UnevaluatedPage:
|
|
291
287
|
"""An uncompiled page."""
|
|
292
288
|
|
|
293
|
-
component:
|
|
289
|
+
component: Component | ComponentCallable
|
|
294
290
|
route: str
|
|
295
|
-
title:
|
|
296
|
-
description:
|
|
291
|
+
title: Var | str | None
|
|
292
|
+
description: Var | str | None
|
|
297
293
|
image: str
|
|
298
|
-
on_load:
|
|
299
|
-
meta:
|
|
294
|
+
on_load: EventType[()] | None
|
|
295
|
+
meta: list[dict[str, str]]
|
|
300
296
|
|
|
301
297
|
|
|
302
298
|
@dataclasses.dataclass()
|
|
@@ -322,7 +318,7 @@ class App(MiddlewareMixin, LifespanMixin):
|
|
|
322
318
|
"""
|
|
323
319
|
|
|
324
320
|
# The global [theme](https://reflex.dev/docs/styling/theming/#theme) for the entire app.
|
|
325
|
-
theme:
|
|
321
|
+
theme: Component | None = dataclasses.field(
|
|
326
322
|
default_factory=lambda: themes.theme(accent_color="blue")
|
|
327
323
|
)
|
|
328
324
|
|
|
@@ -330,18 +326,18 @@ class App(MiddlewareMixin, LifespanMixin):
|
|
|
330
326
|
style: ComponentStyle = dataclasses.field(default_factory=dict)
|
|
331
327
|
|
|
332
328
|
# A list of URLs to [stylesheets](https://reflex.dev/docs/styling/custom-stylesheets/) to include in the app.
|
|
333
|
-
stylesheets:
|
|
329
|
+
stylesheets: list[str] = dataclasses.field(default_factory=list)
|
|
334
330
|
|
|
335
331
|
# A component that is present on every page (defaults to the Connection Error banner).
|
|
336
|
-
overlay_component:
|
|
337
|
-
|
|
332
|
+
overlay_component: Component | ComponentCallable | None = dataclasses.field(
|
|
333
|
+
default=None
|
|
338
334
|
)
|
|
339
335
|
|
|
340
336
|
# Error boundary component to wrap the app with.
|
|
341
|
-
error_boundary:
|
|
337
|
+
error_boundary: ComponentCallable | None = dataclasses.field(default=None)
|
|
342
338
|
|
|
343
339
|
# App wraps to be applied to the whole app. Expected to be a dictionary of (order, name) to a function that takes whether the state is enabled and optionally returns a component.
|
|
344
|
-
app_wraps:
|
|
340
|
+
app_wraps: dict[tuple[int, str], Callable[[bool], Component | None]] = (
|
|
345
341
|
dataclasses.field(
|
|
346
342
|
default_factory=lambda: {
|
|
347
343
|
(55, "ErrorBoundary"): (
|
|
@@ -356,24 +352,24 @@ class App(MiddlewareMixin, LifespanMixin):
|
|
|
356
352
|
)
|
|
357
353
|
|
|
358
354
|
# Components to add to the head of every page.
|
|
359
|
-
head_components:
|
|
355
|
+
head_components: list[Component] = dataclasses.field(default_factory=list)
|
|
360
356
|
|
|
361
357
|
# The Socket.IO AsyncServer instance.
|
|
362
|
-
sio:
|
|
358
|
+
sio: AsyncServer | None = None
|
|
363
359
|
|
|
364
360
|
# The language to add to the html root tag of every page.
|
|
365
|
-
html_lang:
|
|
361
|
+
html_lang: str | None = None
|
|
366
362
|
|
|
367
363
|
# Attributes to add to the html root tag of every page.
|
|
368
|
-
html_custom_attrs:
|
|
364
|
+
html_custom_attrs: dict[str, str] | None = None
|
|
369
365
|
|
|
370
366
|
# A map from a route to an unevaluated page.
|
|
371
|
-
_unevaluated_pages:
|
|
367
|
+
_unevaluated_pages: dict[str, UnevaluatedPage] = dataclasses.field(
|
|
372
368
|
default_factory=dict
|
|
373
369
|
)
|
|
374
370
|
|
|
375
371
|
# A map from a page route to the component to render. Users should use `add_page`.
|
|
376
|
-
_pages:
|
|
372
|
+
_pages: dict[str, Component] = dataclasses.field(default_factory=dict)
|
|
377
373
|
|
|
378
374
|
# A mapping of pages which created states as they were being evaluated.
|
|
379
375
|
_stateful_pages: Dict[str, None] = dataclasses.field(default_factory=dict)
|
|
@@ -382,24 +378,24 @@ class App(MiddlewareMixin, LifespanMixin):
|
|
|
382
378
|
_api: FastAPI | None = None
|
|
383
379
|
|
|
384
380
|
# The state class to use for the app.
|
|
385
|
-
_state:
|
|
381
|
+
_state: Type[BaseState] | None = None
|
|
386
382
|
|
|
387
383
|
# Class to manage many client states.
|
|
388
|
-
_state_manager:
|
|
384
|
+
_state_manager: StateManager | None = None
|
|
389
385
|
|
|
390
386
|
# Mapping from a route to event handlers to trigger when the page loads.
|
|
391
|
-
_load_events:
|
|
387
|
+
_load_events: dict[str, list[IndividualEventType[()]]] = dataclasses.field(
|
|
392
388
|
default_factory=dict
|
|
393
389
|
)
|
|
394
390
|
|
|
395
391
|
# Admin dashboard to view and manage the database.
|
|
396
|
-
admin_dash:
|
|
392
|
+
admin_dash: AdminDash | None = None
|
|
397
393
|
|
|
398
394
|
# The async server name space.
|
|
399
|
-
_event_namespace:
|
|
395
|
+
_event_namespace: EventNamespace | None = None
|
|
400
396
|
|
|
401
397
|
# Background tasks that are currently running.
|
|
402
|
-
_background_tasks:
|
|
398
|
+
_background_tasks: set[asyncio.Task] = dataclasses.field(default_factory=set)
|
|
403
399
|
|
|
404
400
|
# Frontend Error Handler Function
|
|
405
401
|
frontend_exception_handler: Callable[[Exception], None] = (
|
|
@@ -408,7 +404,7 @@ class App(MiddlewareMixin, LifespanMixin):
|
|
|
408
404
|
|
|
409
405
|
# Backend Error Handler Function
|
|
410
406
|
backend_exception_handler: Callable[
|
|
411
|
-
[Exception],
|
|
407
|
+
[Exception], EventSpec | list[EventSpec] | None
|
|
412
408
|
] = default_backend_exception_handler
|
|
413
409
|
|
|
414
410
|
# Put the toast provider in the app wrap.
|
|
@@ -895,7 +891,7 @@ class App(MiddlewareMixin, LifespanMixin):
|
|
|
895
891
|
|
|
896
892
|
admin.mount_to(self.api)
|
|
897
893
|
|
|
898
|
-
def _get_frontend_packages(self, imports:
|
|
894
|
+
def _get_frontend_packages(self, imports: dict[str, set[ImportVar]]):
|
|
899
895
|
"""Gets the frontend packages to be installed and filters out the unnecessary ones.
|
|
900
896
|
|
|
901
897
|
Args:
|
|
@@ -986,12 +982,15 @@ class App(MiddlewareMixin, LifespanMixin):
|
|
|
986
982
|
|
|
987
983
|
def _setup_sticky_badge(self):
|
|
988
984
|
"""Add the sticky badge to the app."""
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
985
|
+
from reflex.components.component import memo
|
|
986
|
+
|
|
987
|
+
@memo
|
|
988
|
+
def memoized_badge():
|
|
992
989
|
sticky_badge = sticky()
|
|
993
990
|
sticky_badge._add_style_recursive({})
|
|
994
|
-
|
|
991
|
+
return sticky_badge
|
|
992
|
+
|
|
993
|
+
self.app_wraps[(0, "StickyBadge")] = lambda _: memoized_badge()
|
|
995
994
|
|
|
996
995
|
def _apply_decorated_pages(self):
|
|
997
996
|
"""Add @rx.page decorated pages to the app.
|
|
@@ -1006,9 +1005,7 @@ class App(MiddlewareMixin, LifespanMixin):
|
|
|
1006
1005
|
for render, kwargs in DECORATED_PAGES[get_config().app_name]:
|
|
1007
1006
|
self.add_page(render, **kwargs)
|
|
1008
1007
|
|
|
1009
|
-
def _validate_var_dependencies(
|
|
1010
|
-
self, state: Optional[Type[BaseState]] = None
|
|
1011
|
-
) -> None:
|
|
1008
|
+
def _validate_var_dependencies(self, state: Type[BaseState] | None = None) -> None:
|
|
1012
1009
|
"""Validate the dependencies of the vars in the app.
|
|
1013
1010
|
|
|
1014
1011
|
Args:
|
|
@@ -1080,7 +1077,7 @@ class App(MiddlewareMixin, LifespanMixin):
|
|
|
1080
1077
|
self.style = evaluate_style_namespaces(self.style)
|
|
1081
1078
|
|
|
1082
1079
|
# Add the app wrappers.
|
|
1083
|
-
app_wrappers:
|
|
1080
|
+
app_wrappers: dict[tuple[int, str], Component] = {
|
|
1084
1081
|
# Default app wrap component renders {children}
|
|
1085
1082
|
(0, "AppWrap"): AppWrap.create()
|
|
1086
1083
|
}
|
|
@@ -1547,8 +1544,8 @@ class App(MiddlewareMixin, LifespanMixin):
|
|
|
1547
1544
|
|
|
1548
1545
|
valid = bool(
|
|
1549
1546
|
return_type == EventSpec
|
|
1550
|
-
or return_type ==
|
|
1551
|
-
or return_type ==
|
|
1547
|
+
or return_type == EventSpec | None
|
|
1548
|
+
or return_type == list[EventSpec]
|
|
1552
1549
|
or return_type == inspect.Signature.empty
|
|
1553
1550
|
or return_type is None
|
|
1554
1551
|
)
|
|
@@ -1556,7 +1553,7 @@ class App(MiddlewareMixin, LifespanMixin):
|
|
|
1556
1553
|
if not valid:
|
|
1557
1554
|
raise ValueError(
|
|
1558
1555
|
f"Provided custom {handler_domain} exception handler `{_fn_name}` has the wrong return type."
|
|
1559
|
-
f"Expected `
|
|
1556
|
+
f"Expected `EventSpec | list[EventSpec] | None` but got `{return_type}`"
|
|
1560
1557
|
)
|
|
1561
1558
|
|
|
1562
1559
|
|
|
@@ -1696,7 +1693,7 @@ def upload(app: App):
|
|
|
1696
1693
|
The upload function.
|
|
1697
1694
|
"""
|
|
1698
1695
|
|
|
1699
|
-
async def upload_file(request: Request, files:
|
|
1696
|
+
async def upload_file(request: Request, files: list[FastAPIUploadFile]):
|
|
1700
1697
|
"""Upload a file.
|
|
1701
1698
|
|
|
1702
1699
|
Args:
|
|
@@ -1736,7 +1733,7 @@ def upload(app: App):
|
|
|
1736
1733
|
# get handler function
|
|
1737
1734
|
func = getattr(type(current_state), handler.split(".")[-1])
|
|
1738
1735
|
|
|
1739
|
-
# check if there exists any handler args with annotation,
|
|
1736
|
+
# check if there exists any handler args with annotation, list[UploadFile]
|
|
1740
1737
|
if isinstance(func, EventHandler):
|
|
1741
1738
|
if func.is_background:
|
|
1742
1739
|
raise UploadTypeError(
|
|
@@ -1756,7 +1753,7 @@ def upload(app: App):
|
|
|
1756
1753
|
if not handler_upload_param:
|
|
1757
1754
|
raise UploadValueError(
|
|
1758
1755
|
f"`{handler}` handler should have a parameter annotated as "
|
|
1759
|
-
"
|
|
1756
|
+
"list[rx.UploadFile]"
|
|
1760
1757
|
)
|
|
1761
1758
|
|
|
1762
1759
|
# Make a copy of the files as they are closed after the request.
|
|
@@ -7,7 +7,7 @@ import contextlib
|
|
|
7
7
|
import dataclasses
|
|
8
8
|
import functools
|
|
9
9
|
import inspect
|
|
10
|
-
from typing import Callable, Coroutine
|
|
10
|
+
from typing import Callable, Coroutine
|
|
11
11
|
|
|
12
12
|
from fastapi import FastAPI
|
|
13
13
|
|
|
@@ -22,7 +22,7 @@ class LifespanMixin(AppMixin):
|
|
|
22
22
|
"""A Mixin that allow tasks to run during the whole app lifespan."""
|
|
23
23
|
|
|
24
24
|
# Lifespan tasks that are planned to run.
|
|
25
|
-
lifespan_tasks:
|
|
25
|
+
lifespan_tasks: set[asyncio.Task | Callable] = dataclasses.field(
|
|
26
26
|
default_factory=set
|
|
27
27
|
)
|
|
28
28
|
|
|
@@ -4,7 +4,6 @@ from __future__ import annotations
|
|
|
4
4
|
|
|
5
5
|
import asyncio
|
|
6
6
|
import dataclasses
|
|
7
|
-
from typing import List
|
|
8
7
|
|
|
9
8
|
from reflex.event import Event
|
|
10
9
|
from reflex.middleware import HydrateMiddleware, Middleware
|
|
@@ -18,7 +17,7 @@ class MiddlewareMixin(AppMixin):
|
|
|
18
17
|
"""Middleware Mixin that allow to add middleware to the app."""
|
|
19
18
|
|
|
20
19
|
# Middleware to add to the app. Users should use `add_middleware`. PRIVATE.
|
|
21
|
-
middleware:
|
|
20
|
+
middleware: list[Middleware] = dataclasses.field(default_factory=list)
|
|
22
21
|
|
|
23
22
|
def _init_mixin(self):
|
|
24
23
|
self.middleware.append(HydrateMiddleware())
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
import inspect
|
|
4
4
|
from pathlib import Path
|
|
5
|
-
from typing import Optional
|
|
6
5
|
|
|
7
6
|
from reflex import constants
|
|
8
7
|
from reflex.config import EnvironmentVariables
|
|
@@ -11,7 +10,7 @@ from reflex.config import EnvironmentVariables
|
|
|
11
10
|
def asset(
|
|
12
11
|
path: str,
|
|
13
12
|
shared: bool = False,
|
|
14
|
-
subfolder:
|
|
13
|
+
subfolder: str | None = None,
|
|
15
14
|
_stack_level: int = 1,
|
|
16
15
|
) -> str:
|
|
17
16
|
"""Add an asset to the app, either shared as a symlink or local.
|
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
import os
|
|
6
|
-
from typing import TYPE_CHECKING, Any,
|
|
6
|
+
from typing import TYPE_CHECKING, Any, Type
|
|
7
7
|
|
|
8
8
|
import pydantic.v1.main as pydantic_main
|
|
9
9
|
from pydantic.v1 import BaseModel
|
|
10
10
|
from pydantic.v1.fields import ModelField
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
def validate_field_name(bases:
|
|
13
|
+
def validate_field_name(bases: list[Type["BaseModel"]], field_name: str) -> None:
|
|
14
14
|
"""Ensure that the field's name does not shadow an existing attribute of the model.
|
|
15
15
|
|
|
16
16
|
Args:
|
|
@@ -4,7 +4,7 @@ from __future__ import annotations
|
|
|
4
4
|
|
|
5
5
|
from datetime import datetime
|
|
6
6
|
from pathlib import Path
|
|
7
|
-
from typing import TYPE_CHECKING,
|
|
7
|
+
from typing import TYPE_CHECKING, Iterable, Sequence, Type
|
|
8
8
|
|
|
9
9
|
from reflex import constants
|
|
10
10
|
from reflex.compiler import templates, utils
|
|
@@ -94,7 +94,7 @@ def _compile_theme(theme: str) -> str:
|
|
|
94
94
|
return templates.THEME.render(theme=theme)
|
|
95
95
|
|
|
96
96
|
|
|
97
|
-
def _compile_contexts(state:
|
|
97
|
+
def _compile_contexts(state: Type[BaseState] | None, theme: Component | None) -> str:
|
|
98
98
|
"""Compile the initial state and contexts.
|
|
99
99
|
|
|
100
100
|
Args:
|
|
@@ -219,7 +219,7 @@ def _compile_component(component: Component | StatefulComponent) -> str:
|
|
|
219
219
|
|
|
220
220
|
def _compile_components(
|
|
221
221
|
components: set[CustomComponent],
|
|
222
|
-
) -> tuple[str,
|
|
222
|
+
) -> tuple[str, dict[str, list[ImportVar]]]:
|
|
223
223
|
"""Compile the components.
|
|
224
224
|
|
|
225
225
|
Args:
|
|
@@ -352,8 +352,8 @@ def _compile_tailwind(
|
|
|
352
352
|
|
|
353
353
|
def compile_document_root(
|
|
354
354
|
head_components: list[Component],
|
|
355
|
-
html_lang:
|
|
356
|
-
html_custom_attrs:
|
|
355
|
+
html_lang: str | None = None,
|
|
356
|
+
html_custom_attrs: dict[str, Var | str] | None = None,
|
|
357
357
|
) -> tuple[str, str]:
|
|
358
358
|
"""Compile the document root.
|
|
359
359
|
|
|
@@ -415,7 +415,7 @@ def compile_theme(style: ComponentStyle) -> tuple[str, str]:
|
|
|
415
415
|
|
|
416
416
|
|
|
417
417
|
def compile_contexts(
|
|
418
|
-
state:
|
|
418
|
+
state: Type[BaseState] | None,
|
|
419
419
|
theme: Component | None,
|
|
420
420
|
) -> tuple[str, str]:
|
|
421
421
|
"""Compile the initial state / context.
|
|
@@ -456,7 +456,7 @@ def compile_page(
|
|
|
456
456
|
|
|
457
457
|
def compile_components(
|
|
458
458
|
components: set[CustomComponent],
|
|
459
|
-
) -> tuple[str, str,
|
|
459
|
+
) -> tuple[str, str, dict[str, list[ImportVar]]]:
|
|
460
460
|
"""Compile the custom components.
|
|
461
461
|
|
|
462
462
|
Args:
|
|
@@ -577,14 +577,49 @@ def into_component(component: Component | ComponentCallable) -> Component:
|
|
|
577
577
|
|
|
578
578
|
Raises:
|
|
579
579
|
TypeError: If the component is not a Component.
|
|
580
|
+
|
|
581
|
+
# noqa: DAR401
|
|
580
582
|
"""
|
|
581
583
|
if (converted := _into_component_once(component)) is not None:
|
|
582
584
|
return converted
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
585
|
+
try:
|
|
586
|
+
if (
|
|
587
|
+
callable(component)
|
|
588
|
+
and (converted := _into_component_once(component())) is not None
|
|
589
|
+
):
|
|
590
|
+
return converted
|
|
591
|
+
except KeyError as e:
|
|
592
|
+
key = e.args[0] if e.args else None
|
|
593
|
+
if key is not None and isinstance(key, Var):
|
|
594
|
+
raise TypeError(
|
|
595
|
+
"Cannot access a primitive map with a Var. Consider calling rx.Var.create() on the map."
|
|
596
|
+
).with_traceback(e.__traceback__) from None
|
|
597
|
+
raise
|
|
598
|
+
except TypeError as e:
|
|
599
|
+
message = e.args[0] if e.args else None
|
|
600
|
+
if message and isinstance(message, str):
|
|
601
|
+
if message.endswith("has no len()") and (
|
|
602
|
+
"ArrayCastedVar" in message
|
|
603
|
+
or "ObjectCastedVar" in message
|
|
604
|
+
or "StringCastedVar" in message
|
|
605
|
+
):
|
|
606
|
+
raise TypeError(
|
|
607
|
+
"Cannot pass a Var to a built-in function. Consider using .length() for accessing the length of an iterable Var."
|
|
608
|
+
).with_traceback(e.__traceback__) from None
|
|
609
|
+
if message.endswith(
|
|
610
|
+
"indices must be integers or slices, not NumberCastedVar"
|
|
611
|
+
) or message.endswith(
|
|
612
|
+
"indices must be integers or slices, not BooleanCastedVar"
|
|
613
|
+
):
|
|
614
|
+
raise TypeError(
|
|
615
|
+
"Cannot index into a primitive sequence with a Var. Consider calling rx.Var.create() on the sequence."
|
|
616
|
+
).with_traceback(e.__traceback__) from None
|
|
617
|
+
if "CastedVar" in str(e):
|
|
618
|
+
raise TypeError(
|
|
619
|
+
"Cannot pass a Var to a built-in function. Consider moving the operation to the backend, using existing Var operations, or defining a custom Var operation."
|
|
620
|
+
).with_traceback(e.__traceback__) from None
|
|
621
|
+
raise
|
|
622
|
+
|
|
588
623
|
raise TypeError(f"Expected a Component, got {type(component)}")
|
|
589
624
|
|
|
590
625
|
|
|
@@ -594,7 +629,7 @@ def compile_unevaluated_page(
|
|
|
594
629
|
state: Type[BaseState] | None = None,
|
|
595
630
|
style: ComponentStyle | None = None,
|
|
596
631
|
theme: Component | None = None,
|
|
597
|
-
) ->
|
|
632
|
+
) -> tuple[Component, bool]:
|
|
598
633
|
"""Compiles an uncompiled page into a component and adds meta information.
|
|
599
634
|
|
|
600
635
|
Args:
|
|
@@ -679,9 +714,9 @@ class ExecutorSafeFunctions:
|
|
|
679
714
|
|
|
680
715
|
"""
|
|
681
716
|
|
|
682
|
-
COMPONENTS:
|
|
683
|
-
UNCOMPILED_PAGES:
|
|
684
|
-
STATE:
|
|
717
|
+
COMPONENTS: dict[str, BaseComponent] = {}
|
|
718
|
+
UNCOMPILED_PAGES: dict[str, UnevaluatedPage] = {}
|
|
719
|
+
STATE: Type[BaseState] | None = None
|
|
685
720
|
|
|
686
721
|
@classmethod
|
|
687
722
|
def compile_page(cls, route: str) -> tuple[str, str]:
|
|
@@ -7,7 +7,7 @@ import concurrent.futures
|
|
|
7
7
|
import traceback
|
|
8
8
|
from datetime import datetime
|
|
9
9
|
from pathlib import Path
|
|
10
|
-
from typing import Any, Callable,
|
|
10
|
+
from typing import Any, Callable, Type
|
|
11
11
|
from urllib.parse import urlparse
|
|
12
12
|
|
|
13
13
|
from pydantic.v1.fields import ModelField
|
|
@@ -187,16 +187,7 @@ def compile_state(state: Type[BaseState]) -> dict:
|
|
|
187
187
|
Returns:
|
|
188
188
|
A dictionary of the compiled state.
|
|
189
189
|
"""
|
|
190
|
-
|
|
191
|
-
initial_state = state(_reflex_internal_init=True).dict(initial=True)
|
|
192
|
-
except Exception as e:
|
|
193
|
-
log_path = save_error(e)
|
|
194
|
-
console.warn(
|
|
195
|
-
f"Failed to compile initial state with computed vars. Error log saved to {log_path}"
|
|
196
|
-
)
|
|
197
|
-
initial_state = state(_reflex_internal_init=True).dict(
|
|
198
|
-
initial=True, include_computed=False
|
|
199
|
-
)
|
|
190
|
+
initial_state = state(_reflex_internal_init=True).dict(initial=True)
|
|
200
191
|
try:
|
|
201
192
|
_ = asyncio.get_running_loop()
|
|
202
193
|
except RuntimeError:
|
|
@@ -345,8 +336,8 @@ def compile_custom_component(
|
|
|
345
336
|
|
|
346
337
|
def create_document_root(
|
|
347
338
|
head_components: list[Component] | None = None,
|
|
348
|
-
html_lang:
|
|
349
|
-
html_custom_attrs:
|
|
339
|
+
html_lang: str | None = None,
|
|
340
|
+
html_custom_attrs: dict[str, Var | str] | None = None,
|
|
350
341
|
) -> Component:
|
|
351
342
|
"""Create the document root.
|
|
352
343
|
|