reflex 0.6.3a1__py3-none-any.whl → 0.6.3a3__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.

@@ -31,7 +31,7 @@ class ErrorBoundary(Component):
31
31
  on_click: Optional[EventType[[]]] = None,
32
32
  on_context_menu: Optional[EventType[[]]] = None,
33
33
  on_double_click: Optional[EventType[[]]] = None,
34
- on_error: Optional[EventType[[]]] = None,
34
+ on_error: Optional[EventType] = None,
35
35
  on_focus: Optional[EventType[[]]] = None,
36
36
  on_mount: Optional[EventType[[]]] = None,
37
37
  on_mouse_down: Optional[EventType[[]]] = None,
@@ -45,6 +45,7 @@ from reflex.event import (
45
45
  EventVar,
46
46
  call_event_fn,
47
47
  call_event_handler,
48
+ empty_event,
48
49
  get_handler_args,
49
50
  )
50
51
  from reflex.style import Style, format_as_emotion
@@ -623,21 +624,21 @@ class Component(BaseComponent, ABC):
623
624
 
624
625
  """
625
626
  default_triggers = {
626
- EventTriggers.ON_FOCUS: lambda: [],
627
- EventTriggers.ON_BLUR: lambda: [],
628
- EventTriggers.ON_CLICK: lambda: [],
629
- EventTriggers.ON_CONTEXT_MENU: lambda: [],
630
- EventTriggers.ON_DOUBLE_CLICK: lambda: [],
631
- EventTriggers.ON_MOUSE_DOWN: lambda: [],
632
- EventTriggers.ON_MOUSE_ENTER: lambda: [],
633
- EventTriggers.ON_MOUSE_LEAVE: lambda: [],
634
- EventTriggers.ON_MOUSE_MOVE: lambda: [],
635
- EventTriggers.ON_MOUSE_OUT: lambda: [],
636
- EventTriggers.ON_MOUSE_OVER: lambda: [],
637
- EventTriggers.ON_MOUSE_UP: lambda: [],
638
- EventTriggers.ON_SCROLL: lambda: [],
639
- EventTriggers.ON_MOUNT: lambda: [],
640
- EventTriggers.ON_UNMOUNT: lambda: [],
627
+ EventTriggers.ON_FOCUS: empty_event,
628
+ EventTriggers.ON_BLUR: empty_event,
629
+ EventTriggers.ON_CLICK: empty_event,
630
+ EventTriggers.ON_CONTEXT_MENU: empty_event,
631
+ EventTriggers.ON_DOUBLE_CLICK: empty_event,
632
+ EventTriggers.ON_MOUSE_DOWN: empty_event,
633
+ EventTriggers.ON_MOUSE_ENTER: empty_event,
634
+ EventTriggers.ON_MOUSE_LEAVE: empty_event,
635
+ EventTriggers.ON_MOUSE_MOVE: empty_event,
636
+ EventTriggers.ON_MOUSE_OUT: empty_event,
637
+ EventTriggers.ON_MOUSE_OVER: empty_event,
638
+ EventTriggers.ON_MOUSE_UP: empty_event,
639
+ EventTriggers.ON_SCROLL: empty_event,
640
+ EventTriggers.ON_MOUNT: empty_event,
641
+ EventTriggers.ON_UNMOUNT: empty_event,
641
642
  }
642
643
 
643
644
  # Look for component specific triggers,
@@ -648,7 +649,7 @@ class Component(BaseComponent, ABC):
648
649
  annotation = field.annotation
649
650
  if (metadata := getattr(annotation, "__metadata__", None)) is not None:
650
651
  args_spec = metadata[0]
651
- default_triggers[field.name] = args_spec or (lambda: [])
652
+ default_triggers[field.name] = args_spec or (empty_event) # type: ignore
652
653
  return default_triggers
653
654
 
654
655
  def __repr__(self) -> str:
@@ -1705,7 +1706,7 @@ class CustomComponent(Component):
1705
1706
  value = self._create_event_chain(
1706
1707
  value=value,
1707
1708
  args_spec=event_triggers_in_component_declaration.get(
1708
- key, lambda: []
1709
+ key, empty_event
1709
1710
  ),
1710
1711
  )
1711
1712
  self.props[format.to_camel_case(key)] = value
@@ -139,20 +139,20 @@ class DataEditor(NoSSRComponent):
139
139
  on_cell_activated: Optional[EventType] = None,
140
140
  on_cell_clicked: Optional[EventType] = None,
141
141
  on_cell_context_menu: Optional[EventType] = None,
142
- on_cell_edited: Optional[EventType[[]]] = None,
142
+ on_cell_edited: Optional[EventType] = None,
143
143
  on_click: Optional[EventType[[]]] = None,
144
- on_column_resize: Optional[EventType[[]]] = None,
144
+ on_column_resize: Optional[EventType] = None,
145
145
  on_context_menu: Optional[EventType[[]]] = None,
146
- on_delete: Optional[EventType[[]]] = None,
146
+ on_delete: Optional[EventType] = None,
147
147
  on_double_click: Optional[EventType[[]]] = None,
148
- on_finished_editing: Optional[EventType[[]]] = None,
148
+ on_finished_editing: Optional[EventType] = None,
149
149
  on_focus: Optional[EventType[[]]] = None,
150
- on_group_header_clicked: Optional[EventType[[]]] = None,
151
- on_group_header_context_menu: Optional[EventType[[]]] = None,
152
- on_group_header_renamed: Optional[EventType[[]]] = None,
150
+ on_group_header_clicked: Optional[EventType] = None,
151
+ on_group_header_context_menu: Optional[EventType] = None,
152
+ on_group_header_renamed: Optional[EventType] = None,
153
153
  on_header_clicked: Optional[EventType] = None,
154
154
  on_header_context_menu: Optional[EventType] = None,
155
- on_header_menu_click: Optional[EventType[[]]] = None,
155
+ on_header_menu_click: Optional[EventType] = None,
156
156
  on_item_hovered: Optional[EventType] = None,
157
157
  on_mount: Optional[EventType[[]]] = None,
158
158
  on_mouse_down: Optional[EventType[[]]] = None,
@@ -58,7 +58,7 @@ class Audio(ReactPlayer):
58
58
  on_play: Optional[EventType[[]]] = None,
59
59
  on_playback_quality_change: Optional[EventType[[]]] = None,
60
60
  on_playback_rate_change: Optional[EventType[[]]] = None,
61
- on_progress: Optional[EventType[[]]] = None,
61
+ on_progress: Optional[EventType] = None,
62
62
  on_ready: Optional[EventType[[]]] = None,
63
63
  on_scroll: Optional[EventType[[]]] = None,
64
64
  on_seek: Optional[EventType] = None,
@@ -56,7 +56,7 @@ class ReactPlayer(NoSSRComponent):
56
56
  on_play: Optional[EventType[[]]] = None,
57
57
  on_playback_quality_change: Optional[EventType[[]]] = None,
58
58
  on_playback_rate_change: Optional[EventType[[]]] = None,
59
- on_progress: Optional[EventType[[]]] = None,
59
+ on_progress: Optional[EventType] = None,
60
60
  on_ready: Optional[EventType[[]]] = None,
61
61
  on_scroll: Optional[EventType[[]]] = None,
62
62
  on_seek: Optional[EventType] = None,
@@ -58,7 +58,7 @@ class Video(ReactPlayer):
58
58
  on_play: Optional[EventType[[]]] = None,
59
59
  on_playback_quality_change: Optional[EventType[[]]] = None,
60
60
  on_playback_rate_change: Optional[EventType[[]]] = None,
61
- on_progress: Optional[EventType[[]]] = None,
61
+ on_progress: Optional[EventType] = None,
62
62
  on_ready: Optional[EventType[[]]] = None,
63
63
  on_scroll: Optional[EventType[[]]] = None,
64
64
  on_seek: Optional[EventType] = None,
@@ -252,7 +252,7 @@ class Brush(Recharts):
252
252
  A dict mapping the event trigger to the var that is passed to the handler.
253
253
  """
254
254
  return {
255
- EventTriggers.ON_CHANGE: lambda: [],
255
+ EventTriggers.ON_CHANGE: empty_event,
256
256
  }
257
257
 
258
258
 
@@ -293,10 +293,10 @@ class Cartesian(Recharts):
293
293
  name: Var[Union[str, int]]
294
294
 
295
295
  # The customized event handler of animation start
296
- on_animation_start: EventHandler[lambda: []]
296
+ on_animation_start: EventHandler[empty_event]
297
297
 
298
298
  # The customized event handler of animation end
299
- on_animation_end: EventHandler[lambda: []]
299
+ on_animation_end: EventHandler[empty_event]
300
300
 
301
301
  # The customized event handler of click on the component in this group
302
302
  on_click: EventHandler[empty_event]
@@ -330,9 +330,9 @@ class RadarChart(ChartBase):
330
330
  A dict mapping the event trigger to the var that is passed to the handler.
331
331
  """
332
332
  return {
333
- EventTriggers.ON_CLICK: lambda: [],
334
- EventTriggers.ON_MOUSE_ENTER: lambda: [],
335
- EventTriggers.ON_MOUSE_LEAVE: lambda: [],
333
+ EventTriggers.ON_CLICK: empty_event,
334
+ EventTriggers.ON_MOUSE_ENTER: empty_event,
335
+ EventTriggers.ON_MOUSE_LEAVE: empty_event,
336
336
  }
337
337
 
338
338
 
@@ -419,14 +419,14 @@ class ScatterChart(ChartBase):
419
419
  A dict mapping the event trigger to the var that is passed to the handler.
420
420
  """
421
421
  return {
422
- EventTriggers.ON_CLICK: lambda: [],
423
- EventTriggers.ON_MOUSE_DOWN: lambda: [],
424
- EventTriggers.ON_MOUSE_UP: lambda: [],
425
- EventTriggers.ON_MOUSE_MOVE: lambda: [],
426
- EventTriggers.ON_MOUSE_OVER: lambda: [],
427
- EventTriggers.ON_MOUSE_OUT: lambda: [],
428
- EventTriggers.ON_MOUSE_ENTER: lambda: [],
429
- EventTriggers.ON_MOUSE_LEAVE: lambda: [],
422
+ EventTriggers.ON_CLICK: empty_event,
423
+ EventTriggers.ON_MOUSE_DOWN: empty_event,
424
+ EventTriggers.ON_MOUSE_UP: empty_event,
425
+ EventTriggers.ON_MOUSE_MOVE: empty_event,
426
+ EventTriggers.ON_MOUSE_OVER: empty_event,
427
+ EventTriggers.ON_MOUSE_OUT: empty_event,
428
+ EventTriggers.ON_MOUSE_ENTER: empty_event,
429
+ EventTriggers.ON_MOUSE_LEAVE: empty_event,
430
430
  }
431
431
 
432
432
 
@@ -103,14 +103,14 @@ class Pie(Recharts):
103
103
  A dict mapping the event trigger to the var that is passed to the handler.
104
104
  """
105
105
  return {
106
- EventTriggers.ON_ANIMATION_START: lambda: [],
107
- EventTriggers.ON_ANIMATION_END: lambda: [],
108
- EventTriggers.ON_CLICK: lambda: [],
109
- EventTriggers.ON_MOUSE_MOVE: lambda: [],
110
- EventTriggers.ON_MOUSE_OVER: lambda: [],
111
- EventTriggers.ON_MOUSE_OUT: lambda: [],
112
- EventTriggers.ON_MOUSE_ENTER: lambda: [],
113
- EventTriggers.ON_MOUSE_LEAVE: lambda: [],
106
+ EventTriggers.ON_ANIMATION_START: empty_event,
107
+ EventTriggers.ON_ANIMATION_END: empty_event,
108
+ EventTriggers.ON_CLICK: empty_event,
109
+ EventTriggers.ON_MOUSE_MOVE: empty_event,
110
+ EventTriggers.ON_MOUSE_OVER: empty_event,
111
+ EventTriggers.ON_MOUSE_OUT: empty_event,
112
+ EventTriggers.ON_MOUSE_ENTER: empty_event,
113
+ EventTriggers.ON_MOUSE_LEAVE: empty_event,
114
114
  }
115
115
 
116
116
 
@@ -167,8 +167,8 @@ class Radar(Recharts):
167
167
  A dict mapping the event trigger to the var that is passed to the handler.
168
168
  """
169
169
  return {
170
- EventTriggers.ON_ANIMATION_START: lambda: [],
171
- EventTriggers.ON_ANIMATION_END: lambda: [],
170
+ EventTriggers.ON_ANIMATION_START: empty_event,
171
+ EventTriggers.ON_ANIMATION_END: empty_event,
172
172
  }
173
173
 
174
174
 
@@ -219,14 +219,14 @@ class RadialBar(Recharts):
219
219
  A dict mapping the event trigger to the var that is passed to the handler.
220
220
  """
221
221
  return {
222
- EventTriggers.ON_CLICK: lambda: [],
223
- EventTriggers.ON_MOUSE_MOVE: lambda: [],
224
- EventTriggers.ON_MOUSE_OVER: lambda: [],
225
- EventTriggers.ON_MOUSE_OUT: lambda: [],
226
- EventTriggers.ON_MOUSE_ENTER: lambda: [],
227
- EventTriggers.ON_MOUSE_LEAVE: lambda: [],
228
- EventTriggers.ON_ANIMATION_START: lambda: [],
229
- EventTriggers.ON_ANIMATION_END: lambda: [],
222
+ EventTriggers.ON_CLICK: empty_event,
223
+ EventTriggers.ON_MOUSE_MOVE: empty_event,
224
+ EventTriggers.ON_MOUSE_OVER: empty_event,
225
+ EventTriggers.ON_MOUSE_OUT: empty_event,
226
+ EventTriggers.ON_MOUSE_ENTER: empty_event,
227
+ EventTriggers.ON_MOUSE_LEAVE: empty_event,
228
+ EventTriggers.ON_ANIMATION_START: empty_event,
229
+ EventTriggers.ON_ANIMATION_END: empty_event,
230
230
  }
231
231
 
232
232
 
@@ -392,12 +392,12 @@ class PolarRadiusAxis(Recharts):
392
392
  A dict mapping the event trigger to the var that is passed to the handler.
393
393
  """
394
394
  return {
395
- EventTriggers.ON_CLICK: lambda: [],
396
- EventTriggers.ON_MOUSE_MOVE: lambda: [],
397
- EventTriggers.ON_MOUSE_OVER: lambda: [],
398
- EventTriggers.ON_MOUSE_OUT: lambda: [],
399
- EventTriggers.ON_MOUSE_ENTER: lambda: [],
400
- EventTriggers.ON_MOUSE_LEAVE: lambda: [],
395
+ EventTriggers.ON_CLICK: empty_event,
396
+ EventTriggers.ON_MOUSE_MOVE: empty_event,
397
+ EventTriggers.ON_MOUSE_OVER: empty_event,
398
+ EventTriggers.ON_MOUSE_OUT: empty_event,
399
+ EventTriggers.ON_MOUSE_ENTER: empty_event,
400
+ EventTriggers.ON_MOUSE_LEAVE: empty_event,
401
401
  }
402
402
 
403
403
 
@@ -122,16 +122,16 @@ class Editor(NoSSRComponent):
122
122
  class_name: Optional[Any] = None,
123
123
  autofocus: Optional[bool] = None,
124
124
  custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
125
- on_blur: Optional[EventType[[]]] = None,
126
- on_change: Optional[EventType[[]]] = None,
125
+ on_blur: Optional[EventType] = None,
126
+ on_change: Optional[EventType] = None,
127
127
  on_click: Optional[EventType[[]]] = None,
128
128
  on_context_menu: Optional[EventType[[]]] = None,
129
- on_copy: Optional[EventType[[]]] = None,
130
- on_cut: Optional[EventType[[]]] = None,
129
+ on_copy: Optional[EventType] = None,
130
+ on_cut: Optional[EventType] = None,
131
131
  on_double_click: Optional[EventType[[]]] = None,
132
132
  on_focus: Optional[EventType[[]]] = None,
133
- on_input: Optional[EventType[[]]] = None,
134
- on_load: Optional[EventType[[]]] = None,
133
+ on_input: Optional[EventType] = None,
134
+ on_load: Optional[EventType] = None,
135
135
  on_mount: Optional[EventType[[]]] = None,
136
136
  on_mouse_down: Optional[EventType[[]]] = None,
137
137
  on_mouse_enter: Optional[EventType[[]]] = None,
@@ -140,12 +140,12 @@ class Editor(NoSSRComponent):
140
140
  on_mouse_out: Optional[EventType[[]]] = None,
141
141
  on_mouse_over: Optional[EventType[[]]] = None,
142
142
  on_mouse_up: Optional[EventType[[]]] = None,
143
- on_paste: Optional[EventType[[]]] = None,
144
- on_resize_editor: Optional[EventType[[]]] = None,
143
+ on_paste: Optional[EventType] = None,
144
+ on_resize_editor: Optional[EventType] = None,
145
145
  on_scroll: Optional[EventType[[]]] = None,
146
146
  on_unmount: Optional[EventType[[]]] = None,
147
- toggle_code_view: Optional[EventType[[]]] = None,
148
- toggle_full_screen: Optional[EventType[[]]] = None,
147
+ toggle_code_view: Optional[EventType] = None,
148
+ toggle_full_screen: Optional[EventType] = None,
149
149
  **props,
150
150
  ) -> "Editor":
151
151
  """Create an instance of Editor. No children allowed.
reflex/event.py CHANGED
@@ -22,6 +22,7 @@ from typing import (
22
22
  TypeVar,
23
23
  Union,
24
24
  get_type_hints,
25
+ overload,
25
26
  )
26
27
 
27
28
  from typing_extensions import ParamSpec, get_args, get_origin
@@ -32,14 +33,17 @@ from reflex.utils.exceptions import EventFnArgMismatch, EventHandlerArgMismatch
32
33
  from reflex.utils.types import ArgsSpec, GenericType
33
34
  from reflex.vars import VarData
34
35
  from reflex.vars.base import (
35
- CachedVarOperation,
36
36
  LiteralNoneVar,
37
37
  LiteralVar,
38
38
  ToOperation,
39
39
  Var,
40
- cached_property_no_lock,
41
40
  )
42
- from reflex.vars.function import ArgsFunctionOperation, FunctionStringVar, FunctionVar
41
+ from reflex.vars.function import (
42
+ ArgsFunctionOperation,
43
+ FunctionStringVar,
44
+ FunctionVar,
45
+ VarOperationCall,
46
+ )
43
47
  from reflex.vars.object import ObjectVar
44
48
 
45
49
  try:
@@ -395,11 +399,6 @@ class EventChain(EventActionsMixin):
395
399
  invocation: Optional[Var] = dataclasses.field(default=None)
396
400
 
397
401
 
398
- # These chains can be used for their side effects when no other events are desired.
399
- stop_propagation = EventChain(events=[], args_spec=lambda: []).stop_propagation
400
- prevent_default = EventChain(events=[], args_spec=lambda: []).prevent_default
401
-
402
-
403
402
  @dataclasses.dataclass(
404
403
  init=True,
405
404
  frozen=True,
@@ -463,6 +462,11 @@ def empty_event() -> Tuple[()]:
463
462
  return tuple() # type: ignore
464
463
 
465
464
 
465
+ # These chains can be used for their side effects when no other events are desired.
466
+ stop_propagation = EventChain(events=[], args_spec=empty_event).stop_propagation
467
+ prevent_default = EventChain(events=[], args_spec=empty_event).prevent_default
468
+
469
+
466
470
  T = TypeVar("T")
467
471
 
468
472
 
@@ -1041,7 +1045,8 @@ def resolve_annotation(annotations: dict[str, Any], arg_name: str):
1041
1045
  deprecation_version="0.6.3",
1042
1046
  removal_version="0.7.0",
1043
1047
  )
1044
- return JavascriptInputEvent
1048
+ # Allow arbitrary attribute access two levels deep until removed.
1049
+ return Dict[str, dict]
1045
1050
  return annotation
1046
1051
 
1047
1052
 
@@ -1258,7 +1263,7 @@ class EventVar(ObjectVar):
1258
1263
  frozen=True,
1259
1264
  **{"slots": True} if sys.version_info >= (3, 10) else {},
1260
1265
  )
1261
- class LiteralEventVar(CachedVarOperation, LiteralVar, EventVar):
1266
+ class LiteralEventVar(VarOperationCall, LiteralVar, EventVar):
1262
1267
  """A literal event var."""
1263
1268
 
1264
1269
  _var_value: EventSpec = dataclasses.field(default=None) # type: ignore
@@ -1271,35 +1276,6 @@ class LiteralEventVar(CachedVarOperation, LiteralVar, EventVar):
1271
1276
  """
1272
1277
  return hash((self.__class__.__name__, self._js_expr))
1273
1278
 
1274
- @cached_property_no_lock
1275
- def _cached_var_name(self) -> str:
1276
- """The name of the var.
1277
-
1278
- Returns:
1279
- The name of the var.
1280
- """
1281
- return str(
1282
- FunctionStringVar("Event").call(
1283
- # event handler name
1284
- ".".join(
1285
- filter(
1286
- None,
1287
- format.get_event_handler_parts(self._var_value.handler),
1288
- )
1289
- ),
1290
- # event handler args
1291
- {str(name): value for name, value in self._var_value.args},
1292
- # event actions
1293
- self._var_value.event_actions,
1294
- # client handler name
1295
- *(
1296
- [self._var_value.client_handler_name]
1297
- if self._var_value.client_handler_name
1298
- else []
1299
- ),
1300
- )
1301
- )
1302
-
1303
1279
  @classmethod
1304
1280
  def create(
1305
1281
  cls,
@@ -1320,6 +1296,22 @@ class LiteralEventVar(CachedVarOperation, LiteralVar, EventVar):
1320
1296
  _var_type=EventSpec,
1321
1297
  _var_data=_var_data,
1322
1298
  _var_value=value,
1299
+ _func=FunctionStringVar("Event"),
1300
+ _args=(
1301
+ # event handler name
1302
+ ".".join(
1303
+ filter(
1304
+ None,
1305
+ format.get_event_handler_parts(value.handler),
1306
+ )
1307
+ ),
1308
+ # event handler args
1309
+ {str(name): value for name, value in value.args},
1310
+ # event actions
1311
+ value.event_actions,
1312
+ # client handler name
1313
+ *([value.client_handler_name] if value.client_handler_name else []),
1314
+ ),
1323
1315
  )
1324
1316
 
1325
1317
 
@@ -1332,7 +1324,10 @@ class EventChainVar(FunctionVar):
1332
1324
  frozen=True,
1333
1325
  **{"slots": True} if sys.version_info >= (3, 10) else {},
1334
1326
  )
1335
- class LiteralEventChainVar(CachedVarOperation, LiteralVar, EventChainVar):
1327
+ # Note: LiteralVar is second in the inheritance list allowing it act like a
1328
+ # CachedVarOperation (ArgsFunctionOperation) and get the _js_expr from the
1329
+ # _cached_var_name property.
1330
+ class LiteralEventChainVar(ArgsFunctionOperation, LiteralVar, EventChainVar):
1336
1331
  """A literal event chain var."""
1337
1332
 
1338
1333
  _var_value: EventChain = dataclasses.field(default=None) # type: ignore
@@ -1345,41 +1340,6 @@ class LiteralEventChainVar(CachedVarOperation, LiteralVar, EventChainVar):
1345
1340
  """
1346
1341
  return hash((self.__class__.__name__, self._js_expr))
1347
1342
 
1348
- @cached_property_no_lock
1349
- def _cached_var_name(self) -> str:
1350
- """The name of the var.
1351
-
1352
- Returns:
1353
- The name of the var.
1354
- """
1355
- sig = inspect.signature(self._var_value.args_spec) # type: ignore
1356
- if sig.parameters:
1357
- arg_def = tuple((f"_{p}" for p in sig.parameters))
1358
- arg_def_expr = LiteralVar.create([Var(_js_expr=arg) for arg in arg_def])
1359
- else:
1360
- # add a default argument for addEvents if none were specified in value.args_spec
1361
- # used to trigger the preventDefault() on the event.
1362
- arg_def = ("...args",)
1363
- arg_def_expr = Var(_js_expr="args")
1364
-
1365
- if self._var_value.invocation is None:
1366
- invocation = FunctionStringVar.create("addEvents")
1367
- else:
1368
- invocation = self._var_value.invocation
1369
-
1370
- return str(
1371
- ArgsFunctionOperation.create(
1372
- arg_def,
1373
- invocation.call(
1374
- LiteralVar.create(
1375
- [LiteralVar.create(event) for event in self._var_value.events]
1376
- ),
1377
- arg_def_expr,
1378
- self._var_value.event_actions,
1379
- ),
1380
- )
1381
- )
1382
-
1383
1343
  @classmethod
1384
1344
  def create(
1385
1345
  cls,
@@ -1395,10 +1355,31 @@ class LiteralEventChainVar(CachedVarOperation, LiteralVar, EventChainVar):
1395
1355
  Returns:
1396
1356
  The created LiteralEventChainVar instance.
1397
1357
  """
1358
+ sig = inspect.signature(value.args_spec) # type: ignore
1359
+ if sig.parameters:
1360
+ arg_def = tuple((f"_{p}" for p in sig.parameters))
1361
+ arg_def_expr = LiteralVar.create([Var(_js_expr=arg) for arg in arg_def])
1362
+ else:
1363
+ # add a default argument for addEvents if none were specified in value.args_spec
1364
+ # used to trigger the preventDefault() on the event.
1365
+ arg_def = ("...args",)
1366
+ arg_def_expr = Var(_js_expr="args")
1367
+
1368
+ if value.invocation is None:
1369
+ invocation = FunctionStringVar.create("addEvents")
1370
+ else:
1371
+ invocation = value.invocation
1372
+
1398
1373
  return cls(
1399
1374
  _js_expr="",
1400
1375
  _var_type=EventChain,
1401
1376
  _var_data=_var_data,
1377
+ _args_names=arg_def,
1378
+ _return_expr=invocation.call(
1379
+ LiteralVar.create([LiteralVar.create(event) for event in value.events]),
1380
+ arg_def_expr,
1381
+ value.event_actions,
1382
+ ),
1402
1383
  _var_value=value,
1403
1384
  )
1404
1385
 
@@ -1437,6 +1418,11 @@ EventType = Union[IndividualEventType[G], List[IndividualEventType[G]]]
1437
1418
 
1438
1419
  P = ParamSpec("P")
1439
1420
  T = TypeVar("T")
1421
+ V = TypeVar("V")
1422
+ V2 = TypeVar("V2")
1423
+ V3 = TypeVar("V3")
1424
+ V4 = TypeVar("V4")
1425
+ V5 = TypeVar("V5")
1440
1426
 
1441
1427
  if sys.version_info >= (3, 10):
1442
1428
  from typing import Concatenate
@@ -1452,7 +1438,55 @@ if sys.version_info >= (3, 10):
1452
1438
  """
1453
1439
  self.func = func
1454
1440
 
1455
- def __get__(self, instance, owner) -> Callable[P, T]:
1441
+ @overload
1442
+ def __get__(
1443
+ self: EventCallback[[V], T], instance: None, owner
1444
+ ) -> Callable[[Union[Var[V], V]], EventSpec]: ...
1445
+
1446
+ @overload
1447
+ def __get__(
1448
+ self: EventCallback[[V, V2], T], instance: None, owner
1449
+ ) -> Callable[[Union[Var[V], V], Union[Var[V2], V2]], EventSpec]: ...
1450
+
1451
+ @overload
1452
+ def __get__(
1453
+ self: EventCallback[[V, V2, V3], T], instance: None, owner
1454
+ ) -> Callable[
1455
+ [Union[Var[V], V], Union[Var[V2], V2], Union[Var[V3], V3]],
1456
+ EventSpec,
1457
+ ]: ...
1458
+
1459
+ @overload
1460
+ def __get__(
1461
+ self: EventCallback[[V, V2, V3, V4], T], instance: None, owner
1462
+ ) -> Callable[
1463
+ [
1464
+ Union[Var[V], V],
1465
+ Union[Var[V2], V2],
1466
+ Union[Var[V3], V3],
1467
+ Union[Var[V4], V4],
1468
+ ],
1469
+ EventSpec,
1470
+ ]: ...
1471
+
1472
+ @overload
1473
+ def __get__(
1474
+ self: EventCallback[[V, V2, V3, V4, V5], T], instance: None, owner
1475
+ ) -> Callable[
1476
+ [
1477
+ Union[Var[V], V],
1478
+ Union[Var[V2], V2],
1479
+ Union[Var[V3], V3],
1480
+ Union[Var[V4], V4],
1481
+ Union[Var[V5], V5],
1482
+ ],
1483
+ EventSpec,
1484
+ ]: ...
1485
+
1486
+ @overload
1487
+ def __get__(self, instance, owner) -> Callable[P, T]: ...
1488
+
1489
+ def __get__(self, instance, owner) -> Callable:
1456
1490
  """Get the function with the instance bound to it.
1457
1491
 
1458
1492
  Args:
reflex/state.py CHANGED
@@ -2566,9 +2566,11 @@ class StateManager(Base, ABC):
2566
2566
  The state manager (either disk, memory or redis).
2567
2567
  """
2568
2568
  config = get_config()
2569
- if config.state_manager_mode == constants.StateManagerMode.DISK:
2570
- return StateManagerMemory(state=state)
2569
+ if prerequisites.parse_redis_url() is not None:
2570
+ config.state_manager_mode = constants.StateManagerMode.REDIS
2571
2571
  if config.state_manager_mode == constants.StateManagerMode.MEMORY:
2572
+ return StateManagerMemory(state=state)
2573
+ if config.state_manager_mode == constants.StateManagerMode.DISK:
2572
2574
  return StateManagerDisk(state=state)
2573
2575
  if config.state_manager_mode == constants.StateManagerMode.REDIS:
2574
2576
  redis = prerequisites.get_redis()
reflex/style.py CHANGED
@@ -10,6 +10,7 @@ from reflex.event import EventChain, EventHandler
10
10
  from reflex.utils import format
11
11
  from reflex.utils.exceptions import ReflexError
12
12
  from reflex.utils.imports import ImportVar
13
+ from reflex.utils.types import get_origin
13
14
  from reflex.vars import VarData
14
15
  from reflex.vars.base import CallableVar, LiteralVar, Var
15
16
  from reflex.vars.function import FunctionVar
@@ -196,6 +197,10 @@ def convert(
196
197
  isinstance(value, Breakpoints)
197
198
  and all(not isinstance(v, dict) for v in value.values())
198
199
  )
200
+ or (
201
+ isinstance(value, ObjectVar)
202
+ and not issubclass(get_origin(value._var_type) or value._var_type, dict)
203
+ )
199
204
  else (key,)
200
205
  )
201
206
 
@@ -429,7 +429,7 @@ def _generate_component_create_functiondef(
429
429
 
430
430
  def figure_out_return_type(annotation: Any):
431
431
  if inspect.isclass(annotation) and issubclass(annotation, inspect._empty):
432
- return ast.Name(id="Optional[EventType[[]]]")
432
+ return ast.Name(id="Optional[EventType]")
433
433
  if isinstance(annotation, str) and annotation.startswith("Tuple["):
434
434
  inside_of_tuple = annotation.removeprefix("Tuple[").removesuffix("]")
435
435
 
reflex/vars/sequence.py CHANGED
@@ -1155,7 +1155,7 @@ class ArrayVar(Var[ARRAY_VAR_TYPE]):
1155
1155
  function_var = ArgsFunctionOperation.create(tuple(), return_value)
1156
1156
  else:
1157
1157
  # generic number var
1158
- number_var = Var("").to(NumberVar)
1158
+ number_var = Var("").to(NumberVar, int)
1159
1159
 
1160
1160
  first_arg_type = self[number_var]._var_type
1161
1161
 
@@ -1167,7 +1167,10 @@ class ArrayVar(Var[ARRAY_VAR_TYPE]):
1167
1167
  _var_type=first_arg_type,
1168
1168
  ).guess_type()
1169
1169
 
1170
- function_var = ArgsFunctionOperation.create((arg_name,), fn(first_arg))
1170
+ function_var = ArgsFunctionOperation.create(
1171
+ (arg_name,),
1172
+ Var.create(fn(first_arg)),
1173
+ )
1171
1174
 
1172
1175
  return map_array_operation(self, function_var)
1173
1176
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: reflex
3
- Version: 0.6.3a1
3
+ Version: 0.6.3a3
4
4
  Summary: Web apps in pure Python.
5
5
  Home-page: https://reflex.dev
6
6
  License: Apache-2.0
@@ -61,7 +61,7 @@ reflex/components/base/body.pyi,sha256=FOa5b0NkZBh8akESGbgjMroq7SX9OptdurEUIbUWm
61
61
  reflex/components/base/document.py,sha256=_Cl9iMXwXdxGMrCLAT20v35FX3MGtbqh2dfWenDtSKc,583
62
62
  reflex/components/base/document.pyi,sha256=8oLOhbSHo7uVnoRD0g-4ze-3QWe1NI6FG5vnNbUa4PM,9358
63
63
  reflex/components/base/error_boundary.py,sha256=JFOeHwdaf9ugfxvK_52Bdu1V9NY75CAueRfMnp2gCFU,2323
64
- reflex/components/base/error_boundary.pyi,sha256=g6vi7JYq6qEShagXwKKF_EeMHCeaTnVX2dMfnPXALvc,2688
64
+ reflex/components/base/error_boundary.pyi,sha256=J0AxxpdvGykbeu-AI7HwjdXKNTX8tutq62HvH0IHNfY,2684
65
65
  reflex/components/base/fragment.py,sha256=ys7wkokq-N8WBxa9fqkEaNIrBlSximyD7vqlFVe02hQ,342
66
66
  reflex/components/base/fragment.pyi,sha256=NLwU-NiIqyBjuXZZg7u-LizZRImpYrqBNq8m9MSyIb4,2236
67
67
  reflex/components/base/head.py,sha256=BGjOksNZEo_AZcYEuxNH7onsRnfyxJkJzl4cTd_EwiQ,318
@@ -72,7 +72,7 @@ reflex/components/base/meta.py,sha256=GvcBACA4Q3ptW_EXdJ6Wpolhh0x6yMW7QsCasG3keb
72
72
  reflex/components/base/meta.pyi,sha256=k1zDuRCANHHb-4u6mf2oeN10tnPy3wXdpachYuJmh98,8844
73
73
  reflex/components/base/script.py,sha256=79Ae72us8sKFQfgPuSilWvJ7ePuQ6JnbLy_cfRSL5qk,2405
74
74
  reflex/components/base/script.pyi,sha256=WUGapktdmSODItM2OfnQOox1uW6ShdZWxegs1CUFG-o,3436
75
- reflex/components/component.py,sha256=5Glh2aUnGDiSFrkFNf8sGXQB5afv-WhcRYOdbCpuEL4,79734
75
+ reflex/components/component.py,sha256=e3ThjH_H_WoYCG58-815i-QBAzvTUTumRqxDRmW4qoM,79784
76
76
  reflex/components/core/__init__.py,sha256=msAsWb_6bmZGSei4gEpyYczuJ0VNEZtg20fRtyb3wwM,1285
77
77
  reflex/components/core/__init__.pyi,sha256=hmng2kT4e3iBSSI_x9t7g2-58G6Cb4rhuwz_APJ-UZM,1994
78
78
  reflex/components/core/banner.py,sha256=aYcpFdJ0C1sarfE8DpODYdIK1OJyGPufhGWpoptc4cQ,8751
@@ -99,7 +99,7 @@ reflex/components/datadisplay/__init__.pyi,sha256=rYMwO_X4NvUex6IL2MMTnhdFRp8Lz5
99
99
  reflex/components/datadisplay/code.py,sha256=QRpfbmy0_03AONV-K-WRrRwKw_T0DYoE9hlV6TVBKx4,13831
100
100
  reflex/components/datadisplay/code.pyi,sha256=UNxWcQVf2sLLTOaMcczDQnwZi7ltXJHTQriBs_lkKOw,50250
101
101
  reflex/components/datadisplay/dataeditor.py,sha256=UHzAxsEUdbMpH9xJjaDmgLs8jA9QzalehVESlDBa_ho,12669
102
- reflex/components/datadisplay/dataeditor.pyi,sha256=KpKGVdY4KPzMrePC02vfL3dzmzReDKXbdytoNnDCyHQ,10092
102
+ reflex/components/datadisplay/dataeditor.pyi,sha256=_PNFjIfgEXjsMJtI4j3-CWkZRxf0XpZ9NNg3McnXK-U,10060
103
103
  reflex/components/datadisplay/logo.py,sha256=r5DXm6C0b87J63iE_Pac5WZBAfu6gp8_OC_W3hLsc-o,1728
104
104
  reflex/components/dynamic.py,sha256=1IevF00Ok81_f4dWDRdyicFzumJ0iKgY80yjpjEB_sw,6472
105
105
  reflex/components/el/__init__.py,sha256=nfIjf_cyieEmxptKjA6wRjoongswXv4X3n6vDmsdarI,416
@@ -289,20 +289,20 @@ reflex/components/radix/themes/typography/text.py,sha256=p0iM7LyoDBDAU3RSYCB6_yp
289
289
  reflex/components/radix/themes/typography/text.pyi,sha256=NQtuCLOJa0w2hyYff4PdNUxhC3JQqpSiL6dfTKfg0tU,51665
290
290
  reflex/components/react_player/__init__.py,sha256=W4wa5G4R_cl5tE1vfR4tY_RlvWLVsyTxzTAJ67q2gnc,144
291
291
  reflex/components/react_player/audio.py,sha256=qw_H2_W0AyMsHehA_Q9jskN4_N5TYgkzeisOxhepkPs,186
292
- reflex/components/react_player/audio.pyi,sha256=Y6KpG2QKUZn6bJwiDauK9f_AnlqzQrQlhUoiVTT9Do0,4171
292
+ reflex/components/react_player/audio.pyi,sha256=869c1s23NxdyovgPxhco5FSEHophVv0wpgHbV9buvxA,4167
293
293
  reflex/components/react_player/react_player.py,sha256=7MZGGBcHOrsSU5j2SbK91qU5yuybsY09nLBVczUVlCQ,3147
294
- reflex/components/react_player/react_player.pyi,sha256=tFBYMu9n1o_ztsMeRUJHe6yDcy5TUZthkEUG3LUh0-M,4170
294
+ reflex/components/react_player/react_player.pyi,sha256=WCaPHn6C0HJEQdOVvpTwarC1KmW3Me_m3KZH3wfAj8c,4166
295
295
  reflex/components/react_player/video.py,sha256=2V6tiwCwrzu9WPI1Wmuepk8kQ6M6K8nnMdLLjEbrxrw,186
296
- reflex/components/react_player/video.pyi,sha256=RwbkAWZl5aQdjeuxUD3uDDYe6twAHUOPsYkxk_J_vZU,4171
296
+ reflex/components/react_player/video.pyi,sha256=fvw4YWQIt5H3XfRyK5gvQiKRb07I1E3CU07n0hFYw_A,4167
297
297
  reflex/components/recharts/__init__.py,sha256=GUifJIUtG91u4K55junZ_-l5ArcRFFDIyjS4y0lyAL4,2644
298
298
  reflex/components/recharts/__init__.pyi,sha256=FUu_BmjhVTbjU92KH2NnYEFr4eeZLMkthX8iIwswDIM,5076
299
- reflex/components/recharts/cartesian.py,sha256=RKTVk8eClMobYo5FpVIoQra59nc9joNdpFscTjwb3bE,34373
299
+ reflex/components/recharts/cartesian.py,sha256=_ey6MttGM2hIlWYN-qMEd_ydBMDz-nKRqgh19xGnpI8,34376
300
300
  reflex/components/recharts/cartesian.pyi,sha256=WzuLeFS8XFCrzMmU4pDsT3lZbxeCZASFTVBvsTKpts4,102105
301
- reflex/components/recharts/charts.py,sha256=T1G9gUWoGLfUtmHFKTMA59ickM_7X7f7Jrl5GUgcR4o,18352
301
+ reflex/components/recharts/charts.py,sha256=HDwixHGajY8vTinlIXLCuxNvAszN_bgBjR1GOPflYF0,18363
302
302
  reflex/components/recharts/charts.pyi,sha256=e5BQ1mtrV3zbQRc5QjLxvVjD5R6Fco3No5YWPZY-2pc,45004
303
303
  reflex/components/recharts/general.py,sha256=KBh3X0c_-1czzPV7o-IiPNkGiL3hjpFvGhcICZcw1YI,8352
304
304
  reflex/components/recharts/general.pyi,sha256=wlZhxmCTlQF0ua-4HDiTmO5ALecOCeD2UbPHn8MLVGg,21197
305
- reflex/components/recharts/polar.py,sha256=-uxKaDbMtaHlKU2aFJUD-jg6j64TqUic7OCH_Dhk_kw,15433
305
+ reflex/components/recharts/polar.py,sha256=n9IN8TdiERPCWnrcfgwDo17ykmTuuQ0AX9fgvgEklRE,15457
306
306
  reflex/components/recharts/polar.pyi,sha256=jWMhbagrcCI_HZ1Mqs4Glr63btKvZQlz74_39XCtFws,28017
307
307
  reflex/components/recharts/recharts.py,sha256=_zRq9w1kOhF3K5Ec440Zzl4ouIbZa_6kUszVDrEUbz4,3595
308
308
  reflex/components/recharts/recharts.pyi,sha256=lnGH7dlqYelIIgvW5tG_35t8HiIynCwjj-5I7_ZNz1I,6806
@@ -311,7 +311,7 @@ reflex/components/sonner/toast.py,sha256=R0rHFMxp5-WTxnXVjxPrCInW2SfK8CozSlrIasV
311
311
  reflex/components/sonner/toast.pyi,sha256=vV7JmtBV_Aq50o8D1sWGhyzNz1uKChG3bBsN1rsiydQ,7363
312
312
  reflex/components/suneditor/__init__.py,sha256=htkPzy0O_1ro1nw8w8gFPjYhg5xywMpsUfc4Dl3OHuw,109
313
313
  reflex/components/suneditor/editor.py,sha256=Qode9LeucEZPFMClH4or64FvtO4q8z2p24P2sEY2FdM,7530
314
- reflex/components/suneditor/editor.pyi,sha256=CsSOxUDqRAsGb8l7tonokI2Hl8INFzd_wR3ZkwSKIQ4,8434
314
+ reflex/components/suneditor/editor.pyi,sha256=ehTQ8v8PXNnBiU-qGr4-AHdHKgUEY5aJ8UllohKpZwU,8394
315
315
  reflex/components/tags/__init__.py,sha256=Pc0JU-Tv_W7KCsydXgbKmu7w2VtHNkI6Cx2hTkNhW_Q,152
316
316
  reflex/components/tags/cond_tag.py,sha256=oYsiTxANrByBg7NwuXVk2yGN5n2u7FHreeG1PdmfzIo,607
317
317
  reflex/components/tags/iter_tag.py,sha256=jS-Y08cmzzb8v3cp52q5PaVmwirpg4n3Br9JWASJqow,4463
@@ -332,7 +332,7 @@ reflex/constants/state.py,sha256=H4EtcrF_hPa6IRLlIHbXd0iEyRtum_qWvA5MHXv_KD8,187
332
332
  reflex/constants/style.py,sha256=WS_STDQ0byFIotnTSio2kQR_oK3bJE7mrMSeK0W1H00,475
333
333
  reflex/custom_components/__init__.py,sha256=R4zsvOi4dfPmHc18KEphohXnQFBPnUCb50cMR5hSLDE,36
334
334
  reflex/custom_components/custom_components.py,sha256=jju21QgdM8mkpMfaboTwEPYASsvb46yvGt53seMI6pg,33000
335
- reflex/event.py,sha256=nWXfzUjc-rRzWoGRhkuWuSUPKZfi6rgZhiuObtq2o4I,44663
335
+ reflex/event.py,sha256=oQDyf6DQFK_q9w_lPO22m5PdD5fswDYzy-WmnKg-H-w,45766
336
336
  reflex/experimental/__init__.py,sha256=usDkf5yRMHKHjdRa_KfedFeD-urOMAKBuNfsghzvre4,1974
337
337
  reflex/experimental/assets.py,sha256=GZRdfIs03HXCSShyvdztu6vFsJ9Z8W4ZFCjJGZrNURY,1837
338
338
  reflex/experimental/client_state.py,sha256=dHq5Denp9vJs70j_cZws9XLeGX749GsiL7YLdbL5Ovo,7903
@@ -349,8 +349,8 @@ reflex/model.py,sha256=I102SQwtUaidue0JZLJD3QJRoTPYvqKaT7U9yKUIH9s,14176
349
349
  reflex/page.py,sha256=25dKsOqVcY1Pz05T0gjUEk8zKHcfyd1c0nYIXW7jY5A,2332
350
350
  reflex/reflex.py,sha256=qlyEkg5ZqaYpKalNf2QIsAiPBIuQCxIyPjLCSedAUpU,18793
351
351
  reflex/route.py,sha256=WZS7stKgO94nekFFYHaOqNgN3zZGpJb3YpGF4ViTHmw,4198
352
- reflex/state.py,sha256=GcMWmGm5-3jqLa4qOghb0YQOqpuDfKtKbUvuHA7PrDU,130731
353
- reflex/style.py,sha256=MxZyxvU0g6Vf_kWhsD5RFJRD6NjmJgfrlOclc53lSIw,12487
352
+ reflex/state.py,sha256=smo6uHm03VtGaI0_9lnq8wNH-Vp8y5aSveX1LloNZE0,130860
353
+ reflex/style.py,sha256=kxjfOJUiw_Y8sRbVzGTzSF-DiaNrL4hEB7T5qp33NJ0,12694
354
354
  reflex/testing.py,sha256=JR2I4adxEaGs9d4wOzmwIVrDWIrBJ0uGCIRwLrkmmSU,34785
355
355
  reflex/utils/__init__.py,sha256=y-AHKiRQAhk2oAkvn7W8cRVTZVK625ff8tTwvZtO7S4,24
356
356
  reflex/utils/build.py,sha256=llkaIPC9o-SIY83ThUMEDIDpWaCDpaUNJdog0u_5tPM,8632
@@ -367,7 +367,7 @@ reflex/utils/net.py,sha256=UFCfaOjvRDVLTeTzLKJ5iDAWtPNuhng5gOs-pIMYQek,1267
367
367
  reflex/utils/path_ops.py,sha256=dvcTeVSNoGj4u3AQjUuixNxeVcwnOK_2lbz3ugD1vUE,6151
368
368
  reflex/utils/prerequisites.py,sha256=GMGgNqRqX9OyAdMmx9NDP6cbDYJBVKia7Act03cCsrU,52792
369
369
  reflex/utils/processes.py,sha256=wBvkxHUnuo28nFNSIyx53RpiNUa08bmvWQxpx8LWQhk,13249
370
- reflex/utils/pyi_generator.py,sha256=n7PFG0rDtgD2ndKYNshhrdDaiwDyooFKa3THp2CXFUw,35981
370
+ reflex/utils/pyi_generator.py,sha256=e-oq0zJZgfXHmmxYF3uRSZQkGbKjhEyIUr6t_BldoEo,35977
371
371
  reflex/utils/redir.py,sha256=B0K9m6ejDW0ABeclBb4AsRRORvx_stCTWsrDe1YvkzY,1679
372
372
  reflex/utils/registry.py,sha256=mJ7yz1nSIHsxsRM5_n2RrXBqtUpu3HfvESglle_HR2U,1453
373
373
  reflex/utils/serializers.py,sha256=v377C_EcuAyrt6RddAijVXDnTdO0k3pLlXzQ-NfhdBg,10109
@@ -378,9 +378,9 @@ reflex/vars/base.py,sha256=GDbhigL9qELTz-6W1FN5SuPARrzIHpJNU2Hh8ErzGy8,87277
378
378
  reflex/vars/function.py,sha256=GjTGRjDhMRACSPBIGNYgQzjKI2WgfhSluAWCm1mJQnU,5478
379
379
  reflex/vars/number.py,sha256=U9n61-zBIIPUDNy_exbvXuuJraCYmD489gjeU2OwAis,28091
380
380
  reflex/vars/object.py,sha256=TzVe-EBiZYdXBBM0xTUmOs8V7nO9vBQ3hcdf6Rdidr8,15069
381
- reflex/vars/sequence.py,sha256=j0dsvuPKer4tKNBibQKYB_0OjvHbob7UFzHUgpGLiNo,46191
382
- reflex-0.6.3a1.dist-info/LICENSE,sha256=dw3zLrp9f5ObD7kqS32vWfhcImfO52PMmRqvtxq_YEE,11358
383
- reflex-0.6.3a1.dist-info/METADATA,sha256=9X_zXjlHoW66HLMQnI-w2j6a3TVtWW9g6WTOqr5tXTc,12057
384
- reflex-0.6.3a1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
385
- reflex-0.6.3a1.dist-info/entry_points.txt,sha256=H1Z5Yat_xJfy0dRT1Frk2PkO_p41Xy7fCKlj4FcdL9o,44
386
- reflex-0.6.3a1.dist-info/RECORD,,
381
+ reflex/vars/sequence.py,sha256=H2keaazgJtm6WFFDwY5gHQBNnvOPiIQXxlmcpp3-4X4,46255
382
+ reflex-0.6.3a3.dist-info/LICENSE,sha256=dw3zLrp9f5ObD7kqS32vWfhcImfO52PMmRqvtxq_YEE,11358
383
+ reflex-0.6.3a3.dist-info/METADATA,sha256=Y9cEbWYtJ2Rh9KXtcul6B8dfpO3yvl1lt8lnkYz7AP0,12057
384
+ reflex-0.6.3a3.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
385
+ reflex-0.6.3a3.dist-info/entry_points.txt,sha256=H1Z5Yat_xJfy0dRT1Frk2PkO_p41Xy7fCKlj4FcdL9o,44
386
+ reflex-0.6.3a3.dist-info/RECORD,,