reflex 0.6.0a1__py3-none-any.whl → 0.6.0a3__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 +2 -2
- reflex/.templates/jinja/web/pages/_app.js.jinja2 +1 -1
- reflex/.templates/jinja/web/pages/utils.js.jinja2 +2 -2
- reflex/__init__.py +8 -2
- reflex/__init__.pyi +2 -1
- reflex/app.py +10 -4
- reflex/base.py +1 -1
- reflex/compiler/compiler.py +2 -2
- reflex/compiler/utils.py +3 -3
- reflex/components/base/app_wrap.py +2 -2
- reflex/components/base/app_wrap.pyi +17 -27
- reflex/components/base/bare.py +4 -5
- reflex/components/base/body.pyi +17 -27
- reflex/components/base/document.pyi +81 -131
- reflex/components/base/error_boundary.py +6 -7
- reflex/components/base/error_boundary.pyi +20 -33
- reflex/components/base/fragment.pyi +17 -27
- reflex/components/base/head.pyi +33 -53
- reflex/components/base/link.py +1 -1
- reflex/components/base/link.pyi +33 -54
- reflex/components/base/meta.pyi +65 -105
- reflex/components/base/script.py +1 -2
- reflex/components/base/script.pyi +21 -38
- reflex/components/component.py +45 -47
- reflex/components/core/banner.py +23 -27
- reflex/components/core/banner.pyi +134 -171
- reflex/components/core/breakpoints.py +3 -1
- reflex/components/core/client_side_routing.py +2 -3
- reflex/components/core/client_side_routing.pyi +33 -54
- reflex/components/core/clipboard.py +2 -1
- reflex/components/core/clipboard.pyi +20 -33
- reflex/components/core/cond.py +5 -5
- reflex/components/core/debounce.py +5 -5
- reflex/components/core/debounce.pyi +20 -33
- reflex/components/core/foreach.py +3 -4
- reflex/components/core/html.py +1 -1
- reflex/components/core/html.pyi +35 -46
- reflex/components/core/match.py +17 -17
- reflex/components/core/upload.py +17 -23
- reflex/components/core/upload.pyi +78 -124
- reflex/components/datadisplay/code.py +9 -10
- reflex/components/datadisplay/code.pyi +302 -412
- reflex/components/datadisplay/dataeditor.py +8 -10
- reflex/components/datadisplay/dataeditor.pyi +40 -53
- reflex/components/el/element.pyi +17 -27
- reflex/components/el/elements/base.py +1 -1
- reflex/components/el/elements/base.pyi +34 -45
- reflex/components/el/elements/forms.py +16 -16
- reflex/components/el/elements/forms.pyi +554 -707
- reflex/components/el/elements/inline.py +1 -1
- reflex/components/el/elements/inline.pyi +937 -1218
- reflex/components/el/elements/media.py +1 -1
- reflex/components/el/elements/media.pyi +786 -997
- reflex/components/el/elements/metadata.py +3 -6
- reflex/components/el/elements/metadata.pyi +181 -242
- reflex/components/el/elements/other.py +1 -1
- reflex/components/el/elements/other.pyi +235 -306
- reflex/components/el/elements/scripts.py +1 -1
- reflex/components/el/elements/scripts.pyi +109 -140
- reflex/components/el/elements/sectioning.py +0 -2
- reflex/components/el/elements/sectioning.pyi +496 -647
- reflex/components/el/elements/tables.py +1 -1
- reflex/components/el/elements/tables.pyi +351 -452
- reflex/components/el/elements/typography.py +1 -1
- reflex/components/el/elements/typography.pyi +506 -657
- reflex/components/gridjs/datatable.py +6 -9
- reflex/components/gridjs/datatable.pyi +35 -56
- reflex/components/lucide/icon.py +1 -1
- reflex/components/lucide/icon.pyi +33 -54
- reflex/components/markdown/markdown.py +26 -31
- reflex/components/markdown/markdown.pyi +27 -37
- reflex/components/moment/moment.py +13 -12
- reflex/components/moment/moment.pyi +23 -35
- reflex/components/next/base.pyi +17 -27
- reflex/components/next/image.py +1 -1
- reflex/components/next/image.pyi +22 -37
- reflex/components/next/link.py +1 -1
- reflex/components/next/link.pyi +17 -28
- reflex/components/next/video.py +1 -1
- reflex/components/next/video.pyi +17 -28
- reflex/components/plotly/plotly.py +12 -13
- reflex/components/plotly/plotly.pyi +39 -54
- reflex/components/props.py +1 -1
- reflex/components/radix/__init__.pyi +1 -0
- reflex/components/radix/primitives/__init__.pyi +1 -0
- reflex/components/radix/primitives/accordion.py +4 -4
- reflex/components/radix/primitives/accordion.pyi +424 -495
- reflex/components/radix/primitives/base.py +1 -1
- reflex/components/radix/primitives/base.pyi +33 -54
- reflex/components/radix/primitives/drawer.py +1 -1
- reflex/components/radix/primitives/drawer.pyi +172 -273
- reflex/components/radix/primitives/form.py +1 -1
- reflex/components/radix/primitives/form.pyi +257 -364
- reflex/components/radix/primitives/progress.py +1 -1
- reflex/components/radix/primitives/progress.pyi +231 -282
- reflex/components/radix/primitives/slider.py +1 -1
- reflex/components/radix/primitives/slider.pyi +87 -138
- reflex/components/radix/themes/base.py +3 -24
- reflex/components/radix/themes/base.pyi +178 -250
- reflex/components/radix/themes/color_mode.py +5 -5
- reflex/components/radix/themes/color_mode.pyi +187 -220
- reflex/components/radix/themes/components/alert_dialog.py +1 -1
- reflex/components/radix/themes/components/alert_dialog.pyi +136 -207
- reflex/components/radix/themes/components/aspect_ratio.py +1 -1
- reflex/components/radix/themes/components/aspect_ratio.pyi +17 -28
- reflex/components/radix/themes/components/avatar.py +1 -1
- reflex/components/radix/themes/components/avatar.pyi +70 -81
- reflex/components/radix/themes/components/badge.py +1 -1
- reflex/components/radix/themes/components/badge.pyi +88 -99
- reflex/components/radix/themes/components/button.py +1 -1
- reflex/components/radix/themes/components/button.pyi +98 -109
- reflex/components/radix/themes/components/callout.py +1 -1
- reflex/components/radix/themes/components/callout.pyi +322 -373
- reflex/components/radix/themes/components/card.py +1 -1
- reflex/components/radix/themes/components/card.pyi +38 -49
- reflex/components/radix/themes/components/checkbox.py +1 -2
- reflex/components/radix/themes/components/checkbox.pyi +208 -245
- reflex/components/radix/themes/components/checkbox_cards.py +1 -1
- reflex/components/radix/themes/components/checkbox_cards.pyi +94 -115
- reflex/components/radix/themes/components/checkbox_group.py +1 -1
- reflex/components/radix/themes/components/checkbox_group.pyi +86 -107
- reflex/components/radix/themes/components/context_menu.py +1 -1
- reflex/components/radix/themes/components/context_menu.pyi +238 -319
- reflex/components/radix/themes/components/data_list.py +1 -1
- reflex/components/radix/themes/components/data_list.pyi +130 -171
- reflex/components/radix/themes/components/dialog.py +1 -1
- reflex/components/radix/themes/components/dialog.pyi +139 -210
- reflex/components/radix/themes/components/dropdown_menu.py +1 -1
- reflex/components/radix/themes/components/dropdown_menu.pyi +249 -332
- reflex/components/radix/themes/components/hover_card.py +1 -1
- reflex/components/radix/themes/components/hover_card.pyi +90 -131
- reflex/components/radix/themes/components/icon_button.py +2 -3
- reflex/components/radix/themes/components/icon_button.pyi +98 -109
- reflex/components/radix/themes/components/inset.py +1 -1
- reflex/components/radix/themes/components/inset.pyi +47 -58
- reflex/components/radix/themes/components/popover.py +1 -1
- reflex/components/radix/themes/components/popover.pyi +95 -136
- reflex/components/radix/themes/components/progress.py +1 -1
- reflex/components/radix/themes/components/progress.pyi +71 -82
- reflex/components/radix/themes/components/radio.py +1 -1
- reflex/components/radix/themes/components/radio.pyi +69 -80
- reflex/components/radix/themes/components/radio_cards.py +1 -1
- reflex/components/radix/themes/components/radio_cards.pyi +98 -119
- reflex/components/radix/themes/components/radio_group.py +8 -11
- reflex/components/radix/themes/components/radio_group.pyi +228 -271
- reflex/components/radix/themes/components/scroll_area.py +1 -1
- reflex/components/radix/themes/components/scroll_area.pyi +21 -32
- reflex/components/radix/themes/components/segmented_control.py +1 -1
- reflex/components/radix/themes/components/segmented_control.pyi +90 -113
- reflex/components/radix/themes/components/select.py +2 -3
- reflex/components/radix/themes/components/select.pyi +374 -471
- reflex/components/radix/themes/components/separator.py +1 -2
- reflex/components/radix/themes/components/separator.pyi +69 -80
- reflex/components/radix/themes/components/skeleton.py +1 -1
- reflex/components/radix/themes/components/skeleton.pyi +23 -34
- reflex/components/radix/themes/components/slider.py +2 -3
- reflex/components/radix/themes/components/slider.pyi +75 -88
- reflex/components/radix/themes/components/spinner.py +1 -1
- reflex/components/radix/themes/components/spinner.pyi +19 -30
- reflex/components/radix/themes/components/switch.py +1 -1
- reflex/components/radix/themes/components/switch.pyi +71 -84
- reflex/components/radix/themes/components/table.py +1 -1
- reflex/components/radix/themes/components/table.pyi +261 -332
- reflex/components/radix/themes/components/tabs.py +1 -1
- reflex/components/radix/themes/components/tabs.pyi +139 -194
- reflex/components/radix/themes/components/text_area.py +1 -1
- reflex/components/radix/themes/components/text_area.pyi +96 -111
- reflex/components/radix/themes/components/text_field.py +1 -1
- reflex/components/radix/themes/components/text_field.pyi +247 -286
- reflex/components/radix/themes/components/tooltip.py +1 -1
- reflex/components/radix/themes/components/tooltip.pyi +26 -37
- reflex/components/radix/themes/layout/__init__.pyi +1 -0
- reflex/components/radix/themes/layout/base.py +1 -1
- reflex/components/radix/themes/layout/base.pyi +56 -67
- reflex/components/radix/themes/layout/box.pyi +34 -45
- reflex/components/radix/themes/layout/center.pyi +56 -67
- reflex/components/radix/themes/layout/container.py +1 -2
- reflex/components/radix/themes/layout/container.pyi +36 -47
- reflex/components/radix/themes/layout/flex.py +1 -1
- reflex/components/radix/themes/layout/flex.pyi +56 -67
- reflex/components/radix/themes/layout/grid.py +1 -1
- reflex/components/radix/themes/layout/grid.pyi +64 -75
- reflex/components/radix/themes/layout/list.py +5 -6
- reflex/components/radix/themes/layout/list.pyi +193 -244
- reflex/components/radix/themes/layout/section.py +1 -2
- reflex/components/radix/themes/layout/section.pyi +36 -47
- reflex/components/radix/themes/layout/spacer.pyi +56 -67
- reflex/components/radix/themes/layout/stack.py +1 -1
- reflex/components/radix/themes/layout/stack.pyi +128 -159
- reflex/components/radix/themes/typography/blockquote.py +1 -1
- reflex/components/radix/themes/typography/blockquote.pyi +89 -100
- reflex/components/radix/themes/typography/code.py +1 -1
- reflex/components/radix/themes/typography/code.pyi +90 -101
- reflex/components/radix/themes/typography/heading.py +1 -1
- reflex/components/radix/themes/typography/heading.pyi +96 -107
- reflex/components/radix/themes/typography/link.py +1 -1
- reflex/components/radix/themes/typography/link.pyi +102 -113
- reflex/components/radix/themes/typography/text.py +1 -1
- reflex/components/radix/themes/typography/text.pyi +501 -572
- reflex/components/react_player/audio.pyi +33 -60
- reflex/components/react_player/react_player.py +1 -1
- reflex/components/react_player/react_player.pyi +33 -60
- reflex/components/react_player/video.pyi +33 -60
- reflex/components/recharts/cartesian.py +2 -3
- reflex/components/recharts/cartesian.pyi +678 -861
- reflex/components/recharts/charts.py +4 -5
- reflex/components/recharts/charts.pyi +252 -357
- reflex/components/recharts/general.py +1 -2
- reflex/components/recharts/general.pyi +180 -231
- reflex/components/recharts/polar.py +4 -5
- reflex/components/recharts/polar.pyi +144 -181
- reflex/components/recharts/recharts.pyi +33 -53
- reflex/components/sonner/toast.py +16 -17
- reflex/components/sonner/toast.pyi +36 -47
- reflex/components/suneditor/editor.py +2 -3
- reflex/components/suneditor/editor.pyi +55 -78
- reflex/components/tags/cond_tag.py +6 -4
- reflex/components/tags/iter_tag.py +28 -16
- reflex/components/tags/match_tag.py +6 -4
- reflex/components/tags/tag.py +40 -23
- reflex/custom_components/custom_components.py +3 -1
- reflex/event.py +115 -67
- reflex/experimental/client_state.py +18 -18
- reflex/experimental/hooks.py +16 -16
- reflex/experimental/layout.py +5 -5
- reflex/experimental/layout.pyi +136 -187
- reflex/middleware/hydrate_middleware.py +2 -0
- reflex/middleware/middleware.py +3 -3
- reflex/state.py +149 -82
- reflex/style.py +21 -22
- reflex/utils/exceptions.py +20 -0
- reflex/utils/format.py +54 -34
- reflex/utils/imports.py +16 -73
- reflex/utils/prerequisites.py +15 -8
- reflex/utils/pyi_generator.py +13 -8
- reflex/utils/serializers.py +12 -22
- reflex/utils/telemetry.py +3 -2
- reflex/utils/types.py +11 -6
- reflex/{ivars → vars}/__init__.py +6 -2
- reflex/{ivars → vars}/base.py +599 -216
- reflex/{ivars → vars}/function.py +15 -19
- reflex/{ivars → vars}/number.py +41 -20
- reflex/{ivars → vars}/object.py +28 -30
- reflex/{ivars → vars}/sequence.py +53 -42
- {reflex-0.6.0a1.dist-info → reflex-0.6.0a3.dist-info}/METADATA +4 -6
- reflex-0.6.0a3.dist-info/RECORD +382 -0
- reflex/.templates/web/components/reflex/chakra_color_mode_provider.js +0 -36
- reflex/vars.py +0 -501
- reflex-0.6.0a1.dist-info/RECORD +0 -384
- {reflex-0.6.0a1.dist-info → reflex-0.6.0a3.dist-info}/LICENSE +0 -0
- {reflex-0.6.0a1.dist-info → reflex-0.6.0a3.dist-info}/WHEEL +0 -0
- {reflex-0.6.0a1.dist-info → reflex-0.6.0a3.dist-info}/entry_points.txt +0 -0
|
@@ -28,22 +28,19 @@ from reflex import constants
|
|
|
28
28
|
from reflex.constants.base import REFLEX_VAR_OPENING_TAG
|
|
29
29
|
from reflex.utils.exceptions import VarTypeError
|
|
30
30
|
from reflex.utils.types import GenericType, get_origin
|
|
31
|
-
from reflex.vars import (
|
|
32
|
-
Var,
|
|
33
|
-
VarData,
|
|
34
|
-
_global_vars,
|
|
35
|
-
get_unique_variable_name,
|
|
36
|
-
)
|
|
37
31
|
|
|
38
32
|
from .base import (
|
|
39
33
|
CachedVarOperation,
|
|
40
34
|
CustomVarOperationReturn,
|
|
41
|
-
ImmutableVar,
|
|
42
35
|
LiteralNoneVar,
|
|
43
36
|
LiteralVar,
|
|
44
37
|
ToOperation,
|
|
38
|
+
Var,
|
|
39
|
+
VarData,
|
|
40
|
+
_global_vars,
|
|
45
41
|
cached_property_no_lock,
|
|
46
42
|
figure_out_type,
|
|
43
|
+
get_unique_variable_name,
|
|
47
44
|
unionize,
|
|
48
45
|
var_operation,
|
|
49
46
|
var_operation_return,
|
|
@@ -59,7 +56,7 @@ if TYPE_CHECKING:
|
|
|
59
56
|
from .object import ObjectVar
|
|
60
57
|
|
|
61
58
|
|
|
62
|
-
class StringVar(
|
|
59
|
+
class StringVar(Var[str]):
|
|
63
60
|
"""Base class for immutable string vars."""
|
|
64
61
|
|
|
65
62
|
@overload
|
|
@@ -556,19 +553,21 @@ class LiteralStringVar(LiteralVar, StringVar):
|
|
|
556
553
|
def create(
|
|
557
554
|
cls,
|
|
558
555
|
value: str,
|
|
556
|
+
_var_type: GenericType | None = str,
|
|
559
557
|
_var_data: VarData | None = None,
|
|
560
558
|
) -> StringVar:
|
|
561
559
|
"""Create a var from a string value.
|
|
562
560
|
|
|
563
561
|
Args:
|
|
564
562
|
value: The value to create the var from.
|
|
563
|
+
_var_type: The type of the var.
|
|
565
564
|
_var_data: Additional hooks and imports associated with the Var.
|
|
566
565
|
|
|
567
566
|
Returns:
|
|
568
567
|
The var.
|
|
569
568
|
"""
|
|
570
569
|
if REFLEX_VAR_OPENING_TAG in value:
|
|
571
|
-
strings_and_vals: list[
|
|
570
|
+
strings_and_vals: list[Var | str] = []
|
|
572
571
|
offset = 0
|
|
573
572
|
|
|
574
573
|
# Find all tags
|
|
@@ -585,27 +584,36 @@ class LiteralStringVar(LiteralVar, StringVar):
|
|
|
585
584
|
# This is a global immutable var.
|
|
586
585
|
var = _global_vars[int(serialized_data)]
|
|
587
586
|
strings_and_vals.append(var)
|
|
588
|
-
value = value[(end + len(var.
|
|
587
|
+
value = value[(end + len(var._js_expr)) :]
|
|
589
588
|
|
|
590
589
|
offset += end - start
|
|
591
590
|
|
|
592
591
|
strings_and_vals.append(value)
|
|
593
592
|
|
|
594
593
|
filtered_strings_and_vals = [
|
|
595
|
-
s for s in strings_and_vals if isinstance(s,
|
|
594
|
+
s for s in strings_and_vals if isinstance(s, Var) or s
|
|
596
595
|
]
|
|
597
|
-
|
|
598
596
|
if len(filtered_strings_and_vals) == 1:
|
|
599
|
-
|
|
597
|
+
only_string = filtered_strings_and_vals[0]
|
|
598
|
+
if isinstance(only_string, str):
|
|
599
|
+
return LiteralVar.create(only_string).to(StringVar, _var_type)
|
|
600
|
+
else:
|
|
601
|
+
return only_string.to(StringVar, only_string._var_type)
|
|
600
602
|
|
|
601
|
-
|
|
603
|
+
concat_result = ConcatVarOperation.create(
|
|
602
604
|
*filtered_strings_and_vals,
|
|
603
605
|
_var_data=_var_data,
|
|
604
606
|
)
|
|
605
607
|
|
|
608
|
+
return (
|
|
609
|
+
concat_result
|
|
610
|
+
if _var_type is str
|
|
611
|
+
else concat_result.to(StringVar, _var_type)
|
|
612
|
+
)
|
|
613
|
+
|
|
606
614
|
return LiteralStringVar(
|
|
607
|
-
|
|
608
|
-
_var_type=
|
|
615
|
+
_js_expr=json.dumps(value),
|
|
616
|
+
_var_type=_var_type,
|
|
609
617
|
_var_data=_var_data,
|
|
610
618
|
_var_value=value,
|
|
611
619
|
)
|
|
@@ -635,7 +643,7 @@ class LiteralStringVar(LiteralVar, StringVar):
|
|
|
635
643
|
class ConcatVarOperation(CachedVarOperation, StringVar):
|
|
636
644
|
"""Representing a concatenation of literal string vars."""
|
|
637
645
|
|
|
638
|
-
_var_value: Tuple[
|
|
646
|
+
_var_value: Tuple[Var, ...] = dataclasses.field(default_factory=tuple)
|
|
639
647
|
|
|
640
648
|
@cached_property_no_lock
|
|
641
649
|
def _cached_var_name(self) -> str:
|
|
@@ -644,7 +652,7 @@ class ConcatVarOperation(CachedVarOperation, StringVar):
|
|
|
644
652
|
Returns:
|
|
645
653
|
The name of the var.
|
|
646
654
|
"""
|
|
647
|
-
list_of_strs: List[Union[str,
|
|
655
|
+
list_of_strs: List[Union[str, Var]] = []
|
|
648
656
|
last_string = ""
|
|
649
657
|
for var in self._var_value:
|
|
650
658
|
if isinstance(var, LiteralStringVar):
|
|
@@ -659,9 +667,7 @@ class ConcatVarOperation(CachedVarOperation, StringVar):
|
|
|
659
667
|
list_of_strs.append(last_string)
|
|
660
668
|
|
|
661
669
|
list_of_strs_filtered = [
|
|
662
|
-
str(LiteralVar.create(s))
|
|
663
|
-
for s in list_of_strs
|
|
664
|
-
if isinstance(s, ImmutableVar) or s
|
|
670
|
+
str(LiteralVar.create(s)) for s in list_of_strs if isinstance(s, Var) or s
|
|
665
671
|
]
|
|
666
672
|
|
|
667
673
|
if len(list_of_strs_filtered) == 1:
|
|
@@ -680,7 +686,7 @@ class ConcatVarOperation(CachedVarOperation, StringVar):
|
|
|
680
686
|
*[
|
|
681
687
|
var._get_all_var_data()
|
|
682
688
|
for var in self._var_value
|
|
683
|
-
if isinstance(var,
|
|
689
|
+
if isinstance(var, Var)
|
|
684
690
|
],
|
|
685
691
|
self._var_data,
|
|
686
692
|
)
|
|
@@ -701,7 +707,7 @@ class ConcatVarOperation(CachedVarOperation, StringVar):
|
|
|
701
707
|
The var.
|
|
702
708
|
"""
|
|
703
709
|
return cls(
|
|
704
|
-
|
|
710
|
+
_js_expr="",
|
|
705
711
|
_var_type=str,
|
|
706
712
|
_var_data=_var_data,
|
|
707
713
|
_var_value=tuple(map(LiteralVar.create, value)),
|
|
@@ -718,7 +724,7 @@ KEY_TYPE = TypeVar("KEY_TYPE")
|
|
|
718
724
|
VALUE_TYPE = TypeVar("VALUE_TYPE")
|
|
719
725
|
|
|
720
726
|
|
|
721
|
-
class ArrayVar(
|
|
727
|
+
class ArrayVar(Var[ARRAY_VAR_TYPE]):
|
|
722
728
|
"""Base class for immutable array vars."""
|
|
723
729
|
|
|
724
730
|
@overload
|
|
@@ -856,9 +862,9 @@ class ArrayVar(ImmutableVar[ARRAY_VAR_TYPE]):
|
|
|
856
862
|
) -> ObjectVar[Dict[KEY_TYPE, VALUE_TYPE]]: ...
|
|
857
863
|
|
|
858
864
|
@overload
|
|
859
|
-
def __getitem__(self, i: int | NumberVar) ->
|
|
865
|
+
def __getitem__(self, i: int | NumberVar) -> Var: ...
|
|
860
866
|
|
|
861
|
-
def __getitem__(self, i: Any) -> ArrayVar[ARRAY_VAR_TYPE] |
|
|
867
|
+
def __getitem__(self, i: Any) -> ArrayVar[ARRAY_VAR_TYPE] | Var:
|
|
862
868
|
"""Get a slice of the array.
|
|
863
869
|
|
|
864
870
|
Args:
|
|
@@ -897,6 +903,15 @@ class ArrayVar(ImmutableVar[ARRAY_VAR_TYPE]):
|
|
|
897
903
|
/,
|
|
898
904
|
) -> ArrayVar[List[int]]: ...
|
|
899
905
|
|
|
906
|
+
@overload
|
|
907
|
+
@classmethod
|
|
908
|
+
def range(
|
|
909
|
+
cls,
|
|
910
|
+
first_endpoint: int | NumberVar,
|
|
911
|
+
second_endpoint: int | NumberVar | None = None,
|
|
912
|
+
step: int | NumberVar | None = None,
|
|
913
|
+
) -> ArrayVar[List[int]]: ...
|
|
914
|
+
|
|
900
915
|
@classmethod
|
|
901
916
|
def range(
|
|
902
917
|
cls,
|
|
@@ -1096,15 +1111,15 @@ class ArrayVar(ImmutableVar[ARRAY_VAR_TYPE]):
|
|
|
1096
1111
|
function_var = ArgsFunctionOperation.create(tuple(), return_value)
|
|
1097
1112
|
else:
|
|
1098
1113
|
# generic number var
|
|
1099
|
-
number_var =
|
|
1114
|
+
number_var = Var("").to(NumberVar)
|
|
1100
1115
|
|
|
1101
1116
|
first_arg_type = self[number_var]._var_type
|
|
1102
1117
|
|
|
1103
1118
|
arg_name = get_unique_variable_name()
|
|
1104
1119
|
|
|
1105
1120
|
# get first argument type
|
|
1106
|
-
first_arg =
|
|
1107
|
-
|
|
1121
|
+
first_arg = Var(
|
|
1122
|
+
_js_expr=arg_name,
|
|
1108
1123
|
_var_type=first_arg_type,
|
|
1109
1124
|
).guess_type()
|
|
1110
1125
|
|
|
@@ -1131,9 +1146,9 @@ class LiteralArrayVar(CachedVarOperation, LiteralVar, ArrayVar[ARRAY_VAR_TYPE]):
|
|
|
1131
1146
|
"""Base class for immutable literal array vars."""
|
|
1132
1147
|
|
|
1133
1148
|
_var_value: Union[
|
|
1134
|
-
List[Union[
|
|
1135
|
-
Set[Union[
|
|
1136
|
-
Tuple[Union[
|
|
1149
|
+
List[Union[Var, Any]],
|
|
1150
|
+
Set[Union[Var, Any]],
|
|
1151
|
+
Tuple[Union[Var, Any], ...],
|
|
1137
1152
|
] = dataclasses.field(default_factory=list)
|
|
1138
1153
|
|
|
1139
1154
|
@cached_property_no_lock
|
|
@@ -1172,7 +1187,7 @@ class LiteralArrayVar(CachedVarOperation, LiteralVar, ArrayVar[ARRAY_VAR_TYPE]):
|
|
|
1172
1187
|
Returns:
|
|
1173
1188
|
The hash of the var.
|
|
1174
1189
|
"""
|
|
1175
|
-
return hash((self.__class__.__name__, self.
|
|
1190
|
+
return hash((self.__class__.__name__, self._js_expr))
|
|
1176
1191
|
|
|
1177
1192
|
def json(self) -> str:
|
|
1178
1193
|
"""Get the JSON representation of the var.
|
|
@@ -1205,7 +1220,7 @@ class LiteralArrayVar(CachedVarOperation, LiteralVar, ArrayVar[ARRAY_VAR_TYPE]):
|
|
|
1205
1220
|
The var.
|
|
1206
1221
|
"""
|
|
1207
1222
|
return cls(
|
|
1208
|
-
|
|
1223
|
+
_js_expr="",
|
|
1209
1224
|
_var_type=figure_out_type(value) if _var_type is None else _var_type,
|
|
1210
1225
|
_var_data=_var_data,
|
|
1211
1226
|
_var_value=value,
|
|
@@ -1256,18 +1271,14 @@ class ArraySliceOperation(CachedVarOperation, ArrayVar):
|
|
|
1256
1271
|
start, end, step = self._start, self._stop, self._step
|
|
1257
1272
|
|
|
1258
1273
|
normalized_start = (
|
|
1259
|
-
LiteralVar.create(start)
|
|
1260
|
-
if start is not None
|
|
1261
|
-
else ImmutableVar.create_safe("undefined")
|
|
1274
|
+
LiteralVar.create(start) if start is not None else Var(_js_expr="undefined")
|
|
1262
1275
|
)
|
|
1263
1276
|
normalized_end = (
|
|
1264
|
-
LiteralVar.create(end)
|
|
1265
|
-
if end is not None
|
|
1266
|
-
else ImmutableVar.create_safe("undefined")
|
|
1277
|
+
LiteralVar.create(end) if end is not None else Var(_js_expr="undefined")
|
|
1267
1278
|
)
|
|
1268
1279
|
if step is None:
|
|
1269
1280
|
return f"{str(self._array)}.slice({str(normalized_start)}, {str(normalized_end)})"
|
|
1270
|
-
if not isinstance(step,
|
|
1281
|
+
if not isinstance(step, Var):
|
|
1271
1282
|
if step < 0:
|
|
1272
1283
|
actual_start = end + 1 if end is not None else 0
|
|
1273
1284
|
actual_end = start + 1 if start is not None else self._array.length()
|
|
@@ -1299,7 +1310,7 @@ class ArraySliceOperation(CachedVarOperation, ArrayVar):
|
|
|
1299
1310
|
The var.
|
|
1300
1311
|
"""
|
|
1301
1312
|
return cls(
|
|
1302
|
-
|
|
1313
|
+
_js_expr="",
|
|
1303
1314
|
_var_type=array._var_type,
|
|
1304
1315
|
_var_data=_var_data,
|
|
1305
1316
|
_array=array,
|
|
@@ -1,18 +1,16 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: reflex
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.0a3
|
|
4
4
|
Summary: Web apps in pure Python.
|
|
5
5
|
Home-page: https://reflex.dev
|
|
6
6
|
License: Apache-2.0
|
|
7
7
|
Keywords: web,framework
|
|
8
8
|
Author: Nikhil Rao
|
|
9
9
|
Author-email: nikhil@reflex.dev
|
|
10
|
-
Requires-Python: >=3.
|
|
10
|
+
Requires-Python: >=3.10,<4.0
|
|
11
11
|
Classifier: Development Status :: 4 - Beta
|
|
12
12
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
13
13
|
Classifier: Programming Language :: Python :: 3
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
16
14
|
Classifier: Programming Language :: Python :: 3.10
|
|
17
15
|
Classifier: Programming Language :: Python :: 3.11
|
|
18
16
|
Classifier: Programming Language :: Python :: 3.12
|
|
@@ -34,7 +32,7 @@ Requires-Dist: python-engineio (!=4.6.0)
|
|
|
34
32
|
Requires-Dist: python-multipart (>=0.0.5,<0.1)
|
|
35
33
|
Requires-Dist: python-socketio (>=5.7.0,<6.0)
|
|
36
34
|
Requires-Dist: redis (>=4.3.5,<6.0)
|
|
37
|
-
Requires-Dist: reflex-chakra (>=0.6.
|
|
35
|
+
Requires-Dist: reflex-chakra (>=0.6.0a6)
|
|
38
36
|
Requires-Dist: reflex-hosting-cli (>=0.1.2,<2.0)
|
|
39
37
|
Requires-Dist: rich (>=13.0.0,<14.0)
|
|
40
38
|
Requires-Dist: setuptools (>=69.1.1,<70.2)
|
|
@@ -88,7 +86,7 @@ See our [architecture page](https://reflex.dev/blog/2024-03-21-reflex-architectu
|
|
|
88
86
|
|
|
89
87
|
## ⚙️ Installation
|
|
90
88
|
|
|
91
|
-
Open a terminal and run (Requires Python 3.
|
|
89
|
+
Open a terminal and run (Requires Python 3.10+):
|
|
92
90
|
|
|
93
91
|
```bash
|
|
94
92
|
pip install reflex
|