reflex 0.7.14a1__tar.gz → 0.7.14a3__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.14a1 → reflex-0.7.14a3}/PKG-INFO +1 -1
- {reflex-0.7.14a1 → reflex-0.7.14a3}/pyproject.toml +1 -1
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/component.py +19 -1
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/el/elements/forms.py +11 -11
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/el/elements/forms.pyi +14 -14
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/text_area.pyi +1 -1
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/config.py +6 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/utils/console.py +61 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/utils/exec.py +102 -27
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/utils/telemetry.py +16 -21
- reflex-0.7.14a1/reflex/experimental/layout.pyi +0 -814
- {reflex-0.7.14a1 → reflex-0.7.14a3}/.gitignore +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/LICENSE +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/README.md +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/.templates/apps/blank/assets/favicon.ico +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/.templates/apps/blank/code/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/.templates/apps/blank/code/blank.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/.templates/jinja/app/rxconfig.py.jinja2 +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/.templates/jinja/custom_components/README.md.jinja2 +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/.templates/jinja/custom_components/__init__.py.jinja2 +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/.templates/jinja/custom_components/demo_app.py.jinja2 +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/.templates/jinja/custom_components/pyproject.toml.jinja2 +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/.templates/jinja/custom_components/src.py.jinja2 +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/.templates/jinja/web/package.json.jinja2 +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/.templates/jinja/web/pages/_app.js.jinja2 +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/.templates/jinja/web/pages/_document.js.jinja2 +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/.templates/jinja/web/pages/base_page.js.jinja2 +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/.templates/jinja/web/pages/component.js.jinja2 +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/.templates/jinja/web/pages/custom_component.js.jinja2 +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/.templates/jinja/web/pages/index.js.jinja2 +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/.templates/jinja/web/pages/macros.js.jinja2 +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/.templates/jinja/web/pages/stateful_component.js.jinja2 +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/.templates/jinja/web/pages/stateful_components.js.jinja2 +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/.templates/jinja/web/pages/utils.js.jinja2 +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/.templates/jinja/web/styles/styles.css.jinja2 +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/.templates/jinja/web/utils/context.js.jinja2 +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/.templates/jinja/web/utils/theme.js.jinja2 +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/.templates/web/.gitignore +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/.templates/web/components/shiki/code.js +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/.templates/web/jsconfig.json +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/.templates/web/next.config.js +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/.templates/web/postcss.config.js +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/.templates/web/utils/client_side_routing.js +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/.templates/web/utils/helpers/dataeditor.js +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/.templates/web/utils/helpers/debounce.js +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/.templates/web/utils/helpers/paste.js +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/.templates/web/utils/helpers/range.js +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/.templates/web/utils/helpers/throttle.js +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/.templates/web/utils/state.js +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/__init__.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/__main__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/admin.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/app.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/app_mixins/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/app_mixins/lifespan.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/app_mixins/middleware.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/app_mixins/mixin.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/assets.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/base.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/compiler/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/compiler/compiler.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/compiler/templates.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/compiler/utils.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/__init__.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/base/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/base/__init__.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/base/app_wrap.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/base/app_wrap.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/base/bare.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/base/body.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/base/body.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/base/document.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/base/document.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/base/error_boundary.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/base/error_boundary.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/base/fragment.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/base/fragment.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/base/head.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/base/head.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/base/link.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/base/link.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/base/meta.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/base/meta.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/base/script.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/base/script.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/base/strict_mode.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/base/strict_mode.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/core/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/core/__init__.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/core/auto_scroll.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/core/auto_scroll.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/core/banner.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/core/banner.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/core/breakpoints.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/core/client_side_routing.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/core/client_side_routing.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/core/clipboard.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/core/clipboard.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/core/colors.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/core/cond.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/core/debounce.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/core/debounce.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/core/foreach.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/core/html.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/core/html.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/core/layout/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/core/match.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/core/responsive.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/core/sticky.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/core/sticky.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/core/upload.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/core/upload.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/datadisplay/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/datadisplay/__init__.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/datadisplay/code.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/datadisplay/code.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/datadisplay/dataeditor.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/datadisplay/dataeditor.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/datadisplay/logo.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/datadisplay/shiki_code_block.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/datadisplay/shiki_code_block.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/dynamic.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/el/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/el/__init__.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/el/constants/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/el/constants/html.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/el/constants/react.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/el/constants/reflex.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/el/element.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/el/element.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/el/elements/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/el/elements/__init__.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/el/elements/base.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/el/elements/base.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/el/elements/inline.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/el/elements/inline.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/el/elements/media.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/el/elements/media.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/el/elements/metadata.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/el/elements/metadata.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/el/elements/other.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/el/elements/other.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/el/elements/scripts.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/el/elements/scripts.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/el/elements/sectioning.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/el/elements/sectioning.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/el/elements/tables.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/el/elements/tables.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/el/elements/typography.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/el/elements/typography.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/gridjs/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/gridjs/datatable.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/gridjs/datatable.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/literals.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/lucide/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/lucide/icon.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/lucide/icon.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/markdown/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/markdown/markdown.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/markdown/markdown.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/moment/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/moment/moment.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/moment/moment.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/next/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/next/base.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/next/base.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/next/image.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/next/image.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/next/link.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/next/link.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/next/video.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/next/video.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/plotly/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/plotly/plotly.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/plotly/plotly.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/props.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/__init__.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/primitives/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/primitives/__init__.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/primitives/accordion.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/primitives/accordion.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/primitives/base.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/primitives/base.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/primitives/drawer.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/primitives/drawer.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/primitives/form.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/primitives/form.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/primitives/progress.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/primitives/progress.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/primitives/slider.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/primitives/slider.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/__init__.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/base.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/base.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/color_mode.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/color_mode.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/__init__.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/alert_dialog.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/alert_dialog.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/aspect_ratio.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/aspect_ratio.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/avatar.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/avatar.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/badge.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/badge.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/button.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/button.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/callout.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/callout.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/card.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/card.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/checkbox.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/checkbox.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/checkbox_cards.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/checkbox_cards.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/checkbox_group.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/checkbox_group.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/context_menu.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/context_menu.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/data_list.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/data_list.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/dialog.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/dialog.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/dropdown_menu.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/dropdown_menu.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/hover_card.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/hover_card.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/icon_button.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/icon_button.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/inset.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/inset.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/popover.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/popover.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/progress.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/progress.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/radio.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/radio.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/radio_cards.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/radio_cards.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/radio_group.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/radio_group.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/scroll_area.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/scroll_area.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/segmented_control.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/segmented_control.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/select.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/select.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/separator.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/separator.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/skeleton.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/skeleton.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/slider.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/slider.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/spinner.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/spinner.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/switch.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/switch.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/table.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/table.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/tabs.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/tabs.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/text_area.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/text_field.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/text_field.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/tooltip.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/components/tooltip.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/layout/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/layout/__init__.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/layout/base.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/layout/base.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/layout/box.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/layout/box.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/layout/center.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/layout/center.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/layout/container.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/layout/container.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/layout/flex.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/layout/flex.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/layout/grid.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/layout/grid.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/layout/list.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/layout/list.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/layout/section.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/layout/section.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/layout/spacer.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/layout/spacer.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/layout/stack.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/layout/stack.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/typography/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/typography/__init__.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/typography/base.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/typography/blockquote.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/typography/blockquote.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/typography/code.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/typography/code.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/typography/heading.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/typography/heading.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/typography/link.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/typography/link.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/typography/text.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/radix/themes/typography/text.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/react_player/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/react_player/audio.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/react_player/audio.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/react_player/react_player.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/react_player/react_player.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/react_player/video.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/react_player/video.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/recharts/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/recharts/__init__.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/recharts/cartesian.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/recharts/cartesian.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/recharts/charts.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/recharts/charts.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/recharts/general.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/recharts/general.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/recharts/polar.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/recharts/polar.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/recharts/recharts.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/recharts/recharts.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/sonner/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/sonner/toast.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/sonner/toast.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/suneditor/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/suneditor/editor.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/suneditor/editor.pyi +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/tags/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/tags/cond_tag.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/tags/iter_tag.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/tags/match_tag.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/tags/tag.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/components/tags/tagless.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/constants/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/constants/base.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/constants/colors.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/constants/compiler.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/constants/config.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/constants/custom_components.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/constants/event.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/constants/installer.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/constants/route.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/constants/state.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/constants/utils.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/custom_components/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/custom_components/custom_components.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/event.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/experimental/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/experimental/client_state.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/experimental/hooks.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/experimental/layout.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/istate/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/istate/data.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/istate/dynamic.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/istate/manager.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/istate/proxy.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/istate/storage.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/istate/wrappers.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/middleware/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/middleware/hydrate_middleware.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/middleware/middleware.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/model.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/page.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/plugins/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/plugins/base.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/plugins/tailwind_v3.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/plugins/tailwind_v4.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/py.typed +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/reflex.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/route.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/state.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/style.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/testing.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/utils/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/utils/build.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/utils/codespaces.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/utils/compat.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/utils/decorator.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/utils/exceptions.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/utils/export.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/utils/format.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/utils/imports.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/utils/lazy_loader.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/utils/misc.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/utils/net.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/utils/path_ops.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/utils/prerequisites.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/utils/processes.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/utils/pyi_generator.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/utils/redir.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/utils/registry.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/utils/serializers.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/utils/types.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/vars/__init__.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/vars/base.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/vars/datetime.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/vars/dep_tracking.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/vars/function.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/vars/number.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/vars/object.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/reflex/vars/sequence.py +0 -0
- {reflex-0.7.14a1 → reflex-0.7.14a3}/scripts/hatch_build.py +0 -0
|
@@ -2194,7 +2194,25 @@ class CustomComponent(Component):
|
|
|
2194
2194
|
Returns:
|
|
2195
2195
|
The code to render the component.
|
|
2196
2196
|
"""
|
|
2197
|
-
|
|
2197
|
+
component = self.component_fn(*self.get_prop_vars())
|
|
2198
|
+
|
|
2199
|
+
try:
|
|
2200
|
+
from reflex.utils.prerequisites import get_and_validate_app
|
|
2201
|
+
|
|
2202
|
+
style = get_and_validate_app().app.style
|
|
2203
|
+
except Exception:
|
|
2204
|
+
style = {}
|
|
2205
|
+
|
|
2206
|
+
component._add_style_recursive(style)
|
|
2207
|
+
return component
|
|
2208
|
+
|
|
2209
|
+
def _get_all_app_wrap_components(self) -> dict[tuple[int, str], Component]:
|
|
2210
|
+
"""Get the app wrap components for the custom component.
|
|
2211
|
+
|
|
2212
|
+
Returns:
|
|
2213
|
+
The app wrap components.
|
|
2214
|
+
"""
|
|
2215
|
+
return self.get_component()._get_all_app_wrap_components()
|
|
2198
2216
|
|
|
2199
2217
|
|
|
2200
2218
|
CUSTOM_COMPONENTS: dict[str, CustomComponent] = {}
|
|
@@ -384,7 +384,7 @@ class BaseInput(BaseHTML):
|
|
|
384
384
|
required: Var[bool]
|
|
385
385
|
|
|
386
386
|
# Specifies the visible width of a text control
|
|
387
|
-
size: Var[int | float]
|
|
387
|
+
size: Var[str | int | float]
|
|
388
388
|
|
|
389
389
|
# URL for image inputs
|
|
390
390
|
src: Var[str]
|
|
@@ -504,22 +504,22 @@ class Meter(BaseHTML):
|
|
|
504
504
|
form: Var[str]
|
|
505
505
|
|
|
506
506
|
# High limit of range (above this is considered high value)
|
|
507
|
-
high: Var[int | float]
|
|
507
|
+
high: Var[str | int | float]
|
|
508
508
|
|
|
509
509
|
# Low limit of range (below this is considered low value)
|
|
510
|
-
low: Var[int | float]
|
|
510
|
+
low: Var[str | int | float]
|
|
511
511
|
|
|
512
512
|
# Maximum value of the range
|
|
513
|
-
max: Var[int | float]
|
|
513
|
+
max: Var[str | int | float]
|
|
514
514
|
|
|
515
515
|
# Minimum value of the range
|
|
516
|
-
min: Var[int | float]
|
|
516
|
+
min: Var[str | int | float]
|
|
517
517
|
|
|
518
518
|
# Optimum value in the range
|
|
519
|
-
optimum: Var[int | float]
|
|
519
|
+
optimum: Var[str | int | float]
|
|
520
520
|
|
|
521
521
|
# Current value of the meter
|
|
522
|
-
value: Var[int | float]
|
|
522
|
+
value: Var[str | int | float]
|
|
523
523
|
|
|
524
524
|
|
|
525
525
|
class Optgroup(BaseHTML):
|
|
@@ -666,7 +666,7 @@ class Textarea(BaseHTML):
|
|
|
666
666
|
auto_height: Var[bool]
|
|
667
667
|
|
|
668
668
|
# Visible width of the text control, in average character widths
|
|
669
|
-
cols: Var[int]
|
|
669
|
+
cols: Var[str | int]
|
|
670
670
|
|
|
671
671
|
# The default value of the textarea when initially rendered
|
|
672
672
|
default_value: Var[str]
|
|
@@ -684,10 +684,10 @@ class Textarea(BaseHTML):
|
|
|
684
684
|
form: Var[str]
|
|
685
685
|
|
|
686
686
|
# Maximum number of characters allowed in the textarea
|
|
687
|
-
max_length: Var[int]
|
|
687
|
+
max_length: Var[str | int]
|
|
688
688
|
|
|
689
689
|
# Minimum number of characters required in the textarea
|
|
690
|
-
min_length: Var[int]
|
|
690
|
+
min_length: Var[str | int]
|
|
691
691
|
|
|
692
692
|
# Name of the textarea, used when submitting the form
|
|
693
693
|
name: Var[str]
|
|
@@ -702,7 +702,7 @@ class Textarea(BaseHTML):
|
|
|
702
702
|
required: Var[bool]
|
|
703
703
|
|
|
704
704
|
# Visible number of lines in the text control
|
|
705
|
-
rows: Var[int]
|
|
705
|
+
rows: Var[str | int]
|
|
706
706
|
|
|
707
707
|
# The controlled value of the textarea, read only unless used with on_change
|
|
708
708
|
value: Var[str]
|
|
@@ -927,7 +927,7 @@ class BaseInput(BaseHTML):
|
|
|
927
927
|
placeholder: Var[str] | str | None = None,
|
|
928
928
|
read_only: Var[bool] | bool | None = None,
|
|
929
929
|
required: Var[bool] | bool | None = None,
|
|
930
|
-
size: Var[float | int] | float | int | None = None,
|
|
930
|
+
size: Var[float | int | str] | float | int | str | None = None,
|
|
931
931
|
src: Var[str] | str | None = None,
|
|
932
932
|
step: Var[float | int | str] | float | int | str | None = None,
|
|
933
933
|
type: Literal[
|
|
@@ -1290,7 +1290,7 @@ class CheckboxInput(BaseInput):
|
|
|
1290
1290
|
placeholder: Var[str] | str | None = None,
|
|
1291
1291
|
read_only: Var[bool] | bool | None = None,
|
|
1292
1292
|
required: Var[bool] | bool | None = None,
|
|
1293
|
-
size: Var[float | int] | float | int | None = None,
|
|
1293
|
+
size: Var[float | int | str] | float | int | str | None = None,
|
|
1294
1294
|
src: Var[str] | str | None = None,
|
|
1295
1295
|
step: Var[float | int | str] | float | int | str | None = None,
|
|
1296
1296
|
type: Literal[
|
|
@@ -1657,7 +1657,7 @@ class ValueNumberInput(BaseInput):
|
|
|
1657
1657
|
placeholder: Var[str] | str | None = None,
|
|
1658
1658
|
read_only: Var[bool] | bool | None = None,
|
|
1659
1659
|
required: Var[bool] | bool | None = None,
|
|
1660
|
-
size: Var[float | int] | float | int | None = None,
|
|
1660
|
+
size: Var[float | int | str] | float | int | str | None = None,
|
|
1661
1661
|
src: Var[str] | str | None = None,
|
|
1662
1662
|
step: Var[float | int | str] | float | int | str | None = None,
|
|
1663
1663
|
type: Literal[
|
|
@@ -2024,7 +2024,7 @@ class Input(BaseInput):
|
|
|
2024
2024
|
placeholder: Var[str] | str | None = None,
|
|
2025
2025
|
read_only: Var[bool] | bool | None = None,
|
|
2026
2026
|
required: Var[bool] | bool | None = None,
|
|
2027
|
-
size: Var[float | int] | float | int | None = None,
|
|
2027
|
+
size: Var[float | int | str] | float | int | str | None = None,
|
|
2028
2028
|
src: Var[str] | str | None = None,
|
|
2029
2029
|
step: Var[float | int | str] | float | int | str | None = None,
|
|
2030
2030
|
type: Literal[
|
|
@@ -2858,12 +2858,12 @@ class Meter(BaseHTML):
|
|
|
2858
2858
|
cls,
|
|
2859
2859
|
*children,
|
|
2860
2860
|
form: Var[str] | str | None = None,
|
|
2861
|
-
high: Var[float | int] | float | int | None = None,
|
|
2862
|
-
low: Var[float | int] | float | int | None = None,
|
|
2863
|
-
max: Var[float | int] | float | int | None = None,
|
|
2864
|
-
min: Var[float | int] | float | int | None = None,
|
|
2865
|
-
optimum: Var[float | int] | float | int | None = None,
|
|
2866
|
-
value: Var[float | int] | float | int | None = None,
|
|
2861
|
+
high: Var[float | int | str] | float | int | str | None = None,
|
|
2862
|
+
low: Var[float | int | str] | float | int | str | None = None,
|
|
2863
|
+
max: Var[float | int | str] | float | int | str | None = None,
|
|
2864
|
+
min: Var[float | int | str] | float | int | str | None = None,
|
|
2865
|
+
optimum: Var[float | int | str] | float | int | str | None = None,
|
|
2866
|
+
value: Var[float | int | str] | float | int | str | None = None,
|
|
2867
2867
|
access_key: Var[str] | str | None = None,
|
|
2868
2868
|
auto_capitalize: Literal[
|
|
2869
2869
|
"characters", "none", "off", "on", "sentences", "words"
|
|
@@ -4393,19 +4393,19 @@ class Textarea(BaseHTML):
|
|
|
4393
4393
|
auto_complete: Var[str] | str | None = None,
|
|
4394
4394
|
auto_focus: Var[bool] | bool | None = None,
|
|
4395
4395
|
auto_height: Var[bool] | bool | None = None,
|
|
4396
|
-
cols: Var[int] | int | None = None,
|
|
4396
|
+
cols: Var[int | str] | int | str | None = None,
|
|
4397
4397
|
default_value: Var[str] | str | None = None,
|
|
4398
4398
|
dirname: Var[str] | str | None = None,
|
|
4399
4399
|
disabled: Var[bool] | bool | None = None,
|
|
4400
4400
|
enter_key_submit: Var[bool] | bool | None = None,
|
|
4401
4401
|
form: Var[str] | str | None = None,
|
|
4402
|
-
max_length: Var[int] | int | None = None,
|
|
4403
|
-
min_length: Var[int] | int | None = None,
|
|
4402
|
+
max_length: Var[int | str] | int | str | None = None,
|
|
4403
|
+
min_length: Var[int | str] | int | str | None = None,
|
|
4404
4404
|
name: Var[str] | str | None = None,
|
|
4405
4405
|
placeholder: Var[str] | str | None = None,
|
|
4406
4406
|
read_only: Var[bool] | bool | None = None,
|
|
4407
4407
|
required: Var[bool] | bool | None = None,
|
|
4408
|
-
rows: Var[int] | int | None = None,
|
|
4408
|
+
rows: Var[int | str] | int | str | None = None,
|
|
4409
4409
|
value: Var[str] | str | None = None,
|
|
4410
4410
|
wrap: Var[str] | str | None = None,
|
|
4411
4411
|
access_key: Var[str] | str | None = None,
|
|
@@ -113,7 +113,7 @@ class TextArea(RadixThemesComponent, elements.Textarea):
|
|
|
113
113
|
value: Var[str] | str | None = None,
|
|
114
114
|
wrap: Var[str] | str | None = None,
|
|
115
115
|
auto_height: Var[bool] | bool | None = None,
|
|
116
|
-
cols: Var[int] | int | None = None,
|
|
116
|
+
cols: Var[int | str] | int | str | None = None,
|
|
117
117
|
enter_key_submit: Var[bool] | bool | None = None,
|
|
118
118
|
access_key: Var[str] | str | None = None,
|
|
119
119
|
auto_capitalize: Literal[
|
|
@@ -766,6 +766,12 @@ class EnvironmentVariables:
|
|
|
766
766
|
# Whether to run Granian in a spawn process. This enables Reflex to pick up on environment variable changes between hot reloads.
|
|
767
767
|
REFLEX_STRICT_HOT_RELOAD: EnvVar[bool] = env_var(False)
|
|
768
768
|
|
|
769
|
+
# The path to the reflex log file. If not set, the log file will be stored in the reflex user directory.
|
|
770
|
+
REFLEX_LOG_FILE: EnvVar[Path | None] = env_var(None)
|
|
771
|
+
|
|
772
|
+
# Enable full logging of debug messages to reflex user directory.
|
|
773
|
+
REFLEX_ENABLE_FULL_LOGGING: EnvVar[bool] = env_var(False)
|
|
774
|
+
|
|
769
775
|
|
|
770
776
|
environment = EnvironmentVariables()
|
|
771
777
|
|
|
@@ -15,6 +15,8 @@ from rich.progress import MofNCompleteColumn, Progress, TimeElapsedColumn
|
|
|
15
15
|
from rich.prompt import Prompt
|
|
16
16
|
|
|
17
17
|
from reflex.constants import LogLevel
|
|
18
|
+
from reflex.constants.base import Reflex
|
|
19
|
+
from reflex.utils.decorator import once
|
|
18
20
|
|
|
19
21
|
# Console for pretty printing.
|
|
20
22
|
_console = Console()
|
|
@@ -92,6 +94,51 @@ def print(msg: str, dedupe: bool = False, **kwargs):
|
|
|
92
94
|
_console.print(msg, **kwargs)
|
|
93
95
|
|
|
94
96
|
|
|
97
|
+
@once
|
|
98
|
+
def log_file_console():
|
|
99
|
+
"""Create a console that logs to a file.
|
|
100
|
+
|
|
101
|
+
Returns:
|
|
102
|
+
A Console object that logs to a file.
|
|
103
|
+
"""
|
|
104
|
+
from reflex.config import environment
|
|
105
|
+
|
|
106
|
+
if not (env_log_file := environment.REFLEX_LOG_FILE.get()):
|
|
107
|
+
subseconds = int((time.time() % 1) * 1000)
|
|
108
|
+
timestamp = time.strftime("%Y-%m-%d_%H-%M-%S") + f"_{subseconds:03d}"
|
|
109
|
+
log_file = Reflex.DIR / "logs" / (timestamp + ".log")
|
|
110
|
+
log_file.parent.mkdir(parents=True, exist_ok=True)
|
|
111
|
+
else:
|
|
112
|
+
log_file = env_log_file
|
|
113
|
+
if log_file.exists():
|
|
114
|
+
log_file.unlink()
|
|
115
|
+
log_file.touch()
|
|
116
|
+
return Console(file=log_file.open("a", encoding="utf-8"))
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
@once
|
|
120
|
+
def should_use_log_file_console() -> bool:
|
|
121
|
+
"""Check if the log file console should be used.
|
|
122
|
+
|
|
123
|
+
Returns:
|
|
124
|
+
True if the log file console should be used, False otherwise.
|
|
125
|
+
"""
|
|
126
|
+
from reflex.config import environment
|
|
127
|
+
|
|
128
|
+
return environment.REFLEX_ENABLE_FULL_LOGGING.get()
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
def print_to_log_file(msg: str, dedupe: bool = False, **kwargs):
|
|
132
|
+
"""Print a message to the log file.
|
|
133
|
+
|
|
134
|
+
Args:
|
|
135
|
+
msg: The message to print.
|
|
136
|
+
dedupe: If True, suppress multiple console logs of print message.
|
|
137
|
+
kwargs: Keyword arguments to pass to the print function.
|
|
138
|
+
"""
|
|
139
|
+
log_file_console().print(msg, **kwargs)
|
|
140
|
+
|
|
141
|
+
|
|
95
142
|
def debug(msg: str, dedupe: bool = False, **kwargs):
|
|
96
143
|
"""Print a debug message.
|
|
97
144
|
|
|
@@ -110,6 +157,8 @@ def debug(msg: str, dedupe: bool = False, **kwargs):
|
|
|
110
157
|
progress.console.print(msg_, **kwargs)
|
|
111
158
|
else:
|
|
112
159
|
print(msg_, **kwargs)
|
|
160
|
+
if should_use_log_file_console() and kwargs.pop("progress", None) is None:
|
|
161
|
+
print_to_log_file(f"[purple]Debug: {msg}[/purple]", **kwargs)
|
|
113
162
|
|
|
114
163
|
|
|
115
164
|
def info(msg: str, dedupe: bool = False, **kwargs):
|
|
@@ -126,6 +175,8 @@ def info(msg: str, dedupe: bool = False, **kwargs):
|
|
|
126
175
|
return
|
|
127
176
|
_EMITTED_INFO.add(msg)
|
|
128
177
|
print(f"[cyan]Info: {msg}[/cyan]", **kwargs)
|
|
178
|
+
if should_use_log_file_console():
|
|
179
|
+
print_to_log_file(f"[cyan]Info: {msg}[/cyan]", **kwargs)
|
|
129
180
|
|
|
130
181
|
|
|
131
182
|
def success(msg: str, dedupe: bool = False, **kwargs):
|
|
@@ -142,6 +193,8 @@ def success(msg: str, dedupe: bool = False, **kwargs):
|
|
|
142
193
|
return
|
|
143
194
|
_EMITTED_SUCCESS.add(msg)
|
|
144
195
|
print(f"[green]Success: {msg}[/green]", **kwargs)
|
|
196
|
+
if should_use_log_file_console():
|
|
197
|
+
print_to_log_file(f"[green]Success: {msg}[/green]", **kwargs)
|
|
145
198
|
|
|
146
199
|
|
|
147
200
|
def log(msg: str, dedupe: bool = False, **kwargs):
|
|
@@ -158,6 +211,8 @@ def log(msg: str, dedupe: bool = False, **kwargs):
|
|
|
158
211
|
return
|
|
159
212
|
_EMITTED_LOGS.add(msg)
|
|
160
213
|
_console.log(msg, **kwargs)
|
|
214
|
+
if should_use_log_file_console():
|
|
215
|
+
print_to_log_file(msg, **kwargs)
|
|
161
216
|
|
|
162
217
|
|
|
163
218
|
def rule(title: str, **kwargs):
|
|
@@ -184,6 +239,8 @@ def warn(msg: str, dedupe: bool = False, **kwargs):
|
|
|
184
239
|
return
|
|
185
240
|
_EMIITED_WARNINGS.add(msg)
|
|
186
241
|
print(f"[orange1]Warning: {msg}[/orange1]", **kwargs)
|
|
242
|
+
if should_use_log_file_console():
|
|
243
|
+
print_to_log_file(f"[orange1]Warning: {msg}[/orange1]", **kwargs)
|
|
187
244
|
|
|
188
245
|
|
|
189
246
|
def _get_first_non_framework_frame() -> FrameType | None:
|
|
@@ -248,6 +305,8 @@ def deprecate(
|
|
|
248
305
|
)
|
|
249
306
|
if _LOG_LEVEL <= LogLevel.WARNING:
|
|
250
307
|
print(f"[yellow]DeprecationWarning: {msg}[/yellow]", **kwargs)
|
|
308
|
+
if should_use_log_file_console():
|
|
309
|
+
print_to_log_file(f"[yellow]DeprecationWarning: {msg}[/yellow]", **kwargs)
|
|
251
310
|
if dedupe:
|
|
252
311
|
_EMITTED_DEPRECATION_WARNINGS.add(dedupe_key)
|
|
253
312
|
|
|
@@ -266,6 +325,8 @@ def error(msg: str, dedupe: bool = False, **kwargs):
|
|
|
266
325
|
return
|
|
267
326
|
_EMITTED_ERRORS.add(msg)
|
|
268
327
|
print(f"[red]{msg}[/red]", **kwargs)
|
|
328
|
+
if should_use_log_file_console():
|
|
329
|
+
print_to_log_file(f"[red]{msg}[/red]", **kwargs)
|
|
269
330
|
|
|
270
331
|
|
|
271
332
|
def ask(
|
|
@@ -12,6 +12,7 @@ import subprocess
|
|
|
12
12
|
import sys
|
|
13
13
|
from collections.abc import Sequence
|
|
14
14
|
from pathlib import Path
|
|
15
|
+
from typing import NamedTuple, TypedDict
|
|
15
16
|
from urllib.parse import urljoin
|
|
16
17
|
|
|
17
18
|
import psutil
|
|
@@ -27,26 +28,102 @@ from reflex.utils.prerequisites import get_web_dir
|
|
|
27
28
|
frontend_process = None
|
|
28
29
|
|
|
29
30
|
|
|
30
|
-
def
|
|
31
|
-
"""
|
|
31
|
+
def get_package_json_and_hash(package_json_path: Path) -> tuple[PackageJson, str]:
|
|
32
|
+
"""Get the content of package.json and its hash.
|
|
32
33
|
|
|
33
34
|
Args:
|
|
34
|
-
|
|
35
|
+
package_json_path: The path to the package.json file.
|
|
35
36
|
|
|
36
37
|
Returns:
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
Example:
|
|
40
|
-
>>> detect_package_change("package.json")
|
|
41
|
-
'a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6a7b8c9d0e1f2'
|
|
38
|
+
A tuple containing the content of package.json as a dictionary and its SHA-256 hash.
|
|
42
39
|
"""
|
|
43
|
-
with
|
|
40
|
+
with package_json_path.open("r") as file:
|
|
44
41
|
json_data = json.load(file)
|
|
45
42
|
|
|
46
43
|
# Calculate the hash
|
|
47
44
|
json_string = json.dumps(json_data, sort_keys=True)
|
|
48
45
|
hash_object = hashlib.sha256(json_string.encode())
|
|
49
|
-
return hash_object.hexdigest()
|
|
46
|
+
return (json_data, hash_object.hexdigest())
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
class PackageJson(TypedDict):
|
|
50
|
+
"""package.json content."""
|
|
51
|
+
|
|
52
|
+
dependencies: dict[str, str]
|
|
53
|
+
devDependencies: dict[str, str]
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
class Change(NamedTuple):
|
|
57
|
+
"""A named tuple to represent a change in package dependencies."""
|
|
58
|
+
|
|
59
|
+
added: set[str]
|
|
60
|
+
removed: set[str]
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def format_change(name: str, change: Change) -> str:
|
|
64
|
+
"""Format the change for display.
|
|
65
|
+
|
|
66
|
+
Args:
|
|
67
|
+
name: The name of the change (e.g., "dependencies" or "devDependencies").
|
|
68
|
+
change: The Change named tuple containing added and removed packages.
|
|
69
|
+
|
|
70
|
+
Returns:
|
|
71
|
+
A formatted string representing the changes.
|
|
72
|
+
"""
|
|
73
|
+
if not change.added and not change.removed:
|
|
74
|
+
return ""
|
|
75
|
+
added_str = ", ".join(sorted(change.added))
|
|
76
|
+
removed_str = ", ".join(sorted(change.removed))
|
|
77
|
+
change_str = f"{name}:\n"
|
|
78
|
+
if change.added:
|
|
79
|
+
change_str += f" Added: {added_str}\n"
|
|
80
|
+
if change.removed:
|
|
81
|
+
change_str += f" Removed: {removed_str}\n"
|
|
82
|
+
return change_str.strip()
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
def get_different_packages(
|
|
86
|
+
old_package_json_content: PackageJson,
|
|
87
|
+
new_package_json_content: PackageJson,
|
|
88
|
+
) -> tuple[Change, Change]:
|
|
89
|
+
"""Get the packages that are different between two package JSON contents.
|
|
90
|
+
|
|
91
|
+
Args:
|
|
92
|
+
old_package_json_content: The content of the old package JSON.
|
|
93
|
+
new_package_json_content: The content of the new package JSON.
|
|
94
|
+
|
|
95
|
+
Returns:
|
|
96
|
+
A tuple containing two `Change` named tuples:
|
|
97
|
+
- The first `Change` contains the changes in the `dependencies` section.
|
|
98
|
+
- The second `Change` contains the changes in the `devDependencies` section.
|
|
99
|
+
"""
|
|
100
|
+
|
|
101
|
+
def get_changes(old: dict[str, str], new: dict[str, str]) -> Change:
|
|
102
|
+
"""Get the changes between two dictionaries.
|
|
103
|
+
|
|
104
|
+
Args:
|
|
105
|
+
old: The old dictionary of packages.
|
|
106
|
+
new: The new dictionary of packages.
|
|
107
|
+
|
|
108
|
+
Returns:
|
|
109
|
+
A `Change` named tuple containing the added and removed packages.
|
|
110
|
+
"""
|
|
111
|
+
old_keys = set(old.keys())
|
|
112
|
+
new_keys = set(new.keys())
|
|
113
|
+
added = new_keys - old_keys
|
|
114
|
+
removed = old_keys - new_keys
|
|
115
|
+
return Change(added=added, removed=removed)
|
|
116
|
+
|
|
117
|
+
dependencies_change = get_changes(
|
|
118
|
+
old_package_json_content.get("dependencies", {}),
|
|
119
|
+
new_package_json_content.get("dependencies", {}),
|
|
120
|
+
)
|
|
121
|
+
dev_dependencies_change = get_changes(
|
|
122
|
+
old_package_json_content.get("devDependencies", {}),
|
|
123
|
+
new_package_json_content.get("devDependencies", {}),
|
|
124
|
+
)
|
|
125
|
+
|
|
126
|
+
return dependencies_change, dev_dependencies_change
|
|
50
127
|
|
|
51
128
|
|
|
52
129
|
def kill(proc_pid: int):
|
|
@@ -86,7 +163,7 @@ def run_process_and_launch_url(
|
|
|
86
163
|
from reflex.utils import processes
|
|
87
164
|
|
|
88
165
|
json_file_path = get_web_dir() / constants.PackageJson.PATH
|
|
89
|
-
last_hash =
|
|
166
|
+
last_content, last_hash = get_package_json_and_hash(json_file_path)
|
|
90
167
|
process = None
|
|
91
168
|
first_run = True
|
|
92
169
|
|
|
@@ -105,6 +182,18 @@ def run_process_and_launch_url(
|
|
|
105
182
|
frontend_process = process
|
|
106
183
|
if process.stdout:
|
|
107
184
|
for line in processes.stream_logs("Starting frontend", process):
|
|
185
|
+
new_content, new_hash = get_package_json_and_hash(json_file_path)
|
|
186
|
+
if new_hash != last_hash:
|
|
187
|
+
dependencies_change, dev_dependencies_change = (
|
|
188
|
+
get_different_packages(last_content, new_content)
|
|
189
|
+
)
|
|
190
|
+
last_content, last_hash = new_content, new_hash
|
|
191
|
+
console.info(
|
|
192
|
+
"Detected changes in package.json.\n"
|
|
193
|
+
+ format_change("Dependencies", dependencies_change)
|
|
194
|
+
+ format_change("Dev Dependencies", dev_dependencies_change)
|
|
195
|
+
)
|
|
196
|
+
|
|
108
197
|
match = re.search(constants.Next.FRONTEND_LISTENING_REGEX, line)
|
|
109
198
|
if match:
|
|
110
199
|
if first_run:
|
|
@@ -119,22 +208,8 @@ def run_process_and_launch_url(
|
|
|
119
208
|
notify_backend()
|
|
120
209
|
first_run = False
|
|
121
210
|
else:
|
|
122
|
-
console.print("
|
|
123
|
-
|
|
124
|
-
if any(
|
|
125
|
-
x in line for x in ("bin executable does not exist on disk",)
|
|
126
|
-
):
|
|
127
|
-
console.error(
|
|
128
|
-
"Try setting `REFLEX_USE_NPM=1` and re-running `reflex init` and `reflex run` to use npm instead of bun:\n"
|
|
129
|
-
"`REFLEX_USE_NPM=1 reflex init`\n"
|
|
130
|
-
"`REFLEX_USE_NPM=1 reflex run`"
|
|
131
|
-
)
|
|
132
|
-
new_hash = detect_package_change(json_file_path)
|
|
133
|
-
if new_hash != last_hash:
|
|
134
|
-
last_hash = new_hash
|
|
135
|
-
kill(process.pid)
|
|
136
|
-
process = None
|
|
137
|
-
break # for line in process.stdout
|
|
211
|
+
console.print("Frontend is restarting...")
|
|
212
|
+
|
|
138
213
|
if process is not None:
|
|
139
214
|
break # while True
|
|
140
215
|
|
|
@@ -4,6 +4,7 @@ from __future__ import annotations
|
|
|
4
4
|
|
|
5
5
|
import asyncio
|
|
6
6
|
import dataclasses
|
|
7
|
+
import importlib.metadata
|
|
7
8
|
import multiprocessing
|
|
8
9
|
import platform
|
|
9
10
|
import warnings
|
|
@@ -67,29 +68,25 @@ def get_reflex_version() -> str:
|
|
|
67
68
|
return constants.Reflex.VERSION
|
|
68
69
|
|
|
69
70
|
|
|
70
|
-
def
|
|
71
|
-
"""Get the
|
|
71
|
+
def get_cpu_count() -> int:
|
|
72
|
+
"""Get the number of CPUs.
|
|
72
73
|
|
|
73
74
|
Returns:
|
|
74
|
-
The
|
|
75
|
+
The number of CPUs.
|
|
75
76
|
"""
|
|
76
|
-
|
|
77
|
-
from reflex.utils.prerequisites import get_and_validate_app
|
|
78
|
-
|
|
79
|
-
app_info = get_and_validate_app()
|
|
80
|
-
except Exception:
|
|
81
|
-
return None
|
|
82
|
-
else:
|
|
83
|
-
return app_info.app.__class__.__name__
|
|
77
|
+
return multiprocessing.cpu_count()
|
|
84
78
|
|
|
85
79
|
|
|
86
|
-
def
|
|
87
|
-
"""Get the
|
|
80
|
+
def get_reflex_enterprise_version() -> str | None:
|
|
81
|
+
"""Get the version of reflex-enterprise if installed.
|
|
88
82
|
|
|
89
83
|
Returns:
|
|
90
|
-
The
|
|
84
|
+
The version string if installed, None if not installed.
|
|
91
85
|
"""
|
|
92
|
-
|
|
86
|
+
try:
|
|
87
|
+
return importlib.metadata.version("reflex-enterprise")
|
|
88
|
+
except importlib.metadata.PackageNotFoundError:
|
|
89
|
+
return None
|
|
93
90
|
|
|
94
91
|
|
|
95
92
|
def get_memory() -> int:
|
|
@@ -129,6 +126,7 @@ class _Properties(TypedDict):
|
|
|
129
126
|
python_version: str
|
|
130
127
|
node_version: str | None
|
|
131
128
|
bun_version: str | None
|
|
129
|
+
reflex_enterprise_version: str | None
|
|
132
130
|
cpu_count: int
|
|
133
131
|
memory: int
|
|
134
132
|
cpu_info: dict
|
|
@@ -182,6 +180,7 @@ def _get_event_defaults() -> _DefaultEvent | None:
|
|
|
182
180
|
"bun_version": (
|
|
183
181
|
str(bun_version) if (bun_version := get_bun_version()) else None
|
|
184
182
|
),
|
|
183
|
+
"reflex_enterprise_version": get_reflex_enterprise_version(),
|
|
185
184
|
"cpu_count": get_cpu_count(),
|
|
186
185
|
"memory": get_memory(),
|
|
187
186
|
"cpu_info": dataclasses.asdict(cpuinfo) if cpuinfo else {},
|
|
@@ -213,16 +212,12 @@ def _prepare_event(event: str, **kwargs) -> _Event | None:
|
|
|
213
212
|
if not event_data:
|
|
214
213
|
return None
|
|
215
214
|
|
|
216
|
-
additional_keys = ["template", "context", "detail", "user_uuid"
|
|
215
|
+
additional_keys = ["template", "context", "detail", "user_uuid"]
|
|
217
216
|
|
|
218
217
|
properties = event_data["properties"]
|
|
219
218
|
|
|
220
|
-
# Auto-detect app class if not provided
|
|
221
|
-
if "app_class" not in kwargs:
|
|
222
|
-
kwargs["app_class"] = _get_app_class_name()
|
|
223
|
-
|
|
224
219
|
for key in additional_keys:
|
|
225
|
-
if key in properties or key not in kwargs
|
|
220
|
+
if key in properties or key not in kwargs:
|
|
226
221
|
continue
|
|
227
222
|
|
|
228
223
|
properties[key] = kwargs[key]
|