reflex 0.3.6__py3-none-any.whl → 0.3.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 (136) hide show
  1. reflex/.templates/jinja/web/pages/base_page.js.jinja2 +2 -0
  2. reflex/__init__.py +29 -6
  3. reflex/__init__.pyi +2 -0
  4. reflex/app.py +3 -0
  5. reflex/components/__init__.py +2 -0
  6. reflex/components/chakra/__init__.py +23 -0
  7. reflex/components/{media → chakra/media}/image.py +1 -28
  8. reflex/components/chakra/media/image.pyi +120 -0
  9. reflex/components/component.py +27 -2
  10. reflex/components/datadisplay/datatable.py +1 -37
  11. reflex/components/datadisplay/datatable.pyi +1 -11
  12. reflex/components/el/elements/forms.py +43 -1
  13. reflex/components/el/elements/forms.pyi +26 -1
  14. reflex/components/graphing/plotly.py +0 -22
  15. reflex/components/graphing/plotly.pyi +0 -12
  16. reflex/components/media/__init__.py +0 -1
  17. reflex/components/media/image.pyi +0 -9
  18. reflex/components/next/__init__.py +8 -0
  19. reflex/components/next/base.py +8 -0
  20. reflex/components/next/base.pyi +91 -0
  21. reflex/components/next/image.py +114 -0
  22. reflex/components/next/image.pyi +122 -0
  23. reflex/components/next/video.py +33 -0
  24. reflex/components/next/video.pyi +92 -0
  25. reflex/components/radix/primitives/__init__.py +3 -0
  26. reflex/components/radix/primitives/accordion.py +279 -0
  27. reflex/components/radix/primitives/accordion.pyi +619 -0
  28. reflex/components/radix/themes/__init__.py +4 -73
  29. reflex/components/radix/themes/base.py +7 -7
  30. reflex/components/radix/themes/base.pyi +21 -21
  31. reflex/components/radix/themes/components/__init__.py +193 -0
  32. reflex/components/radix/themes/components/alertdialog.py +72 -0
  33. reflex/components/radix/themes/components/alertdialog.pyi +733 -0
  34. reflex/components/radix/themes/components/aspectratio.py +20 -0
  35. reflex/components/radix/themes/components/aspectratio.pyi +144 -0
  36. reflex/components/radix/themes/components/avatar.py +38 -0
  37. reflex/components/radix/themes/components/avatar.pyi +233 -0
  38. reflex/components/radix/themes/components/badge.py +38 -0
  39. reflex/components/radix/themes/components/badge.pyi +291 -0
  40. reflex/components/radix/themes/components/button.py +39 -0
  41. reflex/components/radix/themes/components/button.pyi +330 -0
  42. reflex/components/radix/themes/components/callout.py +49 -0
  43. reflex/components/radix/themes/components/callout.pyi +668 -0
  44. reflex/components/radix/themes/components/card.py +25 -0
  45. reflex/components/radix/themes/components/card.pyi +214 -0
  46. reflex/components/radix/themes/components/checkbox.py +67 -0
  47. reflex/components/radix/themes/components/checkbox.pyi +249 -0
  48. reflex/components/radix/themes/components/contextmenu.py +134 -0
  49. reflex/components/radix/themes/{typography.pyi → components/contextmenu.pyi} +182 -602
  50. reflex/components/radix/themes/components/dialog.py +75 -0
  51. reflex/components/radix/themes/components/dialog.pyi +739 -0
  52. reflex/components/radix/themes/components/dropdownmenu.py +101 -0
  53. reflex/components/radix/themes/components/dropdownmenu.pyi +1065 -0
  54. reflex/components/radix/themes/components/hovercard.py +63 -0
  55. reflex/components/radix/themes/components/hovercard.pyi +487 -0
  56. reflex/components/radix/themes/components/iconbutton.py +39 -0
  57. reflex/components/radix/themes/components/iconbutton.pyi +332 -0
  58. reflex/components/radix/themes/components/icons.py +400 -0
  59. reflex/components/radix/themes/components/icons.pyi +185 -0
  60. reflex/components/radix/themes/components/inset.py +44 -0
  61. reflex/components/radix/themes/components/inset.pyi +230 -0
  62. reflex/components/radix/themes/components/popover.py +85 -0
  63. reflex/components/radix/themes/components/popover.pyi +634 -0
  64. reflex/components/radix/themes/components/radiogroup.py +72 -0
  65. reflex/components/radix/themes/components/radiogroup.pyi +369 -0
  66. reflex/components/radix/themes/components/scrollarea.py +31 -0
  67. reflex/components/radix/themes/components/scrollarea.pyi +165 -0
  68. reflex/components/radix/themes/components/select.py +137 -0
  69. reflex/components/radix/themes/{layout.pyi → components/select.pyi} +422 -418
  70. reflex/components/radix/themes/components/separator.py +30 -0
  71. reflex/components/radix/themes/components/separator.pyi +218 -0
  72. reflex/components/radix/themes/components/slider.py +68 -0
  73. reflex/components/radix/themes/components/slider.pyi +254 -0
  74. reflex/components/radix/themes/components/switch.py +68 -0
  75. reflex/components/radix/themes/components/switch.pyi +250 -0
  76. reflex/components/radix/themes/components/table.py +79 -0
  77. reflex/components/radix/themes/components/table.pyi +1485 -0
  78. reflex/components/radix/themes/components/tabs.py +65 -0
  79. reflex/components/radix/themes/components/tabs.pyi +549 -0
  80. reflex/components/radix/themes/components/textarea.py +68 -0
  81. reflex/components/radix/themes/components/textarea.pyi +333 -0
  82. reflex/components/radix/themes/{components.py → components/textfield.py} +3 -87
  83. reflex/components/radix/themes/{components.pyi → components/textfield.pyi} +202 -591
  84. reflex/components/radix/themes/layout/__init__.py +13 -0
  85. reflex/components/radix/themes/layout/base.py +48 -0
  86. reflex/components/radix/themes/layout/base.pyi +195 -0
  87. reflex/components/radix/themes/layout/box.py +12 -0
  88. reflex/components/radix/themes/layout/box.pyi +252 -0
  89. reflex/components/radix/themes/layout/container.py +23 -0
  90. reflex/components/radix/themes/layout/container.pyi +260 -0
  91. reflex/components/radix/themes/layout/flex.py +45 -0
  92. reflex/components/radix/themes/layout/flex.pyi +303 -0
  93. reflex/components/radix/themes/layout/grid.py +53 -0
  94. reflex/components/radix/themes/layout/grid.pyi +203 -0
  95. reflex/components/radix/themes/layout/section.py +20 -0
  96. reflex/components/radix/themes/layout/section.pyi +260 -0
  97. reflex/components/radix/themes/typography/__init__.py +21 -0
  98. reflex/components/radix/themes/typography/base.py +12 -0
  99. reflex/components/radix/themes/typography/blockquote.py +36 -0
  100. reflex/components/radix/themes/typography/blockquote.pyi +282 -0
  101. reflex/components/radix/themes/typography/code.py +40 -0
  102. reflex/components/radix/themes/typography/code.pyi +292 -0
  103. reflex/components/radix/themes/typography/em.py +18 -0
  104. reflex/components/radix/themes/typography/em.pyi +199 -0
  105. reflex/components/radix/themes/typography/heading.py +50 -0
  106. reflex/components/radix/themes/typography/heading.pyi +298 -0
  107. reflex/components/radix/themes/typography/kbd.py +25 -0
  108. reflex/components/radix/themes/typography/kbd.pyi +208 -0
  109. reflex/components/radix/themes/typography/link.py +49 -0
  110. reflex/components/radix/themes/typography/link.pyi +238 -0
  111. reflex/components/radix/themes/typography/quote.py +18 -0
  112. reflex/components/radix/themes/typography/quote.pyi +200 -0
  113. reflex/components/radix/themes/typography/strong.py +18 -0
  114. reflex/components/radix/themes/typography/strong.pyi +199 -0
  115. reflex/components/radix/themes/typography/text.py +50 -0
  116. reflex/components/radix/themes/typography/text.pyi +298 -0
  117. reflex/constants/__init__.py +1 -0
  118. reflex/constants/base.py +7 -0
  119. reflex/constants/config.py +1 -1
  120. reflex/model.py +2 -1
  121. reflex/reflex.py +5 -0
  122. reflex/state.py +11 -0
  123. reflex/style.py +120 -10
  124. reflex/testing.py +4 -4
  125. reflex/utils/format.py +9 -5
  126. reflex/utils/prerequisites.py +49 -6
  127. reflex/utils/processes.py +8 -1
  128. reflex/utils/serializers.py +83 -0
  129. reflex/utils/types.py +22 -1
  130. reflex/vars.py +24 -1
  131. {reflex-0.3.6.dist-info → reflex-0.3.7.dist-info}/METADATA +3 -2
  132. {reflex-0.3.6.dist-info → reflex-0.3.7.dist-info}/RECORD +135 -42
  133. reflex/components/radix/themes/layout.py +0 -155
  134. {reflex-0.3.6.dist-info → reflex-0.3.7.dist-info}/LICENSE +0 -0
  135. {reflex-0.3.6.dist-info → reflex-0.3.7.dist-info}/WHEEL +0 -0
  136. {reflex-0.3.6.dist-info → reflex-0.3.7.dist-info}/entry_points.txt +0 -0
@@ -18,6 +18,7 @@ from pathlib import Path
18
18
  from types import ModuleType
19
19
 
20
20
  import httpx
21
+ import pkg_resources
21
22
  import typer
22
23
  from alembic.util.exc import CommandError
23
24
  from packaging import version
@@ -29,6 +30,26 @@ from reflex.config import get_config
29
30
  from reflex.utils import console, path_ops, processes
30
31
 
31
32
 
33
+ def check_latest_package_version(package_name: str):
34
+ """Check if the latest version of the package is installed.
35
+
36
+ Args:
37
+ package_name: The name of the package.
38
+ """
39
+ try:
40
+ # Get the latest version from PyPI
41
+ current_version = pkg_resources.get_distribution(package_name).version
42
+ url = f"https://pypi.org/pypi/{package_name}/json"
43
+ response = httpx.get(url)
44
+ latest_version = response.json()["info"]["version"]
45
+ if version.parse(current_version) < version.parse(latest_version):
46
+ console.warn(
47
+ f"Your version ({current_version}) of {package_name} is out of date. Upgrade to {latest_version} with 'pip install {package_name} --upgrade'"
48
+ )
49
+ except Exception:
50
+ pass
51
+
52
+
32
53
  def check_node_version() -> bool:
33
54
  """Check the version of Node.js.
34
55
 
@@ -138,7 +159,6 @@ def get_app(reload: bool = False) -> ModuleType:
138
159
  sys.path.insert(0, os.getcwd())
139
160
  app = __import__(module, fromlist=(constants.CompileVars.APP,))
140
161
  if reload:
141
-
142
162
  importlib.reload(app)
143
163
  return app
144
164
 
@@ -152,6 +172,14 @@ def get_redis() -> Redis | None:
152
172
  config = get_config()
153
173
  if not config.redis_url:
154
174
  return None
175
+ if config.redis_url.startswith(("redis://", "rediss://", "unix://")):
176
+ return Redis.from_url(config.redis_url)
177
+ console.deprecate(
178
+ feature_name="host[:port] style redis urls",
179
+ reason="redis-py url syntax is now being used",
180
+ deprecation_version="0.3.6",
181
+ removal_version="0.4.0",
182
+ )
155
183
  redis_url, has_port, redis_port = config.redis_url.partition(":")
156
184
  if not has_port:
157
185
  redis_port = 6379
@@ -234,18 +262,33 @@ def initialize_requirements_txt():
234
262
  the requirements.txt file.
235
263
  """
236
264
  fp = Path(constants.RequirementsTxt.FILE)
237
- fp.touch(exist_ok=True)
238
-
265
+ encoding = "utf-8"
266
+ if not fp.exists():
267
+ fp.touch()
268
+ else:
269
+ # Detect the encoding of the original file
270
+ import charset_normalizer
271
+
272
+ charset_matches = charset_normalizer.from_path(fp)
273
+ maybe_charset_match = charset_matches.best()
274
+ if maybe_charset_match is None:
275
+ console.debug(f"Unable to detect encoding for {fp}, exiting.")
276
+ return
277
+ encoding = maybe_charset_match.encoding
278
+ console.debug(f"Detected encoding for {fp} as {encoding}.")
239
279
  try:
240
- with open(fp, "r") as f:
280
+ other_requirements_exist = False
281
+ with open(fp, "r", encoding=encoding) as f:
241
282
  for req in f.readlines():
242
283
  # Check if we have a package name that is reflex
243
284
  if re.match(r"^reflex[^a-zA-Z0-9]", req):
244
285
  console.debug(f"{fp} already has reflex as dependency.")
245
286
  return
246
- with open(fp, "a") as f:
287
+ other_requirements_exist = True
288
+ with open(fp, "a", encoding=encoding) as f:
289
+ preceding_newline = "\n" if other_requirements_exist else ""
247
290
  f.write(
248
- f"\n{constants.RequirementsTxt.DEFAULTS_STUB}{constants.Reflex.VERSION}\n"
291
+ f"{preceding_newline}{constants.RequirementsTxt.DEFAULTS_STUB}{constants.Reflex.VERSION}\n"
249
292
  )
250
293
  except Exception:
251
294
  console.info(f"Unable to check {fp} for reflex dependency.")
reflex/utils/processes.py CHANGED
@@ -171,7 +171,9 @@ def run_concurrently_context(
171
171
  fns = [fn if isinstance(fn, tuple) else (fn,) for fn in fns] # type: ignore
172
172
 
173
173
  # Run the functions concurrently.
174
- with futures.ThreadPoolExecutor(max_workers=len(fns)) as executor:
174
+ executor = None
175
+ try:
176
+ executor = futures.ThreadPoolExecutor(max_workers=len(fns))
175
177
  # Submit the tasks.
176
178
  tasks = [executor.submit(*fn) for fn in fns] # type: ignore
177
179
 
@@ -180,7 +182,12 @@ def run_concurrently_context(
180
182
 
181
183
  # Get the results in the order completed to check any exceptions.
182
184
  for task in futures.as_completed(tasks):
185
+ # if task throws something, we let it bubble up immediately
183
186
  task.result()
187
+ finally:
188
+ # Shutdown the executor
189
+ if executor:
190
+ executor.shutdown(wait=False)
184
191
 
185
192
 
186
193
  def run_concurrently(*fns: Union[Callable, Tuple]) -> None:
@@ -2,6 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import json
5
6
  import types as builtin_types
6
7
  from datetime import date, datetime, time, timedelta
7
8
  from typing import Any, Callable, Dict, List, Set, Tuple, Type, Union, get_type_hints
@@ -227,3 +228,85 @@ def serialize_datetime(dt: Union[date, datetime, time, timedelta]) -> str:
227
228
  The serialized datetime.
228
229
  """
229
230
  return str(dt)
231
+
232
+
233
+ try:
234
+ from pandas import DataFrame
235
+
236
+ def format_dataframe_values(df: DataFrame) -> List[List[Any]]:
237
+ """Format dataframe values to a list of lists.
238
+
239
+ Args:
240
+ df: The dataframe to format.
241
+
242
+ Returns:
243
+ The dataframe as a list of lists.
244
+ """
245
+ return [
246
+ [str(d) if isinstance(d, (list, tuple)) else d for d in data]
247
+ for data in list(df.values.tolist())
248
+ ]
249
+
250
+ @serializer
251
+ def serialize_dataframe(df: DataFrame) -> dict:
252
+ """Serialize a pandas dataframe.
253
+
254
+ Args:
255
+ df: The dataframe to serialize.
256
+
257
+ Returns:
258
+ The serialized dataframe.
259
+ """
260
+ return {
261
+ "columns": df.columns.tolist(),
262
+ "data": format_dataframe_values(df),
263
+ }
264
+
265
+ except ImportError:
266
+ pass
267
+
268
+ try:
269
+ from plotly.graph_objects import Figure
270
+ from plotly.io import to_json
271
+
272
+ @serializer
273
+ def serialize_figure(figure: Figure) -> list:
274
+ """Serialize a plotly figure.
275
+
276
+ Args:
277
+ figure: The figure to serialize.
278
+
279
+ Returns:
280
+ The serialized figure.
281
+ """
282
+ return json.loads(str(to_json(figure)))["data"]
283
+
284
+ except ImportError:
285
+ pass
286
+
287
+
288
+ try:
289
+ import base64
290
+ import io
291
+
292
+ from PIL.Image import Image as Img
293
+
294
+ @serializer
295
+ def serialize_image(image: Img) -> str:
296
+ """Serialize a plotly figure.
297
+
298
+ Args:
299
+ image: The image to serialize.
300
+
301
+ Returns:
302
+ The serialized image.
303
+ """
304
+ buff = io.BytesIO()
305
+ image.save(buff, format=getattr(image, "format", None) or "PNG")
306
+ image_bytes = buff.getvalue()
307
+ base64_image = base64.b64encode(image_bytes).decode("utf-8")
308
+ mime_type = getattr(image, "get_format_mimetype", lambda: "image/png")()
309
+ return f"data:{mime_type};base64,{base64_image}"
310
+
311
+ except ImportError:
312
+ pass
reflex/utils/types.py CHANGED
@@ -19,6 +19,7 @@ from typing import (
19
19
  )
20
20
 
21
21
  from pydantic.fields import ModelField
22
+ from sqlalchemy.orm import Mapped
22
23
 
23
24
  from reflex.base import Base
24
25
  from reflex.utils import serializers
@@ -132,8 +133,11 @@ def get_attribute_access_type(cls: GenericType, name: str) -> GenericType | None
132
133
  hints = get_type_hints(cls)
133
134
  if name in hints:
134
135
  type_ = hints[name]
136
+ type_origin = get_origin(type_)
137
+ if isinstance(type_origin, type) and issubclass(type_origin, Mapped):
138
+ return get_args(type_)[0] # SQLAlchemy v2
135
139
  if isinstance(type_, ModelField):
136
- return type_.type_
140
+ return type_.type_ # SQLAlchemy v1.4
137
141
  return type_
138
142
  elif is_union(cls):
139
143
  # Check in each arg of the annotation.
@@ -272,6 +276,23 @@ def check_type_in_allowed_types(value_type: Type, allowed_types: Iterable) -> bo
272
276
  return get_base_class(value_type) in allowed_types
273
277
 
274
278
 
279
+ def check_prop_in_allowed_types(prop: Any, allowed_types: Iterable) -> bool:
280
+ """Check that a prop value is in a list of allowed types.
281
+ Does the check in a way that works regardless if it's a raw value or a state Var.
282
+
283
+ Args:
284
+ prop: The prop to check.
285
+ allowed_types: The list of allowed types.
286
+
287
+ Returns:
288
+ If the prop type match one of the allowed_types.
289
+ """
290
+ from reflex.vars import Var
291
+
292
+ type_ = prop._var_type if _isinstance(prop, Var) else type(prop)
293
+ return type_ in allowed_types
294
+
295
+
275
296
  # Store this here for performance.
276
297
  StateBases = get_base_class(StateVar)
277
298
  StateIterBases = get_base_class(StateIterVar)
reflex/vars.py CHANGED
@@ -1284,6 +1284,29 @@ class Var:
1284
1284
  _var_type=str,
1285
1285
  )
1286
1286
 
1287
+ def strip(self, other: str | Var[str] = " ") -> Var:
1288
+ """Strip a string var.
1289
+
1290
+ Args:
1291
+ other: The string to strip the var with.
1292
+
1293
+ Returns:
1294
+ A var with the stripped string.
1295
+
1296
+ Raises:
1297
+ TypeError: If the var is not a string.
1298
+ """
1299
+ if not types._issubclass(self._var_type, str):
1300
+ raise TypeError(f"Cannot strip non-string var {self._var_full_name}.")
1301
+
1302
+ other = Var.create_safe(json.dumps(other)) if isinstance(other, str) else other
1303
+
1304
+ return self._replace(
1305
+ _var_name=f"{self._var_name}.replace(/^${other._var_full_name}|${other._var_full_name}$/g, '')",
1306
+ _var_is_string=False,
1307
+ merge_var_data=other._var_data,
1308
+ )
1309
+
1287
1310
  def split(self, other: str | Var[str] = " ") -> Var:
1288
1311
  """Split a string var into a list.
1289
1312
 
@@ -1324,7 +1347,7 @@ class Var:
1324
1347
  raise TypeError(f"Cannot join non-list var {self._var_full_name}.")
1325
1348
 
1326
1349
  if other is None:
1327
- other = Var.create_safe("")
1350
+ other = Var.create_safe('""')
1328
1351
  if isinstance(other, str):
1329
1352
  other = Var.create_safe(json.dumps(other))
1330
1353
  else:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: reflex
3
- Version: 0.3.6
3
+ Version: 0.3.7
4
4
  Summary: Web apps in pure Python.
5
5
  Home-page: https://reflex.dev
6
6
  License: Apache-2.0
@@ -16,6 +16,7 @@ Classifier: Programming Language :: Python :: 3.9
16
16
  Classifier: Programming Language :: Python :: 3.10
17
17
  Classifier: Programming Language :: Python :: 3.11
18
18
  Requires-Dist: alembic (>=1.11.1,<2.0.0)
19
+ Requires-Dist: charset-normalizer (>=3.3.2,<4.0.0)
19
20
  Requires-Dist: cloudpickle (>=2.2.1,<3.0.0)
20
21
  Requires-Dist: distro (>=1.8.0,<2.0.0) ; sys_platform == "linux"
21
22
  Requires-Dist: fastapi (>=0.96.0,<0.97.0)
@@ -33,7 +34,7 @@ Requires-Dist: python-socketio (>=5.7.0,<6.0.0)
33
34
  Requires-Dist: redis (>=4.3.5,<5.0.0)
34
35
  Requires-Dist: reflex-hosting-cli (>=0.1.2)
35
36
  Requires-Dist: rich (>=13.0.0,<14.0.0)
36
- Requires-Dist: sqlmodel (>=0.0.8,<0.0.9)
37
+ Requires-Dist: sqlmodel (>=0.0.14,<0.0.15)
37
38
  Requires-Dist: starlette-admin (>=0.9.0,<0.10.0)
38
39
  Requires-Dist: typer (>=0.4.2,<1)
39
40
  Requires-Dist: uvicorn (>=0.20.0,<0.21.0) ; python_version < "3.12"
@@ -50,7 +50,7 @@ reflex/.templates/jinja/app/rxconfig.py.jinja2,sha256=Scfnv_vZXIPQcz8zNIa4FmjEym
50
50
  reflex/.templates/jinja/web/package.json.jinja2,sha256=YU9PF8WgiQ8OPlG3oLDX31t2R0o6DFntCh698NTiDK8,548
51
51
  reflex/.templates/jinja/web/pages/_app.js.jinja2,sha256=8iIL2oZPK0_3qjef9t7BOn6v0gdtJVMENsDg4_ZvLrU,857
52
52
  reflex/.templates/jinja/web/pages/_document.js.jinja2,sha256=E2r3MWp-gimAa6DdRs9ErQpPEyjS_yV5fdid_wdOOlA,182
53
- reflex/.templates/jinja/web/pages/base_page.js.jinja2,sha256=GGnXlJqdPCNv4Ki0Sn0crU8fiuA7TuJOAQivAM0HmdM,318
53
+ reflex/.templates/jinja/web/pages/base_page.js.jinja2,sha256=gIJ0LrJSghgL1JRY8_y-yAgGwGuR2Gpq1d9bXn6SUVk,358
54
54
  reflex/.templates/jinja/web/pages/component.js.jinja2,sha256=1Pui62uSL7LYA7FXZrh9ZmhKH8vHYu663eR134hhsAY,86
55
55
  reflex/.templates/jinja/web/pages/custom_component.js.jinja2,sha256=jDqpIxibHp1imx6xT8cpr8hgdXXWHTU7uqYB5pBvyXk,882
56
56
  reflex/.templates/jinja/web/pages/index.js.jinja2,sha256=5yzGDRJ-pMCnYwVSnUCQk7eZK-hfD0VW7tLISHkMnvA,343
@@ -72,18 +72,18 @@ reflex/.templates/web/utils/client_side_routing.js,sha256=iGGnZY07XMNLUT2GT_Y6OE
72
72
  reflex/.templates/web/utils/helpers/dataeditor.js,sha256=K6_GVf_pjwE3TT054CjWyFGaA71gOZsoly-8vH-AEpg,1859
73
73
  reflex/.templates/web/utils/helpers/range.js,sha256=FevdZzCVxjF57ullfjpcUpeOXRxh5v09YnBB0jPbrS4,1152
74
74
  reflex/.templates/web/utils/state.js,sha256=btob-V8pdL_q93x37gW2YNHtBPQDEqoXgrl_RLb1y7g,18847
75
- reflex/__init__.py,sha256=uokcDukKB8JFn2TYivO2zBvkVZY65PG1QxqwOYVrY30,7310
76
- reflex/__init__.pyi,sha256=grvhJNV6LJB27hai2T_FzkEjBpCrSn4WSU8Q4_7BBdQ,26736
75
+ reflex/__init__.py,sha256=UtYGz9X8Ypr1qZubu47qCJBOEXitthFoLZpac31_oZ0,8025
76
+ reflex/__init__.pyi,sha256=l9lzpqZaa6KDN7BxQlc2RqSBf1ICVqSdmOHdOZG6FRo,26826
77
77
  reflex/__main__.py,sha256=6cVrGEyT3j3tEvlEVUatpaYfbB5EF3UVY-6vc_Z7-hw,108
78
78
  reflex/admin.py,sha256=-bTxFUEoHo4X9FzmcSa6KSVVPpF7wh38lBvF67GhSvQ,373
79
- reflex/app.py,sha256=zvI8H52tgAYJdROmIZLCxJJE5aBrkz3bQ1xaEZuJLYQ,37748
79
+ reflex/app.py,sha256=OgvTHhPxKui4WPDFa19CwkLpj29KhNCNccqE-n5jt70,37846
80
80
  reflex/app.pyi,sha256=tg6JMC8vGshJjZFWeO3VK50yWab-Vhc6kX1g_kWTVxM,4695
81
81
  reflex/base.py,sha256=8UcGxfd_ayYie-VK6M9IXNZ1EjjX_OpxBJGY0F1Az1k,3608
82
82
  reflex/compiler/__init__.py,sha256=r8jqmDSFf09iV2lHlNhfc9XrTLjNxfDNwPYlxS4cmHE,27
83
83
  reflex/compiler/compiler.py,sha256=Fg6YBMAmKtFzD_45OcQFbsOUWDs53-gtRw-OrwMIsO4,12163
84
84
  reflex/compiler/templates.py,sha256=U4Nt1WH0UsP-fkM3TQoV9ASBsCJEZEM7HOzthzhphtE,3516
85
85
  reflex/compiler/utils.py,sha256=gvZsj_OXGHa8Aewfp5UOLCh1-7ukxHnWEifOR4WyB9Y,12830
86
- reflex/components/__init__.py,sha256=jIpJevwio4FqpsFOAs0fd-se0xFsqCE38hZxiEWQhAE,7419
86
+ reflex/components/__init__.py,sha256=9YLlTu426wzPqolfeA-I4F6TWvhhauQPBcE8aAA56uE,7468
87
87
  reflex/components/base/__init__.py,sha256=BIobn_49_ZsyQf-F50kOGq4FklfXiBRDTPCbPBM4p64,260
88
88
  reflex/components/base/app_wrap.py,sha256=_4Zoqz8_8EVO1rh99o7LyJdKU4ekWYRoD0owcqQfRkI,575
89
89
  reflex/components/base/app_wrap.pyi,sha256=oSmHUtinQKBxDcg2yGzJsWvyFW9xk9-azRovNN9i88M,2887
@@ -100,7 +100,10 @@ reflex/components/base/meta.py,sha256=RWITTQTA_35-FbaVGhjkAWDOmU65rzJ-WedENRJk-3
100
100
  reflex/components/base/meta.pyi,sha256=JIWM2x8z_A8sOpEoRv-avjOXyEC8OajqTGnCOnmBMqQ,13083
101
101
  reflex/components/base/script.py,sha256=sNuoSeO1XxVfqSd9EADlOeNDti-zf8-vn_yd0NcmImc,2298
102
102
  reflex/components/base/script.pyi,sha256=11PEE77sBt78L4AsEdhgD7uQ7TpqGNStCpD_vI8MIDw,4495
103
- reflex/components/component.py,sha256=AZS9_vfrj7KmqoSDI4IVBBKE2E2_eVVRF6rgBmBarBQ,55865
103
+ reflex/components/chakra/__init__.py,sha256=hpNoYzVqv9APaY1Il3A0_E67iCPDjyh5s5bbxrUaVrg,476
104
+ reflex/components/chakra/media/image.py,sha256=rGYVIxpBisoTuaaKwZEM7BkIHD1jfGXqNJeeWbh0Hb4,2405
105
+ reflex/components/chakra/media/image.pyi,sha256=UqceQsYmkdwlcK_5sw6Ywj1ux8i_zzh14y_XNpFZ5A0,5423
106
+ reflex/components/component.py,sha256=e52EIC6EPD324cMaopaT3UIe5x_3w0OSxBE0mkAMuEI,56665
104
107
  reflex/components/datadisplay/__init__.py,sha256=UB-LJcrXj6L7nZK-WLoUwWOvc0b21Yh0s6W3J0xE8iU,721
105
108
  reflex/components/datadisplay/badge.py,sha256=5QJivxZyjZhcxJS-XBU56CW1A7vADINKcwrhg9qUeKg,357
106
109
  reflex/components/datadisplay/badge.pyi,sha256=bX3mS37wsMOoL60hXDpqK440GBhlJSmLXl8KF1ptFk8,3718
@@ -108,8 +111,8 @@ reflex/components/datadisplay/code.py,sha256=yhHXh6AR5yns_CCZbwRAuKyLy99v4sMMeKs
108
111
  reflex/components/datadisplay/code.pyi,sha256=-nJkyceGX_MGhle6jzjOPLNOOy5VoDvHAmv_bwI6JWE,33834
109
112
  reflex/components/datadisplay/dataeditor.py,sha256=vn2FECDIhKeLd1QJpOLqDt2vHpvyof5k5ETuBpjL42Q,12577
110
113
  reflex/components/datadisplay/dataeditor.pyi,sha256=SzXDOifd0r6FIL8SKHfCbYVMnvAuLTTtJrfz22ig57E,10480
111
- reflex/components/datadisplay/datatable.py,sha256=2YKm5VN-DxMNshaqJfA5PoF85bsrazf3Wko8UgOlYYE,5144
112
- reflex/components/datadisplay/datatable.pyi,sha256=_WKAxHeOPOXiNbFsPxgeWWMIdvrO_TQb6nJxn0DPx98,7349
114
+ reflex/components/datadisplay/datatable.py,sha256=jinq5J8CIcmdbMynVLc9HAPCAVhozsN_gjXf_RPnkJo,4300
115
+ reflex/components/datadisplay/datatable.pyi,sha256=GumHMtQQO_Obus495cRonte0dEQPycgUpahJELhOc7k,7124
113
116
  reflex/components/datadisplay/divider.py,sha256=5iapFyWm_nnO7LYmKpivPCDequKSWes0kS72s9hj9vw,655
114
117
  reflex/components/datadisplay/divider.pyi,sha256=PFy1F5vPmrpXQD9claRQBnXkxw5yxjbVhQO16nO5hAY,3991
115
118
  reflex/components/datadisplay/keyboard_key.py,sha256=gqSX2VqnC8zzkmHnwvnXtnfNpuEsGeBmaLCdo7TgNqg,185
@@ -143,8 +146,8 @@ reflex/components/el/element.pyi,sha256=7DZ1eAmSTE-OaCyORvH_gRKLi-HBaRZrmmn0u91R
143
146
  reflex/components/el/elements/__init__.py,sha256=jWqZctwIYVVKg3XJu06vO25EasGa7dTJ3L-kFuAAFEQ,3506
144
147
  reflex/components/el/elements/base.py,sha256=ZNdYF0IL1rQ5lclVqgwhPqGkYLDTjkwnSjxI0yzAjK8,2104
145
148
  reflex/components/el/elements/base.pyi,sha256=nJhsjGezYjkK1YH-pDax-l208x8AiTkg7DBhHtATEJk,6618
146
- reflex/components/el/elements/forms.py,sha256=jjl3JBxu7me4x2R-QFQGBk5D-9vqu0VMRmPL1URQh5M,11023
147
- reflex/components/el/elements/forms.pyi,sha256=7wmugbVdpSTeJaCIW0WIbYyBLSts_XPMlxNPQisJerg,99845
149
+ reflex/components/el/elements/forms.py,sha256=_NsiCzJNx2OoKWw0NMEx9fMcLZ41ubxS4k7taSnWUgg,12751
150
+ reflex/components/el/elements/forms.pyi,sha256=I-YRig9xbXWblxINTPJGl76CrC7mcOCu5nl-3qQjXRY,100882
148
151
  reflex/components/el/elements/inline.py,sha256=-Wg5ubLlY_V8zwCKSMe7T0J49VAMhcplP8Yy26cJ-_4,3441
149
152
  reflex/components/el/elements/inline.pyi,sha256=jIZFDj8MJK9aJ17ej9hKmmKJ_IsIOqeyzMLJuSo1Be8,172316
150
153
  reflex/components/el/elements/media.py,sha256=AaDFbVLAsr4xyrpAlfOSMfGFqb4_Llo7SP4pux2mTgY,9053
@@ -219,8 +222,8 @@ reflex/components/forms/textarea.pyi,sha256=YfWOSRB6tAGcRKbtTumsVrQxt6Q9CVaBfjwU
219
222
  reflex/components/forms/upload.py,sha256=A4lxEaBWqr-In4ty-lPVGc4qtZUfG4YiN-Rl9dBrc4g,5940
220
223
  reflex/components/forms/upload.pyi,sha256=ztJw0ry8d1ujPB9hXGI7L2cJYhrNb7SlMne-lP6IIBs,8354
221
224
  reflex/components/graphing/__init__.py,sha256=ZprrsFBfhR63q3vxHWCm3H-rSJhTfxjVOaUcGDfxMrw,149
222
- reflex/components/graphing/plotly.py,sha256=c27X2or3xXKbNjJr498UXPfGhwGWvHfpMeglf1AfJ-A,1371
223
- reflex/components/graphing/plotly.pyi,sha256=5PRowvghfLj2Pm2y0R4ldl7JGPBUxS1fqdhEalRuWxo,7179
225
+ reflex/components/graphing/plotly.py,sha256=bIXN9lsxYEbpmSvbau6GPYdLTZihEB3YgT1psTGVzXI,910
226
+ reflex/components/graphing/plotly.pyi,sha256=CkQ3n0p2tI3J7DDRMgAktBDeMRBPuJSi5S_J58ha2N8,6902
224
227
  reflex/components/graphing/recharts/__init__.py,sha256=_z8TImfBT085hUYH-UQGwtSO69ZIlg5IWu-IKLIwUyc,2373
225
228
  reflex/components/graphing/recharts/cartesian.py,sha256=kSOdShCDIP7sXSmRxTfwPYSuOEoBs8MNcT9yja37-bc,19595
226
229
  reflex/components/graphing/recharts/cartesian.pyi,sha256=DCapfKTgwpFRCr7ZS4GdnjV-Whag3tnPvSEhpCdmQJQ,85504
@@ -266,15 +269,14 @@ reflex/components/libs/chakra.pyi,sha256=GzDPqiNgzVywAAsGJtLP8X5Lg0zN2jqk4_7u_U-
266
269
  reflex/components/libs/react_player.py,sha256=DvxvcGr2ZQY3TtiW75QffUKrl3__MRHKXBnA5uLGBiM,1096
267
270
  reflex/components/libs/react_player.pyi,sha256=_MTgN8FrcH5pH9nvp29Ih0HyLUj0bQrBU0F0FYXcioM,4430
268
271
  reflex/components/literals.py,sha256=zsKMvdKqMoPm8SW8A7hnoOO5s4rRLuSRO68VpasmGLo,156
269
- reflex/components/media/__init__.py,sha256=Uz-J7NJ8Cc4blZ1yGYJxAaJ8w9YJH0OaakkHGSbZQlo,240
272
+ reflex/components/media/__init__.py,sha256=htxRQjS1NyvDBZwvZiU_v3TIuMLcDTSCbIfhK7CZndM,215
270
273
  reflex/components/media/audio.py,sha256=dLV0w_zIBBJccj8b3cOfZnx2QVhVCSxOlNcpwRVOCD0,195
271
274
  reflex/components/media/audio.pyi,sha256=Lmjbc5qritmC4WApON79JMk9EhTYoMeSQdd756GZu04,4396
272
275
  reflex/components/media/avatar.py,sha256=1Cy9Vhkp66vGVOvrWpqLhwOblM5w9wLReCbniKB6TvA,1673
273
276
  reflex/components/media/avatar.pyi,sha256=S_H5-ux4HxVtYyktB0u0RALGWCH2PxcH98kSz5h8mcE,10651
274
277
  reflex/components/media/icon.py,sha256=Kvs-oOQpC1FJdglLLgkzB60qEK1VH4LLy0mjqzEclSM,2458
275
278
  reflex/components/media/icon.pyi,sha256=hceJFS5f3f0-VLNExaRyz1p5e3AKUBQcu9eFmBzRP7g,6335
276
- reflex/components/media/image.py,sha256=Ez54IbY6SR4Ox0ojTOwZf_XVoU1WlHDmm1BLQYY0bII,3095
277
- reflex/components/media/image.pyi,sha256=T7AE9pxbapS8AfbS_JfHaWXY2fgupMVJAmd_yaEyYyY,5628
279
+ reflex/components/media/image.pyi,sha256=fT1vJ5kCvsLCyJsteT9rS8njsKwqKmDfQ5IoZyxy6C4,5488
278
280
  reflex/components/media/video.py,sha256=CJ99fj_JQp8zrY-x2YHkcp3v6oh6YDyaMJguAM7FygU,195
279
281
  reflex/components/media/video.pyi,sha256=YZQm75lglPSg_jW7hgpufaHthHE752ZjdVock_bXnPg,4396
280
282
  reflex/components/navigation/__init__.py,sha256=M3mwbxDZRbj-mg-eud95uSI9gnJCShvi3QdpXfsr1hs,450
@@ -290,6 +292,13 @@ reflex/components/navigation/nextlink.py,sha256=9djgcEeAYiejW1hVpp5yMXV-b-GGD_2J
290
292
  reflex/components/navigation/nextlink.pyi,sha256=Demxs4Xe7FTlZ94iCKtMPDzNG6scazfBjuFM5LeCI3Q,3537
291
293
  reflex/components/navigation/stepper.py,sha256=m9hXgIkgXzWMTFCpdPS4HBdtplEFufd3EWigMWBrdn4,2940
292
294
  reflex/components/navigation/stepper.pyi,sha256=njbDxxDxvH5gSKUHtFQFM6IpDiiK9GYwOqWJHSIfnwc,28483
295
+ reflex/components/next/__init__.py,sha256=ZE6r4Z-jPVq3ZNnz5g1Wiz1gD20TZqDAIKjjGdFQJ1M,184
296
+ reflex/components/next/base.py,sha256=Di_-_T6N3DqvuwaJD2KSCSgKgw202VbNOcBKGvTDv7I,189
297
+ reflex/components/next/base.pyi,sha256=8fnpDpvW9RHo8WJ9JnJOrmoGLErQEj1L0FQxPjALjDs,3299
298
+ reflex/components/next/image.py,sha256=ZK_hwW8R4aqEvL76RnW26REf788hv-5u3IWH7nB0slk,3831
299
+ reflex/components/next/image.pyi,sha256=T0QyFRlAzP9WgeyjYddOuRzvzm25MvS-tYpXkJmRwKE,5790
300
+ reflex/components/next/video.py,sha256=2f81Ftb-6sikQb1xvExZqqQe0tcVjUY80ldh-GJ_uZw,730
301
+ reflex/components/next/video.pyi,sha256=KJRYUhFWMFfN1e46hFQ8Hl-L8qHqicqpb0E6GHtI_0w,3424
293
302
  reflex/components/overlay/__init__.py,sha256=tl59pMyYL3d-M8td8qLUinxTWVk5GJB19i6vIGbEMF4,904
294
303
  reflex/components/overlay/alertdialog.py,sha256=lADPdtTkL-U0jsvm8DfZc4fQ3oJ8pnYEAGpA341M8_U,5198
295
304
  reflex/components/overlay/alertdialog.pyi,sha256=BBE2yDNIx4ZmM6HXUMddd37U55y7hZzmwcro4avplws,24397
@@ -306,15 +315,99 @@ reflex/components/overlay/popover.pyi,sha256=uFDJmqS67tg0NxORinCyXKWEp6RUs_Y96i_
306
315
  reflex/components/overlay/tooltip.py,sha256=0BlLdOeZmAUHPOx_xlt8_0XkICanJUJBM6Q0KVSJAbM,2132
307
316
  reflex/components/overlay/tooltip.pyi,sha256=aFc-dyJNPgFVf2DDHPbg5mCJiTGlsPzj32UDUwGJ69s,6124
308
317
  reflex/components/radix/__init__.py,sha256=h17lShMGLzeWJ64oiVaXk2cAihC3TRE7sckq7UZAyJQ,63
309
- reflex/components/radix/themes/__init__.py,sha256=Xlnf0EZaFnxMYiXxdX82oBVSnCD6nHmgeLbe5qhwWiI,2392
310
- reflex/components/radix/themes/base.py,sha256=qm9OCyw-uxVauoF0NB895mqjeJGpjeqvdQjuo5Acm5o,4541
311
- reflex/components/radix/themes/base.pyi,sha256=aMXUoSGiN5na-eGr91GGlkaiFDEiIg-4eAWLeKdYD8U,21305
312
- reflex/components/radix/themes/components.py,sha256=QvLgoGL9DaKskS7fh-uKQT0jXdLiI21L83IbV88k-0A,5503
313
- reflex/components/radix/themes/components.pyi,sha256=jmQU2gjs68CQZahh-ejLUgcHjIHVBQFM3eWkHqm4_ss,46744
314
- reflex/components/radix/themes/layout.py,sha256=p7X5Flm71_9SVeUzOwv-ljj3Ccn5fF4jFPsECkdRiKQ,4195
315
- reflex/components/radix/themes/layout.pyi,sha256=afOO3oldVCsAqOplTApLDnDEJi2lyUAoZTDnzaYNTzc,43573
318
+ reflex/components/radix/primitives/__init__.py,sha256=hs19lINi-zYlsOUPrXSwjPFbrGyWx-w34669KQnUyTs,106
319
+ reflex/components/radix/primitives/accordion.py,sha256=5Ldri-NKh7FwG90eEG_lLpVX337Jw7bzkLMfdBHaDQE,7451
320
+ reflex/components/radix/primitives/accordion.pyi,sha256=9RR8hZSQn2-w9IFtzw_D-9DJtxw7s7exgX1tj9pA6Nw,23153
321
+ reflex/components/radix/themes/__init__.py,sha256=615Yg-j04dqhEZJdKoafCyOOXBTtCT20u7d2cBKleeI,237
322
+ reflex/components/radix/themes/base.py,sha256=-njjbSJ32BZok_m7NzxiJ49RGXz4IYWnuSa2XsgpjPI,4558
323
+ reflex/components/radix/themes/base.pyi,sha256=l15DTLw2JzDTkhemG7xI9V6IjIiidQhvxxYLhzNdMV4,21252
324
+ reflex/components/radix/themes/components/__init__.py,sha256=TSb0XgGJetYksN-_UzlowzLoYzhEUJesyOBVBLfoQlI,4742
325
+ reflex/components/radix/themes/components/alertdialog.py,sha256=eTSgX1Dm9L978z20uw6n5CPE2L76if1tQKHIyjCt55k,1942
326
+ reflex/components/radix/themes/components/alertdialog.pyi,sha256=o4chq1XTpzQc70NdK5KPbPFkIwZVEteZ4D5J7pC0Nnw,28444
327
+ reflex/components/radix/themes/components/aspectratio.py,sha256=W4CZuDFYHdLHoMn_ow5r3HJRCiqmT60FYJx6puUQ4fE,480
328
+ reflex/components/radix/themes/components/aspectratio.pyi,sha256=pzsXWqfgr0kk5bWF3DONcU2q_OuW06tt69eMurNX3JE,5501
329
+ reflex/components/radix/themes/components/avatar.py,sha256=mzcM87siqaBOLcPvB4hxO_KqP4zXlIOtWiwWxt_Xkxs,942
330
+ reflex/components/radix/themes/components/avatar.pyi,sha256=Ub5wKzb9l3E1JuMZ5uU3SfeHfYGcJaYfyA99r0ieeS0,8297
331
+ reflex/components/radix/themes/components/badge.py,sha256=AxoFSq8nBa5yQAnsBhHlYJpDI1Gd7y290RJv_2zThno,978
332
+ reflex/components/radix/themes/components/badge.pyi,sha256=tMi52RVfwWzB7IIZkunGTfljepfiOPBmgolQFQqQ8sE,11526
333
+ reflex/components/radix/themes/components/button.py,sha256=2O5K7ttuLY8uHTGrpJdU9Ly1qZGXYXXXf6k3av9CEN8,1086
334
+ reflex/components/radix/themes/components/button.pyi,sha256=M1etdwBJGCoL7ow3eMoLyDMpEdx0OgTEmwMmTbjHAD8,13783
335
+ reflex/components/radix/themes/components/callout.py,sha256=z8LBQH-Q_5sdUfG2upJTcJo7ROiUjG2jZE8_5IWcp_U,1424
336
+ reflex/components/radix/themes/components/callout.pyi,sha256=QLoB6eZCjABtwpwbnbkFHPAJd71v_unViNeooBoIQ5Y,27680
337
+ reflex/components/radix/themes/components/card.py,sha256=jshS75eMaxgmDUiYEkbEqFVWgsaFSnBfo9yyE2YKTRo,700
338
+ reflex/components/radix/themes/components/card.pyi,sha256=h2zzh83T2ikW59MhstvTaMGGi05vPu35epNZrFUcbYs,9182
339
+ reflex/components/radix/themes/components/checkbox.py,sha256=kYkH3pCxEVdujQ2W2rFk7QvqDcAGdIh-JNPW6Rb-YwE,1837
340
+ reflex/components/radix/themes/components/checkbox.pyi,sha256=_q7lzXnkiGm_pudS4DIoYFXvI5N8MrfUexrmXC35Hf8,9345
341
+ reflex/components/radix/themes/components/contextmenu.py,sha256=zUTll40KITIS7I4EGkVqILHI9sD0fmsVj7ceAxfXZaw,4200
342
+ reflex/components/radix/themes/components/contextmenu.pyi,sha256=Gxs2DR4KxgD3XpYKSaNck67nl3srDU9umLMvUczT7BM,45151
343
+ reflex/components/radix/themes/components/dialog.py,sha256=Rw6eRkqIOtvAwAJDCBJXAIW-__xdevfTRpfEO4h1UiI,2290
344
+ reflex/components/radix/themes/components/dialog.pyi,sha256=J0ccEab6jEOv4Cy48C8JneY4KizZN7nWMANdu4Cg0Es,28827
345
+ reflex/components/radix/themes/components/dropdownmenu.py,sha256=C7PljWx04NmF0xmvUaZ2byzjPMQbnWUVTxW9vTlxj8E,3178
346
+ reflex/components/radix/themes/components/dropdownmenu.pyi,sha256=yGmKT34VnMJSw7kFZ_BMnhWXmrIY90ciMdGuiPk-N6I,39223
347
+ reflex/components/radix/themes/components/hovercard.py,sha256=_PAN2h5EL3pd0ewk4gfZlc5x3x_znucndLvtFCTQKhk,2112
348
+ reflex/components/radix/themes/components/hovercard.pyi,sha256=v8S1VMdvEZRPetAhX7BYKZoTsdsKwrurCziEBDCG7IA,19868
349
+ reflex/components/radix/themes/components/iconbutton.py,sha256=By7ikf6nIWRqys1C55_buFZauPDKklvRufWi6qtvXfs,1098
350
+ reflex/components/radix/themes/components/iconbutton.pyi,sha256=BDN47vJRFmjFOeXLnIin7_rl6AtEcGD-tHR9Fyn9FsY,13841
351
+ reflex/components/radix/themes/components/icons.py,sha256=bYS0YAnCocSrAsIG-ljAIHG97nOH6pEM8WZoihTX9fM,7884
352
+ reflex/components/radix/themes/components/icons.pyi,sha256=Q4A3AFUjP-d0jrJVjbbyztx6I7PX71GQ30k2i4FmOEA,6577
353
+ reflex/components/radix/themes/components/inset.py,sha256=xVmYzxfUIjmzJMJbK_GYXgXk4G-tAH9YKYL8Xl8eJxQ,958
354
+ reflex/components/radix/themes/components/inset.pyi,sha256=HebXDUwGwAc3JIffA6xrKA1HmLJXRCLZsp1tjj3ijMw,9834
355
+ reflex/components/radix/themes/components/popover.py,sha256=1FB2hbR44c0PVG8pLj4aax1v1ioLJ-hM8mmbwWkWzTY,2803
356
+ reflex/components/radix/themes/components/popover.pyi,sha256=5YgRjLHi4NajdFC_JEGFGDj_zrpleo0YFRt9OvO1E6w,25330
357
+ reflex/components/radix/themes/components/radiogroup.py,sha256=HX_BHDHwWgrHqjsFSRfcXRECflW4B7qDJcjjwjKNAP0,2209
358
+ reflex/components/radix/themes/components/radiogroup.pyi,sha256=smg2tVGhhQjiNI3i5ffGY-zTdGgDwUeV8MooHOSROWo,14127
359
+ reflex/components/radix/themes/components/scrollarea.py,sha256=puVu_tUTZLxNikwRy4KEJOO7IMzWvkvjszQkIIzLzNs,1105
360
+ reflex/components/radix/themes/components/scrollarea.pyi,sha256=CsbU2DxDiUmaj9ds6rEQcv-OpMM3Yez3ygsH6NfWwXc,6659
361
+ reflex/components/radix/themes/components/select.py,sha256=CFi-IZM9KVaZRsql8IE6M34b-eHDaeJiEH6LXEiGFJ4,4675
362
+ reflex/components/radix/themes/components/select.pyi,sha256=nfBX1Pf_e8dvzCWIsEn3Hj40x0PKpXv_lXFiJqjH244,41843
363
+ reflex/components/radix/themes/components/separator.py,sha256=Z98WGWqpEFegf3yBkdzrDHAurs_H3ChhueNQtkD0GfA,847
364
+ reflex/components/radix/themes/components/separator.pyi,sha256=oQN7q6mOnekUD7FBkdUK3RlS8b4w_bwOTdnvDp6s8ks,7855
365
+ reflex/components/radix/themes/components/slider.py,sha256=YPZluZv6rrdUs7xU0RurMcfzqxHTRlLwcWR_on2FzXg,1944
366
+ reflex/components/radix/themes/components/slider.pyi,sha256=cRcV1Vhoke_FlX8-T8CIc9zDrx2VnZkMAdCjSMO2EEA,9558
367
+ reflex/components/radix/themes/components/switch.py,sha256=Lp_feJEgo9YoWjtXRXKwHRNE2SGiNJzcbUFN5s1av28,1950
368
+ reflex/components/radix/themes/components/switch.pyi,sha256=EVn04sIlPxT6Sbse9F5GQ8h4b9L_CTSvhp1m31xepkM,9424
369
+ reflex/components/radix/themes/components/table.py,sha256=3IXQM0FyyIYP57g9k1Yj1Q3w1cB5io2O-2yZ18Ra3Eg,2223
370
+ reflex/components/radix/themes/components/table.pyi,sha256=efLZ1PWHjP9NyWvnEhuV161hdk3i6k95jWAtHdxEnm0,63441
371
+ reflex/components/radix/themes/components/tabs.py,sha256=BjF_yUSg1r16fnPqH5vVVx_kirIWYaRAYpcm0QRxvh8,1889
372
+ reflex/components/radix/themes/components/tabs.pyi,sha256=bvvdD_42ROwjZh-dsZNSV5emba1j89-ulOcid_a1yOQ,20799
373
+ reflex/components/radix/themes/components/textarea.py,sha256=tmvc2vGvdEFVBMgZMIU_ovmQlWNxUuq9TEVnM-SAS7E,2331
374
+ reflex/components/radix/themes/components/textarea.pyi,sha256=LMdI1znoZYX04JHyLS6x-_K8BWn8Ghy44UrjqJx7WtI,13866
375
+ reflex/components/radix/themes/components/textfield.py,sha256=nomA7FkJW8nnY8Flj2OO5xaBzsWM_9WTMWcRnA-hSL8,3040
376
+ reflex/components/radix/themes/components/textfield.pyi,sha256=Wscg7XFcD5QNbp7vIrK4zMDfV8U1RphXGjzZJlVqa2c,33271
377
+ reflex/components/radix/themes/layout/__init__.py,sha256=B8KvgTw9HHKDugL9RNbL4pI0utMQqSoogZoAd6mFx2g,265
378
+ reflex/components/radix/themes/layout/base.py,sha256=OSGDf_RgNEzb1BPZ72VmM9b9TT1dwV08Dsfwb6AUB70,1176
379
+ reflex/components/radix/themes/layout/base.pyi,sha256=071nzD2JwkXR2SjVmzedQCLgQwbKW-rDnHEw4ofijes,7495
380
+ reflex/components/radix/themes/layout/box.py,sha256=tl3qPM0GxOIXP8lpaqZGXhgiq5ZNL-8gBqOomzwAY5U,262
381
+ reflex/components/radix/themes/layout/box.pyi,sha256=NNIw9iPFGbTQQ7FKwsUEPfWquyaBlHqS8bvaEzHOLdw,10618
382
+ reflex/components/radix/themes/layout/container.py,sha256=q_otAvN8f4sHWK5ndinSP28QD9UXVS4DR7P04e5pMGY,541
383
+ reflex/components/radix/themes/layout/container.pyi,sha256=DaUllxb6XmKJC_PHu7ZugYVRQeq5d1xV4KMY95Wt_38,10935
384
+ reflex/components/radix/themes/layout/flex.py,sha256=LVFIR21FJOye9twlxMpt8AiemNH8YftrrmiHswB3ZJQ,1416
385
+ reflex/components/radix/themes/layout/flex.pyi,sha256=6JECUWLzPkg9TwjhROQGZiw9Fgy8kF5P_TAWnshizt8,12984
386
+ reflex/components/radix/themes/layout/grid.py,sha256=Jjh2WxAtelmtaYrszOxOH6N85uqX0qLAdSYyyAc-Gfc,1448
387
+ reflex/components/radix/themes/layout/grid.pyi,sha256=wMoK_7lUYgyhb_-il8xQYiO0Y34docYT6ga_JdIFIx0,9104
388
+ reflex/components/radix/themes/layout/section.py,sha256=Z8PE4GT_uDIMezgmzIKBJ0ktTIZ81R48kYQldeUVwXo,447
389
+ reflex/components/radix/themes/layout/section.pyi,sha256=5_jRUJ1nfvaaqhXKIYW9U5TLVYDPyrtC748gx0kLUyY,10914
390
+ reflex/components/radix/themes/typography/__init__.py,sha256=oJrViUdhgjSkRZ3rc5jSXiudGj5AQzGpwuv3dVbi4aE,446
391
+ reflex/components/radix/themes/typography/base.py,sha256=uxSmOnrr5bnP6_aPI8FI95kn2bf9DZYLXshg-GpCDug,408
392
+ reflex/components/radix/themes/typography/blockquote.py,sha256=wBoOzqg-CVrUXib1cAROmd58XD8BJ8SUkULYYU5FZA4,834
393
+ reflex/components/radix/themes/typography/blockquote.pyi,sha256=Y5OtJZVR6DEmam-RV_oMLpu1VT8lhRhYLxnVcn0WJXo,11351
394
+ reflex/components/radix/themes/typography/code.py,sha256=LpeqyBn19X120ZEo-3jPp5oIWcx8ru6fzjQWDVInFYU,944
395
+ reflex/components/radix/themes/typography/code.pyi,sha256=8m_eqb55DgZ5ALH41zYNWnOF3HM_ydUofE4rY9zRen0,11569
396
+ reflex/components/radix/themes/typography/em.py,sha256=QCorF2A7GD6-zAGGgAxY2CqDTZRm0D76xmOovh38nkg,344
397
+ reflex/components/radix/themes/typography/em.pyi,sha256=-_r53h3p_rUw24ul1Ss89Y0ftkGI6yLP1qdqqOmhyk0,8511
398
+ reflex/components/radix/themes/typography/heading.py,sha256=qpPHCLUQpw2FiE2iT0FDnVOI9vAgkyA2Ka9We67nbLs,1359
399
+ reflex/components/radix/themes/typography/heading.pyi,sha256=LhR08SV85Xj41GKQIb18-ISxxpkP2GE_PGvNwjhvKP8,12141
400
+ reflex/components/radix/themes/typography/kbd.py,sha256=c7wQhhp1I6fy020ZR-3WdNmt3-Yof78YrhmZm1ocAI4,485
401
+ reflex/components/radix/themes/typography/kbd.pyi,sha256=rN_H4sYPdd1RsFhluYAsW8a8oFWvHo4QfpSmJzkflyI,8836
402
+ reflex/components/radix/themes/typography/link.py,sha256=2CQQxQCxFPgW3kXqoNSpYvF57sSCd11t2ZzSyOo4-Vo,1271
403
+ reflex/components/radix/themes/typography/link.pyi,sha256=NfTJlwlh446GGeys910gJ2tXRk6Ubmvz-hYXlTTKFSU,8745
404
+ reflex/components/radix/themes/typography/quote.py,sha256=rGzV-36ksmRLUj5JShs6ZNksZ_Ifv2trx3KkSJmnct8,344
405
+ reflex/components/radix/themes/typography/quote.pyi,sha256=PLyEZ-WR6KJzgrmo5NIWRNnTAcRfJh9bybJkP4fcRCk,8608
406
+ reflex/components/radix/themes/typography/strong.py,sha256=0tTpRWiVba8-S-l0EWRXdGZHsUHIv1Y7JI2XQJGEr20,366
407
+ reflex/components/radix/themes/typography/strong.pyi,sha256=P49T3LIA39UwJrpkLkKA-7gHuJD54-yMxTE5K4dmZpI,8527
408
+ reflex/components/radix/themes/typography/text.py,sha256=JRTu0pN5nBJzebafFOVbOgtsbibMb_2clq4aSGMVI6M,1352
409
+ reflex/components/radix/themes/typography/text.pyi,sha256=WIhMFb2HA6eUxRkhqQ6mAOOxkHtcACzEnWsBAjQXEWg,12134
316
410
  reflex/components/radix/themes/typography.py,sha256=HN2Wq1ELYLDqnnZfbVxtO-wqGvsVbdVZayY54yoKaDg,3714
317
- reflex/components/radix/themes/typography.pyi,sha256=UrLiYnoeTMPqFeG1tJXgiHUEenT-mvp39E6UQeouexA,59847
318
411
  reflex/components/tags/__init__.py,sha256=_YJZvciLOMcImlxycpIt9YnZO1Hg30EWXDafnKcZw5o,120
319
412
  reflex/components/tags/cond_tag.py,sha256=v5BO78bGQQuCy8lM45yI7nAuasxjQoRyQNdj5kakPBY,447
320
413
  reflex/components/tags/iter_tag.py,sha256=88UCoM2KWureOFkKpPRZjQeW3o3dY_98Pa91Iu_422c,3626
@@ -333,10 +426,10 @@ reflex/components/typography/text.py,sha256=32HSSQteGs_brWsuCnCiFiZkfIyAt6VTJlA8
333
426
  reflex/components/typography/text.pyi,sha256=u4fLPQvOSwStBBCxHIesnSCY1XhEb9EX47XIuUWz74I,3660
334
427
  reflex/config.py,sha256=EEY7gBZ2T3p9g6-LqbD-wt_jO6qcPW3a2t6NLtk1QKo,10606
335
428
  reflex/config.pyi,sha256=Gf0Ptm9h0xEPsv0FAfwsSq6fs5ycjiR0WxbYimt9TKY,3278
336
- reflex/constants/__init__.py,sha256=goPNimkDuJHX6kxEKeKvfM8kjiOVfYkMZY7HmmeUvxI,1801
337
- reflex/constants/base.py,sha256=3sl5N6LeBa_xic38sanc7t57ntD23L_xwCB71uy2SWc,5175
429
+ reflex/constants/__init__.py,sha256=hvoydrEk17n1KHsm4dq_DgAYUDIKz0YB9sZuXjJFFvI,1823
430
+ reflex/constants/base.py,sha256=wbkAU-CKWWxct5EfIW2UQSnkMzzlVzc_6O9QQrHK9jo,5364
338
431
  reflex/constants/compiler.py,sha256=PuZuIasjtj-EJtZBAJtVd_Yjhe5yiLDbdLOntVs1DLE,3683
339
- reflex/constants/config.py,sha256=DnoljtuYLsPUlpqVoMCWBm7RhSjCdKP0NE2ZQe-qf-I,1331
432
+ reflex/constants/config.py,sha256=7uUypVy-ezLt3UN3jXEX1XvL3sKaCLBwnJCyYjg9erI,1331
340
433
  reflex/constants/event.py,sha256=8Glq8yt5M0Wlac3iySZ38de_ZHF_VjG6bXVX39D22xU,2266
341
434
  reflex/constants/installer.py,sha256=aDRDkyFMNEZcsSkfy4Es2sSuG6Hx2nJFT7KL4s69PnE,3139
342
435
  reflex/constants/route.py,sha256=yk0WEPqQrNbTvvV8TEy1vvmV2ISg_Gr5jdVxSqFWEm4,1956
@@ -345,33 +438,33 @@ reflex/event.py,sha256=kTxt2vk_t93FfzGcOuO-lpde-A1_o7x8qJDg0-7B3nI,24918
345
438
  reflex/middleware/__init__.py,sha256=x7xTeDuc73Hjj43k1J63naC9x8vzFxl4sq7cCFBX7sk,111
346
439
  reflex/middleware/hydrate_middleware.py,sha256=8wkeB92prQ5rWg2VBU2dO-zgg3qOdeE8T2Dckr6mgws,1924
347
440
  reflex/middleware/middleware.py,sha256=PX9TPaCHI1O-F3OucsZSp94gtMP3ALYs3zXSALOlN9E,1169
348
- reflex/model.py,sha256=3pek3P0bLeK-MRuCvZ25je-bjNOUmjK--UzV0G09dD8,10737
441
+ reflex/model.py,sha256=XJap0qphr0hEdf2HifeY9HJvAnj2JAE6LrHaoU3ZsHw,10757
349
442
  reflex/page.py,sha256=VkrInVJ1jIlu141y4ssFh4dW7d5Uc8CbOaWY9JzwBa0,1916
350
443
  reflex/page.pyi,sha256=nFfbDe-tBsrIrcAKWsoTy92olMkAosbmddh_Pgf2Sxc,505
351
- reflex/reflex.py,sha256=TffCoKdnCCBNTg1OTcQ84DnjB9SVJ2NY2l1KhuP9jj0,16569
444
+ reflex/reflex.py,sha256=WzTE0itKnNPzRm7CTtb7WSI-9v-qN7zXvl_G3ct5OqM,16812
352
445
  reflex/route.py,sha256=eVi2TSk9uM7DDGBy6rDYe6Gq4iuHZFK00Vmoq9IbIjk,2732
353
- reflex/state.py,sha256=zNPjDpzsbZoUV5Q_vL-D_o0P1g6om5nd9J-Z_vWPjzs,71455
354
- reflex/style.py,sha256=ajB6SXPrIbAmE-jg6JQLDNze5ySLactFLK2wMg4-MKI,3694
355
- reflex/testing.py,sha256=52RCYyEstG8Lie_ZA3d3qVdy3io2_USfO1xVlLC8YtA,26288
446
+ reflex/state.py,sha256=ZNBcG7_OzkTMtpDTH4oH8KWWlqZcn4p4sCZUcF067bQ,71927
447
+ reflex/style.py,sha256=fegWZ7Z0VihRbnRYWniaF-BYPMSvJrDbIv6d7ggqBV4,7232
448
+ reflex/testing.py,sha256=_lzylC3xzHEbv-LQdKa3qmw2zHVG9VCtlwFNm8zb-_c,26264
356
449
  reflex/utils/__init__.py,sha256=y-AHKiRQAhk2oAkvn7W8cRVTZVK625ff8tTwvZtO7S4,24
357
450
  reflex/utils/build.py,sha256=fjzLHP1yzOvn8OF9MKq7Jj72_n-kSXrQojTDIRAL5xA,8083
358
451
  reflex/utils/console.py,sha256=oEEaV9oSw5B24LPEwBOGlyrk2xI91Fo-pqGEsNICrjg,4583
359
452
  reflex/utils/exceptions.py,sha256=tDY0Bu1bmNzcozM_-dGaiYWudVCIO8Qo00_4klIbHCg,390
360
453
  reflex/utils/exec.py,sha256=Th2CQ0UysTE0_L5mwZz5h0xaQsj41J7q-rbwaGsUZyw,8634
361
454
  reflex/utils/export.py,sha256=gjtISftVt__OYMlJXXVslHbedVym7mTCHqzav7IuEjE,2445
362
- reflex/utils/format.py,sha256=sVov_b-78fGL8BPTxuLfvgHlIVnmy41vXvrhRqovbDQ,19055
455
+ reflex/utils/format.py,sha256=CY4PKXwx1J7Z4Yjm2_b-HEtarq1ijfIzW5-QCJb4Teg,19147
363
456
  reflex/utils/imports.py,sha256=yah1kSVsOyUxA0wOMxJTwcmu6xlmkLJtV_zRIhshpsA,1919
364
457
  reflex/utils/path_ops.py,sha256=pUcqPPKsvP6G5VVggX9fcw8lEkiKueTNoFq0eUlMyGc,4706
365
- reflex/utils/prerequisites.py,sha256=0dWFGjMqif0nhluq8hEmPqSY_hI-iJHoY-dlWt0HYAI,25993
366
- reflex/utils/processes.py,sha256=pDJvgtT_F3N9p0rRpkzwFBc_W4ng1-qfl35HmAlZAjk,8145
367
- reflex/utils/serializers.py,sha256=7S9q10E7oUhyyCcoqWOsG4sg96t4qjPF2ygme02Ouso,5715
458
+ reflex/utils/prerequisites.py,sha256=N_Wcb3mmc7oy4rp7Z27G0wZEo1pz8OvLqnoiLabQYpM,27832
459
+ reflex/utils/processes.py,sha256=3VZ48WzPy_PDZ6kSoewnHxHahqA9nAsW2ITXGPcK8LQ,8351
460
+ reflex/utils/serializers.py,sha256=r6POCP0eaVW2GITtLrmcXSsSJkhaezp68riut626VD4,7635
368
461
  reflex/utils/telemetry.py,sha256=CxRreEGR3e3mq6oOuAf3krN4cCKtdPs47Q9gaY0svr8,2388
369
- reflex/utils/types.py,sha256=7HWt89qz8Za5awm_sVTZ1P_F-V8ZVpkKd3Gkz45Acro,7434
462
+ reflex/utils/types.py,sha256=Z_rTzYeyqMfirUQ1JKC9tfLv5_sI-3KBIWqdLE1xcbc,8208
370
463
  reflex/utils/watch.py,sha256=HzGrHQIZ_62Di0BO46kd2AZktNA3A6nFIBuf8c6ip30,2609
371
- reflex/vars.py,sha256=6nNW_JxT6x-cw-HVog_9skODpe4tMDULx_hcz14pARA,58674
464
+ reflex/vars.py,sha256=kcuV-UE0Qvw1M85M8USllrbxNGRPtzwNxc-Zw3DdKsM,59430
372
465
  reflex/vars.pyi,sha256=VsVyNRIcuWnCDo2xrxF25gHV7qTM8wU1O350UBay3Rk,5032
373
- reflex-0.3.6.dist-info/LICENSE,sha256=dw3zLrp9f5ObD7kqS32vWfhcImfO52PMmRqvtxq_YEE,11358
374
- reflex-0.3.6.dist-info/METADATA,sha256=D2dn0NyWd_21S_2_OgM9kHN9ri4aLq87QGZKydhLf8w,11042
375
- reflex-0.3.6.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
376
- reflex-0.3.6.dist-info/entry_points.txt,sha256=H1Z5Yat_xJfy0dRT1Frk2PkO_p41Xy7fCKlj4FcdL9o,44
377
- reflex-0.3.6.dist-info/RECORD,,
466
+ reflex-0.3.7.dist-info/LICENSE,sha256=dw3zLrp9f5ObD7kqS32vWfhcImfO52PMmRqvtxq_YEE,11358
467
+ reflex-0.3.7.dist-info/METADATA,sha256=iyYTWvPR7g95UOQtirLFgl4svw_jS3D0nuxfe4FsOeI,11095
468
+ reflex-0.3.7.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
469
+ reflex-0.3.7.dist-info/entry_points.txt,sha256=H1Z5Yat_xJfy0dRT1Frk2PkO_p41Xy7fCKlj4FcdL9o,44
470
+ reflex-0.3.7.dist-info/RECORD,,