reflex 0.6.8a2__py3-none-any.whl → 0.7.0a2__py3-none-any.whl
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/.templates/jinja/custom_components/pyproject.toml.jinja2 +1 -1
- reflex/.templates/jinja/web/pages/_app.js.jinja2 +7 -7
- reflex/.templates/jinja/web/pages/utils.js.jinja2 +3 -3
- reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +1 -4
- reflex/.templates/web/utils/state.js +65 -36
- reflex/__init__.py +4 -17
- reflex/__init__.pyi +1 -2
- reflex/app.py +249 -116
- reflex/app_mixins/lifespan.py +9 -9
- reflex/app_mixins/middleware.py +6 -6
- reflex/app_module_for_backend.py +3 -7
- reflex/base.py +7 -7
- reflex/compiler/compiler.py +8 -0
- reflex/compiler/utils.py +35 -6
- reflex/components/base/app_wrap.pyi +16 -16
- reflex/components/base/bare.py +1 -1
- reflex/components/base/body.pyi +16 -16
- reflex/components/base/document.pyi +76 -76
- reflex/components/base/error_boundary.py +2 -1
- reflex/components/base/error_boundary.pyi +19 -22
- reflex/components/base/fragment.pyi +16 -16
- reflex/components/base/head.pyi +31 -31
- reflex/components/base/link.pyi +31 -31
- reflex/components/base/meta.py +2 -2
- reflex/components/base/meta.pyi +61 -61
- reflex/components/base/script.pyi +19 -19
- reflex/components/base/strict_mode.py +10 -0
- reflex/components/base/strict_mode.pyi +57 -0
- reflex/components/component.py +38 -77
- reflex/components/core/banner.py +159 -4
- reflex/components/core/banner.pyi +162 -76
- reflex/components/core/breakpoints.py +3 -1
- reflex/components/core/client_side_routing.py +1 -1
- reflex/components/core/client_side_routing.pyi +32 -32
- reflex/components/core/clipboard.pyi +17 -20
- reflex/components/core/cond.py +9 -10
- reflex/components/core/debounce.py +1 -1
- reflex/components/core/debounce.pyi +17 -17
- reflex/components/core/foreach.py +28 -3
- reflex/components/core/html.py +1 -1
- reflex/components/core/html.pyi +16 -16
- reflex/components/core/match.py +5 -5
- reflex/components/core/sticky.py +160 -0
- reflex/components/core/sticky.pyi +449 -0
- reflex/components/core/upload.py +2 -2
- reflex/components/core/upload.pyi +80 -88
- reflex/components/datadisplay/code.py +5 -14
- reflex/components/datadisplay/code.pyi +31 -31
- reflex/components/datadisplay/dataeditor.py +7 -4
- reflex/components/datadisplay/dataeditor.pyi +40 -54
- reflex/components/datadisplay/logo.py +13 -8
- reflex/components/datadisplay/shiki_code_block.py +14 -9
- reflex/components/datadisplay/shiki_code_block.pyi +46 -46
- reflex/components/dynamic.py +22 -3
- reflex/components/el/constants/reflex.py +1 -1
- reflex/components/el/element.py +1 -1
- reflex/components/el/element.pyi +16 -16
- reflex/components/el/elements/base.pyi +16 -16
- reflex/components/el/elements/forms.py +4 -4
- reflex/components/el/elements/forms.pyi +224 -258
- reflex/components/el/elements/inline.pyi +421 -421
- reflex/components/el/elements/media.pyi +376 -376
- reflex/components/el/elements/metadata.pyi +91 -91
- reflex/components/el/elements/other.pyi +106 -106
- reflex/components/el/elements/scripts.pyi +46 -46
- reflex/components/el/elements/sectioning.pyi +226 -226
- reflex/components/el/elements/tables.pyi +151 -151
- reflex/components/el/elements/typography.pyi +226 -226
- reflex/components/gridjs/datatable.pyi +31 -31
- reflex/components/lucide/icon.py +46 -8
- reflex/components/lucide/icon.pyi +85 -31
- reflex/components/markdown/markdown.py +10 -8
- reflex/components/markdown/markdown.pyi +16 -16
- reflex/components/moment/moment.py +2 -2
- reflex/components/moment/moment.pyi +17 -19
- reflex/components/next/base.pyi +16 -16
- reflex/components/next/image.py +16 -4
- reflex/components/next/image.pyi +22 -20
- reflex/components/next/link.py +1 -1
- reflex/components/next/link.pyi +16 -16
- reflex/components/next/video.pyi +16 -16
- reflex/components/plotly/plotly.py +5 -5
- reflex/components/plotly/plotly.pyi +34 -44
- reflex/components/props.py +3 -3
- reflex/components/radix/__init__.pyi +1 -1
- reflex/components/radix/primitives/accordion.py +9 -5
- reflex/components/radix/primitives/accordion.pyi +110 -108
- reflex/components/radix/primitives/base.pyi +31 -31
- reflex/components/radix/primitives/drawer.py +5 -2
- reflex/components/radix/primitives/drawer.pyi +179 -187
- reflex/components/radix/primitives/form.pyi +160 -172
- reflex/components/radix/primitives/progress.py +1 -1
- reflex/components/radix/primitives/progress.pyi +76 -76
- reflex/components/radix/primitives/slider.py +1 -1
- reflex/components/radix/primitives/slider.pyi +78 -82
- reflex/components/radix/themes/base.pyi +121 -121
- reflex/components/radix/themes/color_mode.py +11 -9
- reflex/components/radix/themes/color_mode.pyi +47 -49
- reflex/components/radix/themes/components/alert_dialog.py +3 -0
- reflex/components/radix/themes/components/alert_dialog.pyi +110 -112
- reflex/components/radix/themes/components/aspect_ratio.pyi +16 -16
- reflex/components/radix/themes/components/avatar.pyi +16 -16
- reflex/components/radix/themes/components/badge.pyi +16 -16
- reflex/components/radix/themes/components/button.pyi +16 -16
- reflex/components/radix/themes/components/callout.pyi +76 -76
- reflex/components/radix/themes/components/card.py +1 -1
- reflex/components/radix/themes/components/card.pyi +17 -17
- reflex/components/radix/themes/components/checkbox.pyi +49 -55
- reflex/components/radix/themes/components/checkbox_cards.pyi +31 -31
- reflex/components/radix/themes/components/checkbox_group.pyi +31 -31
- reflex/components/radix/themes/components/context_menu.py +5 -0
- reflex/components/radix/themes/components/context_menu.pyi +149 -155
- reflex/components/radix/themes/components/data_list.pyi +61 -61
- reflex/components/radix/themes/components/dialog.py +3 -0
- reflex/components/radix/themes/components/dialog.pyi +113 -117
- reflex/components/radix/themes/components/dropdown_menu.py +5 -0
- reflex/components/radix/themes/components/dropdown_menu.pyi +133 -137
- reflex/components/radix/themes/components/hover_card.py +3 -0
- reflex/components/radix/themes/components/hover_card.pyi +63 -67
- reflex/components/radix/themes/components/icon_button.py +2 -2
- reflex/components/radix/themes/components/icon_button.pyi +17 -16
- reflex/components/radix/themes/components/inset.pyi +16 -16
- reflex/components/radix/themes/components/popover.py +3 -0
- reflex/components/radix/themes/components/popover.pyi +68 -70
- reflex/components/radix/themes/components/progress.pyi +16 -16
- reflex/components/radix/themes/components/radio.pyi +16 -16
- reflex/components/radix/themes/components/radio_cards.py +2 -0
- reflex/components/radix/themes/components/radio_cards.pyi +32 -34
- reflex/components/radix/themes/components/radio_group.py +1 -1
- reflex/components/radix/themes/components/radio_group.pyi +62 -64
- reflex/components/radix/themes/components/scroll_area.pyi +16 -16
- reflex/components/radix/themes/components/segmented_control.pyi +32 -35
- reflex/components/radix/themes/components/select.py +4 -0
- reflex/components/radix/themes/components/select.pyi +145 -157
- reflex/components/radix/themes/components/separator.pyi +16 -16
- reflex/components/radix/themes/components/skeleton.py +3 -0
- reflex/components/radix/themes/components/skeleton.pyi +16 -16
- reflex/components/radix/themes/components/slider.pyi +22 -28
- reflex/components/radix/themes/components/spinner.pyi +16 -16
- reflex/components/radix/themes/components/switch.pyi +17 -19
- reflex/components/radix/themes/components/table.pyi +106 -106
- reflex/components/radix/themes/components/tabs.py +3 -0
- reflex/components/radix/themes/components/tabs.pyi +78 -82
- reflex/components/radix/themes/components/text_area.py +12 -0
- reflex/components/radix/themes/components/text_area.pyi +21 -33
- reflex/components/radix/themes/components/text_field.py +1 -1
- reflex/components/radix/themes/components/text_field.pyi +52 -80
- reflex/components/radix/themes/components/tooltip.py +6 -1
- reflex/components/radix/themes/components/tooltip.pyi +20 -21
- reflex/components/radix/themes/layout/__init__.pyi +1 -1
- reflex/components/radix/themes/layout/base.pyi +16 -16
- reflex/components/radix/themes/layout/box.pyi +16 -16
- reflex/components/radix/themes/layout/center.pyi +16 -16
- reflex/components/radix/themes/layout/container.pyi +16 -16
- reflex/components/radix/themes/layout/flex.pyi +16 -16
- reflex/components/radix/themes/layout/grid.pyi +16 -16
- reflex/components/radix/themes/layout/list.py +2 -2
- reflex/components/radix/themes/layout/list.pyi +76 -76
- reflex/components/radix/themes/layout/section.pyi +16 -16
- reflex/components/radix/themes/layout/spacer.pyi +16 -16
- reflex/components/radix/themes/layout/stack.py +2 -2
- reflex/components/radix/themes/layout/stack.pyi +46 -46
- reflex/components/radix/themes/typography/blockquote.pyi +16 -16
- reflex/components/radix/themes/typography/code.pyi +16 -16
- reflex/components/radix/themes/typography/heading.pyi +16 -16
- reflex/components/radix/themes/typography/link.py +1 -1
- reflex/components/radix/themes/typography/link.pyi +16 -16
- reflex/components/radix/themes/typography/text.py +2 -2
- reflex/components/radix/themes/typography/text.pyi +106 -106
- reflex/components/react_player/audio.pyi +33 -39
- reflex/components/react_player/react_player.py +1 -1
- reflex/components/react_player/react_player.pyi +32 -38
- reflex/components/react_player/video.pyi +33 -39
- reflex/components/recharts/__init__.py +2 -0
- reflex/components/recharts/__init__.pyi +2 -0
- reflex/components/recharts/cartesian.pyi +282 -282
- reflex/components/recharts/charts.py +15 -15
- reflex/components/recharts/charts.pyi +164 -164
- reflex/components/recharts/general.py +19 -4
- reflex/components/recharts/general.pyi +132 -81
- reflex/components/recharts/polar.py +2 -2
- reflex/components/recharts/polar.pyi +55 -55
- reflex/components/recharts/recharts.py +4 -4
- reflex/components/recharts/recharts.pyi +31 -31
- reflex/components/sonner/toast.py +15 -13
- reflex/components/sonner/toast.pyi +22 -22
- reflex/components/suneditor/editor.py +6 -4
- reflex/components/suneditor/editor.pyi +26 -40
- reflex/components/tags/iter_tag.py +3 -3
- reflex/components/tags/tag.py +25 -3
- reflex/config.py +48 -15
- reflex/constants/__init__.py +1 -0
- reflex/constants/base.py +4 -1
- reflex/constants/compiler.py +5 -2
- reflex/constants/config.py +8 -1
- reflex/constants/installer.py +9 -9
- reflex/constants/style.py +1 -1
- reflex/custom_components/custom_components.py +9 -7
- reflex/event.py +215 -208
- reflex/experimental/__init__.py +19 -11
- reflex/experimental/client_state.py +53 -28
- reflex/experimental/hooks.py +5 -5
- reflex/experimental/layout.py +8 -5
- reflex/experimental/layout.pyi +79 -83
- reflex/experimental/misc.py +3 -3
- reflex/istate/wrappers.py +1 -1
- reflex/middleware/hydrate_middleware.py +2 -2
- reflex/model.py +11 -6
- reflex/page.py +5 -5
- reflex/reflex.py +90 -19
- reflex/route.py +1 -1
- reflex/state.py +358 -401
- reflex/style.py +27 -3
- reflex/testing.py +29 -23
- reflex/utils/build.py +6 -2
- reflex/utils/codespaces.py +1 -4
- reflex/utils/compat.py +6 -5
- reflex/utils/console.py +52 -16
- reflex/utils/exceptions.py +89 -26
- reflex/utils/exec.py +69 -74
- reflex/utils/export.py +6 -1
- reflex/utils/format.py +8 -40
- reflex/utils/imports.py +2 -2
- reflex/utils/lazy_loader.py +7 -1
- reflex/utils/path_ops.py +28 -14
- reflex/utils/prerequisites.py +326 -67
- reflex/utils/processes.py +45 -32
- reflex/utils/pyi_generator.py +39 -33
- reflex/utils/registry.py +4 -4
- reflex/utils/serializers.py +1 -1
- reflex/utils/telemetry.py +5 -4
- reflex/utils/types.py +42 -18
- reflex/vars/base.py +656 -333
- reflex/vars/datetime.py +6 -7
- reflex/vars/dep_tracking.py +344 -0
- reflex/vars/function.py +11 -5
- reflex/vars/number.py +31 -43
- reflex/vars/object.py +63 -62
- reflex/vars/sequence.py +79 -67
- {reflex-0.6.8a2.dist-info → reflex-0.7.0a2.dist-info}/METADATA +7 -8
- reflex-0.7.0a2.dist-info/RECORD +401 -0
- {reflex-0.6.8a2.dist-info → reflex-0.7.0a2.dist-info}/WHEEL +1 -1
- reflex/experimental/assets.py +0 -37
- reflex-0.6.8a2.dist-info/RECORD +0 -397
- {reflex-0.6.8a2.dist-info → reflex-0.7.0a2.dist-info}/LICENSE +0 -0
- {reflex-0.6.8a2.dist-info → reflex-0.7.0a2.dist-info}/entry_points.txt +0 -0
reflex/reflex.py
CHANGED
|
@@ -17,7 +17,7 @@ from reflex.state import reset_disk_state_manager
|
|
|
17
17
|
from reflex.utils import console, telemetry
|
|
18
18
|
|
|
19
19
|
# Disable typer+rich integration for help panels
|
|
20
|
-
typer.core.rich = None #
|
|
20
|
+
typer.core.rich = None # pyright: ignore [reportPrivateImportUsage]
|
|
21
21
|
|
|
22
22
|
# Create the app.
|
|
23
23
|
try:
|
|
@@ -26,6 +26,8 @@ except TypeError:
|
|
|
26
26
|
# Fallback for older typer versions.
|
|
27
27
|
cli = typer.Typer(add_completion=False)
|
|
28
28
|
|
|
29
|
+
SHOW_BUILT_WITH_REFLEX_INFO = "https://reflex.dev/docs/hosting/reflex-branding/"
|
|
30
|
+
|
|
29
31
|
# Get the config.
|
|
30
32
|
config = get_config()
|
|
31
33
|
|
|
@@ -125,8 +127,8 @@ def _run(
|
|
|
125
127
|
env: constants.Env = constants.Env.DEV,
|
|
126
128
|
frontend: bool = True,
|
|
127
129
|
backend: bool = True,
|
|
128
|
-
frontend_port:
|
|
129
|
-
backend_port:
|
|
130
|
+
frontend_port: int = config.frontend_port,
|
|
131
|
+
backend_port: int = config.backend_port,
|
|
130
132
|
backend_host: str = config.backend_host,
|
|
131
133
|
loglevel: constants.LogLevel = config.loglevel,
|
|
132
134
|
):
|
|
@@ -160,18 +162,22 @@ def _run(
|
|
|
160
162
|
# Find the next available open port if applicable.
|
|
161
163
|
if frontend:
|
|
162
164
|
frontend_port = processes.handle_port(
|
|
163
|
-
"frontend",
|
|
165
|
+
"frontend",
|
|
166
|
+
frontend_port,
|
|
167
|
+
constants.DefaultPorts.FRONTEND_PORT,
|
|
164
168
|
)
|
|
165
169
|
|
|
166
170
|
if backend:
|
|
167
171
|
backend_port = processes.handle_port(
|
|
168
|
-
"backend",
|
|
172
|
+
"backend",
|
|
173
|
+
backend_port,
|
|
174
|
+
constants.DefaultPorts.BACKEND_PORT,
|
|
169
175
|
)
|
|
170
176
|
|
|
171
177
|
# Apply the new ports to the config.
|
|
172
|
-
if frontend_port !=
|
|
178
|
+
if frontend_port != config.frontend_port:
|
|
173
179
|
config._set_persistent(frontend_port=frontend_port)
|
|
174
|
-
if backend_port !=
|
|
180
|
+
if backend_port != config.backend_port:
|
|
175
181
|
config._set_persistent(backend_port=backend_port)
|
|
176
182
|
|
|
177
183
|
# Reload the config to make sure the env vars are persistent.
|
|
@@ -182,6 +188,15 @@ def _run(
|
|
|
182
188
|
prerequisites.check_latest_package_version(constants.Reflex.MODULE_NAME)
|
|
183
189
|
|
|
184
190
|
if frontend:
|
|
191
|
+
if not config.show_built_with_reflex:
|
|
192
|
+
# The sticky badge may be disabled at runtime for team/enterprise tiers.
|
|
193
|
+
prerequisites.check_config_option_in_tier(
|
|
194
|
+
option_name="show_built_with_reflex",
|
|
195
|
+
allowed_tiers=["team", "enterprise"],
|
|
196
|
+
fallback_value=True,
|
|
197
|
+
help_link=SHOW_BUILT_WITH_REFLEX_INFO,
|
|
198
|
+
)
|
|
199
|
+
|
|
185
200
|
# Get the app module.
|
|
186
201
|
prerequisites.get_compiled_app()
|
|
187
202
|
|
|
@@ -262,10 +277,10 @@ def run(
|
|
|
262
277
|
help="Execute only backend.",
|
|
263
278
|
envvar=environment.REFLEX_BACKEND_ONLY.name,
|
|
264
279
|
),
|
|
265
|
-
frontend_port:
|
|
280
|
+
frontend_port: int = typer.Option(
|
|
266
281
|
config.frontend_port, help="Specify a different frontend port."
|
|
267
282
|
),
|
|
268
|
-
backend_port:
|
|
283
|
+
backend_port: int = typer.Option(
|
|
269
284
|
config.backend_port, help="Specify a different backend port."
|
|
270
285
|
),
|
|
271
286
|
backend_host: str = typer.Option(
|
|
@@ -306,6 +321,9 @@ def export(
|
|
|
306
321
|
help="Whether to exclude sqlite db files when exporting backend.",
|
|
307
322
|
hidden=True,
|
|
308
323
|
),
|
|
324
|
+
env: constants.Env = typer.Option(
|
|
325
|
+
constants.Env.PROD, help="The environment to export the app in."
|
|
326
|
+
),
|
|
309
327
|
loglevel: constants.LogLevel = typer.Option(
|
|
310
328
|
config.loglevel, help="The log level to use."
|
|
311
329
|
),
|
|
@@ -317,12 +335,22 @@ def export(
|
|
|
317
335
|
if prerequisites.needs_reinit(frontend=True):
|
|
318
336
|
_init(name=config.app_name, loglevel=loglevel)
|
|
319
337
|
|
|
338
|
+
if frontend and not config.show_built_with_reflex:
|
|
339
|
+
# The sticky badge may be disabled on export for team/enterprise tiers.
|
|
340
|
+
prerequisites.check_config_option_in_tier(
|
|
341
|
+
option_name="show_built_with_reflex",
|
|
342
|
+
allowed_tiers=["team", "enterprise"],
|
|
343
|
+
fallback_value=False,
|
|
344
|
+
help_link=SHOW_BUILT_WITH_REFLEX_INFO,
|
|
345
|
+
)
|
|
346
|
+
|
|
320
347
|
export_utils.export(
|
|
321
348
|
zipping=zipping,
|
|
322
349
|
frontend=frontend,
|
|
323
350
|
backend=backend,
|
|
324
351
|
zip_dest_dir=zip_dest_dir,
|
|
325
352
|
upload_db_file=upload_db_file,
|
|
353
|
+
env=env,
|
|
326
354
|
loglevel=loglevel.subprocess_level(),
|
|
327
355
|
)
|
|
328
356
|
|
|
@@ -351,7 +379,7 @@ def logout(
|
|
|
351
379
|
|
|
352
380
|
check_version()
|
|
353
381
|
|
|
354
|
-
logout(loglevel) #
|
|
382
|
+
logout(loglevel) # pyright: ignore [reportArgumentType]
|
|
355
383
|
|
|
356
384
|
|
|
357
385
|
db_cli = typer.Typer()
|
|
@@ -440,7 +468,11 @@ def deploy(
|
|
|
440
468
|
config.app_name,
|
|
441
469
|
"--app-name",
|
|
442
470
|
help="The name of the App to deploy under.",
|
|
443
|
-
|
|
471
|
+
),
|
|
472
|
+
app_id: str = typer.Option(
|
|
473
|
+
None,
|
|
474
|
+
"--app-id",
|
|
475
|
+
help="The ID of the App to deploy over.",
|
|
444
476
|
),
|
|
445
477
|
regions: List[str] = typer.Option(
|
|
446
478
|
[],
|
|
@@ -480,6 +512,11 @@ def deploy(
|
|
|
480
512
|
"--project",
|
|
481
513
|
help="project id to deploy to",
|
|
482
514
|
),
|
|
515
|
+
project_name: Optional[str] = typer.Option(
|
|
516
|
+
None,
|
|
517
|
+
"--project-name",
|
|
518
|
+
help="The name of the project to deploy to.",
|
|
519
|
+
),
|
|
483
520
|
token: Optional[str] = typer.Option(
|
|
484
521
|
None,
|
|
485
522
|
"--token",
|
|
@@ -492,6 +529,7 @@ def deploy(
|
|
|
492
529
|
),
|
|
493
530
|
):
|
|
494
531
|
"""Deploy the app to the Reflex hosting service."""
|
|
532
|
+
from reflex_cli.constants.base import LogLevel as HostingLogLevel
|
|
495
533
|
from reflex_cli.utils import dependency
|
|
496
534
|
from reflex_cli.v2 import cli as hosting_cli
|
|
497
535
|
|
|
@@ -500,15 +538,32 @@ def deploy(
|
|
|
500
538
|
|
|
501
539
|
check_version()
|
|
502
540
|
|
|
541
|
+
if not config.show_built_with_reflex:
|
|
542
|
+
# The sticky badge may be disabled on deploy for pro/team/enterprise tiers.
|
|
543
|
+
prerequisites.check_config_option_in_tier(
|
|
544
|
+
option_name="show_built_with_reflex",
|
|
545
|
+
allowed_tiers=["pro", "team", "enterprise"],
|
|
546
|
+
fallback_value=True,
|
|
547
|
+
help_link=SHOW_BUILT_WITH_REFLEX_INFO,
|
|
548
|
+
)
|
|
549
|
+
|
|
503
550
|
# Set the log level.
|
|
504
551
|
console.set_log_level(loglevel)
|
|
505
552
|
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
553
|
+
def convert_reflex_loglevel_to_reflex_cli_loglevel(
|
|
554
|
+
loglevel: constants.LogLevel,
|
|
555
|
+
) -> HostingLogLevel:
|
|
556
|
+
if loglevel == constants.LogLevel.DEBUG:
|
|
557
|
+
return HostingLogLevel.DEBUG
|
|
558
|
+
if loglevel == constants.LogLevel.INFO:
|
|
559
|
+
return HostingLogLevel.INFO
|
|
560
|
+
if loglevel == constants.LogLevel.WARNING:
|
|
561
|
+
return HostingLogLevel.WARNING
|
|
562
|
+
if loglevel == constants.LogLevel.ERROR:
|
|
563
|
+
return HostingLogLevel.ERROR
|
|
564
|
+
if loglevel == constants.LogLevel.CRITICAL:
|
|
565
|
+
return HostingLogLevel.CRITICAL
|
|
566
|
+
return HostingLogLevel.INFO
|
|
512
567
|
|
|
513
568
|
# Only check requirements if interactive.
|
|
514
569
|
# There is user interaction for requirements update.
|
|
@@ -522,6 +577,7 @@ def deploy(
|
|
|
522
577
|
|
|
523
578
|
hosting_cli.deploy(
|
|
524
579
|
app_name=app_name,
|
|
580
|
+
app_id=app_id,
|
|
525
581
|
export_fn=lambda zip_dest_dir,
|
|
526
582
|
api_url,
|
|
527
583
|
deploy_url,
|
|
@@ -542,13 +598,28 @@ def deploy(
|
|
|
542
598
|
envfile=envfile,
|
|
543
599
|
hostname=hostname,
|
|
544
600
|
interactive=interactive,
|
|
545
|
-
loglevel=
|
|
601
|
+
loglevel=convert_reflex_loglevel_to_reflex_cli_loglevel(loglevel),
|
|
546
602
|
token=token,
|
|
547
603
|
project=project,
|
|
548
|
-
|
|
604
|
+
project_name=project_name,
|
|
605
|
+
**({"config_path": config_path} if config_path is not None else {}),
|
|
549
606
|
)
|
|
550
607
|
|
|
551
608
|
|
|
609
|
+
@cli.command()
|
|
610
|
+
def rename(
|
|
611
|
+
new_name: str = typer.Argument(..., help="The new name for the app."),
|
|
612
|
+
loglevel: constants.LogLevel = typer.Option(
|
|
613
|
+
config.loglevel, help="The log level to use."
|
|
614
|
+
),
|
|
615
|
+
):
|
|
616
|
+
"""Rename the app in the current directory."""
|
|
617
|
+
from reflex.utils import prerequisites
|
|
618
|
+
|
|
619
|
+
prerequisites.validate_app_name(new_name)
|
|
620
|
+
prerequisites.rename_app(new_name, loglevel)
|
|
621
|
+
|
|
622
|
+
|
|
552
623
|
cli.add_typer(db_cli, name="db", help="Subcommands for managing the database schema.")
|
|
553
624
|
cli.add_typer(script_cli, name="script", help="Subcommands running helper scripts.")
|
|
554
625
|
cli.add_typer(
|
reflex/route.py
CHANGED
|
@@ -103,7 +103,7 @@ def catchall_prefix(route: str) -> str:
|
|
|
103
103
|
return route.replace(pattern, "") if pattern else ""
|
|
104
104
|
|
|
105
105
|
|
|
106
|
-
def replace_brackets_with_keywords(input_string):
|
|
106
|
+
def replace_brackets_with_keywords(input_string: str) -> str:
|
|
107
107
|
"""Replace brackets and everything inside it in a string with a keyword.
|
|
108
108
|
|
|
109
109
|
Args:
|