reflex 0.7.0a3__py3-none-any.whl → 0.7.0a5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of reflex might be problematic. Click here for more details.

reflex/event.py CHANGED
@@ -26,6 +26,7 @@ from typing import (
26
26
 
27
27
  from typing_extensions import (
28
28
  Protocol,
29
+ Self,
29
30
  TypeAliasType,
30
31
  TypedDict,
31
32
  TypeVar,
@@ -110,7 +111,7 @@ class EventActionsMixin:
110
111
  event_actions: Dict[str, Union[bool, int]] = dataclasses.field(default_factory=dict)
111
112
 
112
113
  @property
113
- def stop_propagation(self):
114
+ def stop_propagation(self) -> Self:
114
115
  """Stop the event from bubbling up the DOM tree.
115
116
 
116
117
  Returns:
@@ -122,7 +123,7 @@ class EventActionsMixin:
122
123
  )
123
124
 
124
125
  @property
125
- def prevent_default(self):
126
+ def prevent_default(self) -> Self:
126
127
  """Prevent the default behavior of the event.
127
128
 
128
129
  Returns:
@@ -133,7 +134,7 @@ class EventActionsMixin:
133
134
  event_actions={"preventDefault": True, **self.event_actions},
134
135
  )
135
136
 
136
- def throttle(self, limit_ms: int):
137
+ def throttle(self, limit_ms: int) -> Self:
137
138
  """Throttle the event handler.
138
139
 
139
140
  Args:
@@ -147,7 +148,7 @@ class EventActionsMixin:
147
148
  event_actions={"throttle": limit_ms, **self.event_actions},
148
149
  )
149
150
 
150
- def debounce(self, delay_ms: int):
151
+ def debounce(self, delay_ms: int) -> Self:
151
152
  """Debounce the event handler.
152
153
 
153
154
  Args:
@@ -162,7 +163,7 @@ class EventActionsMixin:
162
163
  )
163
164
 
164
165
  @property
165
- def temporal(self):
166
+ def temporal(self) -> Self:
166
167
  """Do not queue the event if the backend is down.
167
168
 
168
169
  Returns:
@@ -1773,7 +1774,7 @@ V4 = TypeVar("V4")
1773
1774
  V5 = TypeVar("V5")
1774
1775
 
1775
1776
 
1776
- class EventCallback(Generic[Unpack[P]]):
1777
+ class EventCallback(Generic[Unpack[P]], EventActionsMixin):
1777
1778
  """A descriptor that wraps a function to be used as an event."""
1778
1779
 
1779
1780
  def __init__(self, func: Callable[[Any, Unpack[P]], Any]):
@@ -1784,24 +1785,6 @@ class EventCallback(Generic[Unpack[P]]):
1784
1785
  """
1785
1786
  self.func = func
1786
1787
 
1787
- @property
1788
- def prevent_default(self):
1789
- """Prevent default behavior.
1790
-
1791
- Returns:
1792
- The event callback with prevent default behavior.
1793
- """
1794
- return self
1795
-
1796
- @property
1797
- def stop_propagation(self):
1798
- """Stop event propagation.
1799
-
1800
- Returns:
1801
- The event callback with stop propagation behavior.
1802
- """
1803
- return self
1804
-
1805
1788
  @overload
1806
1789
  def __call__(
1807
1790
  self: EventCallback[Unpack[Q]],
reflex/reflex.py CHANGED
@@ -145,10 +145,7 @@ def _run(
145
145
  exec.output_system_info()
146
146
 
147
147
  # If no --frontend-only and no --backend-only, then turn on frontend and backend both
148
- if not frontend and not backend:
149
- frontend = True
150
- backend = True
151
-
148
+ frontend, backend = prerequisites.check_running_mode(frontend, backend)
152
149
  if not frontend and backend:
153
150
  _skip_compile()
154
151
 
@@ -306,10 +303,18 @@ def export(
306
303
  True, "--no-zip", help="Disable zip for backend and frontend exports."
307
304
  ),
308
305
  frontend: bool = typer.Option(
309
- True, "--backend-only", help="Export only backend.", show_default=False
306
+ False,
307
+ "--frontend-only",
308
+ help="Export only frontend.",
309
+ show_default=False,
310
+ envvar=environment.REFLEX_FRONTEND_ONLY.name,
310
311
  ),
311
312
  backend: bool = typer.Option(
312
- True, "--frontend-only", help="Export only frontend.", show_default=False
313
+ False,
314
+ "--backend-only",
315
+ help="Export only backend.",
316
+ show_default=False,
317
+ envvar=environment.REFLEX_BACKEND_ONLY.name,
313
318
  ),
314
319
  zip_dest_dir: str = typer.Option(
315
320
  str(Path.cwd()),
@@ -332,7 +337,9 @@ def export(
332
337
  from reflex.utils import export as export_utils
333
338
  from reflex.utils import prerequisites
334
339
 
335
- if prerequisites.needs_reinit(frontend=True):
340
+ frontend, backend = prerequisites.check_running_mode(frontend, backend)
341
+
342
+ if prerequisites.needs_reinit(frontend=frontend or not backend):
336
343
  _init(name=config.app_name, loglevel=loglevel)
337
344
 
338
345
  if frontend and not config.show_built_with_reflex:
reflex/utils/console.py CHANGED
@@ -2,8 +2,10 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import contextlib
5
6
  import inspect
6
7
  import shutil
8
+ import time
7
9
  from pathlib import Path
8
10
  from types import FrameType
9
11
 
@@ -317,3 +319,20 @@ def status(*args, **kwargs):
317
319
  A new status.
318
320
  """
319
321
  return _console.status(*args, **kwargs)
322
+
323
+
324
+ @contextlib.contextmanager
325
+ def timing(msg: str):
326
+ """Create a context manager to time a block of code.
327
+
328
+ Args:
329
+ msg: The message to display.
330
+
331
+ Yields:
332
+ None.
333
+ """
334
+ start = time.time()
335
+ try:
336
+ yield
337
+ finally:
338
+ debug(f"[white]\\[timing] {msg}: {time.time() - start:.2f}s[/white]")
reflex/utils/imports.py CHANGED
@@ -109,6 +109,9 @@ class ImportVar:
109
109
  # whether this import should be rendered or not
110
110
  render: Optional[bool] = True
111
111
 
112
+ # The path of the package to import from.
113
+ package_path: str = "/"
114
+
112
115
  # whether this import package should be added to transpilePackages in next.config.js
113
116
  # https://nextjs.org/docs/app/api-reference/next-config-js/transpilePackages
114
117
  transpile: Optional[bool] = False
reflex/utils/path_ops.py CHANGED
@@ -245,3 +245,49 @@ def find_replace(directory: str | Path, find: str, replace: str):
245
245
  text = filepath.read_text(encoding="utf-8")
246
246
  text = re.sub(find, replace, text)
247
247
  filepath.write_text(text, encoding="utf-8")
248
+
249
+
250
+ def samefile(file1: Path, file2: Path) -> bool:
251
+ """Check if two files are the same.
252
+
253
+ Args:
254
+ file1: The first file.
255
+ file2: The second file.
256
+
257
+ Returns:
258
+ Whether the files are the same. If either file does not exist, returns False.
259
+ """
260
+ if file1.exists() and file2.exists():
261
+ return file1.samefile(file2)
262
+
263
+ return False
264
+
265
+
266
+ def update_directory_tree(src: Path, dest: Path):
267
+ """Recursively copies a directory tree from src to dest.
268
+ Only copies files if the destination file is missing or modified earlier than the source file.
269
+
270
+ Args:
271
+ src: Source directory
272
+ dest: Destination directory
273
+
274
+ Raises:
275
+ ValueError: If the source is not a directory
276
+ """
277
+ if not src.is_dir():
278
+ raise ValueError(f"Source {src} is not a directory")
279
+
280
+ # Ensure the destination directory exists
281
+ dest.mkdir(parents=True, exist_ok=True)
282
+
283
+ for item in src.iterdir():
284
+ dest_item = dest / item.name
285
+
286
+ if item.is_dir():
287
+ # Recursively copy subdirectories
288
+ update_directory_tree(item, dest_item)
289
+ elif item.is_file() and (
290
+ not dest_item.exists() or item.stat().st_mtime > dest_item.stat().st_mtime
291
+ ):
292
+ # Copy file if it doesn't exist in the destination or is older than the source
293
+ shutil.copy2(item, dest_item)
@@ -1225,6 +1225,21 @@ def install_frontend_packages(packages: set[str], config: Config):
1225
1225
  )
1226
1226
 
1227
1227
 
1228
+ def check_running_mode(frontend: bool, backend: bool) -> tuple[bool, bool]:
1229
+ """Check if the app is running in frontend or backend mode.
1230
+
1231
+ Args:
1232
+ frontend: Whether to run the frontend of the app.
1233
+ backend: Whether to run the backend of the app.
1234
+
1235
+ Returns:
1236
+ The running modes.
1237
+ """
1238
+ if not frontend and not backend:
1239
+ return True, True
1240
+ return frontend, backend
1241
+
1242
+
1228
1243
  def needs_reinit(frontend: bool = True) -> bool:
1229
1244
  """Check if an app needs to be reinitialized.
1230
1245
 
@@ -1293,10 +1308,13 @@ def validate_bun():
1293
1308
  """
1294
1309
  bun_path = path_ops.get_bun_path()
1295
1310
 
1296
- if bun_path and not bun_path.samefile(constants.Bun.DEFAULT_PATH):
1311
+ if bun_path is None:
1312
+ return
1313
+
1314
+ if not path_ops.samefile(bun_path, constants.Bun.DEFAULT_PATH):
1297
1315
  console.info(f"Using custom Bun path: {bun_path}")
1298
1316
  bun_version = get_bun_version()
1299
- if not bun_version:
1317
+ if bun_version is None:
1300
1318
  console.error(
1301
1319
  "Failed to obtain bun version. Make sure the specified bun path in your config is correct."
1302
1320
  )
reflex/vars/base.py CHANGED
@@ -2238,6 +2238,27 @@ class ComputedVar(Var[RETURN_TYPE]):
2238
2238
  owner: Type,
2239
2239
  ) -> ArrayVar[tuple[LIST_INSIDE, ...]]: ...
2240
2240
 
2241
+ @overload
2242
+ def __get__(
2243
+ self: ComputedVar[BASE_TYPE],
2244
+ instance: None,
2245
+ owner: Type,
2246
+ ) -> ObjectVar[BASE_TYPE]: ...
2247
+
2248
+ @overload
2249
+ def __get__(
2250
+ self: ComputedVar[SQLA_TYPE],
2251
+ instance: None,
2252
+ owner: Type,
2253
+ ) -> ObjectVar[SQLA_TYPE]: ...
2254
+
2255
+ if TYPE_CHECKING:
2256
+
2257
+ @overload
2258
+ def __get__(
2259
+ self: ComputedVar[DATACLASS_TYPE], instance: None, owner: Any
2260
+ ) -> ObjectVar[DATACLASS_TYPE]: ...
2261
+
2241
2262
  @overload
2242
2263
  def __get__(self, instance: None, owner: Type) -> ComputedVar[RETURN_TYPE]: ...
2243
2264
 
@@ -2484,6 +2505,27 @@ class AsyncComputedVar(ComputedVar[RETURN_TYPE]):
2484
2505
  owner: Type,
2485
2506
  ) -> ArrayVar[tuple[LIST_INSIDE, ...]]: ...
2486
2507
 
2508
+ @overload
2509
+ def __get__(
2510
+ self: AsyncComputedVar[BASE_TYPE],
2511
+ instance: None,
2512
+ owner: Type,
2513
+ ) -> ObjectVar[BASE_TYPE]: ...
2514
+
2515
+ @overload
2516
+ def __get__(
2517
+ self: AsyncComputedVar[SQLA_TYPE],
2518
+ instance: None,
2519
+ owner: Type,
2520
+ ) -> ObjectVar[SQLA_TYPE]: ...
2521
+
2522
+ if TYPE_CHECKING:
2523
+
2524
+ @overload
2525
+ def __get__(
2526
+ self: AsyncComputedVar[DATACLASS_TYPE], instance: None, owner: Any
2527
+ ) -> ObjectVar[DATACLASS_TYPE]: ...
2528
+
2487
2529
  @overload
2488
2530
  def __get__(self, instance: None, owner: Type) -> AsyncComputedVar[RETURN_TYPE]: ...
2489
2531
 
reflex/vars/object.py CHANGED
@@ -22,7 +22,12 @@ from typing_extensions import is_typeddict
22
22
 
23
23
  from reflex.utils import types
24
24
  from reflex.utils.exceptions import VarAttributeError
25
- from reflex.utils.types import GenericType, get_attribute_access_type, get_origin
25
+ from reflex.utils.types import (
26
+ GenericType,
27
+ get_attribute_access_type,
28
+ get_origin,
29
+ safe_issubclass,
30
+ )
26
31
 
27
32
  from .base import (
28
33
  CachedVarOperation,
@@ -187,10 +192,14 @@ class ObjectVar(Var[OBJECT_TYPE], python_types=Mapping):
187
192
  Returns:
188
193
  The item from the object.
189
194
  """
195
+ from .sequence import LiteralStringVar
196
+
190
197
  if not isinstance(key, (StringVar, str, int, NumberVar)) or (
191
198
  isinstance(key, NumberVar) and key._is_strict_float()
192
199
  ):
193
200
  raise_unsupported_operand_types("[]", (type(self), type(key)))
201
+ if isinstance(key, str) and isinstance(Var.create(key), LiteralStringVar):
202
+ return self.__getattr__(key)
194
203
  return ObjectItemOperation.create(self, key).guess_type()
195
204
 
196
205
  # NoReturn is used here to catch when key value is Any
@@ -260,12 +269,12 @@ class ObjectVar(Var[OBJECT_TYPE], python_types=Mapping):
260
269
  if types.is_optional(var_type):
261
270
  var_type = get_args(var_type)[0]
262
271
 
263
- fixed_type = var_type if isclass(var_type) else get_origin(var_type)
272
+ fixed_type = get_origin(var_type) or var_type
264
273
 
265
274
  if (
266
- (isclass(fixed_type) and not issubclass(fixed_type, Mapping))
275
+ is_typeddict(fixed_type)
276
+ or (isclass(fixed_type) and not safe_issubclass(fixed_type, Mapping))
267
277
  or (fixed_type in types.UnionTypes)
268
- or is_typeddict(fixed_type)
269
278
  ):
270
279
  attribute_type = get_attribute_access_type(var_type, name)
271
280
  if attribute_type is None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: reflex
3
- Version: 0.7.0a3
3
+ Version: 0.7.0a5
4
4
  Summary: Web apps in pure Python.
5
5
  License: Apache-2.0
6
6
  Keywords: web,framework
@@ -40,7 +40,7 @@ reflex/__init__.py,sha256=vaj8MEv0GwrvMzAYQeayyMvRE4TuAD1Xx3pDpjiY3sA,10289
40
40
  reflex/__init__.pyi,sha256=fOSkQZ2RHNzoLXqoVy-2gC5ys45Erxia1yPp34UFk_k,11235
41
41
  reflex/__main__.py,sha256=6cVrGEyT3j3tEvlEVUatpaYfbB5EF3UVY-6vc_Z7-hw,108
42
42
  reflex/admin.py,sha256=_3pkkauMiTGJJ0kwAEBnsUWAgZZ_1WNnCaaObbhpmUI,374
43
- reflex/app.py,sha256=Kdt-6MRvnSvi8aPjNUdKc5Elwp3vYESEDMZYrICV3oU,61428
43
+ reflex/app.py,sha256=Te36db1j3ocy03e1OC6De1h60vDqfHZh_wxLLFn68wk,62319
44
44
  reflex/app_mixins/__init__.py,sha256=Oegz3-gZLP9p2OAN5ALNbsgxuNQfS6lGZgQA8cc-9mQ,137
45
45
  reflex/app_mixins/lifespan.py,sha256=Xs5KiidoyO921oaBuEg7zaR8B1_SPYDZLouel6u9PRo,3298
46
46
  reflex/app_mixins/middleware.py,sha256=lB8I67SEbqcJhp3aqMLZFIZekCYKeMby-Ph2sedIYJI,3349
@@ -51,7 +51,7 @@ reflex/base.py,sha256=2ft5udkFRgZpSA8WbkkCk4tUumj6YsGOUM-RDYDCa20,4236
51
51
  reflex/compiler/__init__.py,sha256=r8jqmDSFf09iV2lHlNhfc9XrTLjNxfDNwPYlxS4cmHE,27
52
52
  reflex/compiler/compiler.py,sha256=8fa-IvHJKpk3URrfEjY049Zv220o4BEZ8Kokdkd4QhY,21046
53
53
  reflex/compiler/templates.py,sha256=XsimfIuF-aYnk7r1LfLVJWW8447Lra32cxZBrw20YnU,5900
54
- reflex/compiler/utils.py,sha256=6UfBj9I8Y_kZ1HQj6j-wWAV2FoSuPTbI-n0REs6iWs4,15902
54
+ reflex/compiler/utils.py,sha256=HPDt64CqgWFVUi9tTPMGfSKV0E3M6RXg1jzzRHVWViM,16295
55
55
  reflex/components/__init__.py,sha256=zbIXThv1WPI0FdIGf9G9RAmGoCRoGy7nHcSZ8K5D5bA,624
56
56
  reflex/components/__init__.pyi,sha256=qoj1zIWaitcZOGcJ6k7wuGJk_GAJCE9Xtx8CeRVrvoE,861
57
57
  reflex/components/base/__init__.py,sha256=QIOxOPT87WrSE4TSHAsZ-358VzvUXAe1w8vWogQ3Uuo,730
@@ -97,7 +97,7 @@ reflex/components/core/html.pyi,sha256=Gh5bJ3x88302rvIysfsrPb-Rc4tLmlqaDpoJYa0g4
97
97
  reflex/components/core/layout/__init__.py,sha256=znldZaj_NGt8qCZDG70GMwjMTskcvCf_2N_EjCAHwdc,30
98
98
  reflex/components/core/match.py,sha256=Dp_kAwkJwT8TvBiaLK-OwQyGl24sian8k_o7bK-P-54,9281
99
99
  reflex/components/core/responsive.py,sha256=ACZdtJ4a4F8B3dm1k8h6J2_UJx0Z5LDB7XHQ2ty4wAc,1911
100
- reflex/components/core/sticky.py,sha256=F5IFacgyadaOz4WoO6SxzdPuCWZKYb_1Qvcw6qcq0Dw,4932
100
+ reflex/components/core/sticky.py,sha256=2B3TxrwG2Rtp_lv1VkMOIF2bqSiT7qYGbqbiZiMKxKY,3856
101
101
  reflex/components/core/sticky.pyi,sha256=x2ruBp6OhVR68npFhbdtw9saH3oo6To2JvG7y8jLTY4,18947
102
102
  reflex/components/core/upload.py,sha256=0cq0HGpSsrL1mbvG1GtUCcZUnv6QJwZH1CnexnU8Jhw,11948
103
103
  reflex/components/core/upload.pyi,sha256=llY-VTV6qrbcN9csj2UAfEv_uHo3am_NJaXc9k--E1Q,15011
@@ -163,9 +163,9 @@ reflex/components/next/link.py,sha256=YYhkgkHGqvyf5JGv-ujatzp_nOqEUAxWY9FIWk7r39
163
163
  reflex/components/next/link.pyi,sha256=E63U9yoAHdtlvucg-mX1O58j4uWpIW8433DFxFH6YBI,2423
164
164
  reflex/components/next/video.py,sha256=GngxgHvAfGwRHkPUBNp6_GfGarP5mMN6KFA_-VizDOI,735
165
165
  reflex/components/next/video.pyi,sha256=OqvLHkAzgF7-7lb7uaE-8Mfg60XZXdkU4jFnUMapXi4,2364
166
- reflex/components/plotly/__init__.py,sha256=OX-Ly11fIg0uRTQHfqNVKV4M9xqMqLOqXzZIfKNYE0w,77
167
- reflex/components/plotly/plotly.py,sha256=fG4rGIjOgaYD_0V9JW_5jVezMOZf_MGEuxFZ_V5Zf8s,8775
168
- reflex/components/plotly/plotly.pyi,sha256=hQN2kTFTalVe-5lTtxmLdEDvk4fVUo0ovbrcaNjJT1E,6695
166
+ reflex/components/plotly/__init__.py,sha256=6B_woBJhkrVA9O_AbOTbsA_SxWsqjicYHmLA9FLjGfU,650
167
+ reflex/components/plotly/plotly.py,sha256=bv9uvQw0EHhwcgiYHotPBWoq8FMSoCGB7TqbD3lHuMQ,15343
168
+ reflex/components/plotly/plotly.pyi,sha256=VGJggBUIodQTehSCNgdrkY9eDlwWZZaUXqIhEh0pQOc,47888
169
169
  reflex/components/props.py,sha256=8F2ZNeF16BDiTh-E4F-U_vks41BMJgmkTM7xbjGvfOA,2593
170
170
  reflex/components/radix/__init__.py,sha256=fRsLvIO3MrTtPOXtmnxYDB9phvzlcbyB_utgpafYMho,474
171
171
  reflex/components/radix/__init__.pyi,sha256=YpWw_k35yv_Yq_0RZNCb52fJZ3dANWAnQllhVoVCWEE,3988
@@ -342,7 +342,7 @@ reflex/constants/style.py,sha256=EPgRYHhAlcrPUBc2HkDTdTj-Q0uDAXHlq8Sp6D35Zf4,475
342
342
  reflex/constants/utils.py,sha256=HGOSq9c-xGbCb1xoLAGLBdc-FOE8iuBzvuU24zSfsV0,789
343
343
  reflex/custom_components/__init__.py,sha256=R4zsvOi4dfPmHc18KEphohXnQFBPnUCb50cMR5hSLDE,36
344
344
  reflex/custom_components/custom_components.py,sha256=alW_lKBVemMQhuGobzeycgd34mvz37kPNTytLfLplmQ,33414
345
- reflex/event.py,sha256=aXVTgP8jFcd8G4-X2JviOQTcQc0B-dGz6mu7ocyPRqY,61225
345
+ reflex/event.py,sha256=JLE5y2pGgUiVmxMReTKNSkcw6fCkONqjXuN4tM3jkts,60904
346
346
  reflex/experimental/__init__.py,sha256=bvJ6qFeO3xT3L-8IBtk4ecoi5rda3EDvblgNP60yhEo,2206
347
347
  reflex/experimental/client_state.py,sha256=5lmCM7fzEtJp5eegUCoygJRYXf6f1U9UiFyuWxsznbs,9906
348
348
  reflex/experimental/hooks.py,sha256=CHYGrAE5t8riltrJmDFgJ4D2Vhmhw-y3B3MSGNlOQow,2366
@@ -360,7 +360,7 @@ reflex/middleware/hydrate_middleware.py,sha256=QJBEZI-4Jtn3345WgZDQ-twIbJzfiHKvU
360
360
  reflex/middleware/middleware.py,sha256=9eASK3MrbK1AvT2Sx5GFxXNwSuNW8_LTRGvPY1JccU4,1171
361
361
  reflex/model.py,sha256=yOLkxNOgi3GY9mT2E-6rkK-uLv8Av-kYSJ7I19y9JzE,17559
362
362
  reflex/page.py,sha256=lbI5Sd4RzZadPV6cYBSNRDIlNlRwEnOv1snF2RGKH04,2392
363
- reflex/reflex.py,sha256=YZrdis1e2ubQoyZBhcAbSJePxgL4UZ1h4uzIQM6qKBE,19716
363
+ reflex/reflex.py,sha256=FBQYdPaONW3IhYBmNJ-3Etqf9tIV3x_qAwZ8qnvHJZo,19962
364
364
  reflex/route.py,sha256=nn_hJwtQdjiqH_dHXfqMGWKllnyPQZTSR-KWdHDhoOs,4210
365
365
  reflex/state.py,sha256=W6JeXxj9p5EgtpSAbnpOqTH0liOVZykzt6Nu8A10Nvw,139638
366
366
  reflex/style.py,sha256=LXQjo6YhmdqUA59dV9OUxWuScyuYEqnE0rbWYkZ_ogI,13277
@@ -369,16 +369,16 @@ reflex/utils/__init__.py,sha256=y-AHKiRQAhk2oAkvn7W8cRVTZVK625ff8tTwvZtO7S4,24
369
369
  reflex/utils/build.py,sha256=5S8zQYiSp2czardXzwY060qScxNDiYWabUzs8elQivE,8522
370
370
  reflex/utils/codespaces.py,sha256=TzDK--pHwP4r8Nzl0iB_8r-cOFmmL6nHfZ9xRQHA-KY,2754
371
371
  reflex/utils/compat.py,sha256=aSJH_M6iomgHPQ4onQ153xh1MWqPi3HSYDzE68N6gZM,2635
372
- reflex/utils/console.py,sha256=UeapvxGOcISv77tylHxech5F5R53mmNk4cnwcTseD8Q,8948
372
+ reflex/utils/console.py,sha256=jGPhAy-BBBRLEy0DRD8EoP-2ziPR4-N5CK53wUethFU,9307
373
373
  reflex/utils/exceptions.py,sha256=qL5E6F-lKcY7FrYJwKg-LjdvuugYnjszdnbfWkLemsE,7844
374
374
  reflex/utils/exec.py,sha256=bc966tpJ8rUh9J8vhZc3txLGp8nAdmUCn76IKLmY1hU,16066
375
375
  reflex/utils/export.py,sha256=wsyC6Atsu8LBZlrX0PhjnisMwhFycf4a3WH8DG1dam0,2567
376
376
  reflex/utils/format.py,sha256=j56pM45c_-nq8Fnw8Q1z20Y0wFJ32fPpCPFLgH_xCQM,19876
377
- reflex/utils/imports.py,sha256=CreBXamunK4I8BcBY-ET0P3kHLDZim1hV8ESoOBkOwo,3899
377
+ reflex/utils/imports.py,sha256=8lTJ8qCJlMUlQnZssOv0l2nntuTfGfLsLqkJAS5JTbA,3974
378
378
  reflex/utils/lazy_loader.py,sha256=-3DcwIqHNft2fb1ikgDYAMiEwNfbiWfrTBAf1gEVX2o,1367
379
379
  reflex/utils/net.py,sha256=0Yd9OLK8R_px2sqnqrDkTky6hYHtG2pEDvvilOjDfjc,1219
380
- reflex/utils/path_ops.py,sha256=iX92VuUD0xu0FTtF8_azWELF33n9P6C0mOT0WFfThCw,6137
381
- reflex/utils/prerequisites.py,sha256=19rcXlTUBhqVnYIFVnYcwgRQTie6_5lFyAU9OHVeQSA,65652
380
+ reflex/utils/path_ops.py,sha256=FjVAkILH1mN2tPeoWPNN7NTVD11DiXF4RaPGEUUNlMA,7504
381
+ reflex/utils/prerequisites.py,sha256=EWWnjJQQUBpJzBLeNj-ZQvQbQqveEVOCoQHlW-fvRqQ,66102
382
382
  reflex/utils/processes.py,sha256=h_vXmQdInVCaCQ1cGgIQd4x5CbzYRSFy6n1U4iWkMy8,13729
383
383
  reflex/utils/pyi_generator.py,sha256=6BVJ1KrLH8WvfYjBVm5-zjI6-Zdhzngp5ubkixsCIl4,41240
384
384
  reflex/utils/redir.py,sha256=bmQGAgoNWwySeLRQTpoMpmKInwIOCW77wkXT61fwcj8,1868
@@ -387,15 +387,15 @@ reflex/utils/serializers.py,sha256=xQjEiIqZS0tjxuEjqETXikePzSAbCxC6g_JnzNYk2s4,1
387
387
  reflex/utils/telemetry.py,sha256=PfbtZKtAaP_ufad5ZNqJYrtvkjDrqEFUGy9We9-B0pg,5804
388
388
  reflex/utils/types.py,sha256=kZHLmRibRnTRex5cbjlnFqsYpi2CSbfsfOQ_vS70cxU,27124
389
389
  reflex/vars/__init__.py,sha256=2Kv6Oh9g3ISZFESjL1al8KiO7QBZUXmLKGMCBsP-DoY,1243
390
- reflex/vars/base.py,sha256=nvg4X1_lyy2lBplZUiYUhfG_JxVFpJxZYHRd8vdsEoM,99185
390
+ reflex/vars/base.py,sha256=vsKm-UHWFf6keupqgC_x4B8QyILH1xgJwMjV4-ow9Q4,100162
391
391
  reflex/vars/datetime.py,sha256=6j63p5uZiWLldiIl3VVh9jWghuW1_GyBevyy2b4rdr4,5803
392
392
  reflex/vars/dep_tracking.py,sha256=kluvF4Pfbpdqf0GcpmYHjT1yP-D1erAzaSQP6qIxjB0,13846
393
393
  reflex/vars/function.py,sha256=v2W5JHgCK9Afu2mobFeoj03G6tbih1Y-wM7LQBwA9vU,14777
394
394
  reflex/vars/number.py,sha256=rVybcAoMOOFsWAbA_BZN3GVx9p4W_YPLHVYRCJqti04,27861
395
- reflex/vars/object.py,sha256=bolalu-v36VT_vwVrX5dh_o6x_zkvAUZlYZbrDrNHag,14841
395
+ reflex/vars/object.py,sha256=jfvxtrklztDtbD2zgNVNCZZE6X6HQMB6yJHPhtb0hUo,15033
396
396
  reflex/vars/sequence.py,sha256=GiSXbOIcoy7VSrecuBjbhg5G4QTjFV0Rcfn5T0EsecA,52032
397
- reflex-0.7.0a3.dist-info/LICENSE,sha256=dw3zLrp9f5ObD7kqS32vWfhcImfO52PMmRqvtxq_YEE,11358
398
- reflex-0.7.0a3.dist-info/METADATA,sha256=tqTL_Z0lxST9pxOPdnVgOWcXzYEm76vsJQfeWXMvTPI,12073
399
- reflex-0.7.0a3.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
400
- reflex-0.7.0a3.dist-info/entry_points.txt,sha256=H1Z5Yat_xJfy0dRT1Frk2PkO_p41Xy7fCKlj4FcdL9o,44
401
- reflex-0.7.0a3.dist-info/RECORD,,
397
+ reflex-0.7.0a5.dist-info/LICENSE,sha256=dw3zLrp9f5ObD7kqS32vWfhcImfO52PMmRqvtxq_YEE,11358
398
+ reflex-0.7.0a5.dist-info/METADATA,sha256=Ug_nreTx9SHaLFb00XprWr03Lyn8fU_5TO6EGdtYIrk,12073
399
+ reflex-0.7.0a5.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
400
+ reflex-0.7.0a5.dist-info/entry_points.txt,sha256=H1Z5Yat_xJfy0dRT1Frk2PkO_p41Xy7fCKlj4FcdL9o,44
401
+ reflex-0.7.0a5.dist-info/RECORD,,