reflex 0.3.5a2__py3-none-any.whl → 0.3.5a3__py3-none-any.whl

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

Potentially problematic release.


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

reflex/app.py CHANGED
@@ -161,11 +161,12 @@ class App(Base):
161
161
  "rx.BaseState cannot be subclassed multiple times. use rx.State instead"
162
162
  )
163
163
 
164
- # verify that provided state is valid
165
- if self.state and self.state is not State:
166
- console.warn(
167
- f"Using substate ({self.state.__name__}) as root state in `rx.App` is currently not supported."
168
- f" Defaulting to root state: ({State.__name__})"
164
+ if "state" in kwargs:
165
+ console.deprecate(
166
+ feature_name="`state` argument for App()",
167
+ reason="due to all `rx.State` subclasses being inferred.",
168
+ deprecation_version="0.3.5",
169
+ removal_version="0.4.0",
169
170
  )
170
171
  self.state = State
171
172
  # Get the config
@@ -1,6 +1,6 @@
1
1
  """The head component."""
2
2
 
3
- from reflex.components.component import Component
3
+ from reflex.components.component import Component, MemoizationLeaf
4
4
 
5
5
 
6
6
  class NextHeadLib(Component):
@@ -9,7 +9,7 @@ class NextHeadLib(Component):
9
9
  library = "next/head"
10
10
 
11
11
 
12
- class Head(NextHeadLib):
12
+ class Head(NextHeadLib, MemoizationLeaf):
13
13
  """Head Component."""
14
14
 
15
15
  tag = "NextHead"
@@ -7,7 +7,7 @@ from typing import Any, Dict, Literal, Optional, Union, overload
7
7
  from reflex.vars import Var, BaseVar, ComputedVar
8
8
  from reflex.event import EventChain, EventHandler, EventSpec
9
9
  from reflex.style import Style
10
- from reflex.components.component import Component
10
+ from reflex.components.component import Component, MemoizationLeaf
11
11
 
12
12
  class NextHeadLib(Component):
13
13
  @overload
@@ -88,7 +88,7 @@ class NextHeadLib(Component):
88
88
  """
89
89
  ...
90
90
 
91
- class Head(NextHeadLib):
91
+ class Head(NextHeadLib, MemoizationLeaf):
92
92
  @overload
93
93
  @classmethod
94
94
  def create( # type: ignore
@@ -147,7 +147,7 @@ class Head(NextHeadLib):
147
147
  ] = None,
148
148
  **props
149
149
  ) -> "Head":
150
- """Create the component.
150
+ """Create a new memoization leaf component.
151
151
 
152
152
  Args:
153
153
  *children: The children of the component.
@@ -160,9 +160,6 @@ class Head(NextHeadLib):
160
160
  **props: The props of the component.
161
161
 
162
162
  Returns:
163
- The component.
164
-
165
- Raises:
166
- TypeError: If an invalid child is passed.
163
+ The memoization leaf
167
164
  """
168
165
  ...
@@ -28,6 +28,7 @@ from reflex.constants import (
28
28
  EventTriggers,
29
29
  Hooks,
30
30
  Imports,
31
+ MemoizationDisposition,
31
32
  MemoizationMode,
32
33
  PageNames,
33
34
  )
@@ -1363,20 +1364,29 @@ class StatefulComponent(BaseComponent):
1363
1364
  """
1364
1365
  from reflex.components.layout.foreach import Foreach
1365
1366
 
1367
+ if component._memoization_mode.disposition == MemoizationDisposition.NEVER:
1368
+ # Never memoize this component.
1369
+ return None
1370
+
1366
1371
  if component.tag is None:
1367
1372
  # Only memoize components with a tag.
1368
1373
  return None
1369
1374
 
1370
1375
  # If _var_data is found in this component, it is a candidate for auto-memoization.
1371
- has_var_data = False
1376
+ should_memoize = False
1377
+
1378
+ # If the component requests to be memoized, then ignore other checks.
1379
+ if component._memoization_mode.disposition == MemoizationDisposition.ALWAYS:
1380
+ should_memoize = True
1372
1381
 
1373
- # Determine if any Vars have associated data.
1374
- for prop_var in component._get_vars():
1375
- if prop_var._var_data:
1376
- has_var_data = True
1377
- break
1382
+ if not should_memoize:
1383
+ # Determine if any Vars have associated data.
1384
+ for prop_var in component._get_vars():
1385
+ if prop_var._var_data:
1386
+ should_memoize = True
1387
+ break
1378
1388
 
1379
- if not has_var_data:
1389
+ if not should_memoize:
1380
1390
  # Check for special-cases in child components.
1381
1391
  for child in component.children:
1382
1392
  # Skip BaseComponent and StatefulComponent children.
@@ -1384,14 +1394,14 @@ class StatefulComponent(BaseComponent):
1384
1394
  continue
1385
1395
  # Always consider Foreach something that must be memoized by the parent.
1386
1396
  if isinstance(child, Foreach):
1387
- has_var_data = True
1397
+ should_memoize = True
1388
1398
  break
1389
1399
  child = cls._child_var(child)
1390
1400
  if isinstance(child, Var) and child._var_data:
1391
- has_var_data = True
1401
+ should_memoize = True
1392
1402
  break
1393
1403
 
1394
- if has_var_data or component.event_triggers:
1404
+ if should_memoize or component.event_triggers:
1395
1405
  # Render the component to determine tag+hash based on component code.
1396
1406
  tag_name = cls._get_tag_name(component)
1397
1407
  if tag_name is None:
@@ -1664,3 +1674,35 @@ class StatefulComponent(BaseComponent):
1664
1674
  if stateful_component is not None:
1665
1675
  return stateful_component
1666
1676
  return component
1677
+
1678
+
1679
+ class MemoizationLeaf(Component):
1680
+ """A component that does not separately memoize its children.
1681
+
1682
+ Any component which depends on finding the exact names of children
1683
+ components within it, should be a memoization leaf so the compiler
1684
+ does not replace the provided child tags with memoized tags.
1685
+
1686
+ During creation, a memoization leaf will mark itself as wanting to be
1687
+ memoized if any of its children return any hooks.
1688
+ """
1689
+
1690
+ _memoization_mode = MemoizationMode(recursive=False)
1691
+
1692
+ @classmethod
1693
+ def create(cls, *children, **props) -> Component:
1694
+ """Create a new memoization leaf component.
1695
+
1696
+ Args:
1697
+ *children: The children of the component.
1698
+ **props: The props of the component.
1699
+
1700
+ Returns:
1701
+ The memoization leaf
1702
+ """
1703
+ comp = super().create(*children, **props)
1704
+ if comp.get_hooks():
1705
+ comp._memoization_mode = cls._memoization_mode.copy(
1706
+ update={"disposition": MemoizationDisposition.ALWAYS}
1707
+ )
1708
+ return comp
@@ -770,7 +770,7 @@ class FunnelChart(RechartsCharts):
770
770
  ] = None,
771
771
  **props
772
772
  ) -> "FunnelChart":
773
- """Create the component.
773
+ """Create a new memoization leaf component.
774
774
 
775
775
  Args:
776
776
  *children: The children of the component.
@@ -791,10 +791,7 @@ class FunnelChart(RechartsCharts):
791
791
  **props: The props of the component.
792
792
 
793
793
  Returns:
794
- The component.
795
-
796
- Raises:
797
- TypeError: If an invalid child is passed.
794
+ The memoization leaf
798
795
  """
799
796
  ...
800
797
 
@@ -3,6 +3,7 @@ from __future__ import annotations
3
3
 
4
4
  from typing import Any, Dict, List, Union
5
5
 
6
+ from reflex.components.component import MemoizationLeaf
6
7
  from reflex.constants import EventTriggers
7
8
  from reflex.vars import Var
8
9
 
@@ -16,7 +17,7 @@ from .recharts import (
16
17
  )
17
18
 
18
19
 
19
- class ResponsiveContainer(Recharts):
20
+ class ResponsiveContainer(Recharts, MemoizationLeaf):
20
21
  """A base class for responsive containers in Recharts."""
21
22
 
22
23
  tag = "ResponsiveContainer"
@@ -8,6 +8,7 @@ from reflex.vars import Var, BaseVar, ComputedVar
8
8
  from reflex.event import EventChain, EventHandler, EventSpec
9
9
  from reflex.style import Style
10
10
  from typing import Any, Dict, List, Union
11
+ from reflex.components.component import MemoizationLeaf
11
12
  from reflex.constants import EventTriggers
12
13
  from reflex.vars import Var
13
14
  from .recharts import (
@@ -19,7 +20,7 @@ from .recharts import (
19
20
  Recharts,
20
21
  )
21
22
 
22
- class ResponsiveContainer(Recharts):
23
+ class ResponsiveContainer(Recharts, MemoizationLeaf):
23
24
  @overload
24
25
  @classmethod
25
26
  def create( # type: ignore
@@ -84,7 +85,7 @@ class ResponsiveContainer(Recharts):
84
85
  ] = None,
85
86
  **props
86
87
  ) -> "ResponsiveContainer":
87
- """Create the component.
88
+ """Create a new memoization leaf component.
88
89
 
89
90
  Args:
90
91
  *children: The children of the component.
@@ -103,10 +104,7 @@ class ResponsiveContainer(Recharts):
103
104
  **props: The props of the component.
104
105
 
105
106
  Returns:
106
- The component.
107
-
108
- Raises:
109
- TypeError: If an invalid child is passed.
107
+ The memoization leaf
110
108
  """
111
109
  ...
112
110
 
@@ -1,17 +1,17 @@
1
1
  """A component that wraps a recharts lib."""
2
2
  from typing import Literal
3
3
 
4
- from reflex.components.component import Component, NoSSRComponent
4
+ from reflex.components.component import Component, MemoizationLeaf, NoSSRComponent
5
5
 
6
6
 
7
7
  class Recharts(Component):
8
- """A component that wraps a victory lib."""
8
+ """A component that wraps a recharts lib."""
9
9
 
10
10
  library = "recharts@2.8.0"
11
11
 
12
12
 
13
- class RechartsCharts(NoSSRComponent):
14
- """A component that wraps a victory lib."""
13
+ class RechartsCharts(NoSSRComponent, MemoizationLeaf):
14
+ """A component that wraps a recharts lib."""
15
15
 
16
16
  library = "recharts@2.8.0"
17
17
 
@@ -8,7 +8,7 @@ from reflex.vars import Var, BaseVar, ComputedVar
8
8
  from reflex.event import EventChain, EventHandler, EventSpec
9
9
  from reflex.style import Style
10
10
  from typing import Literal
11
- from reflex.components.component import Component, NoSSRComponent
11
+ from reflex.components.component import Component, MemoizationLeaf, NoSSRComponent
12
12
 
13
13
  class Recharts(Component):
14
14
  @overload
@@ -89,7 +89,7 @@ class Recharts(Component):
89
89
  """
90
90
  ...
91
91
 
92
- class RechartsCharts(NoSSRComponent):
92
+ class RechartsCharts(NoSSRComponent, MemoizationLeaf):
93
93
  @overload
94
94
  @classmethod
95
95
  def create( # type: ignore
@@ -148,7 +148,7 @@ class RechartsCharts(NoSSRComponent):
148
148
  ] = None,
149
149
  **props
150
150
  ) -> "RechartsCharts":
151
- """Create the component.
151
+ """Create a new memoization leaf component.
152
152
 
153
153
  Args:
154
154
  *children: The children of the component.
@@ -161,10 +161,7 @@ class RechartsCharts(NoSSRComponent):
161
161
  **props: The props of the component.
162
162
 
163
163
  Returns:
164
- The component.
165
-
166
- Raises:
167
- TypeError: If an invalid child is passed.
164
+ The memoization leaf
168
165
  """
169
166
  ...
170
167
 
@@ -3,7 +3,7 @@ from __future__ import annotations
3
3
 
4
4
  from typing import Any, Dict, Optional, overload
5
5
 
6
- from reflex.components.component import BaseComponent, Component
6
+ from reflex.components.component import BaseComponent, Component, MemoizationLeaf
7
7
  from reflex.components.layout.fragment import Fragment
8
8
  from reflex.components.tags import CondTag, Tag
9
9
  from reflex.constants import Dirs
@@ -15,7 +15,7 @@ _IS_TRUE_IMPORT = {
15
15
  }
16
16
 
17
17
 
18
- class Cond(Component):
18
+ class Cond(MemoizationLeaf):
19
19
  """Render one of two components based on a condition."""
20
20
 
21
21
  # The cond to determine which component to render.
@@ -3,6 +3,7 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  import textwrap
6
+ from functools import lru_cache
6
7
  from hashlib import md5
7
8
  from typing import Any, Callable, Dict, Union
8
9
 
@@ -35,6 +36,7 @@ _REHYPE_PLUGINS = Var.create_safe([_REHYPE_KATEX, _REHYPE_RAW])
35
36
 
36
37
 
37
38
  # Component Mapping
39
+ @lru_cache
38
40
  def get_base_component_map() -> dict[str, Callable]:
39
41
  """Get the base component map.
40
42
 
@@ -89,6 +91,9 @@ class Markdown(Component):
89
91
  # Custom styles for the markdown (deprecated in v0.2.9).
90
92
  custom_styles: Dict[str, Any] = {}
91
93
 
94
+ # The hash of the component map, generated at create() time.
95
+ component_map_hash: str = ""
96
+
92
97
  @classmethod
93
98
  def create(cls, *children, **props) -> Component:
94
99
  """Create a markdown component.
@@ -124,7 +129,12 @@ class Markdown(Component):
124
129
  src = textwrap.dedent(src)
125
130
 
126
131
  # Create the component.
127
- return super().create(src, component_map=component_map, **props)
132
+ return super().create(
133
+ src,
134
+ component_map=component_map,
135
+ component_map_hash=cls._component_map_hash(component_map),
136
+ **props,
137
+ )
128
138
 
129
139
  def get_custom_components(
130
140
  self, seen: set[str] | None = None
@@ -264,11 +274,15 @@ class Markdown(Component):
264
274
 
265
275
  return components
266
276
 
267
- def _component_map_hash(self) -> str:
268
- return md5(str(self.component_map).encode()).hexdigest()
277
+ @staticmethod
278
+ def _component_map_hash(component_map) -> str:
279
+ inp = str(
280
+ {tag: component(_MOCK_ARG) for tag, component in component_map.items()}
281
+ ).encode()
282
+ return md5(inp).hexdigest()
269
283
 
270
284
  def _get_component_map_name(self) -> str:
271
- return f"ComponentMap_{self._component_map_hash()}"
285
+ return f"ComponentMap_{self.component_map_hash}"
272
286
 
273
287
  def _get_custom_code(self) -> str | None:
274
288
  hooks = set()
@@ -292,7 +306,7 @@ class Markdown(Component):
292
306
  remark_plugins=_REMARK_PLUGINS,
293
307
  rehype_plugins=_REHYPE_PLUGINS,
294
308
  )
295
- .remove_props("componentMap")
309
+ .remove_props("componentMap", "componentMapHash")
296
310
  )
297
311
  tag.special_props.add(
298
312
  Var.create_safe(
@@ -8,6 +8,7 @@ from reflex.vars import Var, BaseVar, ComputedVar
8
8
  from reflex.event import EventChain, EventHandler, EventSpec
9
9
  from reflex.style import Style
10
10
  import textwrap
11
+ from functools import lru_cache
11
12
  from hashlib import md5
12
13
  from typing import Any, Callable, Dict, Union
13
14
  from reflex.compiler import utils
@@ -32,6 +33,7 @@ _REHYPE_KATEX = Var.create_safe("rehypeKatex", _var_is_local=False)
32
33
  _REHYPE_RAW = Var.create_safe("rehypeRaw", _var_is_local=False)
33
34
  _REHYPE_PLUGINS = Var.create_safe([_REHYPE_KATEX, _REHYPE_RAW])
34
35
 
36
+ @lru_cache
35
37
  def get_base_component_map() -> dict[str, Callable]: ...
36
38
 
37
39
  class Markdown(Component):
@@ -42,6 +44,7 @@ class Markdown(Component):
42
44
  *children,
43
45
  component_map: Optional[Dict[str, Any]] = None,
44
46
  custom_styles: Optional[Dict[str, Any]] = None,
47
+ component_map_hash: Optional[str] = None,
45
48
  style: Optional[Style] = None,
46
49
  key: Optional[Any] = None,
47
50
  id: Optional[Any] = None,
@@ -101,6 +104,7 @@ class Markdown(Component):
101
104
  *children: The children of the component.
102
105
  component_map: The component map from a tag to a lambda that creates a component.
103
106
  custom_styles: Custom styles for the markdown (deprecated in v0.2.9).
107
+ component_map_hash: The hash of the component map, generated at create() time.
104
108
  style: The style of the component.
105
109
  key: A unique key for the component.
106
110
  id: The id for the component.
@@ -115,7 +115,8 @@ class MemoizationDisposition(enum.Enum):
115
115
 
116
116
  # If the component uses state or events, it should be memoized.
117
117
  STATEFUL = "stateful"
118
- # TODO: add more modes, like always and never
118
+ ALWAYS = "always"
119
+ NEVER = "never"
119
120
 
120
121
 
121
122
  class MemoizationMode(Base):
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
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: reflex
3
- Version: 0.3.5a2
3
+ Version: 0.3.5a3
4
4
  Summary: Web apps in pure Python.
5
5
  Home-page: https://reflex.dev
6
6
  License: Apache-2.0
@@ -77,7 +77,7 @@ reflex/__init__.py,sha256=uokcDukKB8JFn2TYivO2zBvkVZY65PG1QxqwOYVrY30,7310
77
77
  reflex/__init__.pyi,sha256=grvhJNV6LJB27hai2T_FzkEjBpCrSn4WSU8Q4_7BBdQ,26736
78
78
  reflex/__main__.py,sha256=6cVrGEyT3j3tEvlEVUatpaYfbB5EF3UVY-6vc_Z7-hw,108
79
79
  reflex/admin.py,sha256=-bTxFUEoHo4X9FzmcSa6KSVVPpF7wh38lBvF67GhSvQ,373
80
- reflex/app.py,sha256=09utrmtVQA916D8YCPRRlVVm5MGsI7Fw2N5omb39dtc,37763
80
+ reflex/app.py,sha256=zvI8H52tgAYJdROmIZLCxJJE5aBrkz3bQ1xaEZuJLYQ,37748
81
81
  reflex/app.pyi,sha256=tg6JMC8vGshJjZFWeO3VK50yWab-Vhc6kX1g_kWTVxM,4695
82
82
  reflex/base.py,sha256=8UcGxfd_ayYie-VK6M9IXNZ1EjjX_OpxBJGY0F1Az1k,3608
83
83
  reflex/compiler/__init__.py,sha256=r8jqmDSFf09iV2lHlNhfc9XrTLjNxfDNwPYlxS4cmHE,27
@@ -93,15 +93,15 @@ reflex/components/base/body.py,sha256=QHOGMr98I6bUXsQKXcY0PzJdhopH6gQ8AESrDSgJV6
93
93
  reflex/components/base/body.pyi,sha256=1jtmYDFxUtsVPM_Q7xaqSC765z6ct57xDKO1Wfse4ik,3272
94
94
  reflex/components/base/document.py,sha256=6py5UDCALAzdAccFiiJbKxVXgHjGK3bBk5zvUpLQNZE,725
95
95
  reflex/components/base/document.pyi,sha256=STyq72fDZzbJpPizU5nUfF2Q5h6yCbqAr5rJHjvjs2s,17396
96
- reflex/components/base/head.py,sha256=zaaBzDiJjxQekGgMykcBgkhHPh6USmSIO0qKafh8cAw,263
97
- reflex/components/base/head.pyi,sha256=cWb-tMYZeENPzJSxb7UPWxIu0rOQifccgJQxEoTFENM,6080
96
+ reflex/components/base/head.py,sha256=r7uis6H3Vc11ob8gqGNfExI_HPUKyTDNydInQXg6JeM,297
97
+ reflex/components/base/head.pyi,sha256=DuHBorUNGyVy9sDIPeKBi6sdJkegtQWDgmouPyoSyrI,6068
98
98
  reflex/components/base/link.py,sha256=y26QGX8QERS-vWjFggvYt_xKxJAfrpKmU0FGJMi3mh0,929
99
99
  reflex/components/base/link.pyi,sha256=uuWh2firoXrrY-uT7xRWFTP13dfEEqynYs8wYL7Rxow,7127
100
100
  reflex/components/base/meta.py,sha256=RWITTQTA_35-FbaVGhjkAWDOmU65rzJ-WedENRJk-3k,1438
101
101
  reflex/components/base/meta.pyi,sha256=JIWM2x8z_A8sOpEoRv-avjOXyEC8OajqTGnCOnmBMqQ,13083
102
102
  reflex/components/base/script.py,sha256=sNuoSeO1XxVfqSd9EADlOeNDti-zf8-vn_yd0NcmImc,2298
103
103
  reflex/components/base/script.pyi,sha256=11PEE77sBt78L4AsEdhgD7uQ7TpqGNStCpD_vI8MIDw,4495
104
- reflex/components/component.py,sha256=u8tAWmy5zAxdvrFer62vK_2ThZCDe8dFZvF5_sFUgpU,54239
104
+ reflex/components/component.py,sha256=zf2_Za9h_JSwSMee13hzG0_OFEJttcCV4-UUOd3EGcU,55739
105
105
  reflex/components/datadisplay/__init__.py,sha256=UB-LJcrXj6L7nZK-WLoUwWOvc0b21Yh0s6W3J0xE8iU,721
106
106
  reflex/components/datadisplay/badge.py,sha256=5QJivxZyjZhcxJS-XBU56CW1A7vADINKcwrhg9qUeKg,357
107
107
  reflex/components/datadisplay/badge.pyi,sha256=bX3mS37wsMOoL60hXDpqK440GBhlJSmLXl8KF1ptFk8,3718
@@ -226,13 +226,13 @@ reflex/components/graphing/recharts/__init__.py,sha256=_z8TImfBT085hUYH-UQGwtSO6
226
226
  reflex/components/graphing/recharts/cartesian.py,sha256=kSOdShCDIP7sXSmRxTfwPYSuOEoBs8MNcT9yja37-bc,19595
227
227
  reflex/components/graphing/recharts/cartesian.pyi,sha256=DCapfKTgwpFRCr7ZS4GdnjV-Whag3tnPvSEhpCdmQJQ,85504
228
228
  reflex/components/graphing/recharts/charts.py,sha256=-FPGn4MkAlNfSd-luZF3jgsVSR2KenOat1vrdpTRev4,18502
229
- reflex/components/graphing/recharts/charts.pyi,sha256=h0jgmSgobreXKwsSEU4ZEvqHI6GxcuXyG1jHwXeJzO0,48816
230
- reflex/components/graphing/recharts/general.py,sha256=0eBac10hMwIY8_tq_SxXx5nriE1zUA--qhgFGhf7b_g,5551
231
- reflex/components/graphing/recharts/general.pyi,sha256=bvPwj95riCQ1PADuHaRn-AIGP8zsg6vpwGXm4KF7W20,23048
229
+ reflex/components/graphing/recharts/charts.pyi,sha256=t5nCGkWVczhPkfHWX6lYLSVyKkWN0RynI7TF2u4BcUw,48770
230
+ reflex/components/graphing/recharts/general.py,sha256=71Z8IFDjNGT6m2110lkz81AeH6yFuyA9g5JH58qbYpE,5624
231
+ reflex/components/graphing/recharts/general.pyi,sha256=EfHc7wao-SsPkHTPzXfPZRV9i6VVz9ETVqcr38Iobpo,23075
232
232
  reflex/components/graphing/recharts/polar.py,sha256=X4qG0IOCnC11Zb6iDTXuV9_IVU5MrIFYzmnQLpyFufY,10410
233
233
  reflex/components/graphing/recharts/polar.pyi,sha256=v9set3PzPT5lDCcrdN8sMhFpc05h4Z86FuxY3OPp_uQ,24756
234
- reflex/components/graphing/recharts/recharts.py,sha256=GSL2HHKEEVQSpXlCRkg5xYkHaOvy2Gbd4eQeZYB8Qws,2834
235
- reflex/components/graphing/recharts/recharts.pyi,sha256=DXh6TiGggUbBGyqNYXdGXHGhY84XQQbTr_buPhBUcCA,8622
234
+ reflex/components/graphing/recharts/recharts.py,sha256=Ap4HCCBY2Q9gdrh-PnHOvJY5ebIKCLgnQNrUWDp_bRs,2870
235
+ reflex/components/graphing/recharts/recharts.pyi,sha256=BlmqDBZveWoCqj324J9yBJgLbMLGnJHs0WJTcuwxMdM,8610
236
236
  reflex/components/layout/__init__.py,sha256=p6k9RBI6wF37vE0CjZ2Ptr0eWZ8FxmMtJhClNy2rTUM,872
237
237
  reflex/components/layout/aspect_ratio.py,sha256=8ulf9WvYZ2hGzZk0TCZMORU_exC-yH_lDhUamA4ftCY,320
238
238
  reflex/components/layout/aspect_ratio.pyi,sha256=t_V4XcPe3zMswcCrSjvS9iCpaQujdfbnX9NCVpYKIu8,3443
@@ -242,7 +242,7 @@ reflex/components/layout/card.py,sha256=mRCy-v3Z3Eq3zQfDfBKV-JtgfhTr66DVCXsJwKW3
242
242
  reflex/components/layout/card.pyi,sha256=kq3--gk7q3qyd9DSXYdWxX425RiZtiX-UmL64ssuUng,14056
243
243
  reflex/components/layout/center.py,sha256=C9Y_V7eKc5uyOcgK1panVjBlbW2q3lC6S_IBJR6ZQSI,394
244
244
  reflex/components/layout/center.pyi,sha256=H2T9Z7DQIZoiBO3VNTz1MQUqYZhmnmVJwhU2mYl82-E,8898
245
- reflex/components/layout/cond.py,sha256=R38BwET3jzpdOWsnnyokuE6LNRcuKotJJNaSWynj_gg,5056
245
+ reflex/components/layout/cond.py,sha256=XgZ7OjwSar0zOuaOPKzeaFj8KE1wOtEgmXj-DYOS2h8,5079
246
246
  reflex/components/layout/container.py,sha256=BNv819mXySO8NeRM8WlMa33XitJ440Aof4sbhOZPO4g,359
247
247
  reflex/components/layout/container.pyi,sha256=6b9hbgz7Qn80ngEbddyCak2FqXiipoLKWeA1K5PTLRM,3495
248
248
  reflex/components/layout/flex.py,sha256=WMgKYImjFLyBC8EayqMCzME8yfIO-2LxLazHUYkKgg0,720
@@ -326,8 +326,8 @@ reflex/components/typography/heading.py,sha256=a07yOx5LJ-ySUyXZkwcrAIv0AtUgw1B9s
326
326
  reflex/components/typography/heading.pyi,sha256=5D4NCkS3Q_99eg9MUHwBFPepc32iQZi5ZoUYY_tXi7A,3770
327
327
  reflex/components/typography/highlight.py,sha256=DYWJ3JrVnWHgkU_qaljyPpgfzyaieS4jSaCT_HD39X4,676
328
328
  reflex/components/typography/highlight.pyi,sha256=jkFoiM5KmAz-yskKesoUN3sfkQUqRkiw1kMLrd_rB0Q,3709
329
- reflex/components/typography/markdown.py,sha256=kJQvavbRtg7fSgniuwPikIFi2MbqMazP14nFb9UmxTg,10307
330
- reflex/components/typography/markdown.pyi,sha256=y7qZESEdYpsxc4wf5vI1MCFC9Iz8TNO1B5jrmXOva3s,4990
329
+ reflex/components/typography/markdown.py,sha256=DQ9dd5wr3TzkWr3gBGFTwlCEtfPKmYQBz9_VAvMpGa4,10704
330
+ reflex/components/typography/markdown.pyi,sha256=I-7GM9jaq8XLTfMp3xcrmiqtslUfCJvu83BwH8IIFRM,5174
331
331
  reflex/components/typography/span.py,sha256=kvIj5UAEvzhRpvXkAEZ_JxBRSt-LNBiEz9Arlj5m7jo,333
332
332
  reflex/components/typography/span.pyi,sha256=q_PqfZ1zj-YpYDZZhXkwSyKL8Hc_Kv4AaIFHZBhTemk,3436
333
333
  reflex/components/typography/text.py,sha256=32HSSQteGs_brWsuCnCiFiZkfIyAt6VTJlA8SJfo-sk,477
@@ -336,7 +336,7 @@ reflex/config.py,sha256=EEY7gBZ2T3p9g6-LqbD-wt_jO6qcPW3a2t6NLtk1QKo,10606
336
336
  reflex/config.pyi,sha256=Gf0Ptm9h0xEPsv0FAfwsSq6fs5ycjiR0WxbYimt9TKY,3278
337
337
  reflex/constants/__init__.py,sha256=goPNimkDuJHX6kxEKeKvfM8kjiOVfYkMZY7HmmeUvxI,1801
338
338
  reflex/constants/base.py,sha256=3sl5N6LeBa_xic38sanc7t57ntD23L_xwCB71uy2SWc,5175
339
- reflex/constants/compiler.py,sha256=v8Jatm-yeAfL-CVW2ieivnh4Hs7zs89t2JRAmRXUkTs,3691
339
+ reflex/constants/compiler.py,sha256=PuZuIasjtj-EJtZBAJtVd_Yjhe5yiLDbdLOntVs1DLE,3683
340
340
  reflex/constants/config.py,sha256=DnoljtuYLsPUlpqVoMCWBm7RhSjCdKP0NE2ZQe-qf-I,1331
341
341
  reflex/constants/event.py,sha256=8Glq8yt5M0Wlac3iySZ38de_ZHF_VjG6bXVX39D22xU,2266
342
342
  reflex/constants/installer.py,sha256=aDRDkyFMNEZcsSkfy4Es2sSuG6Hx2nJFT7KL4s69PnE,3139
@@ -369,10 +369,10 @@ reflex/utils/serializers.py,sha256=7S9q10E7oUhyyCcoqWOsG4sg96t4qjPF2ygme02Ouso,5
369
369
  reflex/utils/telemetry.py,sha256=CxRreEGR3e3mq6oOuAf3krN4cCKtdPs47Q9gaY0svr8,2388
370
370
  reflex/utils/types.py,sha256=7HWt89qz8Za5awm_sVTZ1P_F-V8ZVpkKd3Gkz45Acro,7434
371
371
  reflex/utils/watch.py,sha256=HzGrHQIZ_62Di0BO46kd2AZktNA3A6nFIBuf8c6ip30,2609
372
- reflex/vars.py,sha256=6nNW_JxT6x-cw-HVog_9skODpe4tMDULx_hcz14pARA,58674
372
+ reflex/vars.py,sha256=OLLZHSDJkbe031eX-OoYtlnBDGa9S10HUWbBdxskgKs,59428
373
373
  reflex/vars.pyi,sha256=VsVyNRIcuWnCDo2xrxF25gHV7qTM8wU1O350UBay3Rk,5032
374
- reflex-0.3.5a2.dist-info/LICENSE,sha256=dw3zLrp9f5ObD7kqS32vWfhcImfO52PMmRqvtxq_YEE,11358
375
- reflex-0.3.5a2.dist-info/METADATA,sha256=_TqKpXvlY668vlSTiQb0FxlCBueDiq6fl_3nj2ijRNc,11044
376
- reflex-0.3.5a2.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
377
- reflex-0.3.5a2.dist-info/entry_points.txt,sha256=H1Z5Yat_xJfy0dRT1Frk2PkO_p41Xy7fCKlj4FcdL9o,44
378
- reflex-0.3.5a2.dist-info/RECORD,,
374
+ reflex-0.3.5a3.dist-info/LICENSE,sha256=dw3zLrp9f5ObD7kqS32vWfhcImfO52PMmRqvtxq_YEE,11358
375
+ reflex-0.3.5a3.dist-info/METADATA,sha256=labYjjUnc-6X7Jr4rPUJQruXxkzKXOiDB6AHpGG1FfQ,11044
376
+ reflex-0.3.5a3.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
377
+ reflex-0.3.5a3.dist-info/entry_points.txt,sha256=H1Z5Yat_xJfy0dRT1Frk2PkO_p41Xy7fCKlj4FcdL9o,44
378
+ reflex-0.3.5a3.dist-info/RECORD,,