reflex 0.8.14.post1__py3-none-any.whl → 0.8.15__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 (51) hide show
  1. reflex/.templates/web/utils/state.js +68 -8
  2. reflex/__init__.py +12 -7
  3. reflex/__init__.pyi +11 -3
  4. reflex/app.py +10 -7
  5. reflex/base.py +58 -33
  6. reflex/components/datadisplay/dataeditor.py +17 -2
  7. reflex/components/datadisplay/dataeditor.pyi +6 -2
  8. reflex/components/field.py +3 -1
  9. reflex/components/lucide/icon.py +2 -1
  10. reflex/components/lucide/icon.pyi +2 -1
  11. reflex/components/markdown/markdown.py +101 -27
  12. reflex/components/sonner/toast.py +3 -2
  13. reflex/components/sonner/toast.pyi +3 -2
  14. reflex/constants/base.py +5 -0
  15. reflex/constants/installer.py +3 -3
  16. reflex/environment.py +9 -1
  17. reflex/event.py +3 -0
  18. reflex/istate/manager/__init__.py +120 -0
  19. reflex/istate/manager/disk.py +210 -0
  20. reflex/istate/manager/memory.py +76 -0
  21. reflex/istate/{manager.py → manager/redis.py} +5 -372
  22. reflex/istate/proxy.py +35 -24
  23. reflex/model.py +534 -511
  24. reflex/plugins/tailwind_v4.py +2 -2
  25. reflex/reflex.py +16 -10
  26. reflex/state.py +35 -34
  27. reflex/testing.py +12 -14
  28. reflex/utils/build.py +11 -1
  29. reflex/utils/codespaces.py +30 -1
  30. reflex/utils/compat.py +51 -48
  31. reflex/utils/misc.py +2 -1
  32. reflex/utils/monitoring.py +1 -2
  33. reflex/utils/prerequisites.py +19 -4
  34. reflex/utils/processes.py +3 -1
  35. reflex/utils/redir.py +21 -37
  36. reflex/utils/serializers.py +21 -20
  37. reflex/utils/telemetry.py +0 -2
  38. reflex/utils/templates.py +4 -4
  39. reflex/utils/types.py +89 -90
  40. reflex/vars/base.py +108 -41
  41. reflex/vars/color.py +28 -8
  42. reflex/vars/datetime.py +6 -2
  43. reflex/vars/dep_tracking.py +2 -2
  44. reflex/vars/number.py +26 -0
  45. reflex/vars/object.py +51 -7
  46. reflex/vars/sequence.py +32 -1
  47. {reflex-0.8.14.post1.dist-info → reflex-0.8.15.dist-info}/METADATA +8 -3
  48. {reflex-0.8.14.post1.dist-info → reflex-0.8.15.dist-info}/RECORD +51 -48
  49. {reflex-0.8.14.post1.dist-info → reflex-0.8.15.dist-info}/WHEEL +0 -0
  50. {reflex-0.8.14.post1.dist-info → reflex-0.8.15.dist-info}/entry_points.txt +0 -0
  51. {reflex-0.8.14.post1.dist-info → reflex-0.8.15.dist-info}/licenses/LICENSE +0 -0
reflex/vars/datetime.py CHANGED
@@ -174,10 +174,14 @@ def date_compare_operation(
174
174
  class LiteralDatetimeVar(LiteralVar, DateTimeVar):
175
175
  """Base class for immutable datetime and date vars."""
176
176
 
177
- _var_value: datetime | date = dataclasses.field(default=datetime.now())
177
+ _var_value: date = dataclasses.field(default=datetime.now())
178
178
 
179
179
  @classmethod
180
- def create(cls, value: datetime | date, _var_data: VarData | None = None):
180
+ def _get_all_var_data_without_creating_var(cls, value: date) -> VarData | None:
181
+ return None
182
+
183
+ @classmethod
184
+ def create(cls, value: date, _var_data: VarData | None = None):
181
185
  """Create a new instance of the class.
182
186
 
183
187
  Args:
@@ -192,7 +192,7 @@ class DependencyTracker:
192
192
  """
193
193
  from reflex.state import BaseState
194
194
 
195
- if instruction.opname == "LOAD_FAST":
195
+ if instruction.opname in ("LOAD_FAST", "LOAD_FAST_BORROW"):
196
196
  msg = f"Dependency detection cannot identify get_state class from local var {instruction.argval}."
197
197
  raise VarValueError(msg)
198
198
  if isinstance(self.func, CodeType):
@@ -305,7 +305,7 @@ class DependencyTracker:
305
305
  elif self.scan_status == ScanStatus.GETTING_VAR:
306
306
  self.handle_getting_var(instruction)
307
307
  elif (
308
- instruction.opname in ("LOAD_FAST", "LOAD_DEREF")
308
+ instruction.opname in ("LOAD_FAST", "LOAD_DEREF", "LOAD_FAST_BORROW")
309
309
  and instruction.argval in self.tracked_locals
310
310
  ):
311
311
  # bytecode loaded the class instance to the top of stack, next load instruction
reflex/vars/number.py CHANGED
@@ -973,6 +973,20 @@ class LiteralNumberVar(LiteralVar, NumberVar[NUMBER_T]):
973
973
  """
974
974
  return hash((type(self).__name__, self._var_value))
975
975
 
976
+ @classmethod
977
+ def _get_all_var_data_without_creating_var(
978
+ cls, value: float | int | decimal.Decimal
979
+ ) -> VarData | None:
980
+ """Get all the var data without creating the var.
981
+
982
+ Args:
983
+ value: The value of the var.
984
+
985
+ Returns:
986
+ The var data.
987
+ """
988
+ return None
989
+
976
990
  @classmethod
977
991
  def create(
978
992
  cls, value: float | int | decimal.Decimal, _var_data: VarData | None = None
@@ -1027,6 +1041,18 @@ class LiteralBooleanVar(LiteralVar, BooleanVar):
1027
1041
  """
1028
1042
  return hash((type(self).__name__, self._var_value))
1029
1043
 
1044
+ @classmethod
1045
+ def _get_all_var_data_without_creating_var(cls, value: bool) -> VarData | None:
1046
+ """Get all the var data without creating the var.
1047
+
1048
+ Args:
1049
+ value: The value of the var.
1050
+
1051
+ Returns:
1052
+ The var data.
1053
+ """
1054
+ return None
1055
+
1030
1056
  @classmethod
1031
1057
  def create(cls, value: bool, _var_data: VarData | None = None):
1032
1058
  """Create the boolean var.
reflex/vars/object.py CHANGED
@@ -6,6 +6,7 @@ import collections.abc
6
6
  import dataclasses
7
7
  import typing
8
8
  from collections.abc import Mapping
9
+ from importlib.util import find_spec
9
10
  from typing import (
10
11
  Any,
11
12
  NoReturn,
@@ -39,7 +40,7 @@ from .base import (
39
40
  var_operation_return,
40
41
  )
41
42
  from .number import BooleanVar, NumberVar, raise_unsupported_operand_types
42
- from .sequence import ArrayVar, StringVar
43
+ from .sequence import ArrayVar, LiteralArrayVar, StringVar
43
44
 
44
45
  OBJECT_TYPE = TypeVar("OBJECT_TYPE", covariant=True)
45
46
 
@@ -74,7 +75,15 @@ def _determine_value_type(var_type: GenericType):
74
75
  return Any
75
76
 
76
77
 
77
- class ObjectVar(Var[OBJECT_TYPE], python_types=Mapping):
78
+ PYTHON_TYPES = (Mapping,)
79
+ if find_spec("pydantic"):
80
+ import pydantic
81
+ import pydantic.v1
82
+
83
+ PYTHON_TYPES += (pydantic.BaseModel, pydantic.v1.BaseModel)
84
+
85
+
86
+ class ObjectVar(Var[OBJECT_TYPE], python_types=PYTHON_TYPES):
78
87
  """Base class for immutable object vars."""
79
88
 
80
89
  def _key_type(self) -> type:
@@ -428,6 +437,24 @@ class LiteralObjectVar(CachedVarOperation, ObjectVar[OBJECT_TYPE], LiteralVar):
428
437
  """
429
438
  return hash((type(self).__name__, self._js_expr))
430
439
 
440
+ @classmethod
441
+ def _get_all_var_data_without_creating_var(
442
+ cls,
443
+ value: Mapping,
444
+ ) -> VarData | None:
445
+ """Get all the var data without creating a var.
446
+
447
+ Args:
448
+ value: The value to get the var data from.
449
+
450
+ Returns:
451
+ The var data.
452
+ """
453
+ return VarData.merge(
454
+ LiteralArrayVar._get_all_var_data_without_creating_var(value),
455
+ LiteralArrayVar._get_all_var_data_without_creating_var(value.values()),
456
+ )
457
+
431
458
  @cached_property_no_lock
432
459
  def _cached_get_all_var_data(self) -> VarData | None:
433
460
  """Get all the var data.
@@ -436,11 +463,10 @@ class LiteralObjectVar(CachedVarOperation, ObjectVar[OBJECT_TYPE], LiteralVar):
436
463
  The var data.
437
464
  """
438
465
  return VarData.merge(
439
- *[LiteralVar.create(var)._get_all_var_data() for var in self._var_value],
440
- *[
441
- LiteralVar.create(var)._get_all_var_data()
442
- for var in self._var_value.values()
443
- ],
466
+ LiteralArrayVar._get_all_var_data_without_creating_var(self._var_value),
467
+ LiteralArrayVar._get_all_var_data_without_creating_var(
468
+ self._var_value.values()
469
+ ),
444
470
  self._var_data,
445
471
  )
446
472
 
@@ -460,7 +486,25 @@ class LiteralObjectVar(CachedVarOperation, ObjectVar[OBJECT_TYPE], LiteralVar):
460
486
 
461
487
  Returns:
462
488
  The literal object var.
489
+
490
+ Raises:
491
+ TypeError: If the value is not a mapping type or a dataclass.
463
492
  """
493
+ if not isinstance(_var_value, collections.abc.Mapping):
494
+ from reflex.utils.serializers import serialize
495
+
496
+ serialized = serialize(_var_value, get_type=False)
497
+ if not isinstance(serialized, collections.abc.Mapping):
498
+ msg = f"Expected a mapping type or a dataclass, got {_var_value!r} of type {type(_var_value).__name__}."
499
+ raise TypeError(msg)
500
+
501
+ return LiteralObjectVar(
502
+ _js_expr="",
503
+ _var_type=(type(_var_value) if _var_type is None else _var_type),
504
+ _var_data=_var_data,
505
+ _var_value=serialized,
506
+ )
507
+
464
508
  return LiteralObjectVar(
465
509
  _js_expr="",
466
510
  _var_type=(figure_out_type(_var_value) if _var_type is None else _var_type),
reflex/vars/sequence.py CHANGED
@@ -495,6 +495,23 @@ class LiteralArrayVar(CachedVarOperation, LiteralVar, ArrayVar[ARRAY_VAR_TYPE]):
495
495
  + "]"
496
496
  )
497
497
 
498
+ @classmethod
499
+ def _get_all_var_data_without_creating_var(cls, value: Iterable) -> VarData | None:
500
+ """Get all the VarData associated with the Var without creating a Var.
501
+
502
+ Args:
503
+ value: The value to get the VarData for.
504
+
505
+ Returns:
506
+ The VarData associated with the Var.
507
+ """
508
+ return VarData.merge(
509
+ *[
510
+ LiteralVar._get_all_var_data_without_creating_var_dispatch(element)
511
+ for element in value
512
+ ]
513
+ )
514
+
498
515
  @cached_property_no_lock
499
516
  def _cached_get_all_var_data(self) -> VarData | None:
500
517
  """Get all the VarData associated with the Var.
@@ -504,7 +521,7 @@ class LiteralArrayVar(CachedVarOperation, LiteralVar, ArrayVar[ARRAY_VAR_TYPE]):
504
521
  """
505
522
  return VarData.merge(
506
523
  *[
507
- LiteralVar.create(element)._get_all_var_data()
524
+ LiteralVar._get_all_var_data_without_creating_var_dispatch(element)
508
525
  for element in self._var_value
509
526
  ],
510
527
  self._var_data,
@@ -1147,6 +1164,20 @@ class LiteralStringVar(LiteralVar, StringVar[str]):
1147
1164
 
1148
1165
  _var_value: str = dataclasses.field(default="")
1149
1166
 
1167
+ @classmethod
1168
+ def _get_all_var_data_without_creating_var(cls, value: str) -> VarData | None:
1169
+ """Get all the VarData associated with the Var without creating a Var.
1170
+
1171
+ Args:
1172
+ value: The value to get the VarData for.
1173
+
1174
+ Returns:
1175
+ The VarData associated with the Var.
1176
+ """
1177
+ if REFLEX_VAR_OPENING_TAG not in value:
1178
+ return None
1179
+ return cls.create(value)._get_all_var_data()
1180
+
1150
1181
  @classmethod
1151
1182
  def create(
1152
1183
  cls,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: reflex
3
- Version: 0.8.14.post1
3
+ Version: 0.8.15
4
4
  Summary: Web apps in pure Python.
5
5
  Project-URL: homepage, https://reflex.dev
6
6
  Project-URL: repository, https://github.com/reflex-dev/reflex
@@ -18,10 +18,11 @@ Classifier: Programming Language :: Python :: 3.10
18
18
  Classifier: Programming Language :: Python :: 3.11
19
19
  Classifier: Programming Language :: Python :: 3.12
20
20
  Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Programming Language :: Python :: 3.14
21
22
  Requires-Python: <4.0,>=3.10
22
23
  Requires-Dist: alembic<2.0,>=1.15.2
23
24
  Requires-Dist: click>=8.2
24
- Requires-Dist: granian[reload]>=2.4.0
25
+ Requires-Dist: granian[reload]>=2.5.5
25
26
  Requires-Dist: httpx<1.0,>=0.23.3
26
27
  Requires-Dist: packaging<26,>=24.2
27
28
  Requires-Dist: platformdirs<5.0,>=4.3.7
@@ -32,10 +33,14 @@ Requires-Dist: python-socketio<6.0,>=5.12.0
32
33
  Requires-Dist: redis<7.0,>=5.2.1
33
34
  Requires-Dist: reflex-hosting-cli>=0.1.55
34
35
  Requires-Dist: rich<15,>=13
35
- Requires-Dist: sqlmodel<0.1,>=0.0.24
36
+ Requires-Dist: sqlmodel<0.1,>=0.0.27
36
37
  Requires-Dist: starlette>=0.47.0
37
38
  Requires-Dist: typing-extensions>=4.13.0
38
39
  Requires-Dist: wrapt<2.0,>=1.17.0
40
+ Provides-Extra: db
41
+ Requires-Dist: alembic<2.0,>=1.15.2; extra == 'db'
42
+ Requires-Dist: pydantic<3.0,>=1.10.21; extra == 'db'
43
+ Requires-Dist: sqlmodel<0.1,>=0.0.24; extra == 'db'
39
44
  Provides-Extra: monitoring
40
45
  Requires-Dist: pyleak<1.0,>=0.1.14; extra == 'monitoring'
41
46
  Description-Content-Type: text/markdown
@@ -1,21 +1,21 @@
1
- reflex/__init__.py,sha256=_1PVYjDeA6_JyfXvL6OuKjjO6AX2oMiNcAq8AEHf6xw,10161
2
- reflex/__init__.pyi,sha256=0D46kHVUJPE_kgYL-BjraERu-MXNCPsQTZQShrijmeQ,10148
1
+ reflex/__init__.py,sha256=7iJASSyU1dxLM-l6q6gFAkw6FniXvawAekgfwN5zKjM,10328
2
+ reflex/__init__.pyi,sha256=Yy3exOO_7-O7fCjTKO1VDFbjPyeMM7F12WBnEXWx_tk,10428
3
3
  reflex/__main__.py,sha256=6cVrGEyT3j3tEvlEVUatpaYfbB5EF3UVY-6vc_Z7-hw,108
4
4
  reflex/admin.py,sha256=Nbc38y-M8iaRBvh1W6DQu_D3kEhO8JFvxrog4q2cB_E,434
5
- reflex/app.py,sha256=a9wHB1q5p2uW5Ja7yIpitaS6GIPYNkir1KHrQNV8OPM,79192
5
+ reflex/app.py,sha256=RYOqnOFpik1DVi2Yk5b6CdB6OaoPW7pXtVCtIYZGhME,79220
6
6
  reflex/assets.py,sha256=l5O_mlrTprC0lF7Rc_McOe3a0OtSLnRdNl_PqCpDCBA,3431
7
- reflex/base.py,sha256=Oh664QL3fZEHErhUasFqP7fE4olYf1y-9Oj6uZI2FCU,1173
7
+ reflex/base.py,sha256=B3DLpG0oEKIYC-PfWE9rnHPCKYrOB6bi08MyZQDSi1s,2326
8
8
  reflex/config.py,sha256=LsHAtdH4nkSn3q_Ie-KNdOGdflLXrFICUQov29oFjVk,21229
9
- reflex/environment.py,sha256=USXLwLP86KKeLFvs_di4j73GsLkZ9SdQEeh-374CZH4,23854
10
- reflex/event.py,sha256=KlNFqtJacwiPCtp7rkIlbskZqCME9RJsAHF-6pOEvwg,76255
11
- reflex/model.py,sha256=2QhU1TJlcDeRA23pv8usLjyDaA6FhbQRYdzsjOHzvUI,19665
9
+ reflex/environment.py,sha256=siROr2_xfV4YdmjcoB2gI1JAfZjRnzYcmMcow__gMx0,24208
10
+ reflex/event.py,sha256=WYtgPccQj0_hlzUq5zDVJ9YfeKAkDhMd13eovUd1POY,76428
11
+ reflex/model.py,sha256=7L9MnC_TYVAP-a91ed_UqafIRAg1eZKmkZcr_BayMqY,22493
12
12
  reflex/page.py,sha256=ssCbMVFuIy60vH-YhJUzN0OxzUwXFCCD3ej56dVjp3g,3525
13
13
  reflex/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
- reflex/reflex.py,sha256=J6p0e9u4VURBgKY-Rk2mxiW3Usmxf71aNPyXaesoGJA,25821
14
+ reflex/reflex.py,sha256=jjvoifhJ4dTADgIQB-mgzm4W6_geCeVstenB11sJqL0,25961
15
15
  reflex/route.py,sha256=TnS4m6Hm-b3LfGFpm37iAMEd-_JISAouPW5FqUxTAfU,7858
16
- reflex/state.py,sha256=JoFQoTPXHQHFzKwBFo8T4rvuAFNGbtcDmTotzrSRQP4,95402
16
+ reflex/state.py,sha256=Ds3dr8wGpyQZxu56uFN3_4LvpXI3U1HSCN1HuKlLUVQ,95515
17
17
  reflex/style.py,sha256=Jc7hZyH9CSFDbweoRCrkVtSu8tZq5aIggSoAYAh-w1M,13304
18
- reflex/testing.py,sha256=Wt1qdmqT3Yo9CKWZzHXiytizZJ5KjqxVzuoGPjI_Vfk,40458
18
+ reflex/testing.py,sha256=sQlcDlBfY7OqpLc31tw-hhYVIM4THVyG9I3nz0c9GMA,40645
19
19
  reflex/.templates/apps/blank/assets/favicon.ico,sha256=baxxgDAQ2V4-G5Q4S2yK5uUJTUGkv-AOWBQ0xd6myUo,4286
20
20
  reflex/.templates/apps/blank/code/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
21
  reflex/.templates/apps/blank/code/blank.py,sha256=wry9E3VjC7qtt_gzqNOyo4KZAAlzVyNp3uhFkcLZmM0,898
@@ -30,7 +30,7 @@ reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js,sha2
30
30
  reflex/.templates/web/components/shiki/code.js,sha256=4Es1pxsr-lX4hTQ5mglrwwC6O_SI-z-O60k03z8VFzQ,1144
31
31
  reflex/.templates/web/styles/__reflex_style_reset.css,sha256=qbC6JIT643YEsvSQ0D7xBmWE5vXy94JGrKNihRuEjnA,8913
32
32
  reflex/.templates/web/utils/react-theme.js,sha256=Aa-RND3ooGCXW6Zavzitc-v0ciKlcQDTFlDtE4mPkFI,2713
33
- reflex/.templates/web/utils/state.js,sha256=RdNHwQzS_iP0Z_fx-H4pjVjl-qUoz31JLvwPwcp0F-s,33046
33
+ reflex/.templates/web/utils/state.js,sha256=7gRWc8ABMOKY3KMF6SpaVEhNILW03wivd7eENVC7ADg,34858
34
34
  reflex/.templates/web/utils/helpers/dataeditor.js,sha256=pG6MgsHuStDR7-qPipzfiK32j9bKDBa-4hZ0JSUo4JM,1623
35
35
  reflex/.templates/web/utils/helpers/debounce.js,sha256=xGhtTRtS_xIcaeqnYVvYJNseLgQVk-DW-eFiHJYO9As,528
36
36
  reflex/.templates/web/utils/helpers/paste.js,sha256=ef30HsR83jRzzvZnl8yV79yqFP8TC_u8SlN99cCS_OM,1799
@@ -49,7 +49,7 @@ reflex/components/__init__.py,sha256=eWpgWFbSQDj2TpGp6StEbxU7roQgzY7ZM0XIcIc5RE8
49
49
  reflex/components/__init__.pyi,sha256=7VFHtJGIjvGtD3IiPk848IPWYSCcPRT1EyPGljLhYlU,736
50
50
  reflex/components/component.py,sha256=FpKwvwszkxZAP3NIAdJTQxo5wd4cMiRwY9FSXlzw8qI,97637
51
51
  reflex/components/dynamic.py,sha256=M3Waonox1lMCs9db_0iz4VtmBLuETpzZvvJ8m4iNAhE,7384
52
- reflex/components/field.py,sha256=9GiK8_nnVE4k6fCOfMycz0IaxK2bzNf_JrspPnHBqcY,5851
52
+ reflex/components/field.py,sha256=i3HjZ8a43L_INYPnHStoyTtl0ZlQ9ZLEIzS-SsFq9oM,5924
53
53
  reflex/components/literals.py,sha256=hogLnwTJxFJODIvqihg-GD9kFZVsEBDoYzaRit56Nuk,501
54
54
  reflex/components/props.py,sha256=NrDGIBmBJZID4-m_mtVLUpKUdVUC2_oZz7vNlJ0bxGs,14972
55
55
  reflex/components/base/__init__.py,sha256=6DzVn2oVZqmsXYq3r9AN8Q40R0NAsyRpSyVzBDZndz0,690
@@ -104,8 +104,8 @@ reflex/components/datadisplay/__init__.py,sha256=L8pWWKNHWdUD2fbZRoEKjd_8c_hpDdG
104
104
  reflex/components/datadisplay/__init__.pyi,sha256=H3LZkWdrw3RTv_csaIT8qoClgAJTonlGZ5ZMeGMV0Bs,551
105
105
  reflex/components/datadisplay/code.py,sha256=DQjferNi6QD2tNZdA28mMRu5KhqejAePxmD23vpcl9Y,12605
106
106
  reflex/components/datadisplay/code.pyi,sha256=QCWqxWCsbFqS4CcfgN5P1u12JU7sBcUEEjekZnWSDeU,41375
107
- reflex/components/datadisplay/dataeditor.py,sha256=cGwAKPYknoHMwVhBowHKFtG2Nxr5q-8hIptnf98U7x0,13574
108
- reflex/components/datadisplay/dataeditor.pyi,sha256=eDI6w6ZrJRXQsThXu3vS-dfI-aKPMntLN5RmGkJOYCQ,12511
107
+ reflex/components/datadisplay/dataeditor.py,sha256=PfT8DDyWZ7wvPnxg8vQx-p3U6i0vwfBYHbe7KZXrCNg,14003
108
+ reflex/components/datadisplay/dataeditor.pyi,sha256=ntSQRf1FrpFBkibDJc-aIZP2clKrMLeRgZA0MS0gn0E,12606
109
109
  reflex/components/datadisplay/logo.py,sha256=xvg5TRVRSi2IKn7Kg4oYzWcaFMHfXxUaCp0cQmuKSn0,1993
110
110
  reflex/components/datadisplay/shiki_code_block.py,sha256=qCp4jZO3Ek4mR_1Qs4oxLh-GCEo6VBlpb8B9MDDdw4Y,24503
111
111
  reflex/components/datadisplay/shiki_code_block.pyi,sha256=J6NyOY_RQ9VTu7Psi3Tuctv5EM6FnlPZ2EXEZwHBC9w,56933
@@ -139,10 +139,10 @@ reflex/components/gridjs/__init__.py,sha256=xJwDm1AZ70L5-t9LLqZwGUtDpijbf1KuMYDT
139
139
  reflex/components/gridjs/datatable.py,sha256=7JKrRw1zkpFB0_wwoaIhrVrldsm7-dyi3PASgqLq8Hc,4224
140
140
  reflex/components/gridjs/datatable.pyi,sha256=kFgv82vCgfdWZaUq4bZ73G8X3mkw6ecvSRkZ9G9-28E,5185
141
141
  reflex/components/lucide/__init__.py,sha256=EggTK2MuQKQeOBLKW-mF0VaDK9zdWBImu1HO2dvHZbE,73
142
- reflex/components/lucide/icon.py,sha256=oyTpIx5bJ-7D3VrXMrMpZ4aIKnv1GADBM97eSROnzZU,35358
143
- reflex/components/lucide/icon.pyi,sha256=BAVUCJYalfn0nBpwglPiJNO_EfRdzM2eWHtaBy2Fa-o,38152
142
+ reflex/components/lucide/icon.py,sha256=sb-_PcD5KGzSGJAC4AP4XjaciRHOowE6NVmr5PazS0E,35375
143
+ reflex/components/lucide/icon.pyi,sha256=Mb6fQNSoWM8d0OaTntAj-LGp4xf1oj5SH_JzE2sDIfs,38169
144
144
  reflex/components/markdown/__init__.py,sha256=Dfl1At5uYoY7H4ufZU_RY2KOGQDLtj75dsZ2BTqqAns,87
145
- reflex/components/markdown/markdown.py,sha256=kzvO2VnfCbxV7AcIMBJbxLtAlQ6U5T_QB_JTh8l-HJ4,15450
145
+ reflex/components/markdown/markdown.py,sha256=Xn6zxxGtiLKm2Hu9RBoXNssLUwuQKVYnoVj3FfREfUs,16560
146
146
  reflex/components/markdown/markdown.pyi,sha256=oOlXZItHB0TPWsFz1Qjvr3KzG8sssthBp40UO_KkRIA,4322
147
147
  reflex/components/moment/__init__.py,sha256=jGnZgRBivYJQPIcFgtLaXFteCeIG3gGH5ACXkjEgmsI,92
148
148
  reflex/components/moment/moment.py,sha256=fhhzrun9USb8J30btpyyDD3JuXF_N7EL5Dou3x7NQYw,4080
@@ -304,8 +304,8 @@ reflex/components/recharts/polar.pyi,sha256=8ShEcGK9KJyu0FN6KPys1kgAYrzOZ6wtiRuy
304
304
  reflex/components/recharts/recharts.py,sha256=rAarxOawhHiWUDIHNrizmChitgoNV4zas1y5SuSsr7E,3221
305
305
  reflex/components/recharts/recharts.pyi,sha256=9j8cVSMqyBkkOBBrx9pzDpP1clnbM9kD0TTViTUGDYc,7084
306
306
  reflex/components/sonner/__init__.py,sha256=L_mdRIy7-ccRGSz5VK6J8O-c-e-D1p9xWw29_ErrvGg,68
307
- reflex/components/sonner/toast.py,sha256=sJ9E60VaMBwoev4aBrKr42ygN7e0jajNTooa5o5wYPQ,12505
308
- reflex/components/sonner/toast.pyi,sha256=cj0zlkcFVmJ3CrHe2XIsF0MeBw61Bn-hrGkzHTFz8Og,7782
307
+ reflex/components/sonner/toast.py,sha256=VBtoRnxBhKD029njAjhbLeYtiUSL3aNPOSmA9Lmsqvg,12512
308
+ reflex/components/sonner/toast.pyi,sha256=z48tJMXVfo3kGbNqDLWjZ_6UhGL8Payj1lsSCPxawh0,7789
309
309
  reflex/components/tags/__init__.py,sha256=Pc0JU-Tv_W7KCsydXgbKmu7w2VtHNkI6Cx2hTkNhW_Q,152
310
310
  reflex/components/tags/cond_tag.py,sha256=svlnSP2ZMwHqjsHa3fq7a7K2--3XTLo5FcbjOw7fVik,849
311
311
  reflex/components/tags/iter_tag.py,sha256=Q4rPOt0NSjYhAPDOnNtu7XPxn3MCYZInZjYU3xPJq2Q,3716
@@ -313,13 +313,13 @@ reflex/components/tags/match_tag.py,sha256=ppkf2o4sMcaK-lAn7cNC3ZcmiUUbtdVhRdsw6
313
313
  reflex/components/tags/tag.py,sha256=wlwD1We3ipgibPGsT1FS0aYYaJasLsjlfaOTgUT_aGg,3848
314
314
  reflex/components/tags/tagless.py,sha256=APeSG-6N5-ucWwkq_hUl7zfT_vpoKleQdP80wPERG18,904
315
315
  reflex/constants/__init__.py,sha256=q2Jf-LBbNcGrOmx5M7QotIAYW_t3m02TsmmdtJ5_IhM,2190
316
- reflex/constants/base.py,sha256=rZ2JFO3mu5fVpjIUbiPJ7YCbensCjefbzYtV9uEwqpw,7539
316
+ reflex/constants/base.py,sha256=4ptntMq54aJiBIvG0aoRPmBOGXySDevEKmSMJuwSPBQ,7694
317
317
  reflex/constants/colors.py,sha256=n-FN7stNrvk5rCN0TAvE28dqwUeQZHue-b5q1CO0EyQ,2048
318
318
  reflex/constants/compiler.py,sha256=1FXPYQNotaSrTwWcOspA1gCVmEdoiWkNMbbrz_qU0YU,5709
319
319
  reflex/constants/config.py,sha256=8OIjiBdZZJrRVHsNBheMwopE9AwBFFzau0SXqXKcrPg,1715
320
320
  reflex/constants/custom_components.py,sha256=joJt4CEt1yKy7wsBH6vYo7_QRW0O_fWXrrTf0VY2q14,1317
321
321
  reflex/constants/event.py,sha256=tgoynWQi2L0_Kqc3XhXo7XXL76A-OKhJGHRrNjm7gFw,2885
322
- reflex/constants/installer.py,sha256=XmXvA4uVJ8McAVO5hjXk9demdEyPxIWmWFJTqG6IezU,4193
322
+ reflex/constants/installer.py,sha256=O4Ipgh_hec6ldqEIDLGVAuVCwi9lFfe35WWQHnW0m9o,4193
323
323
  reflex/constants/route.py,sha256=UBjqaAOxiUxlDZCSY4O2JJChKvA4MZrhUU0E5rNvKbM,2682
324
324
  reflex/constants/state.py,sha256=VrEeYxXfE9ss8RmOHIXD4T6EGsV9PDqbtMCQMmZxW3I,383
325
325
  reflex/constants/utils.py,sha256=e1ChEvbHfmE_V2UJvCSUhD_qTVAIhEGPpRJSqdSd6PA,780
@@ -331,10 +331,13 @@ reflex/experimental/hooks.py,sha256=CHYGrAE5t8riltrJmDFgJ4D2Vhmhw-y3B3MSGNlOQow,
331
331
  reflex/istate/__init__.py,sha256=afq_pCS5B_REC-Kl3Rbaa538uWi59xNz4INeuENcWnk,2039
332
332
  reflex/istate/data.py,sha256=8RydiarP7f5ET5a3dfGpuuXdYZ7KHEWS6aENVoxRxGc,7918
333
333
  reflex/istate/dynamic.py,sha256=xOQ9upZVPf6ngqcLQZ9HdAAYmoWwJ8kRFPH34Q5HTiM,91
334
- reflex/istate/manager.py,sha256=WyBBhDuq3cVuno3H-axeT8sqF0EqHR3MNZJw-B76cZs,30517
335
- reflex/istate/proxy.py,sha256=4SE3-W6OpHA51JlLdz5Kbslpusp5xOUQI91nmzpH8Xo,25825
334
+ reflex/istate/proxy.py,sha256=BwlJYWR5FMItqbHVulhgI_TH8jtP69HkXXpTtClXXcs,25993
336
335
  reflex/istate/storage.py,sha256=gCPoiZxuG-Rw0y-Pz3OC7rv4o08dQ_jK1fE2u8Jhxqg,4339
337
336
  reflex/istate/wrappers.py,sha256=p8uuioXRbR5hperwbOJHUcWdu7hukLikQdoR7qrnKsI,909
337
+ reflex/istate/manager/__init__.py,sha256=2cy-Nk99IK7-bcDe9C5oNNxgpN_mPmu0KTlRGa6E-zc,3795
338
+ reflex/istate/manager/disk.py,sha256=mdEIj_1F--hpReVn3XX5Umv64NlYS9epc1p5zkbdyFs,7175
339
+ reflex/istate/manager/memory.py,sha256=5rAJlgQAhBB0B3hQT3TYyu-N37TzRvhLcCItcyWkrcw,2477
340
+ reflex/istate/manager/redis.py,sha256=TBOdZfeXigL6nbKVDOgkxX595ZQJtRYOEToSlE6MZyM,18297
338
341
  reflex/middleware/__init__.py,sha256=x7xTeDuc73Hjj43k1J63naC9x8vzFxl4sq7cCFBX7sk,111
339
342
  reflex/middleware/hydrate_middleware.py,sha256=1ch7bx2ZhojOR15b-LHD2JztrWCnpPJjTe8MWHJe-5Y,1510
340
343
  reflex/middleware/middleware.py,sha256=p5VVoIgQ_NwOg_GOY6g0S4fmrV76_VE1zt-HiwbMw-s,1158
@@ -344,11 +347,11 @@ reflex/plugins/base.py,sha256=5BgzCM7boj9kJ6FGzVzVlgQk-crJuVmOLCl1PXvv4-E,3372
344
347
  reflex/plugins/shared_tailwind.py,sha256=kCyIaSFrzoPe7dlA09SjfSY30bfbh43dkQchres4A0w,7305
345
348
  reflex/plugins/sitemap.py,sha256=X_CtH5B1w3CZno-gdPj1rp63WjOuNjFnX4B3fx_-VFQ,6135
346
349
  reflex/plugins/tailwind_v3.py,sha256=jCEZ5UYdr706Mw48L-WSHOUB6O55o1C3uG6AMwXqZoI,4810
347
- reflex/plugins/tailwind_v4.py,sha256=fcNaFtikSIu1LhF94DcBs1xR2CjbQRB5o1_KYeThUF0,5230
350
+ reflex/plugins/tailwind_v4.py,sha256=8G7iXj6wYRRJlCWlce_vtCgs1YittFvLucyUP-sPXhc,5230
348
351
  reflex/utils/__init__.py,sha256=y-AHKiRQAhk2oAkvn7W8cRVTZVK625ff8tTwvZtO7S4,24
349
- reflex/utils/build.py,sha256=E9xcNfmQdpXL7_inA5gjuJ1AVAn3l9zaWP9TAS7IGfI,9468
350
- reflex/utils/codespaces.py,sha256=kEQ-j-jclTukFpXDlYgNp95kYMGDrQmP3VNEoYGZ1u4,3052
351
- reflex/utils/compat.py,sha256=aSJH_M6iomgHPQ4onQ153xh1MWqPi3HSYDzE68N6gZM,2635
352
+ reflex/utils/build.py,sha256=j-OY90O7gMP_bclVt_6J3Q2GFgOHQH_uFpTfdaWmuqU,9746
353
+ reflex/utils/codespaces.py,sha256=mR7jqbr16WAdiQyaaqA9Pf0g2lclSenQdHM6ngvLGBI,4345
354
+ reflex/utils/compat.py,sha256=LlFZg8j5Nyul_OR0pMYTDCcaoCR8aEsg8rFpTIGLtvU,3024
352
355
  reflex/utils/console.py,sha256=W41Ogj1Jk8tEOhXXy9dy4KCLYp5rn0NZQwbBqXbkwSI,13668
353
356
  reflex/utils/decorator.py,sha256=QUZntENupeW5FA5mNRTx0I1GzGKFQXhMjVg24_IIM5o,3957
354
357
  reflex/utils/exceptions.py,sha256=Wwu7Ji2xgq521bJKtU2NgjwhmFfnG8erirEVN2h8S-g,8884
@@ -359,33 +362,33 @@ reflex/utils/frontend_skeleton.py,sha256=FqvNWclY_lRR-odjQmP-xaY3uiWVD2l5qqExt8q
359
362
  reflex/utils/imports.py,sha256=SlQfMTbJasXHxrpcHdWKPWiIZ1Kn2-tulMF32_YA2ek,4262
360
363
  reflex/utils/js_runtimes.py,sha256=Xia4pIyWGwUmNnTgELm04oxVQobwdQvmK87AHTr3B1o,13542
361
364
  reflex/utils/lazy_loader.py,sha256=BiY9OvmAJDCz10qpuyTYv9duXgMFQa6RXKQmTO9hqKU,4453
362
- reflex/utils/misc.py,sha256=folEweZVCrhHNkkqut9KqQdTJ80HxwL_gI41m40FnNM,4592
363
- reflex/utils/monitoring.py,sha256=87fr9j6Y9Bvz2uF4tBxuX6CaU054h1UPx0ijcnyP_kw,5250
365
+ reflex/utils/misc.py,sha256=emPjhUsL5WV8BFwwN8I0IrYUJyB1VlhsfnTLcCB3xco,4596
366
+ reflex/utils/monitoring.py,sha256=AZ5KZqaPBOIkfNB___rmXK0zEPjwDXHIlUDwKPVPBmI,5235
364
367
  reflex/utils/net.py,sha256=q3h5pNbAlFiqy8U15S9DTOvzy_OnenVVug5ROBTGRTA,4267
365
368
  reflex/utils/path_ops.py,sha256=_RS17IQDNr5vcoLLGZx2-z1E5WP-JgDHvaRAOgqrZiU,8154
366
- reflex/utils/prerequisites.py,sha256=1TYEeVfydNbdvRmUvw_YfWm7wpUexbqrFm0MyB1WFlM,20760
367
- reflex/utils/processes.py,sha256=ralnYq3tL1v_20n2ew74AlU7PQ0E4T0HllSuK1Edq_M,18125
369
+ reflex/utils/prerequisites.py,sha256=dq9Fg0djDihOcf07kZ7zNu9PX8uQHfR0p-9rc13D8bM,21178
370
+ reflex/utils/processes.py,sha256=UzXcQ8Qp8TyOMcHrAG7Q8K2YJcXPXhswzBqDMcok0hc,18131
368
371
  reflex/utils/pyi_generator.py,sha256=IiNyiodH_xq8tRLD45phe2Le3sL6ZgloVMyg07xtT3o,46395
369
- reflex/utils/redir.py,sha256=E6lJ6UYGQs_uCyQAKHT_dDMplo5IRZ9JarWfvgGAgGo,1731
372
+ reflex/utils/redir.py,sha256=UuVMCISI9UJTzIkQGZZPtW9wRwTsBUo4LaKPegs8dIo,1197
370
373
  reflex/utils/registry.py,sha256=omKh5rrsybDuuKmh4K88lwdwwcpGsu3Vc4pCko_djKY,2239
371
374
  reflex/utils/rename.py,sha256=8f3laR0Zr3uizKKDD_1woPz-FZvUPjzD-fDeNHf7wBk,5232
372
- reflex/utils/serializers.py,sha256=wc8iWlkX1AOlsfsuoNZkm3GXiZ1C_da0I9IjduTXz6s,13893
373
- reflex/utils/telemetry.py,sha256=KY54NmGWyJVSf9TMTcXw2V6gIbEqut1JkAXmmtIlRfw,10776
374
- reflex/utils/templates.py,sha256=FWtO6kZldDK3MPj39LitPlcyWV9_Z8Ys6G9anitv94A,14108
375
+ reflex/utils/serializers.py,sha256=18cnbx5rMftrh6T0bj0L2LqMKHPcFTSiKZ8bx_20Ris,14039
376
+ reflex/utils/telemetry.py,sha256=E_qV7hHKybnWu9MfMSTbJ7-RJebyA1Csh_x6GaCzI_4,10740
377
+ reflex/utils/templates.py,sha256=uZMK4yilPanRRRKB5VTR2WO88q-d3QjUOOBdF2hu31o,14108
375
378
  reflex/utils/token_manager.py,sha256=ZtrYR0X8tTs8FpQHtMb09-H2V1xSoLWwVH8jW8OCrU8,7445
376
- reflex/utils/types.py,sha256=v2shXUDPqsgrxXDwrP9JYYgSTwZht0YjAo5c1mDDI8M,38543
379
+ reflex/utils/types.py,sha256=1QqDJuw6v8CvkR8Na-6P4bRjJzQI27ONy19JZl4dVtc,38781
377
380
  reflex/vars/__init__.py,sha256=pUzFFkY-brpEoqYHQc41VefaOdPQG6xzjer1RJy9IKo,1264
378
- reflex/vars/base.py,sha256=gWOVTeRVH9fheQtqJkh_GPP8F8gcdFfgJAHcZcNFn18,110306
379
- reflex/vars/color.py,sha256=fpc3u9_H9R_DVawKMOf3tV1NDSnOs0aPHt4k1Lyu_KY,4085
380
- reflex/vars/datetime.py,sha256=F2Jv_bfydipFSkIQ1F6x5MnSgFEyES9Vq5RG_uGH81E,5118
381
- reflex/vars/dep_tracking.py,sha256=LfDGgAGlqfC0DeiVcitRBcA1uCe1C3fNRARRekLgCz4,13738
381
+ reflex/vars/base.py,sha256=kZDZV43kpGE-YmX7W4XQePs4iFEESJBcI3c7uyMacyo,112829
382
+ reflex/vars/color.py,sha256=KxmeEl6wt7Ck7yiyX8gxiRHNgpN3n9LrEqOo0ofOrVw,4898
383
+ reflex/vars/datetime.py,sha256=obQaZ8dW5qfO4vwBy7fbwtes8rn4dvK-jEq5JQXUVXM,5218
384
+ reflex/vars/dep_tracking.py,sha256=W30BfZ3l3230aw3H-a5HR5qdvz5l1n_CMzJNJCvYBsg,13780
382
385
  reflex/vars/function.py,sha256=0i-VkxHkDJmZtfQUwUfaF0rlS6WM8azjwQ8k7rEOkyk,13944
383
- reflex/vars/number.py,sha256=FP5Jmd8qOwZgGHUG9DSmneBB4X6bj7G8oIDYsDw_j80,28242
384
- reflex/vars/object.py,sha256=AMvLFWyQBMSTUzmQT30M4CDUx9ec0C87cUDV8OjoDac,16457
385
- reflex/vars/sequence.py,sha256=JAvHmLxnT6B2AQhLx6RTodGybdhcxhJrYxUlhCklYNY,51445
386
+ reflex/vars/number.py,sha256=Cejba-47shtQt-j0uD_HRfTGOm1IF1uZ1WwpWSrcLSE,28865
387
+ reflex/vars/object.py,sha256=q_MTTgWEHjtpwDdyfR16kNf3pXcDEbxSjWdB1AtMdVY,17913
388
+ reflex/vars/sequence.py,sha256=dHtznvmX4CRxIIOsMQ88iQoQ06BFbMqcGvRYwfg0gCg,52440
386
389
  scripts/hatch_build.py,sha256=-4pxcLSFmirmujGpQX9UUxjhIC03tQ_fIQwVbHu9kc0,1861
387
- reflex-0.8.14.post1.dist-info/METADATA,sha256=zL0N6SIf4VIhGY7nyAHU2kfHBCaOw_4LwbgeEtmp8Nk,12340
388
- reflex-0.8.14.post1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
389
- reflex-0.8.14.post1.dist-info/entry_points.txt,sha256=Rxt4dXc7MLBNt5CSHTehVPuSe9Xqow4HLX55nD9tQQ0,45
390
- reflex-0.8.14.post1.dist-info/licenses/LICENSE,sha256=dw3zLrp9f5ObD7kqS32vWfhcImfO52PMmRqvtxq_YEE,11358
391
- reflex-0.8.14.post1.dist-info/RECORD,,
390
+ reflex-0.8.15.dist-info/METADATA,sha256=h9ipGF1kX7-0bSR29LudwQgOfWQg42mcDodN4Kgj1Lo,12560
391
+ reflex-0.8.15.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
392
+ reflex-0.8.15.dist-info/entry_points.txt,sha256=Rxt4dXc7MLBNt5CSHTehVPuSe9Xqow4HLX55nD9tQQ0,45
393
+ reflex-0.8.15.dist-info/licenses/LICENSE,sha256=dw3zLrp9f5ObD7kqS32vWfhcImfO52PMmRqvtxq_YEE,11358
394
+ reflex-0.8.15.dist-info/RECORD,,