reflex 0.6.0a2__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.

@@ -8,11 +8,11 @@ version = "0.0.1"
8
8
  description = "Reflex custom component {{ module_name }}"
9
9
  readme = "README.md"
10
10
  license = { text = "Apache-2.0" }
11
- requires-python = ">=3.8"
11
+ requires-python = ">=3.10"
12
12
  authors = [{ name = "", email = "YOUREMAIL@domain.com" }]
13
13
  keywords = ["reflex","reflex-custom-components"]
14
14
 
15
- dependencies = ["reflex>=0.4.2"]
15
+ dependencies = ["reflex>={{ reflex_version }}"]
16
16
 
17
17
  classifiers = ["Development Status :: 4 - Beta"]
18
18
 
reflex/app.py CHANGED
@@ -606,7 +606,10 @@ class App(MiddlewareMixin, LifespanMixin, Base):
606
606
  for route in self.pages:
607
607
  replaced_route = replace_brackets_with_keywords(route)
608
608
  for rw, r, nr in zip(
609
- replaced_route.split("/"), route.split("/"), new_route.split("/")
609
+ replaced_route.split("/"),
610
+ route.split("/"),
611
+ new_route.split("/"),
612
+ strict=False,
610
613
  ):
611
614
  if rw in segments and r != nr:
612
615
  # If the slugs in the segments of both routes are not the same, then the route is invalid
@@ -955,7 +958,7 @@ class App(MiddlewareMixin, LifespanMixin, Base):
955
958
 
956
959
  # Prepopulate the global ExecutorSafeFunctions class with input data required by the compile functions.
957
960
  # This is required for multiprocessing to work, in presence of non-picklable inputs.
958
- for route, component in zip(self.pages, page_components):
961
+ for route, component in zip(self.pages, page_components, strict=False):
959
962
  ExecutorSafeFunctions.COMPILE_PAGE_ARGS_BY_ROUTE[route] = (
960
963
  route,
961
964
  component,
@@ -1169,6 +1172,7 @@ class App(MiddlewareMixin, LifespanMixin, Base):
1169
1172
  FRONTEND_ARG_SPEC,
1170
1173
  BACKEND_ARG_SPEC,
1171
1174
  ],
1175
+ strict=False,
1172
1176
  ):
1173
1177
  if hasattr(handler_fn, "__name__"):
1174
1178
  _fn_name = handler_fn.__name__
@@ -4,7 +4,6 @@ from __future__ import annotations
4
4
 
5
5
  import copy
6
6
  import typing
7
- import warnings
8
7
  from abc import ABC, abstractmethod
9
8
  from functools import lru_cache, wraps
10
9
  from hashlib import md5
@@ -170,8 +169,6 @@ ComponentStyle = Dict[
170
169
  ]
171
170
  ComponentChild = Union[types.PrimitiveType, Var, BaseComponent]
172
171
 
173
- warnings.filterwarnings("ignore", message="fields may not start with an underscore")
174
-
175
172
 
176
173
  class Component(BaseComponent, ABC):
177
174
  """A component with style, event trigger and other props."""
@@ -82,7 +82,9 @@ class Breakpoints(Dict[K, V]):
82
82
  return Breakpoints(
83
83
  {
84
84
  k: v
85
- for k, v in zip(["initial", *breakpoint_names], thresholds)
85
+ for k, v in zip(
86
+ ["initial", *breakpoint_names], thresholds, strict=False
87
+ )
86
88
  if v is not None
87
89
  }
88
90
  )
@@ -65,7 +65,9 @@ def _create_package_config(module_name: str, package_name: str):
65
65
  with open(CustomComponents.PYPROJECT_TOML, "w") as f:
66
66
  f.write(
67
67
  templates.CUSTOM_COMPONENTS_PYPROJECT_TOML.render(
68
- module_name=module_name, package_name=package_name
68
+ module_name=module_name,
69
+ package_name=package_name,
70
+ reflex_version=constants.Reflex.VERSION,
69
71
  )
70
72
  )
71
73
 
reflex/event.py CHANGED
@@ -217,7 +217,7 @@ class EventHandler(EventActionsMixin):
217
217
  raise EventHandlerTypeError(
218
218
  f"Arguments to event handlers must be Vars or JSON-serializable. Got {arg} of type {type(arg)}."
219
219
  ) from e
220
- payload = tuple(zip(fn_args, values))
220
+ payload = tuple(zip(fn_args, values, strict=False))
221
221
 
222
222
  # Return the event spec.
223
223
  return EventSpec(
@@ -310,7 +310,7 @@ class EventSpec(EventActionsMixin):
310
310
  raise EventHandlerTypeError(
311
311
  f"Arguments to event handlers must be Vars or JSON-serializable. Got {arg} of type {type(arg)}."
312
312
  ) from e
313
- new_payload = tuple(zip(fn_args, values))
313
+ new_payload = tuple(zip(fn_args, values, strict=False))
314
314
  return self.with_args(self.args + new_payload)
315
315
 
316
316
 
reflex/state.py CHANGED
@@ -1302,6 +1302,7 @@ class BaseState(Base, ABC, extra=pydantic.Extra.allow):
1302
1302
  for part1, part2 in zip(
1303
1303
  cls.get_full_name().split("."),
1304
1304
  other.get_full_name().split("."),
1305
+ strict=False,
1305
1306
  ):
1306
1307
  if part1 != part2:
1307
1308
  break
@@ -107,3 +107,7 @@ class EventHandlerShadowsBuiltInStateMethod(ReflexError, NameError):
107
107
 
108
108
  class GeneratedCodeHasNoFunctionDefs(ReflexError):
109
109
  """Raised when refactored code generated with flexgen has no functions defined."""
110
+
111
+
112
+ class PrimitiveUnserializableToJSON(ReflexError, ValueError):
113
+ """Raised when a primitive type is unserializable to JSON. Usually with NaN and Infinity."""
reflex/utils/format.py CHANGED
@@ -10,6 +10,7 @@ from typing import TYPE_CHECKING, Any, Callable, List, Optional, Union
10
10
 
11
11
  from reflex import constants
12
12
  from reflex.utils import exceptions, types
13
+ from reflex.utils.console import deprecate
13
14
 
14
15
  if TYPE_CHECKING:
15
16
  from reflex.components.component import ComponentStyle
@@ -502,6 +503,37 @@ if TYPE_CHECKING:
502
503
  from reflex.vars import Var
503
504
 
504
505
 
506
+ def format_event_chain(
507
+ event_chain: EventChain | Var[EventChain],
508
+ event_arg: Var | None = None,
509
+ ) -> str:
510
+ """DEPRECATED: format an event chain as a javascript invocation.
511
+
512
+ Use str(rx.Var.create(event_chain)) instead.
513
+
514
+ Args:
515
+ event_chain: The event chain to format.
516
+ event_arg: this argument is ignored.
517
+
518
+ Returns:
519
+ Compiled javascript code to queue the given event chain on the frontend.
520
+ """
521
+ deprecate(
522
+ feature_name="format_event_chain",
523
+ reason="Use str(rx.Var.create(event_chain)) instead",
524
+ deprecation_version="0.6.0",
525
+ removal_version="0.7.0",
526
+ )
527
+
528
+ from reflex.vars import Var
529
+ from reflex.vars.function import ArgsFunctionOperation
530
+
531
+ result = Var.create(event_chain)
532
+ if isinstance(result, ArgsFunctionOperation):
533
+ result = result._return_expr
534
+ return str(result)
535
+
536
+
505
537
  def format_queue_events(
506
538
  events: (
507
539
  EventSpec
reflex/utils/telemetry.py CHANGED
@@ -121,7 +121,7 @@ def _prepare_event(event: str, **kwargs) -> dict:
121
121
  return {}
122
122
 
123
123
  if UTC is None:
124
- # for python 3.8, 3.9 & 3.10
124
+ # for python 3.10
125
125
  stamp = datetime.utcnow().isoformat()
126
126
  else:
127
127
  # for python 3.11 & 3.12
reflex/utils/types.py CHANGED
@@ -632,7 +632,7 @@ def validate_parameter_literals(func):
632
632
  annotations = {param[0]: param[1].annotation for param in func_params}
633
633
 
634
634
  # validate args
635
- for param, arg in zip(annotations, args):
635
+ for param, arg in zip(annotations, args, strict=False):
636
636
  if annotations[param] is inspect.Parameter.empty:
637
637
  continue
638
638
  validate_literal(param, arg, annotations[param], func.__name__)
reflex/vars/base.py CHANGED
@@ -13,6 +13,7 @@ import random
13
13
  import re
14
14
  import string
15
15
  import sys
16
+ import warnings
16
17
  from types import CodeType, FunctionType
17
18
  from typing import (
18
19
  TYPE_CHECKING,
@@ -72,6 +73,8 @@ if TYPE_CHECKING:
72
73
 
73
74
  VAR_TYPE = TypeVar("VAR_TYPE", covariant=True)
74
75
 
76
+ warnings.filterwarnings("ignore", message="fields may not start with an underscore")
77
+
75
78
 
76
79
  @dataclasses.dataclass(
77
80
  eq=False,
@@ -116,6 +119,16 @@ class Var(Generic[VAR_TYPE]):
116
119
  """
117
120
  return self._js_expr
118
121
 
122
+ @property
123
+ @deprecated("Use `_js_expr` instead.")
124
+ def _var_name_unwrapped(self) -> str:
125
+ """The name of the var without extra curly braces.
126
+
127
+ Returns:
128
+ The name of the var.
129
+ """
130
+ return self._js_expr
131
+
119
132
  @property
120
133
  def _var_is_string(self) -> bool:
121
134
  """Whether the var is a string literal.
@@ -1029,6 +1042,20 @@ class LiteralVar(Var):
1029
1042
  if isinstance(value, EventHandler):
1030
1043
  return Var(_js_expr=".".join(filter(None, get_event_handler_parts(value))))
1031
1044
 
1045
+ serialized_value = serializers.serialize(value)
1046
+ if serialized_value is not None:
1047
+ if isinstance(serialized_value, dict):
1048
+ return LiteralObjectVar.create(
1049
+ serialized_value,
1050
+ _var_type=type(value),
1051
+ _var_data=_var_data,
1052
+ )
1053
+ if isinstance(serialized_value, str):
1054
+ return LiteralStringVar.create(
1055
+ serialized_value, _var_type=type(value), _var_data=_var_data
1056
+ )
1057
+ return LiteralVar.create(serialized_value, _var_data=_var_data)
1058
+
1032
1059
  if isinstance(value, Base):
1033
1060
  # get the fields of the pydantic class
1034
1061
  fields = value.__fields__.keys()
@@ -1044,20 +1071,6 @@ class LiteralVar(Var):
1044
1071
  _var_data=_var_data,
1045
1072
  )
1046
1073
 
1047
- serialized_value = serializers.serialize(value)
1048
- if serialized_value is not None:
1049
- if isinstance(serialized_value, dict):
1050
- return LiteralObjectVar.create(
1051
- serialized_value,
1052
- _var_type=type(value),
1053
- _var_data=_var_data,
1054
- )
1055
- if isinstance(serialized_value, str):
1056
- return LiteralStringVar.create(
1057
- serialized_value, _var_type=type(value), _var_data=_var_data
1058
- )
1059
- return LiteralVar.create(serialized_value, _var_data=_var_data)
1060
-
1061
1074
  if dataclasses.is_dataclass(value) and not isinstance(value, type):
1062
1075
  return LiteralObjectVar.create(
1063
1076
  {
@@ -1199,10 +1212,13 @@ def unionize(*args: Type) -> Type:
1199
1212
  """
1200
1213
  if not args:
1201
1214
  return Any
1202
- first, *rest = args
1203
- if not rest:
1204
- return first
1205
- return Union[first, unionize(*rest)]
1215
+ if len(args) == 1:
1216
+ return args[0]
1217
+ # We are bisecting the args list here to avoid hitting the recursion limit
1218
+ # In Python versions >= 3.11, we can simply do `return Union[*args]`
1219
+ midpoint = len(args) // 2
1220
+ first_half, second_half = args[:midpoint], args[midpoint:]
1221
+ return Union[unionize(*first_half), unionize(*second_half)]
1206
1222
 
1207
1223
 
1208
1224
  def figure_out_type(value: Any) -> types.GenericType:
@@ -1983,17 +1999,23 @@ class CustomVarOperationReturn(Var[RETURN]):
1983
1999
  def var_operation_return(
1984
2000
  js_expression: str,
1985
2001
  var_type: Type[RETURN] | None = None,
2002
+ var_data: VarData | None = None,
1986
2003
  ) -> CustomVarOperationReturn[RETURN]:
1987
2004
  """Shortcut for creating a CustomVarOperationReturn.
1988
2005
 
1989
2006
  Args:
1990
2007
  js_expression: The JavaScript expression to evaluate.
1991
2008
  var_type: The type of the var.
2009
+ var_data: Additional hooks and imports associated with the Var.
1992
2010
 
1993
2011
  Returns:
1994
2012
  The CustomVarOperationReturn.
1995
2013
  """
1996
- return CustomVarOperationReturn.create(js_expression, var_type)
2014
+ return CustomVarOperationReturn.create(
2015
+ js_expression,
2016
+ var_type,
2017
+ var_data,
2018
+ )
1997
2019
 
1998
2020
 
1999
2021
  @dataclasses.dataclass(
reflex/vars/number.py CHANGED
@@ -4,6 +4,7 @@ from __future__ import annotations
4
4
 
5
5
  import dataclasses
6
6
  import json
7
+ import math
7
8
  import sys
8
9
  from typing import (
9
10
  TYPE_CHECKING,
@@ -17,7 +18,9 @@ from typing import (
17
18
  overload,
18
19
  )
19
20
 
20
- from reflex.utils.exceptions import VarTypeError
21
+ from reflex.constants.base import Dirs
22
+ from reflex.utils.exceptions import PrimitiveUnserializableToJSON, VarTypeError
23
+ from reflex.utils.imports import ImportDict, ImportVar
21
24
 
22
25
  from .base import (
23
26
  CustomVarOperationReturn,
@@ -1038,7 +1041,14 @@ class LiteralNumberVar(LiteralVar, NumberVar):
1038
1041
 
1039
1042
  Returns:
1040
1043
  The JSON representation of the var.
1044
+
1045
+ Raises:
1046
+ PrimitiveUnserializableToJSON: If the var is unserializable to JSON.
1041
1047
  """
1048
+ if math.isinf(self._var_value) or math.isnan(self._var_value):
1049
+ raise PrimitiveUnserializableToJSON(
1050
+ f"No valid JSON representation for {self}"
1051
+ )
1042
1052
  return json.dumps(self._var_value)
1043
1053
 
1044
1054
  def __hash__(self) -> int:
@@ -1060,8 +1070,15 @@ class LiteralNumberVar(LiteralVar, NumberVar):
1060
1070
  Returns:
1061
1071
  The number var.
1062
1072
  """
1073
+ if math.isinf(value):
1074
+ js_expr = "Infinity" if value > 0 else "-Infinity"
1075
+ elif math.isnan(value):
1076
+ js_expr = "NaN"
1077
+ else:
1078
+ js_expr = str(value)
1079
+
1063
1080
  return cls(
1064
- _js_expr=str(value),
1081
+ _js_expr=js_expr,
1065
1082
  _var_type=type(value),
1066
1083
  _var_data=_var_data,
1067
1084
  _var_value=value,
@@ -1098,6 +1115,11 @@ class ToBooleanVarOperation(ToOperation, BooleanVar):
1098
1115
  _default_var_type: ClassVar[Type] = bool
1099
1116
 
1100
1117
 
1118
+ _IS_TRUE_IMPORT: ImportDict = {
1119
+ f"/{Dirs.STATE_PATH}": [ImportVar(tag="isTrue")],
1120
+ }
1121
+
1122
+
1101
1123
  @var_operation
1102
1124
  def boolify(value: Var):
1103
1125
  """Convert the value to a boolean.
@@ -1109,8 +1131,9 @@ def boolify(value: Var):
1109
1131
  The boolean value.
1110
1132
  """
1111
1133
  return var_operation_return(
1112
- js_expression=f"Boolean({value})",
1134
+ js_expression=f"isTrue({value})",
1113
1135
  var_type=bool,
1136
+ var_data=VarData(imports=_IS_TRUE_IMPORT),
1114
1137
  )
1115
1138
 
1116
1139
 
@@ -1,18 +1,16 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: reflex
3
- Version: 0.6.0a2
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.8,<4.0
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
@@ -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.8+):
89
+ Open a terminal and run (Requires Python 3.10+):
92
90
 
93
91
  ```bash
94
92
  pip install reflex
@@ -5,7 +5,7 @@ reflex/.templates/jinja/app/rxconfig.py.jinja2,sha256=Scfnv_vZXIPQcz8zNIa4FmjEym
5
5
  reflex/.templates/jinja/custom_components/README.md.jinja2,sha256=qA4XZDxOTc2gRIG7CO1VvVawOgThwZqU2RZvRTPhXwE,127
6
6
  reflex/.templates/jinja/custom_components/__init__.py.jinja2,sha256=z5n2tvoS7iNDaM6mUGKETdpGlC0oA1_rrYURu7O_xpk,32
7
7
  reflex/.templates/jinja/custom_components/demo_app.py.jinja2,sha256=ipbKtObNqQLcwbFowod_bSWW4bttW_8bNyTXl7JL1zg,826
8
- reflex/.templates/jinja/custom_components/pyproject.toml.jinja2,sha256=PfE_WclDh5mknUkTh0D9uWseht38GvPpDu8-31TwkzI,614
8
+ reflex/.templates/jinja/custom_components/pyproject.toml.jinja2,sha256=HG-k3pruUlMy7xYz339hgFkNMTLqB-C_FTLKkOgfBPM,630
9
9
  reflex/.templates/jinja/custom_components/src.py.jinja2,sha256=e80PwMI6NoeQtGJ0NXWhYrkqUe7jvvJTFuztYQe-R5w,2403
10
10
  reflex/.templates/jinja/web/package.json.jinja2,sha256=YU9PF8WgiQ8OPlG3oLDX31t2R0o6DFntCh698NTiDK8,548
11
11
  reflex/.templates/jinja/web/pages/_app.js.jinja2,sha256=ITqBviFgMCSisLEmXz2tptCqA0UuAmG6h6hSquGqMEo,895
@@ -38,7 +38,7 @@ reflex/__init__.py,sha256=l2s3m-0wU3JR9XQsartdHAF6PGHy69bv_--AbOrsnJc,10443
38
38
  reflex/__init__.pyi,sha256=uR7TbT_Wo0jwAMf6m0wZDxi9z4Yvv6dpUBrkFRvssLY,10787
39
39
  reflex/__main__.py,sha256=6cVrGEyT3j3tEvlEVUatpaYfbB5EF3UVY-6vc_Z7-hw,108
40
40
  reflex/admin.py,sha256=_3pkkauMiTGJJ0kwAEBnsUWAgZZ_1WNnCaaObbhpmUI,374
41
- reflex/app.py,sha256=1DrQB3Aul16XgwaPvInQRx_fOTI6S7ryNdErY1nsQ7Y,55854
41
+ reflex/app.py,sha256=e66hsi5_R3aLg7MAY2L_UehK7ylyjU2Pz8W87q61Euo,55957
42
42
  reflex/app_mixins/__init__.py,sha256=Oegz3-gZLP9p2OAN5ALNbsgxuNQfS6lGZgQA8cc-9mQ,137
43
43
  reflex/app_mixins/lifespan.py,sha256=0PaavAPTYmF7JdLKGfZQu_NT7oAaxyq7-5fauLZ9e8Y,2048
44
44
  reflex/app_mixins/middleware.py,sha256=6Yby_Uw1-J0K7NgPyh-X7tGGhmezn6D7-KsfABYAVBU,3130
@@ -72,12 +72,12 @@ reflex/components/base/meta.py,sha256=RWITTQTA_35-FbaVGhjkAWDOmU65rzJ-WedENRJk-3
72
72
  reflex/components/base/meta.pyi,sha256=b3Cf2m1DA5NhBqra0Cpd_abSfXiuTIXH3L6hSLhhz_o,12028
73
73
  reflex/components/base/script.py,sha256=pzjfVygBenPQTu1T8j8zCZJTBywaZ4Rw-EQmTh_ZnHY,2389
74
74
  reflex/components/base/script.pyi,sha256=wBxTC2evS69oT-NQiRPVMWwxN2kuju5KPeqdfBzDV4o,4364
75
- reflex/components/component.py,sha256=yJkxRNPfGOcDt4m2Lb_OmlCKF5ydS5UOmsJXi3X6gFs,78321
75
+ reflex/components/component.py,sha256=0iDz024RL37kd8deHBOLCj7yiXNZ8VBkHe6vyeauNbw,78219
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
79
79
  reflex/components/core/banner.pyi,sha256=_9cI4WYYPShYiF95X6CN0t4IWkJeXIsvnnUI7Th-pYg,19525
80
- reflex/components/core/breakpoints.py,sha256=ZEUGByvPrGM2GFH0K9raGcWkNX8LBhX9o3atE0eCYKs,2711
80
+ reflex/components/core/breakpoints.py,sha256=tL8LqCU2zO5mcZhsFUgobnpVYiGpHKc4a8DCfjXqjYc,2771
81
81
  reflex/components/core/client_side_routing.py,sha256=R-ghZop3v9tlDA4Uc59365M-Jk49ntrw27z6x8m7OSM,1883
82
82
  reflex/components/core/client_side_routing.pyi,sha256=O_xdRkmCmtrm1wzHubWyKDyqBRo5dmAHvkAJ0u82bDM,5839
83
83
  reflex/components/core/clipboard.py,sha256=wZgv1zUsgKkE5w0FoO_QS6sSLV8Zo20U0j1RhDlJ8SA,3159
@@ -329,8 +329,8 @@ reflex/constants/installer.py,sha256=IOjAPppNHXjdBEGSj07cmzubcfUzEylVoFPOsHfGfBE
329
329
  reflex/constants/route.py,sha256=fu1jp9MoIriUJ8Cu4gLeinTxkyVBbRPs8Bkt35vqYOM,2144
330
330
  reflex/constants/style.py,sha256=sJ6LuPY1OWemwMXnI1Htm-pa087HWT6PWljUeyokcUI,474
331
331
  reflex/custom_components/__init__.py,sha256=R4zsvOi4dfPmHc18KEphohXnQFBPnUCb50cMR5hSLDE,36
332
- reflex/custom_components/custom_components.py,sha256=vYBhEt0ceCTaXG_zQlD8aEUxEzyGwlc7D6RKah2Pp2A,33067
333
- reflex/event.py,sha256=TANj8GZYKKVQx20CAOjMQRTfGxua8xywxinpX5jurlA,31366
332
+ reflex/custom_components/custom_components.py,sha256=1f9FzCR4EQ5t25pFLHrItV4_TN0XUAK7L49kpRHQMRs,33141
333
+ reflex/event.py,sha256=mujUMtv52-DdcS4_fx7XpHwDUAzj_sCd7km-YImPW_U,31394
334
334
  reflex/experimental/__init__.py,sha256=usDkf5yRMHKHjdRa_KfedFeD-urOMAKBuNfsghzvre4,1974
335
335
  reflex/experimental/assets.py,sha256=nWj4454REHDP2gybtlhOac0Xyb0uqBMzjAFqYlaYwcE,1758
336
336
  reflex/experimental/client_state.py,sha256=FHvjJmWA2uvt-169ZQiCCiIYRYcbctaQJlzGbZNChPU,7682
@@ -345,7 +345,7 @@ reflex/model.py,sha256=dWeHeTaGzzrtW6LbbErP-xSDDougnrMKUR90gRoPML4,14173
345
345
  reflex/page.py,sha256=NPT0xMownZGTiYiRtrUJnvAe_4oEvlzEJEkG-vrGhqI,2077
346
346
  reflex/reflex.py,sha256=d3gNFCdCmejwIsxacO6XunnxOE6-9m1ISUewrh7yYKo,18567
347
347
  reflex/route.py,sha256=WZS7stKgO94nekFFYHaOqNgN3zZGpJb3YpGF4ViTHmw,4198
348
- reflex/state.py,sha256=3CAcPtdbVyilczWaot59R8jAcJ-6pz-xjl8BLYKTtMc,127117
348
+ reflex/state.py,sha256=S6qhCKUA3IiOR-wx2HjydOKMCtovmbvm2NZq74uael0,127143
349
349
  reflex/style.py,sha256=8O8W2zU0VonTj03WigEq3XNtUuj1lBkpJRp_6bOOApQ,12183
350
350
  reflex/testing.py,sha256=s3ePtY32S7j27iBNPX2pte4D9tsZtN74tKtsmx3HsiY,34517
351
351
  reflex/utils/__init__.py,sha256=y-AHKiRQAhk2oAkvn7W8cRVTZVK625ff8tTwvZtO7S4,24
@@ -353,10 +353,10 @@ reflex/utils/build.py,sha256=DJryIUJ_3DV2nn4pZ9SiV60lwIGYPZWgYw9prsQXrKA,8482
353
353
  reflex/utils/codespaces.py,sha256=tKmju4aGzDMPy76_eQSzJd3RYmVmiiNZy3Yc0e3zG_w,2856
354
354
  reflex/utils/compat.py,sha256=ty_8eOifMjg9oVOWGHCu5cACu9iqw5_ZEOkTRck7B94,2012
355
355
  reflex/utils/console.py,sha256=irO3qP7_9_5cxbc3hBfyawJgtgIq5s8nJQ0RgUt91fU,5477
356
- reflex/utils/exceptions.py,sha256=MdbQgbL7WGSfO2z3oZ2hLRLPywzJDaENnbBKd0I17O4,3276
356
+ reflex/utils/exceptions.py,sha256=ZsfeEa6hbmOrpkyfBd-TdKCLpMXV72ohJPDvnCE1ElQ,3437
357
357
  reflex/utils/exec.py,sha256=NDp7kNuUPeWaI8MXV6g8rXRK7PffCkl5u2t7zwJskW4,11000
358
358
  reflex/utils/export.py,sha256=3dI9QjoU0ZA_g8OSQipVLpFWQcxWa_sHkpezWemvWbo,2366
359
- reflex/utils/format.py,sha256=57HFLyPNcMQOe-czDV6rn5MZtzliaRDYt4eyr8Oglow,21201
359
+ reflex/utils/format.py,sha256=J_J5CRGCo5X-RIb0wzK-c3cmGuE6L7bPqqm1HqHmljc,22123
360
360
  reflex/utils/imports.py,sha256=DMyHT1f6VtnuKidnqCXsxNb-gVjVHTSAGwsYl-6HnmE,3623
361
361
  reflex/utils/lazy_loader.py,sha256=utVpUjKcz32GC1I7g0g7OlTyvVoZNFcuAjNtnxiSYww,1282
362
362
  reflex/utils/net.py,sha256=UFCfaOjvRDVLTeTzLKJ5iDAWtPNuhng5gOs-pIMYQek,1267
@@ -367,16 +367,16 @@ reflex/utils/pyi_generator.py,sha256=n9GpxSOeTvIH2pJHd748TUbD0bZgoqEJCxXLD5aAjvQ
367
367
  reflex/utils/redir.py,sha256=B0K9m6ejDW0ABeclBb4AsRRORvx_stCTWsrDe1YvkzY,1679
368
368
  reflex/utils/registry.py,sha256=NKtd1ewsu0_p-FoD0pmLWCEzRrm_6t4Lis8Erip3w4g,1161
369
369
  reflex/utils/serializers.py,sha256=iZPVSgkfklM_Nyfee2VWSuM7Mz1kV7MIjzNIEbnOF8k,10864
370
- reflex/utils/telemetry.py,sha256=nzlZbHVcq7xfK9CICJrjE5kxJFx_Qwb9L6RtXamV8rY,5601
371
- reflex/utils/types.py,sha256=DvS1pESOEs0RTTJYs56CRrmPltmkiXcfyzCF06DGVwM,18519
370
+ reflex/utils/telemetry.py,sha256=iDPuXY2lD8K04-4LuMmJilAcC3W7wX-19aWef1DnWF4,5590
371
+ reflex/utils/types.py,sha256=vaHLjZ1Qjf3XC3IMPVphD5ebFcYZ6uN4-WjKGnY6s8Q,18533
372
372
  reflex/vars/__init__.py,sha256=OdCzmDFGMbCoy5VN4xQ3DaLpHck7npuLz7OUYvsN6Xw,1128
373
- reflex/vars/base.py,sha256=vF9fL5vqt1Z8tfEAXh4PiG-mKVMIzNYKRqRpmRu6TQ8,77265
373
+ reflex/vars/base.py,sha256=6JWyrDH4reUE97gHwOWGAEv1q25hLKG5eBxLqdY_i4Y,78020
374
374
  reflex/vars/function.py,sha256=GjTGRjDhMRACSPBIGNYgQzjKI2WgfhSluAWCm1mJQnU,5478
375
- reflex/vars/number.py,sha256=vjrM0iJ_wRapfzOKxwkiefNi3yPccBej07U9NhNbPT4,27171
375
+ reflex/vars/number.py,sha256=vEdeXTLCwWLK-FcPFH6DKpmpWyhuvDEQ64yLpipasFs,27937
376
376
  reflex/vars/object.py,sha256=wOq74_nDNAhqgT21HkHGfRukGdLjWoLprHjFNy1hjy8,14988
377
377
  reflex/vars/sequence.py,sha256=V9fVRdtgMb3ZUK3njl_baBVLzidajIH_XnvLf7QSinA,44462
378
- reflex-0.6.0a2.dist-info/LICENSE,sha256=dw3zLrp9f5ObD7kqS32vWfhcImfO52PMmRqvtxq_YEE,11358
379
- reflex-0.6.0a2.dist-info/METADATA,sha256=jErHmmH1QWOorj5OJ8_7K22y72AWnL5wEAot7Otu5CI,12161
380
- reflex-0.6.0a2.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
381
- reflex-0.6.0a2.dist-info/entry_points.txt,sha256=H1Z5Yat_xJfy0dRT1Frk2PkO_p41Xy7fCKlj4FcdL9o,44
382
- reflex-0.6.0a2.dist-info/RECORD,,
378
+ reflex-0.6.0a3.dist-info/LICENSE,sha256=dw3zLrp9f5ObD7kqS32vWfhcImfO52PMmRqvtxq_YEE,11358
379
+ reflex-0.6.0a3.dist-info/METADATA,sha256=dECTQLjns6uCuadWLi1xs8Mgou8DNqVuKP8uj31yYCU,12063
380
+ reflex-0.6.0a3.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
381
+ reflex-0.6.0a3.dist-info/entry_points.txt,sha256=H1Z5Yat_xJfy0dRT1Frk2PkO_p41Xy7fCKlj4FcdL9o,44
382
+ reflex-0.6.0a3.dist-info/RECORD,,