reflex 0.5.6a1__py3-none-any.whl → 0.5.7__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.

Files changed (43) hide show
  1. reflex/.templates/jinja/web/utils/context.js.jinja2 +2 -0
  2. reflex/.templates/web/utils/state.js +31 -2
  3. reflex/__init__.py +7 -1
  4. reflex/__init__.pyi +3 -0
  5. reflex/app.py +190 -4
  6. reflex/compiler/templates.py +1 -0
  7. reflex/components/base/__init__.py +4 -0
  8. reflex/components/base/__init__.pyi +2 -0
  9. reflex/components/base/error_boundary.py +78 -0
  10. reflex/components/base/error_boundary.pyi +98 -0
  11. reflex/components/core/foreach.py +3 -2
  12. reflex/components/core/upload.py +1 -1
  13. reflex/components/radix/primitives/form.py +3 -2
  14. reflex/components/recharts/cartesian.py +31 -16
  15. reflex/components/recharts/cartesian.pyi +46 -22
  16. reflex/components/recharts/charts.py +6 -6
  17. reflex/components/recharts/charts.pyi +10 -10
  18. reflex/components/recharts/general.py +7 -0
  19. reflex/components/recharts/general.pyi +5 -0
  20. reflex/components/recharts/recharts.py +16 -1
  21. reflex/components/recharts/recharts.pyi +1 -0
  22. reflex/config.py +2 -1
  23. reflex/constants/compiler.py +20 -2
  24. reflex/constants/config.py +1 -1
  25. reflex/event.py +9 -0
  26. reflex/experimental/__init__.py +2 -0
  27. reflex/experimental/vars/__init__.py +3 -0
  28. reflex/experimental/vars/base.py +210 -0
  29. reflex/state.py +105 -21
  30. reflex/testing.py +28 -0
  31. reflex/utils/compat.py +7 -5
  32. reflex/utils/console.py +10 -1
  33. reflex/utils/prerequisites.py +11 -5
  34. reflex/utils/processes.py +7 -2
  35. reflex/utils/pyi_generator.py +4 -1
  36. reflex/utils/types.py +35 -30
  37. reflex/vars.py +58 -23
  38. reflex/vars.pyi +4 -1
  39. {reflex-0.5.6a1.dist-info → reflex-0.5.7.dist-info}/METADATA +1 -1
  40. {reflex-0.5.6a1.dist-info → reflex-0.5.7.dist-info}/RECORD +43 -39
  41. {reflex-0.5.6a1.dist-info → reflex-0.5.7.dist-info}/LICENSE +0 -0
  42. {reflex-0.5.6a1.dist-info → reflex-0.5.7.dist-info}/WHEEL +0 -0
  43. {reflex-0.5.6a1.dist-info → reflex-0.5.7.dist-info}/entry_points.txt +0 -0
reflex/utils/processes.py CHANGED
@@ -4,6 +4,7 @@ from __future__ import annotations
4
4
 
5
5
  import collections
6
6
  import contextlib
7
+ import importlib.metadata
7
8
  import os
8
9
  import signal
9
10
  import subprocess
@@ -58,8 +59,12 @@ def get_process_on_port(port) -> Optional[psutil.Process]:
58
59
  """
59
60
  for proc in psutil.process_iter(["pid", "name", "cmdline"]):
60
61
  try:
61
- for conns in proc.connections(kind="inet"):
62
- if conns.laddr.port == int(port):
62
+ if importlib.metadata.version("psutil") >= "6.0.0":
63
+ conns = proc.net_connections(kind="inet") # type: ignore
64
+ else:
65
+ conns = proc.connections(kind="inet")
66
+ for conn in conns:
67
+ if conn.laddr.port == int(port):
63
68
  return proc
64
69
  except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
65
70
  pass
@@ -159,7 +159,10 @@ def _get_type_hint(value, type_hint_globals, is_optional=True) -> str:
159
159
  ]
160
160
  )
161
161
 
162
- if value.__name__ not in type_hint_globals:
162
+ if (
163
+ value.__module__ not in ["builtins", "__builtins__"]
164
+ and value.__name__ not in type_hint_globals
165
+ ):
163
166
  raise TypeError(
164
167
  f"{value.__module__ + '.' + value.__name__} is not a default import, "
165
168
  "add it to DEFAULT_IMPORTS in pyi_generator.py"
reflex/utils/types.py CHANGED
@@ -245,36 +245,41 @@ def get_attribute_access_type(cls: GenericType, name: str) -> GenericType | None
245
245
  # check for list types
246
246
  column = insp.columns[name]
247
247
  column_type = column.type
248
- type_ = insp.columns[name].type.python_type
249
- if hasattr(column_type, "item_type") and (
250
- item_type := column_type.item_type.python_type # type: ignore
251
- ):
252
- if type_ in PrimitiveToAnnotation:
253
- type_ = PrimitiveToAnnotation[type_] # type: ignore
254
- type_ = type_[item_type] # type: ignore
255
- if column.nullable:
256
- type_ = Optional[type_]
257
- return type_
258
- if name not in insp.all_orm_descriptors:
259
- return None
260
- descriptor = insp.all_orm_descriptors[name]
261
- if hint := get_property_hint(descriptor):
262
- return hint
263
- if isinstance(descriptor, QueryableAttribute):
264
- prop = descriptor.property
265
- if not isinstance(prop, Relationship):
266
- return None
267
- type_ = prop.mapper.class_
268
- # TODO: check for nullable?
269
- type_ = List[type_] if prop.uselist else Optional[type_]
270
- return type_
271
- if isinstance(attr, AssociationProxyInstance):
272
- return List[
273
- get_attribute_access_type(
274
- attr.target_class,
275
- attr.remote_attr.key, # type: ignore[attr-defined]
276
- )
277
- ]
248
+ try:
249
+ type_ = insp.columns[name].type.python_type
250
+ except NotImplementedError:
251
+ type_ = None
252
+ if type_ is not None:
253
+ if hasattr(column_type, "item_type"):
254
+ try:
255
+ item_type = column_type.item_type.python_type # type: ignore
256
+ except NotImplementedError:
257
+ item_type = None
258
+ if item_type is not None:
259
+ if type_ in PrimitiveToAnnotation:
260
+ type_ = PrimitiveToAnnotation[type_] # type: ignore
261
+ type_ = type_[item_type] # type: ignore
262
+ if column.nullable:
263
+ type_ = Optional[type_]
264
+ return type_
265
+ if name in insp.all_orm_descriptors:
266
+ descriptor = insp.all_orm_descriptors[name]
267
+ if hint := get_property_hint(descriptor):
268
+ return hint
269
+ if isinstance(descriptor, QueryableAttribute):
270
+ prop = descriptor.property
271
+ if isinstance(prop, Relationship):
272
+ type_ = prop.mapper.class_
273
+ # TODO: check for nullable?
274
+ type_ = List[type_] if prop.uselist else Optional[type_]
275
+ return type_
276
+ if isinstance(attr, AssociationProxyInstance):
277
+ return List[
278
+ get_attribute_access_type(
279
+ attr.target_class,
280
+ attr.remote_attr.key, # type: ignore[attr-defined]
281
+ )
282
+ ]
278
283
  elif isinstance(cls, type) and not is_generic_alias(cls) and issubclass(cls, Model):
279
284
  # Check in the annotations directly (for sqlmodel.Relationship)
280
285
  hints = get_type_hints(cls)
reflex/vars.py CHANGED
@@ -262,6 +262,9 @@ _decode_var_pattern_re = (
262
262
  )
263
263
  _decode_var_pattern = re.compile(_decode_var_pattern_re, flags=re.DOTALL)
264
264
 
265
+ # Defined global immutable vars.
266
+ _global_vars: Dict[int, Var] = {}
267
+
265
268
 
266
269
  def _decode_var(value: str) -> tuple[VarData | None, str]:
267
270
  """Decode the state name from a formatted var.
@@ -294,17 +297,32 @@ def _decode_var(value: str) -> tuple[VarData | None, str]:
294
297
  start, end = m.span()
295
298
  value = value[:start] + value[end:]
296
299
 
297
- # Read the JSON, pull out the string length, parse the rest as VarData.
298
- data = json_loads(m.group(1))
299
- string_length = data.pop("string_length", None)
300
- var_data = VarData.parse_obj(data)
300
+ serialized_data = m.group(1)
301
+
302
+ if serialized_data[1:].isnumeric():
303
+ # This is a global immutable var.
304
+ var = _global_vars[int(serialized_data)]
305
+ var_data = var._var_data
306
+
307
+ if var_data is not None:
308
+ realstart = start + offset
309
+ var_data.interpolations = [
310
+ (realstart, realstart + len(var._var_name))
311
+ ]
312
+
313
+ var_datas.append(var_data)
314
+ else:
315
+ # Read the JSON, pull out the string length, parse the rest as VarData.
316
+ data = json_loads(serialized_data)
317
+ string_length = data.pop("string_length", None)
318
+ var_data = VarData.parse_obj(data)
301
319
 
302
- # Use string length to compute positions of interpolations.
303
- if string_length is not None:
304
- realstart = start + offset
305
- var_data.interpolations = [(realstart, realstart + string_length)]
320
+ # Use string length to compute positions of interpolations.
321
+ if string_length is not None:
322
+ realstart = start + offset
323
+ var_data.interpolations = [(realstart, realstart + string_length)]
306
324
 
307
- var_datas.append(var_data)
325
+ var_datas.append(var_data)
308
326
  offset += end - start
309
327
 
310
328
  return VarData.merge(*var_datas) if var_datas else None, value
@@ -496,6 +514,9 @@ class Var:
496
514
 
497
515
  Returns:
498
516
  A new BaseVar with the updated fields overwriting the corresponding fields in this Var.
517
+
518
+ Raises:
519
+ TypeError: If kwargs contains keys that are not allowed.
499
520
  """
500
521
  field_values = dict(
501
522
  _var_name=kwargs.pop("_var_name", self._var_name),
@@ -507,9 +528,14 @@ class Var:
507
528
  self._var_full_name_needs_state_prefix,
508
529
  ),
509
530
  _var_data=VarData.merge(
510
- kwargs.get("_var_data", self._var_data), merge_var_data
531
+ kwargs.pop("_var_data", self._var_data), merge_var_data
511
532
  ),
512
533
  )
534
+
535
+ if kwargs:
536
+ unexpected_kwargs = ", ".join(kwargs.keys())
537
+ raise TypeError(f"Unexpected keyword arguments: {unexpected_kwargs}")
538
+
513
539
  return BaseVar(**field_values)
514
540
 
515
541
  def _decode(self) -> Any:
@@ -2024,26 +2050,35 @@ class ComputedVar(Var, property):
2024
2050
 
2025
2051
  Returns:
2026
2052
  The new ComputedVar instance.
2053
+
2054
+ Raises:
2055
+ TypeError: If kwargs contains keys that are not allowed.
2027
2056
  """
2028
- return ComputedVar(
2029
- fget=kwargs.get("fget", self.fget),
2030
- initial_value=kwargs.get("initial_value", self._initial_value),
2031
- cache=kwargs.get("cache", self._cache),
2032
- deps=kwargs.get("deps", self._static_deps),
2033
- auto_deps=kwargs.get("auto_deps", self._auto_deps),
2034
- interval=kwargs.get("interval", self._update_interval),
2035
- backend=kwargs.get("backend", self._backend),
2036
- _var_name=kwargs.get("_var_name", self._var_name),
2037
- _var_type=kwargs.get("_var_type", self._var_type),
2038
- _var_is_local=kwargs.get("_var_is_local", self._var_is_local),
2039
- _var_is_string=kwargs.get("_var_is_string", self._var_is_string),
2040
- _var_full_name_needs_state_prefix=kwargs.get(
2057
+ field_values = dict(
2058
+ fget=kwargs.pop("fget", self.fget),
2059
+ initial_value=kwargs.pop("initial_value", self._initial_value),
2060
+ cache=kwargs.pop("cache", self._cache),
2061
+ deps=kwargs.pop("deps", self._static_deps),
2062
+ auto_deps=kwargs.pop("auto_deps", self._auto_deps),
2063
+ interval=kwargs.pop("interval", self._update_interval),
2064
+ backend=kwargs.pop("backend", self._backend),
2065
+ _var_name=kwargs.pop("_var_name", self._var_name),
2066
+ _var_type=kwargs.pop("_var_type", self._var_type),
2067
+ _var_is_local=kwargs.pop("_var_is_local", self._var_is_local),
2068
+ _var_is_string=kwargs.pop("_var_is_string", self._var_is_string),
2069
+ _var_full_name_needs_state_prefix=kwargs.pop(
2041
2070
  "_var_full_name_needs_state_prefix",
2042
2071
  self._var_full_name_needs_state_prefix,
2043
2072
  ),
2044
2073
  _var_data=VarData.merge(self._var_data, merge_var_data),
2045
2074
  )
2046
2075
 
2076
+ if kwargs:
2077
+ unexpected_kwargs = ", ".join(kwargs.keys())
2078
+ raise TypeError(f"Unexpected keyword arguments: {unexpected_kwargs}")
2079
+
2080
+ return ComputedVar(**field_values)
2081
+
2047
2082
  @property
2048
2083
  def _cache_attr(self) -> str:
2049
2084
  """Get the attribute used to cache the value on the instance.
reflex/vars.pyi CHANGED
@@ -35,6 +35,9 @@ USED_VARIABLES: Incomplete
35
35
 
36
36
  def get_unique_variable_name() -> str: ...
37
37
  def _encode_var(value: Var) -> str: ...
38
+
39
+ _global_vars: Dict[int, Var]
40
+
38
41
  def _decode_var(value: str) -> tuple[VarData, str]: ...
39
42
  def _extract_var_data(value: Iterable) -> list[VarData | None]: ...
40
43
 
@@ -115,7 +118,7 @@ class Var:
115
118
  def __or__(self, other: Var) -> Var: ...
116
119
  def __ror__(self, other: Var) -> Var: ...
117
120
  def __contains__(self, _: Any) -> Var: ...
118
- def contains(self, other: Any) -> Var: ...
121
+ def contains(self, other: Any, field: Union[Var, None] = None) -> Var: ...
119
122
  def reverse(self) -> Var: ...
120
123
  def foreach(self, fn: Callable) -> Var: ...
121
124
  @classmethod
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: reflex
3
- Version: 0.5.6a1
3
+ Version: 0.5.7
4
4
  Summary: Web apps in pure Python.
5
5
  Home-page: https://reflex.dev
6
6
  License: Apache-2.0
@@ -47,7 +47,7 @@ reflex/.templates/jinja/web/pages/stateful_components.js.jinja2,sha256=BfHi7ckH9
47
47
  reflex/.templates/jinja/web/pages/utils.js.jinja2,sha256=xi1ryZ2dqWM4pmB4p028hxRtsdP6T3ZR5a8OG_U1IAs,3883
48
48
  reflex/.templates/jinja/web/styles/styles.css.jinja2,sha256=4-CvqGR8-nRzkuCOSp_PdqmhPEmOs_kOhskOlhLMEUg,141
49
49
  reflex/.templates/jinja/web/tailwind.config.js.jinja2,sha256=uZMIvtL94OZh6h8zsduv3ox6EXnnYgfVXB_5moOe86E,761
50
- reflex/.templates/jinja/web/utils/context.js.jinja2,sha256=i63BPgbEtc3s0NX0MLPNJZH2-FEkvuETElDeZ8ZITQY,3864
50
+ reflex/.templates/jinja/web/utils/context.js.jinja2,sha256=t9wwcTFr2PMRo02Brqv1nPWJWGHCkls1wxb-PhvbRUM,3938
51
51
  reflex/.templates/jinja/web/utils/theme.js.jinja2,sha256=cdRQR4cx0OFHUY060k1AdsPpK7BNUV--NzsC9HdH4l8,37
52
52
  reflex/.templates/web/.gitignore,sha256=3tT0CtVkCL09D_Y3Hd4myUgGcBuESeavCa0WHU5ifJ4,417
53
53
  reflex/.templates/web/components/reflex/chakra_color_mode_provider.js,sha256=E_-MshxFMx6gdLgICU2K2gEBQJTWQQrPft5SNg5ZnFo,1166
@@ -62,12 +62,12 @@ reflex/.templates/web/utils/helpers/debounce.js,sha256=xGhtTRtS_xIcaeqnYVvYJNseL
62
62
  reflex/.templates/web/utils/helpers/paste.js,sha256=ef30HsR83jRzzvZnl8yV79yqFP8TC_u8SlN99cCS_OM,1799
63
63
  reflex/.templates/web/utils/helpers/range.js,sha256=FevdZzCVxjF57ullfjpcUpeOXRxh5v09YnBB0jPbrS4,1152
64
64
  reflex/.templates/web/utils/helpers/throttle.js,sha256=qxeyaEojaTeX36FPGftzVWrzDsRQU4iqg3U9RJz9Vj4,566
65
- reflex/.templates/web/utils/state.js,sha256=dAGKAnhloEE5ldQ2n21k95br9djexy-CscZNQG-Remc,25021
66
- reflex/__init__.py,sha256=1HO-TJ-wapnytmaQXmSvkPoL8HKld-CvvvMnns7XIA8,9589
67
- reflex/__init__.pyi,sha256=z4t-OZKh68rAfHohp8g0qzeb0sxx3dvIznoyOuIijVg,10707
65
+ reflex/.templates/web/utils/state.js,sha256=c56zCKUoSgHzlCFq3Zc5CQKTh1AaQa3KInE-6fv5pFI,25946
66
+ reflex/__init__.py,sha256=ODbR-WJ4-ugGhepPf34fUy2GZdkxo3TpZaca1tpD7kw,9728
67
+ reflex/__init__.pyi,sha256=brBPyevzsUhaSKKgJVkXmm8VmXy8umVIIBjjV4IwcTI,10751
68
68
  reflex/__main__.py,sha256=6cVrGEyT3j3tEvlEVUatpaYfbB5EF3UVY-6vc_Z7-hw,108
69
69
  reflex/admin.py,sha256=_3pkkauMiTGJJ0kwAEBnsUWAgZZ_1WNnCaaObbhpmUI,374
70
- reflex/app.py,sha256=wzBA0yrRc4CTuPttTBHtcI-pVLxaEZH3vzYHtgvwu54,46985
70
+ reflex/app.py,sha256=R7mYCVX-Fg2T99B9KZ8W_J6Xl0efodYK-n5A5_Yd-MU,54111
71
71
  reflex/app_mixins/__init__.py,sha256=Oegz3-gZLP9p2OAN5ALNbsgxuNQfS6lGZgQA8cc-9mQ,137
72
72
  reflex/app_mixins/lifespan.py,sha256=0PaavAPTYmF7JdLKGfZQu_NT7oAaxyq7-5fauLZ9e8Y,2048
73
73
  reflex/app_mixins/middleware.py,sha256=6Yby_Uw1-J0K7NgPyh-X7tGGhmezn6D7-KsfABYAVBU,3130
@@ -76,12 +76,12 @@ reflex/app_module_for_backend.py,sha256=TOB73WSoPs-DVitLNjnCXDb5FXQFEvoIDIohDwov
76
76
  reflex/base.py,sha256=qBP_gr9BEPL2P0uYSH8mSw9FZJ2V2AxCSw1mcNVpnvw,4297
77
77
  reflex/compiler/__init__.py,sha256=r8jqmDSFf09iV2lHlNhfc9XrTLjNxfDNwPYlxS4cmHE,27
78
78
  reflex/compiler/compiler.py,sha256=1_PfhgLXozGmkMhFx58NBmCLF3gA4erf-vVerERB3_4,17814
79
- reflex/compiler/templates.py,sha256=YkbTmzu4-BAW3DYnuF8Y1IbAuLiNJk9rmyuW-BHP5mA,4469
79
+ reflex/compiler/templates.py,sha256=qY3qH7Z4oH_5i4nhMxffAFXbY6Fc9mEnCtlVP7uU7nU,4562
80
80
  reflex/compiler/utils.py,sha256=7pEs27NEdDy2cORe3I4ues8lFGXfNuc7y7CEaZ-N5jU,13957
81
81
  reflex/components/__init__.py,sha256=W_KyltR_KeMweL1-j0Q1tu3e7wJ8osDGxEh0LAFfqDI,638
82
82
  reflex/components/__init__.pyi,sha256=yQyzkFsaQMsJkDYUbj-ITwyWcoYxRpnlpGUrdg4Hmy8,892
83
- reflex/components/base/__init__.py,sha256=ofR-82t0H6re-Wtl2x5138nO7jehQw4CcUaF2Zd7PT4,648
84
- reflex/components/base/__init__.pyi,sha256=A1I-3D8BDGtVty2qMt7KR0cyjLMGN_rlyCfkW5UPfYE,935
83
+ reflex/components/base/__init__.py,sha256=QIOxOPT87WrSE4TSHAsZ-358VzvUXAe1w8vWogQ3Uuo,730
84
+ reflex/components/base/__init__.pyi,sha256=c-8lUF9MAgAo9OHMjKIrV2ScM5S0fg8gTXp3iYFwVKU,1055
85
85
  reflex/components/base/app_wrap.py,sha256=45fkel5ATAcCp7-eUCGXNuq4QwnCpI33VNJOIP_L6k4,574
86
86
  reflex/components/base/app_wrap.pyi,sha256=Ic4YetB-PdBdc7wjknJKIZ4_gtIQviwojVzztihKjlg,2790
87
87
  reflex/components/base/bare.py,sha256=cbIugrPzaank429Xk5mLRydOCxLTX0tuRdXKoKL2Bxw,1234
@@ -89,6 +89,8 @@ reflex/components/base/body.py,sha256=QHOGMr98I6bUXsQKXcY0PzJdhopH6gQ8AESrDSgJV6
89
89
  reflex/components/base/body.pyi,sha256=-QlAMnAHDikAWFzqxLJTSosW0LSJ-J0WJlbD1DQlIgo,3184
90
90
  reflex/components/base/document.py,sha256=_Cl9iMXwXdxGMrCLAT20v35FX3MGtbqh2dfWenDtSKc,583
91
91
  reflex/components/base/document.pyi,sha256=tYLJTR7zAjlbcZ5doe59vv1-XEE5ZvrkhDlfuCRXHjA,14186
92
+ reflex/components/base/error_boundary.py,sha256=XB_6Cz68Vg7TVRAlb4SLozHsSRa0FIWRGTZKznbbkDc,2386
93
+ reflex/components/base/error_boundary.pyi,sha256=vrMhogZ-gZBOhVC5lWdKAnCwkQY5Lrfq6M9yvcgRhaE,3740
92
94
  reflex/components/base/fragment.py,sha256=ys7wkokq-N8WBxa9fqkEaNIrBlSximyD7vqlFVe02hQ,342
93
95
  reflex/components/base/fragment.pyi,sha256=14hH-O8uEug7VzcIjrqo7LcOlGNsC5HCp4YKJgizI6s,3224
94
96
  reflex/components/base/head.py,sha256=BGjOksNZEo_AZcYEuxNH7onsRnfyxJkJzl4cTd_EwiQ,318
@@ -254,13 +256,13 @@ reflex/components/core/colors.py,sha256=-hzVGLEq3TiqroqzMi_YzGBCPXMvkNsen3pS_NzI
254
256
  reflex/components/core/cond.py,sha256=wLHkGlp47FXk_VlzXx4n8k8xcLleWQsiWgIoNyUpuBE,6369
255
257
  reflex/components/core/debounce.py,sha256=KFyfnvnaevSWrj04Uehh2w8guV2VM9oGx_ApuhP8q9M,4660
256
258
  reflex/components/core/debounce.pyi,sha256=DBRFYOemKi_YYZRzRef7iQ9CSrchhPkVLlNGLDXdwUc,4038
257
- reflex/components/core/foreach.py,sha256=MXFXWS-sMoELEGocYB2mXVu4DVJzdgDjKaj8R3UrrxI,4782
259
+ reflex/components/core/foreach.py,sha256=iTJMVHTUsWZzPN1xVT4CBsRHzDKv9bfLbUQkZM9tPV4,4823
258
260
  reflex/components/core/html.py,sha256=iSeKFcld5m4zoXOGq0QEaKKtgTUUVLrIEVsP3cyYCxE,1305
259
261
  reflex/components/core/html.pyi,sha256=184TSzJ6NnxJuLBZWI4VSiWH_9Orc3zEHlIcu539Otw,6274
260
262
  reflex/components/core/layout/__init__.py,sha256=znldZaj_NGt8qCZDG70GMwjMTskcvCf_2N_EjCAHwdc,30
261
263
  reflex/components/core/match.py,sha256=y7sBAwTJPLsfjNo6fmPykRaKUyuMa8orG6lwOvRt68c,9558
262
264
  reflex/components/core/responsive.py,sha256=ACZdtJ4a4F8B3dm1k8h6J2_UJx0Z5LDB7XHQ2ty4wAc,1911
263
- reflex/components/core/upload.py,sha256=2cWj9iYOfwfH0fUWFzhS3b2fUl0J_a1Na9-Ri8rl0ls,10222
265
+ reflex/components/core/upload.py,sha256=nTXUE_4of_NeP5ghe6kysrQz2EJdCVJkXAwG0XKIEQU,10220
264
266
  reflex/components/core/upload.pyi,sha256=tFo0VYlQ2eEL-QhQrAKiTSD-a3GwcRAs2XMzfPtYT6A,16582
265
267
  reflex/components/datadisplay/__init__.py,sha256=Uxq0V74orISXh6woTNQXgOUrKMSf0bi6Aytsh7G59yw,471
266
268
  reflex/components/datadisplay/__init__.pyi,sha256=qBAk9Dsp7woSrOChcQ1YsXdGNYuJv-jCZpKSsEwMiIQ,653
@@ -337,7 +339,7 @@ reflex/components/radix/primitives/base.py,sha256=QTdESCrw9ceQgPr3VtfjRTmpKeP1OH
337
339
  reflex/components/radix/primitives/base.pyi,sha256=95CZauwaCRAZOpidA62vN3tl5eCnoHxN1IQ0ZO9Zs3A,6330
338
340
  reflex/components/radix/primitives/drawer.py,sha256=yXSnNLSP1WBfrsicqQP0hYlUOgYapW8S35NY-lzFuJk,8189
339
341
  reflex/components/radix/primitives/drawer.pyi,sha256=Y6ADr_Igtk6NLmT-kxyrUevAPmtEyEzrF6FC6yNp8Jw,34117
340
- reflex/components/radix/primitives/form.py,sha256=L3KGEfXgpYK3U-OjQbFBmmTXUxZWicWLQLXOef_Qgoc,4702
342
+ reflex/components/radix/primitives/form.py,sha256=kykwpiCkj6JskEEg6WOSSnbSzqrKcpOEbvrFbXYhfdw,4799
341
343
  reflex/components/radix/primitives/form.pyi,sha256=-8doIGXVWVjQxijyBgtwBGSYP8I8OdeqsrrLYSvECPE,46441
342
344
  reflex/components/radix/primitives/progress.py,sha256=-O0puNQxxRDlgucNI697mzsMy-ce9pTSPtLaqCqpGWQ,4022
343
345
  reflex/components/radix/primitives/progress.pyi,sha256=g3RAAlsJEpMmj0evwFHddoQZ1YfS1lsWRJcc-b3TCQg,22511
@@ -465,16 +467,16 @@ reflex/components/react_player/video.py,sha256=2V6tiwCwrzu9WPI1Wmuepk8kQ6M6K8nnM
465
467
  reflex/components/react_player/video.pyi,sha256=dzqTEpt5wZ1odNNvK2OhsO1lPYt1ww1nGTPoBXHT7b8,6191
466
468
  reflex/components/recharts/__init__.py,sha256=GUifJIUtG91u4K55junZ_-l5ArcRFFDIyjS4y0lyAL4,2644
467
469
  reflex/components/recharts/__init__.pyi,sha256=FUu_BmjhVTbjU92KH2NnYEFr4eeZLMkthX8iIwswDIM,5076
468
- reflex/components/recharts/cartesian.py,sha256=LbLLfo59jzvzLmIC5iuS1_NOzAuewAylEkGcuOIkfRQ,29073
469
- reflex/components/recharts/cartesian.pyi,sha256=4QVXlZ_aSMRx2fEAqUI0wC3GxzEShgo2G5LlXmeyc64,106732
470
- reflex/components/recharts/charts.py,sha256=Yk3R07UPKG_JNgF5LwXQMiBcbvtLHBmhyDlM4AbSNUg,17304
471
- reflex/components/recharts/charts.pyi,sha256=U0Ixc7ar9N0tXUFE2DMWPmITK5cvSSz-zKyJJRXKpAI,53843
472
- reflex/components/recharts/general.py,sha256=9Ro6BfaETdqkdpEeltZ6sAFIeUEt_r8FhlNF5MQfYQs,7130
473
- reflex/components/recharts/general.pyi,sha256=X2BcRbDHhB-a2BKamKPbJD8VP4zNE2nGGkhd7YWUCc8,25178
470
+ reflex/components/recharts/cartesian.py,sha256=AiPNaQuaUBu-iMGEZ-jJ1bBRZwpUQIbp9VOS6Ffu0bs,29739
471
+ reflex/components/recharts/cartesian.pyi,sha256=HRE-dz9htv3eM1Z1n2SpqT35CNwhwueDtDDPuD5UA5k,107937
472
+ reflex/components/recharts/charts.py,sha256=0Odwzjjtk6aRkVumHUKyoxsV2SsPMcE7UQtbYeG4HPE,17640
473
+ reflex/components/recharts/charts.pyi,sha256=uhCfMkKcgG7CQJQ88KcPM4uS4xtr8dYNsEanDuc-3bs,54403
474
+ reflex/components/recharts/general.py,sha256=8LXd0e1GdTE3UgZaZ3Ak6f_LN64KGK4SZ2RHKHpUi6E,7314
475
+ reflex/components/recharts/general.pyi,sha256=DaCg7JrG4Sl0yIKeUmg0VkQa6A09R_K8BTWJbBeuquw,25468
474
476
  reflex/components/recharts/polar.py,sha256=SN7gvDKqBqocQ9CQD0XIML1vlK3GLKz4x9JwfX87L18,11197
475
477
  reflex/components/recharts/polar.pyi,sha256=NIQybNTldkik6xEdAirSXPVLnAHBqGggz-qE8CFgZ7o,26216
476
- reflex/components/recharts/recharts.py,sha256=_2zYZI4c0tG7377xHEBWLFj8Z1OO6ZPHHrTvW9rcnB0,2935
477
- reflex/components/recharts/recharts.pyi,sha256=SroD3llaVCKxQ1ZxNLO549qHbVge5f9Pulqxe6LNMKQ,8558
478
+ reflex/components/recharts/recharts.py,sha256=Krz2U0DNzr0Q_Z7Kuwr6_dFX8HdLpH6eBBwp29CdPq4,3433
479
+ reflex/components/recharts/recharts.pyi,sha256=42KHKkYPwzLcH8uLd9IHd8J_hQ4lh3yniVG2luyy9xI,8592
478
480
  reflex/components/sonner/__init__.py,sha256=L_mdRIy7-ccRGSz5VK6J8O-c-e-D1p9xWw29_ErrvGg,68
479
481
  reflex/components/sonner/toast.py,sha256=XnamDs6Zsu7d67FEP9AMbq4weuuLVM4ZdPcyCx5ZJLY,10438
480
482
  reflex/components/sonner/toast.pyi,sha256=7uSLtQ_6L5Iul9C5b8tNjDBhycUwKPQI0xjL6Cu58Is,8026
@@ -487,12 +489,12 @@ reflex/components/tags/iter_tag.py,sha256=HOYAnP6egvVRBl-C4MySFysZx7lxJt3CjtEA81
487
489
  reflex/components/tags/match_tag.py,sha256=pMwy46ewquPNwa1S71sDS_0Ga8YuviSrbpBU-_CWsoQ,387
488
490
  reflex/components/tags/tag.py,sha256=iORWH5NBQ8U1cdMfUKaAkvFiZhvs5FPR9eHKlGjmPYg,2816
489
491
  reflex/components/tags/tagless.py,sha256=qO7Gm4V0ITDyymHkyltfz53155ZBt-W_WIPDYy93ca0,587
490
- reflex/config.py,sha256=UrOQLCLiTP8qY1T0r4tPUga_VBp4I7XbM7WkxDElEgY,11920
492
+ reflex/config.py,sha256=YbLTNeQ8P31b4HiYmC1rFPfRplP0OQp_2BZU6Azv-aw,11958
491
493
  reflex/constants/__init__.py,sha256=ICWLo-8TEu_HuMqy-dXdw3Zi7NYbA7ZvHmWGpt3L_VY,2030
492
494
  reflex/constants/base.py,sha256=F-vnRX8am-0assoM4DjvZOAo-wcsnaMw3BF4PO9KKHQ,5618
493
495
  reflex/constants/colors.py,sha256=gab_GwjKcbpRJGS2zX0gkmc_yFT1nmQbFDHqx0mXKB0,1625
494
- reflex/constants/compiler.py,sha256=DI8w1HvYpI3L1NdkWJTLfs23mHCsILKDkwRClE4aPsc,4272
495
- reflex/constants/config.py,sha256=SIp0Jc-pElncHBFKwzosxwLMEjSwFlVgWrYCFGyv5iI,1455
496
+ reflex/constants/compiler.py,sha256=Nool-szUS4fMEvEZx829sCyOw2g7f__RCfd1rNcAtec,4933
497
+ reflex/constants/config.py,sha256=1ocFCpfKmCo8UPpeSSqjt45-bmjvl1nFgeAY2pBs7so,1475
496
498
  reflex/constants/custom_components.py,sha256=SX0SQVb-d6HJkZdezFL4UgkumyF6eJF682y4OvRUqUM,1268
497
499
  reflex/constants/event.py,sha256=4Od4X2nIY92sqQIorAhTcKnWRYPBS2E8M1gykiuEkMk,2707
498
500
  reflex/constants/installer.py,sha256=kLchxwqV2jfTVkqfwhbOw5_dVRweoJUnqFD4mp3pZsE,3427
@@ -500,14 +502,16 @@ reflex/constants/route.py,sha256=fu1jp9MoIriUJ8Cu4gLeinTxkyVBbRPs8Bkt35vqYOM,214
500
502
  reflex/constants/style.py,sha256=sJ6LuPY1OWemwMXnI1Htm-pa087HWT6PWljUeyokcUI,474
501
503
  reflex/custom_components/__init__.py,sha256=R4zsvOi4dfPmHc18KEphohXnQFBPnUCb50cMR5hSLDE,36
502
504
  reflex/custom_components/custom_components.py,sha256=vYBhEt0ceCTaXG_zQlD8aEUxEzyGwlc7D6RKah2Pp2A,33067
503
- reflex/event.py,sha256=eB2ENGOIgeXwSvD_-scx8dvR695sDeKrMM21TNaABLs,29459
504
- reflex/experimental/__init__.py,sha256=Nm7dShDLu42HowVFHufn5nPwji-39p0OP-uV83a-cC4,1364
505
+ reflex/event.py,sha256=FGGrItbo0B-DoFQ6c0t2Hx0iislVL9pDa4733W2gixM,29635
506
+ reflex/experimental/__init__.py,sha256=TuRC9SlIR4mEQ7KlKKtIj5Eyv_bQjUtlz-TyOn_VmnE,1406
505
507
  reflex/experimental/assets.py,sha256=nWj4454REHDP2gybtlhOac0Xyb0uqBMzjAFqYlaYwcE,1758
506
508
  reflex/experimental/client_state.py,sha256=DvBZhdW43nGL3Trx5fciwuP4U5hsghA0BmJTv5KzvCA,8733
507
509
  reflex/experimental/hooks.py,sha256=veeds9cSvEdLZDDNIFD-Ye5XRQombrBQNRmiVYOBXp8,2437
508
510
  reflex/experimental/layout.py,sha256=Zx8AGqWJrSzXY1XapsorOx-jNo2kRqaWOc4QJRulQdU,7656
509
511
  reflex/experimental/layout.pyi,sha256=aThlDKlifnG3QqIMQH5SwYewrLLXws8u38z3VW8BRSk,18933
510
512
  reflex/experimental/misc.py,sha256=Ikmr-XuQfzOZqrY6yxDXkmpr7C5uDagc4nnowYmjWsc,610
513
+ reflex/experimental/vars/__init__.py,sha256=DqyoG1kOnSoVzAwxEHqgkqEZSb7mW3cS0HpQ_MCfnr0,95
514
+ reflex/experimental/vars/base.py,sha256=zdP5u-Wjcs8XNwjZwqLSGLSmlpEH3eO5m_TL0bYtpaE,6574
511
515
  reflex/middleware/__init__.py,sha256=x7xTeDuc73Hjj43k1J63naC9x8vzFxl4sq7cCFBX7sk,111
512
516
  reflex/middleware/hydrate_middleware.py,sha256=gZ5RTvsfKfrTkQN6QsTLfSnBAczCtGiBQ5edrOii3Vg,1485
513
517
  reflex/middleware/middleware.py,sha256=1tEckRzSNWAwW8VsKt_x88lkk2vSFnRWH1uorsauNwI,1170
@@ -515,14 +519,14 @@ reflex/model.py,sha256=f9F3J3JZX_NmUCU5mN4Lh7afclq9fikPUB1K2FmNlhU,13545
515
519
  reflex/page.py,sha256=NPT0xMownZGTiYiRtrUJnvAe_4oEvlzEJEkG-vrGhqI,2077
516
520
  reflex/reflex.py,sha256=1wJX6casYE_sAc1JCo4vng9gsyAeiYsG2Yw7itk5Abs,17874
517
521
  reflex/route.py,sha256=WZS7stKgO94nekFFYHaOqNgN3zZGpJb3YpGF4ViTHmw,4198
518
- reflex/state.py,sha256=PkXPoPR9Shn2aOf2zzJOhfyWGrLM3F87yJ0pJDlGV1c,110074
522
+ reflex/state.py,sha256=Uxy2M37aWTybvbQ4eCXhx-0Ryfkbu3AGz78EtXI_iVA,112623
519
523
  reflex/style.py,sha256=sLeIKBKUpZV1q1QwexVyckqFphjoxsPqCstVQf-D0Ak,11703
520
- reflex/testing.py,sha256=S2fE4rFPart_sBDw0P0YFyhTRS__bErwEYdZ4r9OSXo,33175
524
+ reflex/testing.py,sha256=zyIoa0PZuTuPP0My64zUc1aiqiekLKkb6GAXFUjzFfc,34081
521
525
  reflex/utils/__init__.py,sha256=y-AHKiRQAhk2oAkvn7W8cRVTZVK625ff8tTwvZtO7S4,24
522
526
  reflex/utils/build.py,sha256=DJryIUJ_3DV2nn4pZ9SiV60lwIGYPZWgYw9prsQXrKA,8482
523
527
  reflex/utils/codespaces.py,sha256=tKmju4aGzDMPy76_eQSzJd3RYmVmiiNZy3Yc0e3zG_w,2856
524
- reflex/utils/compat.py,sha256=EqXhRHpaqqfW1L_lnUWheaD35G0iXIfHatta8oshqO0,2007
525
- reflex/utils/console.py,sha256=-BHtwUabv8QlhGfEHupSn68fOOmPRZpkSvcqcjNBV-k,5182
528
+ reflex/utils/compat.py,sha256=ty_8eOifMjg9oVOWGHCu5cACu9iqw5_ZEOkTRck7B94,2012
529
+ reflex/utils/console.py,sha256=irO3qP7_9_5cxbc3hBfyawJgtgIq5s8nJQ0RgUt91fU,5477
526
530
  reflex/utils/exceptions.py,sha256=txYH8qtcUAwYSh5SikN76Htn8Z6MfdN2Ms3kvNdxPOk,2290
527
531
  reflex/utils/exec.py,sha256=jTkIbbrSgq8tCbUmwoN2s26XghPVJM5jBVaOlPYCkoU,11365
528
532
  reflex/utils/export.py,sha256=3dI9QjoU0ZA_g8OSQipVLpFWQcxWa_sHkpezWemvWbo,2366
@@ -530,17 +534,17 @@ reflex/utils/format.py,sha256=zfQb9PgeKsyMJ2koSz9CBUCWIH6WJ5-JIWYyyTTv3gE,26336
530
534
  reflex/utils/imports.py,sha256=pRjW6PTP_XyAQ0x5UoAI1_EDzBZnyIL5yd3oTQXtV3U,3193
531
535
  reflex/utils/lazy_loader.py,sha256=utVpUjKcz32GC1I7g0g7OlTyvVoZNFcuAjNtnxiSYww,1282
532
536
  reflex/utils/path_ops.py,sha256=XQVq_r_2tFHECWuJPyxzk3GzijCJemgXxfI5w2rc_Vs,4924
533
- reflex/utils/prerequisites.py,sha256=fTTGSlG_cK6iAh3wt-IkCI2qOdrg30VRNgHvXTtRjuc,52211
534
- reflex/utils/processes.py,sha256=DAbvB_Lo0SOCXdprigv1C9gfj2IcCCHqo23y_mkD92w,13018
535
- reflex/utils/pyi_generator.py,sha256=76tSrYgz6-epNq8HkNXBJDl1OWhlKTk85Vgep15q3pw,34113
537
+ reflex/utils/prerequisites.py,sha256=RzzX0_VX4JvO4z8M1DCuVcz7PArf3ilKKvXZUhN1pYo,52406
538
+ reflex/utils/processes.py,sha256=y8X5PxycEWT1ItLtpIS-rzrUvNQ9MUOkHdIg_zK9Vp0,13228
539
+ reflex/utils/pyi_generator.py,sha256=zFQlKOonT9OMlfne99NE9zLQVp02i4lfJ9q2kBa5myY,34206
536
540
  reflex/utils/serializers.py,sha256=lARTafxXhtNmC15lFaw424MJVwGRcWb8D42_osjKDWE,11689
537
541
  reflex/utils/telemetry.py,sha256=t4cvQmoAxTKAWF53vGH6ZEX5QYrK_KEcarmvMy-4_E4,5568
538
- reflex/utils/types.py,sha256=A8JepoRbONeo3cRIiLd08yUAo_To34UvU-t_S2P3UBA,17491
542
+ reflex/utils/types.py,sha256=nXB0RTGDfNQkiAvfb2RdXLHxFS9TX9cy-wfgqbPiIpw,17826
539
543
  reflex/utils/watch.py,sha256=ukPT3YrvqsXYN6BInWiO_RPry5osSch9lOomQhxDyk0,2685
540
- reflex/vars.py,sha256=CNNEAa0VHvx03FIP2YPJqXb8lGP0OjC_EjQl73x4v0A,77066
541
- reflex/vars.pyi,sha256=8jzIgkRVcYY0MMZ6Ol9EUhw8dtaxCzGRsnxWxZAGc1U,6477
542
- reflex-0.5.6a1.dist-info/LICENSE,sha256=dw3zLrp9f5ObD7kqS32vWfhcImfO52PMmRqvtxq_YEE,11358
543
- reflex-0.5.6a1.dist-info/METADATA,sha256=mKQW4NG6KUOfbkP1I4ThN8LcTDWUX2TPajEACyeeFUk,12099
544
- reflex-0.5.6a1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
545
- reflex-0.5.6a1.dist-info/entry_points.txt,sha256=H1Z5Yat_xJfy0dRT1Frk2PkO_p41Xy7fCKlj4FcdL9o,44
546
- reflex-0.5.6a1.dist-info/RECORD,,
544
+ reflex/vars.py,sha256=c0ceefJuCyId8JsLVrjvjl2aoKkHYvMns-cIGhQ6Q8M,78242
545
+ reflex/vars.pyi,sha256=skuzSaG65wOM00JYJKiEeSAChwAFALVlcnwbsZDYmZY,6540
546
+ reflex-0.5.7.dist-info/LICENSE,sha256=dw3zLrp9f5ObD7kqS32vWfhcImfO52PMmRqvtxq_YEE,11358
547
+ reflex-0.5.7.dist-info/METADATA,sha256=oo-9v0FEvnPa06_bbcl9ioPCCss_ZJ7oXT5PhlE4jc8,12097
548
+ reflex-0.5.7.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
549
+ reflex-0.5.7.dist-info/entry_points.txt,sha256=H1Z5Yat_xJfy0dRT1Frk2PkO_p41Xy7fCKlj4FcdL9o,44
550
+ reflex-0.5.7.dist-info/RECORD,,