reflex 0.3.2__py3-none-any.whl → 0.3.3a1__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 (48) hide show
  1. reflex/.templates/jinja/web/pages/custom_component.js.jinja2 +20 -3
  2. reflex/.templates/web/next.config.js +1 -0
  3. reflex/.templates/web/utils/helpers/range.js +43 -0
  4. reflex/.templates/web/utils/state.js +10 -6
  5. reflex/__init__.py +312 -40
  6. reflex/__init__.pyi +477 -0
  7. reflex/compiler/compiler.py +3 -0
  8. reflex/components/__init__.py +138 -138
  9. reflex/components/component.py +29 -22
  10. reflex/components/datadisplay/__init__.py +3 -1
  11. reflex/components/datadisplay/code.py +388 -14
  12. reflex/components/datadisplay/code.pyi +1146 -10
  13. reflex/components/forms/button.py +3 -0
  14. reflex/components/forms/checkbox.py +3 -0
  15. reflex/components/forms/form.py +90 -27
  16. reflex/components/forms/input.py +3 -0
  17. reflex/components/forms/numberinput.py +3 -0
  18. reflex/components/forms/pininput.py +77 -21
  19. reflex/components/forms/radio.py +3 -0
  20. reflex/components/forms/rangeslider.py +3 -0
  21. reflex/components/forms/select.py +3 -0
  22. reflex/components/forms/slider.py +3 -0
  23. reflex/components/forms/switch.py +3 -0
  24. reflex/components/forms/textarea.py +3 -0
  25. reflex/components/libs/chakra.py +2 -0
  26. reflex/components/libs/chakra.pyi +323 -24
  27. reflex/components/tags/tag.py +3 -2
  28. reflex/components/typography/markdown.py +10 -0
  29. reflex/constants/installer.py +4 -4
  30. reflex/event.py +4 -0
  31. reflex/page.py +3 -4
  32. reflex/page.pyi +17 -0
  33. reflex/reflex.py +3 -0
  34. reflex/state.py +31 -12
  35. reflex/testing.py +1 -1
  36. reflex/utils/build.py +24 -19
  37. reflex/utils/console.py +5 -1
  38. reflex/utils/format.py +26 -9
  39. reflex/utils/prerequisites.py +27 -28
  40. reflex/utils/processes.py +5 -4
  41. reflex/vars.py +80 -12
  42. reflex/vars.pyi +7 -0
  43. {reflex-0.3.2.dist-info → reflex-0.3.3a1.dist-info}/METADATA +3 -2
  44. {reflex-0.3.2.dist-info → reflex-0.3.3a1.dist-info}/RECORD +47 -45
  45. reflex/.templates/web/styles/code/prism.js +0 -1015
  46. {reflex-0.3.2.dist-info → reflex-0.3.3a1.dist-info}/LICENSE +0 -0
  47. {reflex-0.3.2.dist-info → reflex-0.3.3a1.dist-info}/WHEEL +0 -0
  48. {reflex-0.3.2.dist-info → reflex-0.3.3a1.dist-info}/entry_points.txt +0 -0
reflex/utils/console.py CHANGED
@@ -45,7 +45,11 @@ def debug(msg: str, **kwargs):
45
45
  kwargs: Keyword arguments to pass to the print function.
46
46
  """
47
47
  if _LOG_LEVEL <= LogLevel.DEBUG:
48
- print(f"[blue]Debug: {msg}[/blue]", **kwargs)
48
+ msg_ = f"[blue]Debug: {msg}[/blue]"
49
+ if progress := kwargs.pop("progress", None):
50
+ progress.console.print(msg_, **kwargs)
51
+ else:
52
+ print(msg_, **kwargs)
49
53
 
50
54
 
51
55
  def info(msg: str, **kwargs):
reflex/utils/format.py CHANGED
@@ -122,7 +122,7 @@ def to_snake_case(text: str) -> str:
122
122
  The snake case string.
123
123
  """
124
124
  s1 = re.sub("(.)([A-Z][a-z]+)", r"\1_\2", text)
125
- return re.sub("([a-z0-9])([A-Z])", r"\1_\2", s1).lower()
125
+ return re.sub("([a-z0-9])([A-Z])", r"\1_\2", s1).lower().replace("-", "_")
126
126
 
127
127
 
128
128
  def to_camel_case(text: str) -> str:
@@ -137,14 +137,9 @@ def to_camel_case(text: str) -> str:
137
137
  Returns:
138
138
  The camel case string.
139
139
  """
140
- if "_" not in text:
141
- return text
142
- camel = "".join(
143
- word.capitalize() if i > 0 else word.lower()
144
- for i, word in enumerate(text.lstrip("_").split("_"))
145
- )
146
- prefix = "_" if text.startswith("_") else ""
147
- return prefix + camel
140
+ words = re.split("[_-]", text)
141
+ # Capitalize the first letter of each word except the first one
142
+ return words[0] + "".join(x.capitalize() for x in words[1:])
148
143
 
149
144
 
150
145
  def to_title_case(text: str) -> str:
@@ -627,6 +622,28 @@ def unwrap_vars(value: str) -> str:
627
622
  )
628
623
 
629
624
 
625
+ def collect_form_dict_names(form_dict: dict[str, Any]) -> dict[str, Any]:
626
+ """Collapse keys with consecutive suffixes into a single list value.
627
+
628
+ Separators dash and underscore are removed, unless this would overwrite an existing key.
629
+
630
+ Args:
631
+ form_dict: The dict to collapse.
632
+
633
+ Returns:
634
+ The collapsed dict.
635
+ """
636
+ ending_digit_regex = re.compile(r"^(.*?)[_-]?(\d+)$")
637
+ collapsed = {}
638
+ for k in sorted(form_dict):
639
+ m = ending_digit_regex.match(k)
640
+ if m:
641
+ collapsed.setdefault(m.group(1), []).append(form_dict[k])
642
+ # collapsing never overwrites valid data from the form_dict
643
+ collapsed.update(form_dict)
644
+ return collapsed
645
+
646
+
630
647
  def format_data_editor_column(col: str | dict):
631
648
  """Format a given column into the proper format.
632
649
 
@@ -25,7 +25,7 @@ from redis.asyncio import Redis
25
25
 
26
26
  from reflex import constants, model
27
27
  from reflex.compiler import templates
28
- from reflex.config import Config, get_config
28
+ from reflex.config import get_config
29
29
  from reflex.utils import console, path_ops, processes
30
30
 
31
31
 
@@ -288,15 +288,7 @@ def initialize_web_directory():
288
288
 
289
289
  path_ops.mkdir(constants.Dirs.WEB_ASSETS)
290
290
 
291
- # update nextJS config based on rxConfig
292
- next_config_file = os.path.join(constants.Dirs.WEB, constants.Next.CONFIG_FILE)
293
-
294
- with open(next_config_file, "r") as file:
295
- next_config = file.read()
296
- next_config = update_next_config(next_config, get_config())
297
-
298
- with open(next_config_file, "w") as file:
299
- file.write(next_config)
291
+ update_next_config()
300
292
 
301
293
  # Initialize the reflex json file.
302
294
  init_reflex_json()
@@ -337,27 +329,34 @@ def init_reflex_json():
337
329
  path_ops.update_json_file(constants.Reflex.JSON, reflex_json)
338
330
 
339
331
 
340
- def update_next_config(next_config: str, config: Config) -> str:
341
- """Update Next.js config from Reflex config. Is its own function for testing.
332
+ def update_next_config(export=False):
333
+ """Update Next.js config from Reflex config.
342
334
 
343
335
  Args:
344
- next_config: Content of next.config.js.
345
- config: A reflex Config object.
346
-
347
- Returns:
348
- The next_config updated from config.
336
+ export: if the method run during reflex export.
349
337
  """
350
- next_config = re.sub(
351
- "compress: (true|false)",
352
- f'compress: {"true" if config.next_compression else "false"}',
353
- next_config,
354
- )
355
- next_config = re.sub(
356
- 'basePath: ".*?"',
357
- f'basePath: "{config.frontend_path or ""}"',
358
- next_config,
359
- )
360
- return next_config
338
+ next_config_file = os.path.join(constants.Dirs.WEB, constants.Next.CONFIG_FILE)
339
+
340
+ next_config = _update_next_config(get_config(), export=export)
341
+
342
+ with open(next_config_file, "w") as file:
343
+ file.write(next_config)
344
+ file.write("\n")
345
+
346
+
347
+ def _update_next_config(config, export=False):
348
+ next_config = {
349
+ "basePath": config.frontend_path or "",
350
+ "compress": config.next_compression,
351
+ "reactStrictMode": True,
352
+ "trailingSlash": True,
353
+ }
354
+ if export:
355
+ next_config["output"] = "export"
356
+ next_config["distDir"] = constants.Dirs.STATIC
357
+
358
+ next_config_json = re.sub(r'"([^"]+)"(?=:)', r"\1", json.dumps(next_config))
359
+ return f"module.exports = {next_config_json};"
361
360
 
362
361
 
363
362
  def remove_existing_bun_installation():
reflex/utils/processes.py CHANGED
@@ -193,12 +193,13 @@ def run_concurrently(*fns: Union[Callable, Tuple]) -> None:
193
193
  pass
194
194
 
195
195
 
196
- def stream_logs(message: str, process: subprocess.Popen):
196
+ def stream_logs(message: str, process: subprocess.Popen, progress=None):
197
197
  """Stream the logs for a process.
198
198
 
199
199
  Args:
200
200
  message: The message to display.
201
201
  process: The process.
202
+ progress: The ongoing progress bar if one is being used.
202
203
 
203
204
  Yields:
204
205
  The lines of the process output.
@@ -209,11 +210,11 @@ def stream_logs(message: str, process: subprocess.Popen):
209
210
  # Store the tail of the logs.
210
211
  logs = collections.deque(maxlen=512)
211
212
  with process:
212
- console.debug(message)
213
+ console.debug(message, progress=progress)
213
214
  if process.stdout is None:
214
215
  return
215
216
  for line in process.stdout:
216
- console.debug(line, end="")
217
+ console.debug(line, end="", progress=progress)
217
218
  logs.append(line)
218
219
  yield line
219
220
 
@@ -260,7 +261,7 @@ def show_progress(message: str, process: subprocess.Popen, checkpoints: List[str
260
261
  # Iterate over the process output.
261
262
  with console.progress() as progress:
262
263
  task = progress.add_task(f"{message}: ", total=len(checkpoints))
263
- for line in stream_logs(message, process):
264
+ for line in stream_logs(message, process, progress=progress):
264
265
  # Check for special strings and update the progress bar.
265
266
  for special_string in checkpoints:
266
267
  if special_string in line:
reflex/vars.py CHANGED
@@ -4,6 +4,7 @@ from __future__ import annotations
4
4
  import contextlib
5
5
  import dataclasses
6
6
  import dis
7
+ import inspect
7
8
  import json
8
9
  import random
9
10
  import string
@@ -1138,17 +1139,76 @@ class Var:
1138
1139
 
1139
1140
  Returns:
1140
1141
  A var representing foreach operation.
1142
+
1143
+ Raises:
1144
+ TypeError: If the var is not a list.
1141
1145
  """
1146
+ inner_types = get_args(self._var_type)
1147
+ if not inner_types:
1148
+ raise TypeError(
1149
+ f"Cannot foreach over non-sequence var {self._var_full_name} of type {self._var_type}."
1150
+ )
1142
1151
  arg = BaseVar(
1143
1152
  _var_name=get_unique_variable_name(),
1144
- _var_type=self._var_type,
1153
+ _var_type=inner_types[0],
1154
+ )
1155
+ index = BaseVar(
1156
+ _var_name=get_unique_variable_name(),
1157
+ _var_type=int,
1145
1158
  )
1159
+ fn_signature = inspect.signature(fn)
1160
+ fn_args = (arg, index)
1161
+ fn_ret = fn(*fn_args[: len(fn_signature.parameters)])
1146
1162
  return BaseVar(
1147
- _var_name=f"{self._var_full_name}.map(({arg._var_name}, i) => {fn(arg, key='i')})",
1163
+ _var_name=f"{self._var_full_name}.map(({arg._var_name}, {index._var_name}) => {fn_ret})",
1148
1164
  _var_type=self._var_type,
1149
1165
  _var_is_local=self._var_is_local,
1150
1166
  )
1151
1167
 
1168
+ @classmethod
1169
+ def range(
1170
+ cls,
1171
+ v1: Var | int = 0,
1172
+ v2: Var | int | None = None,
1173
+ step: Var | int | None = None,
1174
+ ) -> Var:
1175
+ """Return an iterator over indices from v1 to v2 (or 0 to v1).
1176
+
1177
+ Args:
1178
+ v1: The start of the range or end of range if v2 is not given.
1179
+ v2: The end of the range.
1180
+ step: The number of numbers between each item.
1181
+
1182
+ Returns:
1183
+ A var representing range operation.
1184
+
1185
+ Raises:
1186
+ TypeError: If the var is not an int.
1187
+ """
1188
+ if not isinstance(v1, Var):
1189
+ v1 = Var.create_safe(v1)
1190
+ if v1._var_type != int:
1191
+ raise TypeError(f"Cannot get range on non-int var {v1._var_full_name}.")
1192
+ if not isinstance(v2, Var):
1193
+ v2 = Var.create(v2)
1194
+ if v2 is None:
1195
+ v2 = Var.create_safe("undefined")
1196
+ elif v2._var_type != int:
1197
+ raise TypeError(f"Cannot get range on non-int var {v2._var_full_name}.")
1198
+
1199
+ if not isinstance(step, Var):
1200
+ step = Var.create(step)
1201
+ if step is None:
1202
+ step = Var.create_safe(1)
1203
+ elif step._var_type != int:
1204
+ raise TypeError(f"Cannot get range on non-int var {step._var_full_name}.")
1205
+
1206
+ return BaseVar(
1207
+ _var_name=f"Array.from(range({v1._var_full_name}, {v2._var_full_name}, {step._var_name}))",
1208
+ _var_type=list[int],
1209
+ _var_is_local=False,
1210
+ )
1211
+
1152
1212
  def to(self, type_: Type) -> Var:
1153
1213
  """Convert the type of the var.
1154
1214
 
@@ -1418,17 +1478,25 @@ class ComputedVar(Var, property):
1418
1478
  # is referencing an attribute on self
1419
1479
  self_is_top_of_stack = True
1420
1480
  continue
1421
- if self_is_top_of_stack and instruction.opname == "LOAD_ATTR":
1422
- # direct attribute access
1423
- d.add(instruction.argval)
1424
- elif self_is_top_of_stack and instruction.opname == "LOAD_METHOD":
1425
- # method call on self
1426
- d.update(
1427
- self._deps(
1428
- objclass=objclass,
1429
- obj=getattr(objclass, instruction.argval),
1481
+ if self_is_top_of_stack and instruction.opname in (
1482
+ "LOAD_ATTR",
1483
+ "LOAD_METHOD",
1484
+ ):
1485
+ try:
1486
+ ref_obj = getattr(objclass, instruction.argval)
1487
+ except Exception:
1488
+ ref_obj = None
1489
+ if callable(ref_obj):
1490
+ # recurse into callable attributes
1491
+ d.update(
1492
+ self._deps(
1493
+ objclass=objclass,
1494
+ obj=ref_obj,
1495
+ )
1430
1496
  )
1431
- )
1497
+ else:
1498
+ # normal attribute access
1499
+ d.add(instruction.argval)
1432
1500
  elif instruction.opname == "LOAD_CONST" and isinstance(
1433
1501
  instruction.argval, CodeType
1434
1502
  ):
reflex/vars.pyi CHANGED
@@ -85,6 +85,13 @@ class Var:
85
85
  def contains(self, other: Any) -> Var: ...
86
86
  def reverse(self) -> Var: ...
87
87
  def foreach(self, fn: Callable) -> Var: ...
88
+ @classmethod
89
+ def range(
90
+ cls,
91
+ v1: Var | int = 0,
92
+ v2: Var | int | None = None,
93
+ step: Var | int | None = None,
94
+ ) -> Var: ...
88
95
  def to(self, type_: Type) -> Var: ...
89
96
  @property
90
97
  def _var_full_name(self) -> str: ...
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: reflex
3
- Version: 0.3.2
3
+ Version: 0.3.3a1
4
4
  Summary: Web apps in pure Python.
5
5
  Home-page: https://reflex.dev
6
6
  License: Apache-2.0
@@ -36,7 +36,8 @@ Requires-Dist: sqlmodel (>=0.0.8,<0.0.9)
36
36
  Requires-Dist: starlette-admin (>=0.9.0,<0.10.0)
37
37
  Requires-Dist: tabulate (>=0.9.0,<0.10.0)
38
38
  Requires-Dist: typer (>=0.4.2,<1)
39
- Requires-Dist: uvicorn (>=0.20.0,<0.21.0)
39
+ Requires-Dist: uvicorn (>=0.20.0,<0.21.0) ; python_version < "3.12"
40
+ Requires-Dist: uvicorn (>=0.24.0,<0.25.0) ; python_version >= "3.12"
40
41
  Requires-Dist: watchdog (>=2.3.1,<3.0.0)
41
42
  Requires-Dist: watchfiles (>=0.19.0,<0.20.0)
42
43
  Requires-Dist: websockets (>=10.4,<11.0)
@@ -53,7 +53,7 @@ reflex/.templates/jinja/web/pages/_app.js.jinja2,sha256=ClVFsLdct15zwwtmtTENKZgF
53
53
  reflex/.templates/jinja/web/pages/_document.js.jinja2,sha256=E2r3MWp-gimAa6DdRs9ErQpPEyjS_yV5fdid_wdOOlA,182
54
54
  reflex/.templates/jinja/web/pages/base_page.js.jinja2,sha256=GGnXlJqdPCNv4Ki0Sn0crU8fiuA7TuJOAQivAM0HmdM,318
55
55
  reflex/.templates/jinja/web/pages/component.js.jinja2,sha256=1Pui62uSL7LYA7FXZrh9ZmhKH8vHYu663eR134hhsAY,86
56
- reflex/.templates/jinja/web/pages/custom_component.js.jinja2,sha256=J4ASfE-IR3bFaFtxW4iUsyRSc3sqQ4ZiJjSIHWStaHY,252
56
+ reflex/.templates/jinja/web/pages/custom_component.js.jinja2,sha256=OVK2DfX00v_Ly-lMmQ9YccmZQg3I1Aqrx1uXUl1ksIc,735
57
57
  reflex/.templates/jinja/web/pages/index.js.jinja2,sha256=bgvbtEGHidvr6RHSJmaZDK8WKgWcOPp9DNda6oBE-t4,1132
58
58
  reflex/.templates/jinja/web/pages/utils.js.jinja2,sha256=s10s9JZiNkDzMdqJQkdXPy-FA6g6V1V2QjHRSTKNEzI,3180
59
59
  reflex/.templates/jinja/web/styles/styles.css.jinja2,sha256=4-CvqGR8-nRzkuCOSp_PdqmhPEmOs_kOhskOlhLMEUg,141
@@ -64,24 +64,25 @@ reflex/.templates/web/.gitignore,sha256=3tT0CtVkCL09D_Y3Hd4myUgGcBuESeavCa0WHU5i
64
64
  reflex/.templates/web/components/reflex/chakra_color_mode_provider.js,sha256=4vJnV_AVrlH6FRzT4p0DF-kfHGKF3H6nXKtUEmAscKI,595
65
65
  reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js,sha256=1RcEVm_a9GTPeLavuSsIxEDiDMcTDSfUbDfRwIMoyFk,604
66
66
  reflex/.templates/web/jsconfig.json,sha256=Y9sEhjJcpk-ZDj-sxHYCvF9UZF4fyBL4oUlphb9X9Hk,97
67
- reflex/.templates/web/next.config.js,sha256=SxCb51nQkDsicnR-d4-Yys5TRISpSQ__TF_CHj0nLek,104
67
+ reflex/.templates/web/next.config.js,sha256=ZpGOqo9wHEbt0S08G70VfUNUjFe79UXo7Cde8X8V10E,118
68
68
  reflex/.templates/web/postcss.config.js,sha256=JR7N3UZyyc9GdUfj3FNd4ArSEp3ybn565yj6TlrEX8U,82
69
- reflex/.templates/web/styles/code/prism.js,sha256=J0_iOSEvPRj9MjFXIV45UFe8xiyccO6KD0sGauV9bHU,29404
70
69
  reflex/.templates/web/styles/tailwind.css,sha256=zBp60NAZ3bHTLQ7LWIugrCbOQdhiXdbDZjSLJfg6KOw,59
71
70
  reflex/.templates/web/utils/client_side_routing.js,sha256=iGGnZY07XMNLUT2GT_Y6OEICP7uc1FaWn9cPlQUpGgo,1254
72
71
  reflex/.templates/web/utils/helpers/dataeditor.js,sha256=K6_GVf_pjwE3TT054CjWyFGaA71gOZsoly-8vH-AEpg,1859
73
- reflex/.templates/web/utils/state.js,sha256=CbHLu2OWiqZ6OZ7xc7kNZVHNxDGC_WOqAc2EIeoI4Jk,17294
74
- reflex/__init__.py,sha256=3F1qPhlRarK8lBEn7xi0gvuhzQfl8e5Fm3xcBegbjCo,1988
72
+ reflex/.templates/web/utils/helpers/range.js,sha256=FevdZzCVxjF57ullfjpcUpeOXRxh5v09YnBB0jPbrS4,1152
73
+ reflex/.templates/web/utils/state.js,sha256=xSa9bA-CCm-PKqHpq2INqVfO5hWtesFQYUHAZA14J1Y,17587
74
+ reflex/__init__.py,sha256=UbRnQYavWSVZRjB4srichakTra_760YLLdJ5ktvKtfQ,7085
75
+ reflex/__init__.pyi,sha256=zOotO8XydCYsDB7avmEaR0QRcQHVG9wXgkUNF6NuBuQ,26017
75
76
  reflex/__main__.py,sha256=6cVrGEyT3j3tEvlEVUatpaYfbB5EF3UVY-6vc_Z7-hw,108
76
77
  reflex/admin.py,sha256=-bTxFUEoHo4X9FzmcSa6KSVVPpF7wh38lBvF67GhSvQ,373
77
78
  reflex/app.py,sha256=2svIqoDJK7L0M4Ui_EC7hONJ6rAeEoFgOrGWwUIewhE,35552
78
79
  reflex/app.pyi,sha256=2Y2xe3YDGzxmOQpai8f4glnbZ-i4q4Br6FXdNITLpq8,4669
79
80
  reflex/base.py,sha256=JGGjEHjJMDWo7TcRqSw1DRaC9lIRoSxf2jrmIc-O9BQ,2507
80
81
  reflex/compiler/__init__.py,sha256=r8jqmDSFf09iV2lHlNhfc9XrTLjNxfDNwPYlxS4cmHE,27
81
- reflex/compiler/compiler.py,sha256=eWP-DXYUiK6CykR94a4J1IZGx4BVfkzwTwHIpTRe3I4,10083
82
+ reflex/compiler/compiler.py,sha256=D0YeN8Fh8ncAx08eC1qumKjeLr29vjJC5zAcjp2S210,10172
82
83
  reflex/compiler/templates.py,sha256=UNUEYd1W1RLLutAJkM4YBtJX4cbH4a_kEZuVsf-8I_g,3082
83
84
  reflex/compiler/utils.py,sha256=z3m2ftT_6CezYvqY9r5Ovg_Hy8R9cNaf1hhWBa82618,12237
84
- reflex/components/__init__.py,sha256=MVFnxtT_w17BA1L9kXpCat7GIuQs3xPtH3nzaJtmUW0,7427
85
+ reflex/components/__init__.py,sha256=jIpJevwio4FqpsFOAs0fd-se0xFsqCE38hZxiEWQhAE,7419
85
86
  reflex/components/base/__init__.py,sha256=BIobn_49_ZsyQf-F50kOGq4FklfXiBRDTPCbPBM4p64,260
86
87
  reflex/components/base/app_wrap.py,sha256=GeCKiaJtdZOGh9I2ySDOjJodH5c7IEIm5L4K0TyuCtg,444
87
88
  reflex/components/base/app_wrap.pyi,sha256=JP0_2csnwXOxqfj7Rs6E-WNoCamjf7P2i8dzumxYozo,2864
@@ -98,12 +99,12 @@ reflex/components/base/meta.py,sha256=RWITTQTA_35-FbaVGhjkAWDOmU65rzJ-WedENRJk-3
98
99
  reflex/components/base/meta.pyi,sha256=kkNj-Dn-mKdFinSi8mGM72KbzahWf-UX2H63pa7U7Fg,7858
99
100
  reflex/components/base/script.py,sha256=sNuoSeO1XxVfqSd9EADlOeNDti-zf8-vn_yd0NcmImc,2298
100
101
  reflex/components/base/script.pyi,sha256=8Y9SV_vq9oBBSGma73SKg19bs8Ixcxz_GDcfsgTItMs,3183
101
- reflex/components/component.py,sha256=D7nHMvuYD2gF1tdgzPf168KF2oHzsV2435IJynE8C_s,33453
102
- reflex/components/datadisplay/__init__.py,sha256=1tH118-3tf5TTsITb4_lG0iI79AP3pUEUWHxG4YcaKU,575
102
+ reflex/components/component.py,sha256=ce50RWp5u1dIdAAfHuHtZNmzZXl9CiZ3nLHg1PGZrQw,33581
103
+ reflex/components/datadisplay/__init__.py,sha256=-BTO84OO1EQewARHg7hWxcddEiuChijOD-Q4nrZfZ7w,708
103
104
  reflex/components/datadisplay/badge.py,sha256=5QJivxZyjZhcxJS-XBU56CW1A7vADINKcwrhg9qUeKg,357
104
105
  reflex/components/datadisplay/badge.pyi,sha256=TVmJLvCanD4Zghaub6emBzwyKgYe5k3LqTC0tCswOKk,2498
105
- reflex/components/datadisplay/code.py,sha256=IwlDw2Q4bsPDv9tCffN_CSrkJQhUEqCGi2BdoEn-Lc4,3644
106
- reflex/components/datadisplay/code.pyi,sha256=BE8d_jlfR4bJYueU19I-BfJNl7qSZ8cJ4-qZAqGo6kY,5021
106
+ reflex/components/datadisplay/code.py,sha256=rT_gPz-r6gNzr1w0SiTrWlI8KgUVJH115f_zwi1JxLU,10149
107
+ reflex/components/datadisplay/code.pyi,sha256=qQn6a-KVdCy7GjUwRwhPE8C7xb90u_5tW5OrXlyipkA,33725
107
108
  reflex/components/datadisplay/dataeditor.py,sha256=jGiEVmtjbrOVozHtmxmjASRg2hb5y-q5Y16UdbUbbms,12380
108
109
  reflex/components/datadisplay/dataeditor.pyi,sha256=oaO5AAWbSZQi4kCmnliChUaTVm0sCWLZ_p1uivfUERE,9675
109
110
  reflex/components/datadisplay/datatable.py,sha256=tM9FJ0s3y7SLlIRVrdKHdDS5tLCeXFQFnvPdqd7Enag,5043
@@ -142,9 +143,9 @@ reflex/components/feedback/skeleton.pyi,sha256=qsuVcaleQlbss6iykKedAU10bI1XqW9FX
142
143
  reflex/components/feedback/spinner.py,sha256=g3ls2A-tIkBQHRSaN7bgm-8IsklMLlnyZYb1V7AcjlU,709
143
144
  reflex/components/feedback/spinner.pyi,sha256=8TJ3VvzPcXvk2R7xFknUcl7jP58AasbKjxNdqXBb6GY,2914
144
145
  reflex/components/forms/__init__.py,sha256=c1eo2vrp-F2DJZwHWgNBfA1BXrq3AEE2V3HGoqxEnEA,1676
145
- reflex/components/forms/button.py,sha256=_Pm3mgh4cTN6ngpy9S3PvsRcMIBFR5e1dx15bhXJOp0,2344
146
+ reflex/components/forms/button.py,sha256=Vl02__YJz4G4OnSLVz1-pq8NTKOmFAj68geXUIKMOmw,2397
146
147
  reflex/components/forms/button.pyi,sha256=NOL4VXWymaCxhffBCcKzdbB7LwSwA0cSrp8u6CXXMiE,7227
147
- reflex/components/forms/checkbox.py,sha256=gGdBPSpFFBtBP4RBIgdsu3eNEsCQiefl9WXHQrGKzBk,2630
148
+ reflex/components/forms/checkbox.py,sha256=VAGiux5Xphn40Fp7zQGD9rmTMbJBZ8syZVOGAsJQAEQ,2767
148
149
  reflex/components/forms/checkbox.pyi,sha256=KCpLb-ms5RXONzWvWCvpGKjgMNFH_KxlcbWdvq9u9dg,6908
149
150
  reflex/components/forms/colormodeswitch.py,sha256=-Hk7HrrdlWuLzTRx6a5Bx0ccrlt3qd1zvppLlwZhdF8,3154
150
151
  reflex/components/forms/colormodeswitch.pyi,sha256=Wdt-hyq4dtpO_ki7-Ku1ygYOB1tUuOw6duwWtqaVYvs,6073
@@ -160,30 +161,30 @@ reflex/components/forms/editor.py,sha256=ojQHifxHxYBTtJcJbJWMG4VgxDC8RmGV7hHLlsI
160
161
  reflex/components/forms/editor.pyi,sha256=gtoP2SDBC4JCYXkl38CKvtbL_ouPw3q2zZbAcvrzObY,4351
161
162
  reflex/components/forms/email.py,sha256=E1nbkBSeGtexTJihxLWeQ7U3wsfI4yTVwcbpQJvOsl0,239
162
163
  reflex/components/forms/email.pyi,sha256=39JSHZUdT1kahxEk2WUmsWt-9IwtxltaiaMGXQ3kosM,2456
163
- reflex/components/forms/form.py,sha256=LZ8aK3RHT_-4HnU1mZKS_s1hXmB6m6CAYPIsiH4Wdsk,4296
164
+ reflex/components/forms/form.py,sha256=d6rZcKNFc4rCgQKgN291B9HiLypbaiDLC7UYIauN0c8,6432
164
165
  reflex/components/forms/form.pyi,sha256=Ze2DRD6jDoP39jNai7m-N8bQbpDxExBE6KVX6zsV17I,10351
165
166
  reflex/components/forms/iconbutton.py,sha256=tTmul_GEUROkhF_nD3ol_H0e8VX1uvQ0HMZnsVvgMfM,888
166
167
  reflex/components/forms/iconbutton.pyi,sha256=TW9hdOROj5mT1saGkiQBoiY2jy-ZhDeTE4Gidx40Mrw,3127
167
- reflex/components/forms/input.py,sha256=TJv5-HQAWiFOYaB2xleZRpycWYRW26qjEPHvZnYLDNY,4415
168
+ reflex/components/forms/input.py,sha256=Fr5b2QUrW7dE5eWFhqrAO2GZC0bANTjtWNSyELt-9UI,4468
168
169
  reflex/components/forms/input.pyi,sha256=3O_l-JVaInsav0TVkFKcCZmCZdEXTtOro0kix0KuST4,13098
169
170
  reflex/components/forms/multiselect.py,sha256=EbBbcJxjkv59q-lGDSi107wxzwR7tp8wAgQbZeht9S0,12940
170
- reflex/components/forms/numberinput.py,sha256=OMePbUbJf-WN1alsldCedgGA763hHbbaEMoz7NuTEPA,4197
171
+ reflex/components/forms/numberinput.py,sha256=1sGQyAyDACIvCzwY9KZ6yAx8N3P4QC1BlAEdK01H5r0,4250
171
172
  reflex/components/forms/numberinput.pyi,sha256=T6hXTwyFsRpbEny7jjKQ8BzVuEkGDfZqSnNu0eED7kw,12397
172
173
  reflex/components/forms/password.py,sha256=SDPKRpZrLCtm5WFBwOdcmLLUqDON22hV9F41vazINNA,249
173
174
  reflex/components/forms/password.pyi,sha256=mWoDcdLTcBO1uI_i2M4OXDuP7NiPuCL9-ATV4TiIRv0,2465
174
- reflex/components/forms/pininput.py,sha256=JuEbdb1gzRxiaCk-A0pHwSzh4RTvHe0vFUEORCNzJEY,4439
175
+ reflex/components/forms/pininput.py,sha256=MBELAeBVO7q4vVNT8JVYLefWw7StTMZOrv-PlgQsmY4,6274
175
176
  reflex/components/forms/pininput.pyi,sha256=o7AoGPAhElmnEZlFTmyQ6RY4WFJMreuSLfaK0mbl_D8,6361
176
- reflex/components/forms/radio.py,sha256=97EI2Ih7r1nldD0irf6JTueR7FSAf82J-VeSR81VBnE,3123
177
+ reflex/components/forms/radio.py,sha256=SvCfgk5l98a_ZXv2o23Mlche58YJrizPFctfifYWRIM,3176
177
178
  reflex/components/forms/radio.pyi,sha256=KJR-MSgeKKwYBaS8x-XHoT-dSkIRF__jcEVwWkccibs,5373
178
- reflex/components/forms/rangeslider.py,sha256=zyROo4XavplF_HzFYAQwHx2vZrwKI22BpdNszYeekEI,4390
179
+ reflex/components/forms/rangeslider.py,sha256=GguxK-XQQAXVEFvK_3xCv_0i26JbRMkKe1Ef8Bbq4xY,4443
179
180
  reflex/components/forms/rangeslider.pyi,sha256=VZ_57wqhJvB5U3uOm7pzUpF7vmSc3J8WvXsKIIusnww,9225
180
- reflex/components/forms/select.py,sha256=m26emPrAxEqZT1DEuqgnjrOUe-DroBIQqWtUcnRu8ug,3571
181
+ reflex/components/forms/select.py,sha256=_2hH-itg1tf_FjAyFybbrt-Ot4wYUBZClTa_1X_x6_M,3624
181
182
  reflex/components/forms/select.pyi,sha256=GRh1tVj0oPTzKtC5W229P0BS1vEHKYGvV4djIeSy23U,5765
182
- reflex/components/forms/slider.py,sha256=aTHB6QfioKEcnvcfnpmZ-WnY7Uf0RVuBs_jvuxq3g8k,3495
183
+ reflex/components/forms/slider.py,sha256=pN2fCtKgT9iNQqEwAGzjoP3flj13gJDW_GJ4BAVkmD8,3548
183
184
  reflex/components/forms/slider.pyi,sha256=NqmF8ySNV4ZcblqkYRsOCf1gz080UGMgKLDiQMkWgLM,11656
184
- reflex/components/forms/switch.py,sha256=JyI938EL4VvHyiAHIFZZNmzrQdLdKGydhoM11gNW0eA,1706
185
+ reflex/components/forms/switch.py,sha256=YtBoVf-TqbRmW65Wjibf_4Sc4WnsWHcwKawpsbmHBj4,1843
185
186
  reflex/components/forms/switch.pyi,sha256=jUSws0C_1tOee0yxnHsropzqZd18d-bXd7LTpc2Wp-Y,4067
186
- reflex/components/forms/textarea.py,sha256=d1PrX8qqvVw63q8H4uyJTL9Z9raSbFQhumEkf-S_pG8,2693
187
+ reflex/components/forms/textarea.py,sha256=HryDuwjTqNuzQ8ZPBcVs02kV42HNQcHC4R6MeHin9JE,2746
187
188
  reflex/components/forms/textarea.pyi,sha256=MS1fmQxAptPTMhg2RyDPIkWQbnbdsXWXEFUy5Kmc32Y,3697
188
189
  reflex/components/forms/upload.py,sha256=FNypXiptthE3x6JU4CSoiIhMwwdjwp1oAv8NtKqDrJc,3600
189
190
  reflex/components/forms/upload.pyi,sha256=dKaOLxGG8BNUqhjcXeb-NUMH-eaLECgRVV2A9K5xp7c,3678
@@ -230,8 +231,8 @@ reflex/components/layout/stack.pyi,sha256=pTtm3nW1Axbu5x74OdqtjkyAqre-mPbvR9X-x2
230
231
  reflex/components/layout/wrap.py,sha256=M02wnUPrdKfjkw-CtHjDh1llKq2Xbbh3hA4JNwfyCuA,1468
231
232
  reflex/components/layout/wrap.pyi,sha256=BVzDpEy8IfAxhsUrAJsKZmBxFqU6f60enmbs9JqxwtM,4696
232
233
  reflex/components/libs/__init__.py,sha256=D2C72IMFniERikNYTwlbKmKw_74XERVJ0srm8bY6s_4,735
233
- reflex/components/libs/chakra.py,sha256=YP6dmLd4yqdkup7sOg3rypQ71GxeTRvj-RCuf3lb94o,5119
234
- reflex/components/libs/chakra.pyi,sha256=eTiHFRhYEgwyr5o3Rc100eJqBG0ayeQC3hFDfa2yZjI,4545
234
+ reflex/components/libs/chakra.py,sha256=HX3w4foA7JmFGJOTrReHB2BFfcGjPxL60OcrmDuE94Q,5121
235
+ reflex/components/libs/chakra.pyi,sha256=YtBEPhDuOjSC2DLjV8Rl9kmz9dxAzAHsrAnTW4iTsNk,13862
235
236
  reflex/components/libs/react_player.py,sha256=DvxvcGr2ZQY3TtiW75QffUKrl3__MRHKXBnA5uLGBiM,1096
236
237
  reflex/components/libs/react_player.pyi,sha256=WrepeBD2p0tbTYGFZVWpumtGVM9s9PWsdwPQjv-Hibs,3235
237
238
  reflex/components/literals.py,sha256=zsKMvdKqMoPm8SW8A7hnoOO5s4rRLuSRO68VpasmGLo,156
@@ -287,14 +288,14 @@ reflex/components/radix/themes/typography.pyi,sha256=nUJ3tVCbYZbWhongI9bgoaPkitY
287
288
  reflex/components/tags/__init__.py,sha256=_YJZvciLOMcImlxycpIt9YnZO1Hg30EWXDafnKcZw5o,120
288
289
  reflex/components/tags/cond_tag.py,sha256=v5BO78bGQQuCy8lM45yI7nAuasxjQoRyQNdj5kakPBY,447
289
290
  reflex/components/tags/iter_tag.py,sha256=j8DDuj4-47nrqmUnRTaG-wlQFWfI4I7WsXgFRK0WTWo,2480
290
- reflex/components/tags/tag.py,sha256=nEFwv9b88AczoduRe5tbcTtOzjw_kMBu2Y9fxINQoeY,2531
291
+ reflex/components/tags/tag.py,sha256=JOh5oBZeUraKZFW5w8GbkSIosiKc2tGTn2WA59WCzYQ,2592
291
292
  reflex/components/tags/tagless.py,sha256=qO7Gm4V0ITDyymHkyltfz53155ZBt-W_WIPDYy93ca0,587
292
293
  reflex/components/typography/__init__.py,sha256=tLcpJuu_QuCjIgtoPykGS3oJ3nD8sYbmSD1B5YS4Mko,302
293
294
  reflex/components/typography/heading.py,sha256=a07yOx5LJ-ySUyXZkwcrAIv0AtUgw1B9sBna-5qfUUI,384
294
295
  reflex/components/typography/heading.pyi,sha256=JKsLcX08glswoJuC4Qgj1gbN_dr-MMZseJV6_qW2j5Q,2547
295
296
  reflex/components/typography/highlight.py,sha256=DYWJ3JrVnWHgkU_qaljyPpgfzyaieS4jSaCT_HD39X4,676
296
297
  reflex/components/typography/highlight.pyi,sha256=7UXUY3NSeUlUGO9obVjO9k2vR9rgSL2OZ2LIB6QHGKE,2579
297
- reflex/components/typography/markdown.py,sha256=o4JENGhI4wgrSaROEPExejI8Rwybk-jhmxNs_X6krqQ,9038
298
+ reflex/components/typography/markdown.py,sha256=TnauVP4Yz0MWACoqdaLdmXVowlrIiDiHVxmQQL17320,9401
298
299
  reflex/components/typography/markdown.pyi,sha256=2fhdRUmH7shC5hZmIYFuK1SjY_Utliue3HOs0sF-GRo,2442
299
300
  reflex/components/typography/span.py,sha256=kvIj5UAEvzhRpvXkAEZ_JxBRSt-LNBiEz9Arlj5m7jo,333
300
301
  reflex/components/typography/span.pyi,sha256=bdsp2kov8dJHr48Ihc3Lu_cSF_r6VV6P2XnP2V78p3M,2301
@@ -308,7 +309,7 @@ reflex/constants/compiler.py,sha256=Sz05j1I0oHdkMfLDf890ntGs2n9JsynJ7XEZzQaRABs,
308
309
  reflex/constants/config.py,sha256=7uUypVy-ezLt3UN3jXEX1XvL3sKaCLBwnJCyYjg9erI,1331
309
310
  reflex/constants/event.py,sha256=8Glq8yt5M0Wlac3iySZ38de_ZHF_VjG6bXVX39D22xU,2266
310
311
  reflex/constants/hosting.py,sha256=ah9dzvqWg_88cx_cFXnpB8S570vAN16KIx1ds0ogWU0,929
311
- reflex/constants/installer.py,sha256=J0IXfQOIGTGcmIhAERqF8A09-4Ouy7iLaw1BnUiaF5U,3260
312
+ reflex/constants/installer.py,sha256=1zZo_XiRyTJgYY8VTiQOM7IC00Y7ar2kBeT9j-YfQXg,3208
312
313
  reflex/constants/route.py,sha256=z-LJf9sbjkuKjBD2CTOrHXHpgTVmfUyjjxp_GYL1xNA,1810
313
314
  reflex/constants/style.py,sha256=cHQ7SzX5ag8Q7rqW462pUSkF5UZLCldSVmvNaIypGic,604
314
315
  reflex/el/__init__.py,sha256=3QR9GuYBnFvtxLQm_aeSUzGJsqJBUjeTt6tcHyCqAcQ,73
@@ -319,37 +320,38 @@ reflex/el/constants/reflex.py,sha256=SJidKWxPv0bwjPbeo57KFuEQNGyd8XUJrV-HfzX3tnE
319
320
  reflex/el/element.py,sha256=Go8tt1GwBUt7dJKPLZNaaNdW7uDAiUbiWlR_XtaV8wM,1318
320
321
  reflex/el/elements/__init__.py,sha256=TTctaX_5zEGS9pd48HPSGeSem8T-Yw5O-nBlJDsyTe4,106323
321
322
  reflex/el/precompile.py,sha256=p-F3L7_cGdFjh0YRFyqu0ZRjcquOEkflymkkd6WzJRQ,2655
322
- reflex/event.py,sha256=e9knCdANOED99-PfjYt96rwR0hBvY4MqpMmcfNGzszQ,20602
323
+ reflex/event.py,sha256=MrncuRVLwnUwZS0d3yTJEJCG6UDXZqOe6ZvmdT8FZ10,20658
323
324
  reflex/middleware/__init__.py,sha256=x7xTeDuc73Hjj43k1J63naC9x8vzFxl4sq7cCFBX7sk,111
324
325
  reflex/middleware/hydrate_middleware.py,sha256=s7HQ4V_5k4hqxxbJO5jpFk36YXuG26NiNpe7nx2hMnQ,2389
325
326
  reflex/middleware/middleware.py,sha256=BJM_3GGLUi6oRf753vxRJueOUDm3eLC2pdY2hl1ez-4,1157
326
327
  reflex/model.py,sha256=3pek3P0bLeK-MRuCvZ25je-bjNOUmjK--UzV0G09dD8,10737
327
- reflex/page.py,sha256=_9WMoR4XauuhYVkQSCkVYkgdQHIiRPLBziEt4QaGYfo,2005
328
- reflex/reflex.py,sha256=s0RxYv1gk3JcfsZnAlYLFg6E1hiqLPwhHBB4uvv0tO4,29770
328
+ reflex/page.py,sha256=VkrInVJ1jIlu141y4ssFh4dW7d5Uc8CbOaWY9JzwBa0,1916
329
+ reflex/page.pyi,sha256=nFfbDe-tBsrIrcAKWsoTy92olMkAosbmddh_Pgf2Sxc,505
330
+ reflex/reflex.py,sha256=1mCNyS2UmbVyXtlkvmMG7dF_G3-0rV7VxAxUsfEf9rc,29911
329
331
  reflex/route.py,sha256=eVi2TSk9uM7DDGBy6rDYe6Gq4iuHZFK00Vmoq9IbIjk,2732
330
- reflex/state.py,sha256=BEGlAtpw6J_KuH2L1UtDtxdTvbzdFoobN2Bepetn_ps,67472
332
+ reflex/state.py,sha256=vftHMrwpA2D2UF7zgrAa5FKo9SrzG8x5cssINjcKFNY,67866
331
333
  reflex/style.py,sha256=kNlMF1nWewNRI2EMuk9JBlkLdxZLngNZaZnICj4lc1c,1138
332
- reflex/testing.py,sha256=G9Ezc2fWI9laMsM_X5-HL3JI5Bpi5SS6Xg36utpWXUY,26116
334
+ reflex/testing.py,sha256=Y17rROevA1PXdb8AHpuQwZ69u2gYA4R-cNNVUS0i_mY,26111
333
335
  reflex/utils/__init__.py,sha256=y-AHKiRQAhk2oAkvn7W8cRVTZVK625ff8tTwvZtO7S4,24
334
- reflex/utils/build.py,sha256=AK_2myC_qf2cW9bZycteEf7ujM0E-aDQUGYvYIf_Uhk,7806
335
- reflex/utils/console.py,sha256=fPInKD--A_furGdk6MSRgsPRfOoW_ZSKA7VBrb25ZgA,4441
336
+ reflex/utils/build.py,sha256=VfAOsjgbRO2_tAgYaL-E5tbXIxMzBjUtmg2E8cL_4r0,7987
337
+ reflex/utils/console.py,sha256=oEEaV9oSw5B24LPEwBOGlyrk2xI91Fo-pqGEsNICrjg,4583
336
338
  reflex/utils/dependency.py,sha256=jdyYG5HDgCGNhSVy9Jo_EGPWQWscKU6di9EyOobT3rI,1469
337
339
  reflex/utils/exceptions.py,sha256=tDY0Bu1bmNzcozM_-dGaiYWudVCIO8Qo00_4klIbHCg,390
338
340
  reflex/utils/exec.py,sha256=CmCjbG2YC8ry3RGrFUwDwhqeZ-ayIFvsRs55QZQXzpM,8443
339
- reflex/utils/format.py,sha256=AnRTEJF89Q_0WlcZVju3pVCHbv11WqiuYujNL8xSG30,17741
341
+ reflex/utils/format.py,sha256=ra38lxexfX5ZQmN6W1CWgTil2wACTibcnDUest_R1fw,18361
340
342
  reflex/utils/hosting.py,sha256=rtVVszv80ZUFzUWe_NNEM-nMclv2nt0m64PwPqyxkB8,46509
341
343
  reflex/utils/imports.py,sha256=f2bBFa9ZLVK6Lb3usEZ5Oj-kP9xJBQLfomUwDExbkFU,626
342
344
  reflex/utils/path_ops.py,sha256=pUcqPPKsvP6G5VVggX9fcw8lEkiKueTNoFq0eUlMyGc,4706
343
- reflex/utils/prerequisites.py,sha256=xBfbTi58nF47jG5uTz2Qt09oh1dH2AWU7LTSIsSYnBM,24694
344
- reflex/utils/processes.py,sha256=tU7AKYZone9HgQyQ_AOgdl9HJNgD4dGyZ96EiVjEOYQ,8008
345
+ reflex/utils/prerequisites.py,sha256=l7wMCEkWv-mjz6hRWFmBEsFE-ImLJKPFUdH8Q8BlUGU,24621
346
+ reflex/utils/processes.py,sha256=pDJvgtT_F3N9p0rRpkzwFBc_W4ng1-qfl35HmAlZAjk,8145
345
347
  reflex/utils/serializers.py,sha256=vX8Rc-Y8SKc5WYBo0Ow4ZItY0qJg1w5omq7gmJORhqg,5910
346
348
  reflex/utils/telemetry.py,sha256=NbWKRUndlhNKtMBPveyjQ_1L6VoyZ5J_w2QHn5-NEOc,2722
347
349
  reflex/utils/types.py,sha256=wW-3koTWO-FnJoT7EmWK7XSlxY7WJjBXH98PJrSQn1A,7399
348
350
  reflex/utils/watch.py,sha256=HzGrHQIZ_62Di0BO46kd2AZktNA3A6nFIBuf8c6ip30,2609
349
- reflex/vars.py,sha256=pTwtq7BGd7-G7zqDOt8D3uu4AuDsR5fXaZAlp-r2BMo,47708
350
- reflex/vars.pyi,sha256=zkZBHbLflU7cBECWPiUBau5RJSqVc3kaANXT3epXuOQ,4463
351
- reflex-0.3.2.dist-info/LICENSE,sha256=dw3zLrp9f5ObD7kqS32vWfhcImfO52PMmRqvtxq_YEE,11358
352
- reflex-0.3.2.dist-info/METADATA,sha256=OqYKvEnP8x_q0mVB1qBD8HKMDcMAqXYd86LMti0uWEA,10986
353
- reflex-0.3.2.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
354
- reflex-0.3.2.dist-info/entry_points.txt,sha256=H1Z5Yat_xJfy0dRT1Frk2PkO_p41Xy7fCKlj4FcdL9o,44
355
- reflex-0.3.2.dist-info/RECORD,,
351
+ reflex/vars.py,sha256=3c_w_BjK9wsj_OtJl9MjiBOaZBPqeNVpsXiQEJrbpsM,49966
352
+ reflex/vars.pyi,sha256=twYo5VB0PrwdF8Ba83RoXcjASp29rKSUzAGMAZSw15w,4629
353
+ reflex-0.3.3a1.dist-info/LICENSE,sha256=dw3zLrp9f5ObD7kqS32vWfhcImfO52PMmRqvtxq_YEE,11358
354
+ reflex-0.3.3a1.dist-info/METADATA,sha256=dKZF8CYovhyFUjNjqW1F98JJ5fpL9S1-YFQkUyh3mkI,11083
355
+ reflex-0.3.3a1.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
356
+ reflex-0.3.3a1.dist-info/entry_points.txt,sha256=H1Z5Yat_xJfy0dRT1Frk2PkO_p41Xy7fCKlj4FcdL9o,44
357
+ reflex-0.3.3a1.dist-info/RECORD,,