reflex 0.6.0a2__py3-none-any.whl → 0.6.0a4__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.9"
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
 
@@ -805,7 +805,9 @@ export const useEventLoop = (
805
805
  * @returns True if the value is truthy, false otherwise.
806
806
  */
807
807
  export const isTrue = (val) => {
808
- return Array.isArray(val) ? val.length > 0 : !!val;
808
+ if (Array.isArray(val)) return val.length > 0;
809
+ if (val === Object(val)) return Object.keys(val).length > 0;
810
+ return Boolean(val);
809
811
  };
810
812
 
811
813
  /**
@@ -15,7 +15,7 @@ if constants.CompileVars.APP != "app":
15
15
  telemetry.send("compile")
16
16
  app_module = get_app(reload=False)
17
17
  app = getattr(app_module, constants.CompileVars.APP)
18
- # For py3.8 and py3.9 compatibility when redis is used, we MUST add any decorator pages
18
+ # For py3.9 compatibility when redis is used, we MUST add any decorator pages
19
19
  # before compiling the app in a thread to avoid event loop error (REF-2172).
20
20
  app._apply_decorated_pages()
21
21
  compile_future = ThreadPoolExecutor(max_workers=1).submit(app._compile)
@@ -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."""
@@ -451,8 +448,16 @@ class Component(BaseComponent, ABC):
451
448
  and not types._issubclass(passed_type, expected_type, value)
452
449
  ):
453
450
  value_name = value._js_expr if isinstance(value, Var) else value
451
+
452
+ additional_info = (
453
+ " You can call `.bool()` on the value to convert it to a boolean."
454
+ if expected_type is bool and isinstance(value, Var)
455
+ else ""
456
+ )
457
+
454
458
  raise TypeError(
455
- f"Invalid var passed for prop {type(self).__name__}.{key}, expected type {expected_type}, got value {value_name} of type {passed_types or passed_type}."
459
+ f"Invalid var passed for prop {type(self).__name__}.{key}, expected type {expected_type}, got value {value_name} of type {passed_type}."
460
+ + additional_info
456
461
  )
457
462
  # Check if the key is an event trigger.
458
463
  if key in component_specific_triggers:
@@ -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
 
@@ -3,6 +3,7 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  import dataclasses
6
+ import re
6
7
  import sys
7
8
  from typing import Any, Callable, Union
8
9
 
@@ -174,15 +175,15 @@ class ClientStateVar(Var):
174
175
  else self._setter_name
175
176
  )
176
177
  if value is not NoValue:
177
- import re
178
-
179
178
  # This is a hack to make it work like an EventSpec taking an arg
180
179
  value_str = str(LiteralVar.create(value))
181
180
 
182
- # remove patterns of ["*"] from the value_str using regex
183
- arg = re.sub(r"\[\".*\"\]", "", value_str)
184
-
185
- setter = f"({arg}) => {setter}({str(value)})"
181
+ if value_str.startswith("_"):
182
+ # remove patterns of ["*"] from the value_str using regex
183
+ arg = re.sub(r"\[\".*\"\]", "", value_str)
184
+ setter = f"(({arg}) => {setter}({value_str}))"
185
+ else:
186
+ setter = f"(() => {setter}({value_str}))"
186
187
  return Var(
187
188
  _js_expr=setter,
188
189
  _var_data=VarData(imports=_refs_import if self._global_ref else {}),
@@ -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
@@ -73,6 +73,18 @@ def get_web_dir() -> Path:
73
73
  return workdir
74
74
 
75
75
 
76
+ def _python_version_check():
77
+ """Emit deprecation warning for deprecated python versions."""
78
+ # Check for end-of-life python versions.
79
+ if sys.version_info < (3, 10):
80
+ console.deprecate(
81
+ feature_name="Support for Python 3.9 and older",
82
+ reason="please upgrade to Python 3.10 or newer",
83
+ deprecation_version="0.6.0",
84
+ removal_version="0.7.0",
85
+ )
86
+
87
+
76
88
  def check_latest_package_version(package_name: str):
77
89
  """Check if the latest version of the package is installed.
78
90
 
@@ -85,15 +97,16 @@ def check_latest_package_version(package_name: str):
85
97
  url = f"https://pypi.org/pypi/{package_name}/json"
86
98
  response = net.get(url)
87
99
  latest_version = response.json()["info"]["version"]
88
- if (
89
- version.parse(current_version) < version.parse(latest_version)
90
- and not get_or_set_last_reflex_version_check_datetime()
91
- ):
92
- # only show a warning when the host version is outdated and
93
- # the last_version_check_datetime is not set in reflex.json
100
+ if get_or_set_last_reflex_version_check_datetime():
101
+ # Versions were already checked and saved in reflex.json, no need to warn again
102
+ return
103
+ if version.parse(current_version) < version.parse(latest_version):
104
+ # Show a warning when the host version is older than PyPI version
94
105
  console.warn(
95
106
  f"Your version ({current_version}) of {package_name} is out of date. Upgrade to {latest_version} with 'pip install {package_name} --upgrade'"
96
107
  )
108
+ # Check for depreacted python versions
109
+ _python_version_check()
97
110
  except Exception:
98
111
  pass
99
112
 
@@ -290,7 +303,7 @@ def get_compiled_app(reload: bool = False, export: bool = False) -> ModuleType:
290
303
  """
291
304
  app_module = get_app(reload=reload)
292
305
  app = getattr(app_module, constants.CompileVars.APP)
293
- # For py3.8 and py3.9 compatibility when redis is used, we MUST add any decorator pages
306
+ # For py3.9 compatibility when redis is used, we MUST add any decorator pages
294
307
  # before compiling the app in a thread to avoid event loop error (REF-2172).
295
308
  app._apply_decorated_pages()
296
309
  app._compile(export=export)
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.9 & 3.10
125
125
  stamp = datetime.utcnow().isoformat()
126
126
  else:
127
127
  # for python 3.11 & 3.12
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
 
reflex/vars/sequence.py CHANGED
@@ -194,14 +194,6 @@ class StringVar(Var[str]):
194
194
  """
195
195
  return string_strip_operation(self)
196
196
 
197
- def bool(self):
198
- """Boolean conversion.
199
-
200
- Returns:
201
- The boolean value of the string.
202
- """
203
- return self.length() != 0
204
-
205
197
  def reversed(self) -> StringVar:
206
198
  """Reverse the string.
207
199
 
@@ -1,17 +1,16 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: reflex
3
- Version: 0.6.0a2
3
+ Version: 0.6.0a4
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.9,<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
14
  Classifier: Programming Language :: Python :: 3.9
16
15
  Classifier: Programming Language :: Python :: 3.10
17
16
  Classifier: Programming Language :: Python :: 3.11
@@ -88,7 +87,7 @@ See our [architecture page](https://reflex.dev/blog/2024-03-21-reflex-architectu
88
87
 
89
88
  ## ⚙️ Installation
90
89
 
91
- Open a terminal and run (Requires Python 3.8+):
90
+ Open a terminal and run (Requires Python 3.9+):
92
91
 
93
92
  ```bash
94
93
  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=4Y3gCELIePaVwNcoymcjdASBDReC9iaV9Mzj29vy69g,629
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
@@ -33,7 +33,7 @@ reflex/.templates/web/utils/helpers/debounce.js,sha256=xGhtTRtS_xIcaeqnYVvYJNseL
33
33
  reflex/.templates/web/utils/helpers/paste.js,sha256=ef30HsR83jRzzvZnl8yV79yqFP8TC_u8SlN99cCS_OM,1799
34
34
  reflex/.templates/web/utils/helpers/range.js,sha256=FevdZzCVxjF57ullfjpcUpeOXRxh5v09YnBB0jPbrS4,1152
35
35
  reflex/.templates/web/utils/helpers/throttle.js,sha256=qxeyaEojaTeX36FPGftzVWrzDsRQU4iqg3U9RJz9Vj4,566
36
- reflex/.templates/web/utils/state.js,sha256=G_mjYXiYhP4wnR36HnVrJXsexFJ8tiJfSUHMtdbGNYA,26088
36
+ reflex/.templates/web/utils/state.js,sha256=eEjYHBNKjWWBz7MwXN64vcCArKfWNbHBleI3LEMUIZU,26169
37
37
  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
@@ -43,7 +43,7 @@ reflex/app_mixins/__init__.py,sha256=Oegz3-gZLP9p2OAN5ALNbsgxuNQfS6lGZgQA8cc-9mQ
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
45
45
  reflex/app_mixins/mixin.py,sha256=wjudM02c-y1vV8aTNUUs9CsFta7pzXrvBqyEzXOW-g4,310
46
- reflex/app_module_for_backend.py,sha256=TOB73WSoPs-DVitLNjnCXDb5FXQFEvoIDIohDwovne4,1228
46
+ reflex/app_module_for_backend.py,sha256=Xr_JoKeX5Ks_EefejS6lRheMaPkiOlH_Xpzx9QNgAZw,1218
47
47
  reflex/base.py,sha256=hqdG9sRr2GNNRCg9C4pmf_BocMpsOLAY_rEKQ7KDDQQ,4334
48
48
  reflex/compiler/__init__.py,sha256=r8jqmDSFf09iV2lHlNhfc9XrTLjNxfDNwPYlxS4cmHE,27
49
49
  reflex/compiler/compiler.py,sha256=72QhapNEw8y2q2B9n4RQVLlAaX50eqZF9nVDPX8dM9k,17872
@@ -72,7 +72,7 @@ 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=Z8wQBXzEmlUT2AFX6WpOY1x2pezcfRHRBrW1UtgVjD8,78508
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
@@ -329,11 +329,11 @@ 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
332
+ reflex/custom_components/custom_components.py,sha256=1f9FzCR4EQ5t25pFLHrItV4_TN0XUAK7L49kpRHQMRs,33141
333
333
  reflex/event.py,sha256=TANj8GZYKKVQx20CAOjMQRTfGxua8xywxinpX5jurlA,31366
334
334
  reflex/experimental/__init__.py,sha256=usDkf5yRMHKHjdRa_KfedFeD-urOMAKBuNfsghzvre4,1974
335
335
  reflex/experimental/assets.py,sha256=nWj4454REHDP2gybtlhOac0Xyb0uqBMzjAFqYlaYwcE,1758
336
- reflex/experimental/client_state.py,sha256=FHvjJmWA2uvt-169ZQiCCiIYRYcbctaQJlzGbZNChPU,7682
336
+ reflex/experimental/client_state.py,sha256=t1oOMY1n7U3AqtsZtWfoioBThpxgyNY3i00egn9KqfA,7799
337
337
  reflex/experimental/hooks.py,sha256=fHYD4rX_f7T38gsFDqglD9E29FjPLf6jO1rN39DX7XM,2242
338
338
  reflex/experimental/layout.py,sha256=talXPlKuRzJFNGoyc3ATEaJg7_Z4jgTAAXiTi29STWs,7586
339
339
  reflex/experimental/layout.pyi,sha256=ziRPPYXnSf_DKNCIKHdcJVOxjqzDrjm1QwN9idrQ7eE,18075
@@ -353,30 +353,30 @@ 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
363
363
  reflex/utils/path_ops.py,sha256=0-X6FZh-ktqEj_yKtS9IcuzkOROchtZLUXoyV6toD4k,5195
364
- reflex/utils/prerequisites.py,sha256=uMnGyGt-noYAkrahSCOzpUqe1DNbGrywzq8PcG8wtAQ,52429
364
+ reflex/utils/prerequisites.py,sha256=a5cB0G2_LvHywaxXX4VxGDyIgd8CyzqcLk3-TOtSIZs,52926
365
365
  reflex/utils/processes.py,sha256=y8X5PxycEWT1ItLtpIS-rzrUvNQ9MUOkHdIg_zK9Vp0,13228
366
366
  reflex/utils/pyi_generator.py,sha256=n9GpxSOeTvIH2pJHd748TUbD0bZgoqEJCxXLD5aAjvQ,34574
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
370
+ reflex/utils/telemetry.py,sha256=zyy-bQjf18qQM-iTACIA9T7VBWRpm-DNES7iNJLrieo,5596
371
371
  reflex/utils/types.py,sha256=DvS1pESOEs0RTTJYs56CRrmPltmkiXcfyzCF06DGVwM,18519
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
- 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,,
377
+ reflex/vars/sequence.py,sha256=3Qz9FdtAPzEGRKq_z1jJvi8I6-vHaAmzRtZE-agkKDU,44301
378
+ reflex-0.6.0a4.dist-info/LICENSE,sha256=dw3zLrp9f5ObD7kqS32vWfhcImfO52PMmRqvtxq_YEE,11358
379
+ reflex-0.6.0a4.dist-info/METADATA,sha256=J5sP6bwzSa4OlD3EuK0br8m7kJfxaFCuXcQlut-PPfc,12111
380
+ reflex-0.6.0a4.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
381
+ reflex-0.6.0a4.dist-info/entry_points.txt,sha256=H1Z5Yat_xJfy0dRT1Frk2PkO_p41Xy7fCKlj4FcdL9o,44
382
+ reflex-0.6.0a4.dist-info/RECORD,,