reflex 0.5.10a2__py3-none-any.whl → 0.6.0__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 +4 -4
- reflex/.templates/jinja/web/utils/context.js.jinja2 +1 -1
- reflex/.templates/jinja/web/utils/theme.js.jinja2 +1 -1
- reflex/.templates/web/utils/state.js +3 -1
- reflex/__init__.py +10 -3
- reflex/__init__.pyi +3 -2
- reflex/app.py +47 -11
- reflex/app_module_for_backend.py +1 -1
- reflex/base.py +3 -2
- reflex/compiler/compiler.py +5 -5
- reflex/compiler/utils.py +5 -3
- reflex/components/base/app_wrap.py +2 -4
- reflex/components/base/app_wrap.pyi +16 -26
- reflex/components/base/bare.py +6 -4
- reflex/components/base/body.pyi +16 -26
- reflex/components/base/document.pyi +76 -126
- reflex/components/base/error_boundary.py +9 -8
- reflex/components/base/error_boundary.pyi +18 -30
- reflex/components/base/fragment.pyi +16 -26
- reflex/components/base/head.pyi +31 -51
- reflex/components/base/link.py +1 -1
- reflex/components/base/link.pyi +31 -51
- reflex/components/base/meta.pyi +61 -101
- reflex/components/base/script.py +2 -2
- reflex/components/base/script.pyi +20 -36
- reflex/components/component.py +107 -130
- reflex/components/core/banner.py +61 -66
- reflex/components/core/banner.pyi +129 -230
- reflex/components/core/client_side_routing.py +2 -2
- reflex/components/core/client_side_routing.pyi +31 -51
- reflex/components/core/clipboard.py +4 -3
- reflex/components/core/clipboard.pyi +19 -31
- reflex/components/core/cond.py +21 -44
- reflex/components/core/debounce.py +7 -9
- reflex/components/core/debounce.pyi +19 -31
- reflex/components/core/foreach.py +4 -14
- reflex/components/core/html.py +1 -1
- reflex/components/core/html.pyi +34 -44
- reflex/components/core/match.py +36 -43
- reflex/components/core/upload.py +27 -26
- reflex/components/core/upload.pyi +81 -116
- reflex/components/datadisplay/code.py +55 -29
- reflex/components/datadisplay/code.pyi +303 -410
- reflex/components/datadisplay/dataeditor.py +13 -9
- reflex/components/datadisplay/dataeditor.pyi +39 -51
- reflex/components/el/__init__.py +0 -1
- reflex/components/el/__init__.pyi +0 -11
- reflex/components/el/element.pyi +16 -26
- reflex/components/el/elements/__init__.py +1 -7
- reflex/components/el/elements/__init__.pyi +1 -15
- reflex/components/el/elements/base.py +1 -1
- reflex/components/el/elements/base.pyi +33 -43
- reflex/components/el/elements/forms.py +26 -33
- reflex/components/el/elements/forms.pyi +542 -694
- reflex/components/el/elements/inline.py +1 -1
- reflex/components/el/elements/inline.pyi +909 -1189
- reflex/components/el/elements/media.py +1 -22
- reflex/components/el/elements/media.pyi +765 -975
- reflex/components/el/elements/metadata.py +3 -5
- reflex/components/el/elements/metadata.pyi +175 -235
- reflex/components/el/elements/other.py +1 -1
- reflex/components/el/elements/other.pyi +228 -298
- reflex/components/el/elements/scripts.py +1 -1
- reflex/components/el/elements/scripts.pyi +106 -136
- reflex/components/el/elements/sectioning.py +0 -2
- reflex/components/el/elements/sectioning.pyi +481 -631
- reflex/components/el/elements/tables.py +1 -1
- reflex/components/el/elements/tables.pyi +341 -441
- reflex/components/el/elements/typography.py +1 -1
- reflex/components/el/elements/typography.pyi +491 -641
- reflex/components/gridjs/datatable.py +9 -13
- reflex/components/gridjs/datatable.pyi +33 -53
- reflex/components/lucide/icon.py +3 -127
- reflex/components/lucide/icon.pyi +31 -160
- reflex/components/markdown/markdown.py +32 -42
- reflex/components/markdown/markdown.pyi +28 -41
- reflex/components/moment/moment.py +13 -12
- reflex/components/moment/moment.pyi +22 -33
- reflex/components/next/base.pyi +16 -26
- reflex/components/next/image.py +1 -5
- reflex/components/next/image.pyi +21 -35
- reflex/components/next/link.py +1 -1
- reflex/components/next/link.pyi +16 -26
- reflex/components/next/video.py +1 -1
- reflex/components/next/video.pyi +16 -26
- reflex/components/plotly/plotly.py +17 -30
- reflex/components/plotly/plotly.pyi +38 -52
- reflex/components/props.py +21 -10
- reflex/components/radix/__init__.pyi +2 -1
- reflex/components/radix/primitives/accordion.py +6 -7
- reflex/components/radix/primitives/accordion.pyi +415 -485
- reflex/components/radix/primitives/base.py +1 -1
- reflex/components/radix/primitives/base.pyi +31 -51
- reflex/components/radix/primitives/drawer.py +1 -1
- reflex/components/radix/primitives/drawer.pyi +162 -262
- reflex/components/radix/primitives/form.py +1 -1
- reflex/components/radix/primitives/form.pyi +247 -353
- reflex/components/radix/primitives/progress.py +1 -1
- reflex/components/radix/primitives/progress.pyi +226 -276
- reflex/components/radix/primitives/slider.py +1 -1
- reflex/components/radix/primitives/slider.pyi +82 -132
- reflex/components/radix/themes/base.py +8 -25
- reflex/components/radix/themes/base.pyi +171 -242
- reflex/components/radix/themes/color_mode.py +11 -20
- reflex/components/radix/themes/color_mode.pyi +198 -231
- reflex/components/radix/themes/components/__init__.pyi +1 -0
- reflex/components/radix/themes/components/alert_dialog.py +1 -1
- reflex/components/radix/themes/components/alert_dialog.pyi +129 -199
- reflex/components/radix/themes/components/aspect_ratio.py +1 -1
- reflex/components/radix/themes/components/aspect_ratio.pyi +16 -26
- reflex/components/radix/themes/components/avatar.py +1 -1
- reflex/components/radix/themes/components/avatar.pyi +69 -79
- reflex/components/radix/themes/components/badge.py +1 -1
- reflex/components/radix/themes/components/badge.pyi +87 -97
- reflex/components/radix/themes/components/button.py +1 -1
- reflex/components/radix/themes/components/button.pyi +97 -107
- reflex/components/radix/themes/components/callout.py +1 -1
- reflex/components/radix/themes/components/callout.pyi +317 -367
- reflex/components/radix/themes/components/card.py +1 -1
- reflex/components/radix/themes/components/card.pyi +37 -47
- reflex/components/radix/themes/components/checkbox.py +2 -4
- reflex/components/radix/themes/components/checkbox.pyi +205 -241
- reflex/components/radix/themes/components/checkbox_cards.py +1 -1
- reflex/components/radix/themes/components/checkbox_cards.pyi +92 -112
- reflex/components/radix/themes/components/checkbox_group.py +1 -1
- reflex/components/radix/themes/components/checkbox_group.pyi +84 -104
- reflex/components/radix/themes/components/context_menu.py +1 -1
- reflex/components/radix/themes/components/context_menu.pyi +230 -310
- reflex/components/radix/themes/components/data_list.py +6 -1
- reflex/components/radix/themes/components/data_list.pyi +131 -166
- reflex/components/radix/themes/components/dialog.py +1 -1
- reflex/components/radix/themes/components/dialog.pyi +132 -202
- reflex/components/radix/themes/components/dropdown_menu.py +1 -1
- reflex/components/radix/themes/components/dropdown_menu.pyi +241 -323
- reflex/components/radix/themes/components/hover_card.py +1 -1
- reflex/components/radix/themes/components/hover_card.pyi +86 -126
- reflex/components/radix/themes/components/icon_button.py +1 -1
- reflex/components/radix/themes/components/icon_button.pyi +97 -107
- reflex/components/radix/themes/components/inset.py +1 -1
- reflex/components/radix/themes/components/inset.pyi +46 -56
- reflex/components/radix/themes/components/popover.py +1 -1
- reflex/components/radix/themes/components/popover.pyi +91 -131
- reflex/components/radix/themes/components/progress.py +1 -1
- reflex/components/radix/themes/components/progress.pyi +70 -80
- reflex/components/radix/themes/components/radio.py +1 -1
- reflex/components/radix/themes/components/radio.pyi +68 -78
- reflex/components/radix/themes/components/radio_cards.py +1 -1
- reflex/components/radix/themes/components/radio_cards.pyi +96 -116
- reflex/components/radix/themes/components/radio_group.py +32 -31
- reflex/components/radix/themes/components/radio_group.pyi +230 -266
- reflex/components/radix/themes/components/scroll_area.py +1 -1
- reflex/components/radix/themes/components/scroll_area.pyi +20 -30
- reflex/components/radix/themes/components/segmented_control.py +1 -1
- reflex/components/radix/themes/components/segmented_control.pyi +88 -110
- reflex/components/radix/themes/components/select.py +1 -1
- reflex/components/radix/themes/components/select.pyi +365 -461
- reflex/components/radix/themes/components/separator.py +2 -4
- reflex/components/radix/themes/components/separator.pyi +68 -78
- reflex/components/radix/themes/components/skeleton.py +1 -1
- reflex/components/radix/themes/components/skeleton.pyi +22 -32
- reflex/components/radix/themes/components/slider.py +1 -1
- reflex/components/radix/themes/components/slider.pyi +74 -86
- reflex/components/radix/themes/components/spinner.py +1 -1
- reflex/components/radix/themes/components/spinner.pyi +18 -28
- reflex/components/radix/themes/components/switch.py +1 -1
- reflex/components/radix/themes/components/switch.pyi +70 -82
- reflex/components/radix/themes/components/table.py +1 -1
- reflex/components/radix/themes/components/table.pyi +254 -324
- reflex/components/radix/themes/components/tabs.py +1 -1
- reflex/components/radix/themes/components/tabs.pyi +134 -188
- reflex/components/radix/themes/components/text_area.py +1 -1
- reflex/components/radix/themes/components/text_area.pyi +95 -109
- reflex/components/radix/themes/components/text_field.py +1 -80
- reflex/components/radix/themes/components/text_field.pyi +245 -290
- reflex/components/radix/themes/components/tooltip.py +1 -1
- reflex/components/radix/themes/components/tooltip.pyi +25 -35
- 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 +55 -65
- reflex/components/radix/themes/layout/box.pyi +33 -43
- reflex/components/radix/themes/layout/center.pyi +55 -65
- reflex/components/radix/themes/layout/container.py +2 -4
- reflex/components/radix/themes/layout/container.pyi +35 -45
- reflex/components/radix/themes/layout/flex.py +1 -1
- reflex/components/radix/themes/layout/flex.pyi +55 -65
- reflex/components/radix/themes/layout/grid.py +1 -1
- reflex/components/radix/themes/layout/grid.pyi +63 -73
- reflex/components/radix/themes/layout/list.py +1 -1
- reflex/components/radix/themes/layout/list.pyi +188 -238
- reflex/components/radix/themes/layout/section.py +2 -4
- reflex/components/radix/themes/layout/section.pyi +35 -45
- reflex/components/radix/themes/layout/spacer.pyi +55 -65
- reflex/components/radix/themes/layout/stack.py +1 -1
- reflex/components/radix/themes/layout/stack.pyi +125 -155
- reflex/components/radix/themes/typography/blockquote.py +1 -1
- reflex/components/radix/themes/typography/blockquote.pyi +88 -98
- reflex/components/radix/themes/typography/code.py +1 -1
- reflex/components/radix/themes/typography/code.pyi +89 -99
- reflex/components/radix/themes/typography/heading.py +1 -1
- reflex/components/radix/themes/typography/heading.pyi +95 -105
- reflex/components/radix/themes/typography/link.py +1 -1
- reflex/components/radix/themes/typography/link.pyi +101 -111
- reflex/components/radix/themes/typography/text.py +1 -1
- reflex/components/radix/themes/typography/text.pyi +494 -564
- reflex/components/react_player/audio.pyi +32 -58
- reflex/components/react_player/react_player.py +1 -1
- reflex/components/react_player/react_player.pyi +32 -58
- reflex/components/react_player/video.pyi +32 -58
- reflex/components/recharts/cartesian.py +22 -19
- reflex/components/recharts/cartesian.pyi +658 -840
- reflex/components/recharts/charts.py +3 -3
- reflex/components/recharts/charts.pyi +238 -342
- reflex/components/recharts/general.py +8 -8
- reflex/components/recharts/general.pyi +175 -225
- reflex/components/recharts/polar.py +11 -11
- reflex/components/recharts/polar.pyi +135 -171
- reflex/components/recharts/recharts.pyi +31 -51
- reflex/components/sonner/toast.py +27 -31
- reflex/components/sonner/toast.pyi +36 -45
- reflex/components/suneditor/editor.py +1 -1
- reflex/components/suneditor/editor.pyi +54 -76
- reflex/components/tags/cond_tag.py +6 -4
- reflex/components/tags/iter_tag.py +37 -25
- reflex/components/tags/match_tag.py +6 -4
- reflex/components/tags/tag.py +43 -28
- reflex/constants/base.py +3 -1
- reflex/constants/event.py +1 -0
- reflex/custom_components/custom_components.py +3 -1
- reflex/event.py +166 -108
- reflex/experimental/__init__.py +25 -6
- reflex/experimental/client_state.py +34 -57
- reflex/experimental/hooks.py +12 -17
- reflex/experimental/layout.py +4 -4
- reflex/experimental/layout.pyi +130 -180
- reflex/middleware/hydrate_middleware.py +2 -0
- reflex/middleware/middleware.py +3 -3
- reflex/model.py +22 -0
- reflex/reflex.py +4 -0
- reflex/state.py +491 -110
- reflex/style.py +56 -39
- reflex/testing.py +8 -3
- reflex/utils/exceptions.py +32 -0
- reflex/utils/exec.py +0 -14
- reflex/utils/format.py +80 -209
- reflex/utils/imports.py +16 -73
- reflex/utils/net.py +43 -0
- reflex/utils/path_ops.py +13 -1
- reflex/utils/prerequisites.py +81 -41
- reflex/utils/pyi_generator.py +12 -6
- reflex/utils/serializers.py +13 -41
- reflex/utils/telemetry.py +3 -2
- reflex/utils/types.py +47 -7
- reflex/{experimental/vars → vars}/__init__.py +6 -3
- reflex/vars/base.py +2563 -0
- reflex/vars/function.py +196 -0
- reflex/vars/number.py +1158 -0
- reflex/vars/object.py +562 -0
- reflex/vars/sequence.py +1604 -0
- {reflex-0.5.10a2.dist-info → reflex-0.6.0.dist-info}/METADATA +6 -9
- reflex-0.6.0.dist-info/RECORD +382 -0
- reflex/.templates/apps/demo/.gitignore +0 -4
- reflex/.templates/apps/demo/assets/favicon.ico +0 -0
- reflex/.templates/apps/demo/assets/github.svg +0 -10
- reflex/.templates/apps/demo/assets/icon.svg +0 -37
- reflex/.templates/apps/demo/assets/logo.svg +0 -68
- reflex/.templates/apps/demo/assets/paneleft.svg +0 -13
- reflex/.templates/apps/demo/code/__init__.py +0 -1
- reflex/.templates/apps/demo/code/demo.py +0 -127
- reflex/.templates/apps/demo/code/pages/__init__.py +0 -7
- reflex/.templates/apps/demo/code/pages/chatapp.py +0 -31
- reflex/.templates/apps/demo/code/pages/datatable.py +0 -360
- reflex/.templates/apps/demo/code/pages/forms.py +0 -257
- reflex/.templates/apps/demo/code/pages/graphing.py +0 -253
- reflex/.templates/apps/demo/code/pages/home.py +0 -56
- reflex/.templates/apps/demo/code/sidebar.py +0 -178
- reflex/.templates/apps/demo/code/state.py +0 -22
- reflex/.templates/apps/demo/code/states/form_state.py +0 -40
- reflex/.templates/apps/demo/code/states/pie_state.py +0 -47
- reflex/.templates/apps/demo/code/styles.py +0 -68
- reflex/.templates/apps/demo/code/webui/__init__.py +0 -0
- reflex/.templates/apps/demo/code/webui/components/__init__.py +0 -4
- reflex/.templates/apps/demo/code/webui/components/chat.py +0 -118
- reflex/.templates/apps/demo/code/webui/components/loading_icon.py +0 -19
- reflex/.templates/apps/demo/code/webui/components/modal.py +0 -56
- reflex/.templates/apps/demo/code/webui/components/navbar.py +0 -70
- reflex/.templates/apps/demo/code/webui/components/sidebar.py +0 -66
- reflex/.templates/apps/demo/code/webui/state.py +0 -146
- reflex/.templates/apps/demo/code/webui/styles.py +0 -88
- reflex/.templates/web/components/reflex/chakra_color_mode_provider.js +0 -36
- reflex/experimental/vars/base.py +0 -583
- reflex/experimental/vars/function.py +0 -290
- reflex/experimental/vars/number.py +0 -1458
- reflex/experimental/vars/object.py +0 -804
- reflex/experimental/vars/sequence.py +0 -1764
- reflex/utils/watch.py +0 -96
- reflex/vars.py +0 -2604
- reflex/vars.pyi +0 -218
- reflex-0.5.10a2.dist-info/RECORD +0 -413
- {reflex-0.5.10a2.dist-info → reflex-0.6.0.dist-info}/LICENSE +0 -0
- {reflex-0.5.10a2.dist-info → reflex-0.6.0.dist-info}/WHEEL +0 -0
- {reflex-0.5.10a2.dist-info → reflex-0.6.0.dist-info}/entry_points.txt +0 -0
|
@@ -1,290 +0,0 @@
|
|
|
1
|
-
"""Immutable function vars."""
|
|
2
|
-
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
|
-
import dataclasses
|
|
6
|
-
import sys
|
|
7
|
-
from functools import cached_property
|
|
8
|
-
from typing import Any, Callable, Optional, Tuple, Type, Union
|
|
9
|
-
|
|
10
|
-
from reflex.experimental.vars.base import ImmutableVar, LiteralVar
|
|
11
|
-
from reflex.vars import ImmutableVarData, Var, VarData
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
class FunctionVar(ImmutableVar[Callable]):
|
|
15
|
-
"""Base class for immutable function vars."""
|
|
16
|
-
|
|
17
|
-
def __call__(self, *args: Var | Any) -> ArgsFunctionOperation:
|
|
18
|
-
"""Call the function with the given arguments.
|
|
19
|
-
|
|
20
|
-
Args:
|
|
21
|
-
*args: The arguments to call the function with.
|
|
22
|
-
|
|
23
|
-
Returns:
|
|
24
|
-
The function call operation.
|
|
25
|
-
"""
|
|
26
|
-
return ArgsFunctionOperation(
|
|
27
|
-
("...args",),
|
|
28
|
-
VarOperationCall(self, *args, ImmutableVar.create_safe("...args")),
|
|
29
|
-
)
|
|
30
|
-
|
|
31
|
-
def call(self, *args: Var | Any) -> VarOperationCall:
|
|
32
|
-
"""Call the function with the given arguments.
|
|
33
|
-
|
|
34
|
-
Args:
|
|
35
|
-
*args: The arguments to call the function with.
|
|
36
|
-
|
|
37
|
-
Returns:
|
|
38
|
-
The function call operation.
|
|
39
|
-
"""
|
|
40
|
-
return VarOperationCall(self, *args)
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
class FunctionStringVar(FunctionVar):
|
|
44
|
-
"""Base class for immutable function vars from a string."""
|
|
45
|
-
|
|
46
|
-
def __init__(self, func: str, _var_data: VarData | None = None) -> None:
|
|
47
|
-
"""Initialize the function var.
|
|
48
|
-
|
|
49
|
-
Args:
|
|
50
|
-
func: The function to call.
|
|
51
|
-
_var_data: Additional hooks and imports associated with the Var.
|
|
52
|
-
"""
|
|
53
|
-
super(FunctionVar, self).__init__(
|
|
54
|
-
_var_name=func,
|
|
55
|
-
_var_type=Callable,
|
|
56
|
-
_var_data=ImmutableVarData.merge(_var_data),
|
|
57
|
-
)
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
@dataclasses.dataclass(
|
|
61
|
-
eq=False,
|
|
62
|
-
frozen=True,
|
|
63
|
-
**{"slots": True} if sys.version_info >= (3, 10) else {},
|
|
64
|
-
)
|
|
65
|
-
class VarOperationCall(ImmutableVar):
|
|
66
|
-
"""Base class for immutable vars that are the result of a function call."""
|
|
67
|
-
|
|
68
|
-
_func: Optional[FunctionVar] = dataclasses.field(default=None)
|
|
69
|
-
_args: Tuple[Union[Var, Any], ...] = dataclasses.field(default_factory=tuple)
|
|
70
|
-
|
|
71
|
-
def __init__(
|
|
72
|
-
self, func: FunctionVar, *args: Var | Any, _var_data: VarData | None = None
|
|
73
|
-
):
|
|
74
|
-
"""Initialize the function call var.
|
|
75
|
-
|
|
76
|
-
Args:
|
|
77
|
-
func: The function to call.
|
|
78
|
-
*args: The arguments to call the function with.
|
|
79
|
-
_var_data: Additional hooks and imports associated with the Var.
|
|
80
|
-
"""
|
|
81
|
-
super(VarOperationCall, self).__init__(
|
|
82
|
-
_var_name="",
|
|
83
|
-
_var_type=Any,
|
|
84
|
-
_var_data=ImmutableVarData.merge(_var_data),
|
|
85
|
-
)
|
|
86
|
-
object.__setattr__(self, "_func", func)
|
|
87
|
-
object.__setattr__(self, "_args", args)
|
|
88
|
-
object.__delattr__(self, "_var_name")
|
|
89
|
-
|
|
90
|
-
def __getattr__(self, name):
|
|
91
|
-
"""Get an attribute of the var.
|
|
92
|
-
|
|
93
|
-
Args:
|
|
94
|
-
name: The name of the attribute.
|
|
95
|
-
|
|
96
|
-
Returns:
|
|
97
|
-
The attribute of the var.
|
|
98
|
-
"""
|
|
99
|
-
if name == "_var_name":
|
|
100
|
-
return self._cached_var_name
|
|
101
|
-
return super(type(self), self).__getattr__(name)
|
|
102
|
-
|
|
103
|
-
@cached_property
|
|
104
|
-
def _cached_var_name(self) -> str:
|
|
105
|
-
"""The name of the var.
|
|
106
|
-
|
|
107
|
-
Returns:
|
|
108
|
-
The name of the var.
|
|
109
|
-
"""
|
|
110
|
-
return f"({str(self._func)}({', '.join([str(LiteralVar.create(arg)) for arg in self._args])}))"
|
|
111
|
-
|
|
112
|
-
@cached_property
|
|
113
|
-
def _cached_get_all_var_data(self) -> ImmutableVarData | None:
|
|
114
|
-
"""Get all VarData associated with the Var.
|
|
115
|
-
|
|
116
|
-
Returns:
|
|
117
|
-
The VarData of the components and all of its children.
|
|
118
|
-
"""
|
|
119
|
-
return ImmutableVarData.merge(
|
|
120
|
-
self._func._get_all_var_data() if self._func is not None else None,
|
|
121
|
-
*[var._get_all_var_data() for var in self._args],
|
|
122
|
-
self._var_data,
|
|
123
|
-
)
|
|
124
|
-
|
|
125
|
-
def _get_all_var_data(self) -> ImmutableVarData | None:
|
|
126
|
-
"""Wrapper method for cached property.
|
|
127
|
-
|
|
128
|
-
Returns:
|
|
129
|
-
The VarData of the components and all of its children.
|
|
130
|
-
"""
|
|
131
|
-
return self._cached_get_all_var_data
|
|
132
|
-
|
|
133
|
-
def __post_init__(self):
|
|
134
|
-
"""Post-initialize the var."""
|
|
135
|
-
pass
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
@dataclasses.dataclass(
|
|
139
|
-
eq=False,
|
|
140
|
-
frozen=True,
|
|
141
|
-
**{"slots": True} if sys.version_info >= (3, 10) else {},
|
|
142
|
-
)
|
|
143
|
-
class ArgsFunctionOperation(FunctionVar):
|
|
144
|
-
"""Base class for immutable function defined via arguments and return expression."""
|
|
145
|
-
|
|
146
|
-
_args_names: Tuple[str, ...] = dataclasses.field(default_factory=tuple)
|
|
147
|
-
_return_expr: Union[Var, Any] = dataclasses.field(default=None)
|
|
148
|
-
|
|
149
|
-
def __init__(
|
|
150
|
-
self,
|
|
151
|
-
args_names: Tuple[str, ...],
|
|
152
|
-
return_expr: Var | Any,
|
|
153
|
-
_var_data: VarData | None = None,
|
|
154
|
-
) -> None:
|
|
155
|
-
"""Initialize the function with arguments var.
|
|
156
|
-
|
|
157
|
-
Args:
|
|
158
|
-
args_names: The names of the arguments.
|
|
159
|
-
return_expr: The return expression of the function.
|
|
160
|
-
_var_data: Additional hooks and imports associated with the Var.
|
|
161
|
-
"""
|
|
162
|
-
super(ArgsFunctionOperation, self).__init__(
|
|
163
|
-
_var_name=f"",
|
|
164
|
-
_var_type=Callable,
|
|
165
|
-
_var_data=ImmutableVarData.merge(_var_data),
|
|
166
|
-
)
|
|
167
|
-
object.__setattr__(self, "_args_names", args_names)
|
|
168
|
-
object.__setattr__(self, "_return_expr", return_expr)
|
|
169
|
-
object.__delattr__(self, "_var_name")
|
|
170
|
-
|
|
171
|
-
def __getattr__(self, name):
|
|
172
|
-
"""Get an attribute of the var.
|
|
173
|
-
|
|
174
|
-
Args:
|
|
175
|
-
name: The name of the attribute.
|
|
176
|
-
|
|
177
|
-
Returns:
|
|
178
|
-
The attribute of the var.
|
|
179
|
-
"""
|
|
180
|
-
if name == "_var_name":
|
|
181
|
-
return self._cached_var_name
|
|
182
|
-
return super(type(self), self).__getattr__(name)
|
|
183
|
-
|
|
184
|
-
@cached_property
|
|
185
|
-
def _cached_var_name(self) -> str:
|
|
186
|
-
"""The name of the var.
|
|
187
|
-
|
|
188
|
-
Returns:
|
|
189
|
-
The name of the var.
|
|
190
|
-
"""
|
|
191
|
-
return f"(({', '.join(self._args_names)}) => ({str(LiteralVar.create(self._return_expr))}))"
|
|
192
|
-
|
|
193
|
-
@cached_property
|
|
194
|
-
def _cached_get_all_var_data(self) -> ImmutableVarData | None:
|
|
195
|
-
"""Get all VarData associated with the Var.
|
|
196
|
-
|
|
197
|
-
Returns:
|
|
198
|
-
The VarData of the components and all of its children.
|
|
199
|
-
"""
|
|
200
|
-
return ImmutableVarData.merge(
|
|
201
|
-
self._return_expr._get_all_var_data(),
|
|
202
|
-
self._var_data,
|
|
203
|
-
)
|
|
204
|
-
|
|
205
|
-
def _get_all_var_data(self) -> ImmutableVarData | None:
|
|
206
|
-
"""Wrapper method for cached property.
|
|
207
|
-
|
|
208
|
-
Returns:
|
|
209
|
-
The VarData of the components and all of its children.
|
|
210
|
-
"""
|
|
211
|
-
return self._cached_get_all_var_data
|
|
212
|
-
|
|
213
|
-
def __post_init__(self):
|
|
214
|
-
"""Post-initialize the var."""
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
@dataclasses.dataclass(
|
|
218
|
-
eq=False,
|
|
219
|
-
frozen=True,
|
|
220
|
-
**{"slots": True} if sys.version_info >= (3, 10) else {},
|
|
221
|
-
)
|
|
222
|
-
class ToFunctionOperation(FunctionVar):
|
|
223
|
-
"""Base class of converting a var to a function."""
|
|
224
|
-
|
|
225
|
-
_original_var: Var = dataclasses.field(
|
|
226
|
-
default_factory=lambda: LiteralVar.create(None)
|
|
227
|
-
)
|
|
228
|
-
|
|
229
|
-
def __init__(
|
|
230
|
-
self,
|
|
231
|
-
original_var: Var,
|
|
232
|
-
_var_type: Type[Callable] = Callable,
|
|
233
|
-
_var_data: VarData | None = None,
|
|
234
|
-
) -> None:
|
|
235
|
-
"""Initialize the function with arguments var.
|
|
236
|
-
|
|
237
|
-
Args:
|
|
238
|
-
original_var: The original var to convert to a function.
|
|
239
|
-
_var_type: The type of the function.
|
|
240
|
-
_var_data: Additional hooks and imports associated with the Var.
|
|
241
|
-
"""
|
|
242
|
-
super(ToFunctionOperation, self).__init__(
|
|
243
|
-
_var_name=f"",
|
|
244
|
-
_var_type=_var_type,
|
|
245
|
-
_var_data=ImmutableVarData.merge(_var_data),
|
|
246
|
-
)
|
|
247
|
-
object.__setattr__(self, "_original_var", original_var)
|
|
248
|
-
object.__delattr__(self, "_var_name")
|
|
249
|
-
|
|
250
|
-
def __getattr__(self, name):
|
|
251
|
-
"""Get an attribute of the var.
|
|
252
|
-
|
|
253
|
-
Args:
|
|
254
|
-
name: The name of the attribute.
|
|
255
|
-
|
|
256
|
-
Returns:
|
|
257
|
-
The attribute of the var.
|
|
258
|
-
"""
|
|
259
|
-
if name == "_var_name":
|
|
260
|
-
return self._cached_var_name
|
|
261
|
-
return super(type(self), self).__getattr__(name)
|
|
262
|
-
|
|
263
|
-
@cached_property
|
|
264
|
-
def _cached_var_name(self) -> str:
|
|
265
|
-
"""The name of the var.
|
|
266
|
-
|
|
267
|
-
Returns:
|
|
268
|
-
The name of the var.
|
|
269
|
-
"""
|
|
270
|
-
return str(self._original_var)
|
|
271
|
-
|
|
272
|
-
@cached_property
|
|
273
|
-
def _cached_get_all_var_data(self) -> ImmutableVarData | None:
|
|
274
|
-
"""Get all VarData associated with the Var.
|
|
275
|
-
|
|
276
|
-
Returns:
|
|
277
|
-
The VarData of the components and all of its children.
|
|
278
|
-
"""
|
|
279
|
-
return ImmutableVarData.merge(
|
|
280
|
-
self._original_var._get_all_var_data(),
|
|
281
|
-
self._var_data,
|
|
282
|
-
)
|
|
283
|
-
|
|
284
|
-
def _get_all_var_data(self) -> ImmutableVarData | None:
|
|
285
|
-
"""Wrapper method for cached property.
|
|
286
|
-
|
|
287
|
-
Returns:
|
|
288
|
-
The VarData of the components and all of its children.
|
|
289
|
-
"""
|
|
290
|
-
return self._cached_get_all_var_data
|