reflex 0.7.3a2__py3-none-any.whl → 0.7.4a1__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/utils/registry.py CHANGED
@@ -35,11 +35,11 @@ def average_latency(registry: str, attempts: int = 3) -> int:
35
35
  return sum(latency(registry) for _ in range(attempts)) // attempts
36
36
 
37
37
 
38
- def get_best_registry() -> str:
38
+ def _get_best_registry() -> str:
39
39
  """Get the best registry based on latency.
40
40
 
41
41
  Returns:
42
- str: The best registry.
42
+ The best registry.
43
43
  """
44
44
  registries = [
45
45
  "https://registry.npmjs.org",
@@ -49,10 +49,10 @@ def get_best_registry() -> str:
49
49
  return min(registries, key=average_latency)
50
50
 
51
51
 
52
- def _get_npm_registry() -> str:
52
+ def get_npm_registry() -> str:
53
53
  """Get npm registry. If environment variable is set, use it first.
54
54
 
55
55
  Returns:
56
- str:
56
+ The npm registry.
57
57
  """
58
- return environment.NPM_CONFIG_REGISTRY.get() or get_best_registry()
58
+ return environment.NPM_CONFIG_REGISTRY.get() or _get_best_registry()
reflex/vars/base.py CHANGED
@@ -160,7 +160,7 @@ class VarData:
160
160
  if isinstance(hooks, str):
161
161
  hooks = [hooks]
162
162
  if not isinstance(hooks, dict):
163
- hooks = {hook: None for hook in (hooks or [])}
163
+ hooks = dict.fromkeys(hooks or [])
164
164
  immutable_imports: ImmutableParsedImportDict = tuple(
165
165
  (k, tuple(v)) for k, v in parse_imports(imports or {}).items()
166
166
  )
@@ -1791,8 +1791,7 @@ class cached_property: # noqa: N801
1791
1791
  if original_del is not None:
1792
1792
  original_del(this)
1793
1793
  return
1794
- if unique_id in GLOBAL_CACHE:
1795
- del GLOBAL_CACHE[unique_id]
1794
+ GLOBAL_CACHE.pop(unique_id, None)
1796
1795
 
1797
1796
  if original_del is not None:
1798
1797
  original_del(this)
reflex/vars/sequence.py CHANGED
@@ -1683,6 +1683,8 @@ def _determine_value_of_array_index(
1683
1683
  if t is not type(None)
1684
1684
  ]
1685
1685
  )
1686
+ if origin_var_type is range:
1687
+ return int
1686
1688
  if origin_var_type in [
1687
1689
  Sequence,
1688
1690
  Iterable,
@@ -1974,3 +1976,85 @@ class LiteralColorVar(CachedVarOperation, LiteralVar, ColorVar):
1974
1976
  ):
1975
1977
  raise TypeError("Color is not a valid color.")
1976
1978
  return f"var(--{color}-{'a' if alpha else ''}{shade})"
1979
+
1980
+
1981
+ class RangeVar(ArrayVar[Sequence[int]], python_types=range):
1982
+ """Base class for immutable range vars."""
1983
+
1984
+
1985
+ @dataclasses.dataclass(
1986
+ eq=False,
1987
+ frozen=True,
1988
+ slots=True,
1989
+ )
1990
+ class LiteralRangeVar(CachedVarOperation, LiteralVar, RangeVar):
1991
+ """Base class for immutable literal range vars."""
1992
+
1993
+ _var_value: range = dataclasses.field(default_factory=lambda: range(0))
1994
+
1995
+ @classmethod
1996
+ def create(
1997
+ cls,
1998
+ value: range,
1999
+ _var_type: Type[range] | None = None,
2000
+ _var_data: VarData | None = None,
2001
+ ) -> RangeVar:
2002
+ """Create a var from a string value.
2003
+
2004
+ Args:
2005
+ value: The value to create the var from.
2006
+ _var_type: The type of the var.
2007
+ _var_data: Additional hooks and imports associated with the Var.
2008
+
2009
+ Returns:
2010
+ The var.
2011
+ """
2012
+ return cls(
2013
+ _js_expr="",
2014
+ _var_type=_var_type or range,
2015
+ _var_data=_var_data,
2016
+ _var_value=value,
2017
+ )
2018
+
2019
+ def __hash__(self) -> int:
2020
+ """Get the hash of the var.
2021
+
2022
+ Returns:
2023
+ The hash of the var.
2024
+ """
2025
+ return hash(
2026
+ (
2027
+ self.__class__.__name__,
2028
+ self._var_value.start,
2029
+ self._var_value.stop,
2030
+ self._var_value.step,
2031
+ )
2032
+ )
2033
+
2034
+ @cached_property_no_lock
2035
+ def _cached_var_name(self) -> str:
2036
+ """The name of the var.
2037
+
2038
+ Returns:
2039
+ The name of the var.
2040
+ """
2041
+ return f"Array.from({{ length: Math.ceil(({self._var_value.stop!s} - {self._var_value.start!s}) / {self._var_value.step!s}) }}, (_, i) => {self._var_value.start!s} + i * {self._var_value.step!s})"
2042
+
2043
+ @cached_property_no_lock
2044
+ def _cached_get_all_var_data(self) -> VarData | None:
2045
+ """Get all the var data.
2046
+
2047
+ Returns:
2048
+ The var data.
2049
+ """
2050
+ return self._var_data
2051
+
2052
+ def json(self) -> str:
2053
+ """Get the JSON representation of the var.
2054
+
2055
+ Returns:
2056
+ The JSON representation of the var.
2057
+ """
2058
+ return json.dumps(
2059
+ list(self._var_value),
2060
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: reflex
3
- Version: 0.7.3a2
3
+ Version: 0.7.4a1
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
@@ -23,7 +23,7 @@ Requires-Dist: build<2.0,>=1.0.3
23
23
  Requires-Dist: charset-normalizer<4.0,>=3.3.2
24
24
  Requires-Dist: distro<2.0,>=1.8.0; platform_system == 'Linux'
25
25
  Requires-Dist: fastapi!=0.111.0,!=0.111.1,>=0.96.0
26
- Requires-Dist: gunicorn<24.0,>=20.1.0
26
+ Requires-Dist: granian[reload]>=2.0.0
27
27
  Requires-Dist: httpx<1.0,>=0.25.1
28
28
  Requires-Dist: jinja2<4.0,>=3.1.2
29
29
  Requires-Dist: lazy-loader>=0.4
@@ -44,7 +44,6 @@ Requires-Dist: tomlkit<1.0,>=0.12.4
44
44
  Requires-Dist: twine<7.0,>=4.0.0
45
45
  Requires-Dist: typer<1.0,>=0.15.1
46
46
  Requires-Dist: typing-extensions>=4.6.0
47
- Requires-Dist: uvicorn>=0.20.0
48
47
  Requires-Dist: wheel<1.0,>=0.42.0
49
48
  Requires-Dist: wrapt<2.0,>=1.17.0
50
49
  Description-Content-Type: text/markdown
@@ -60,6 +59,7 @@ Description-Content-Type: text/markdown
60
59
  [![PyPI version](https://badge.fury.io/py/reflex.svg)](https://badge.fury.io/py/reflex)
61
60
  ![versions](https://img.shields.io/pypi/pyversions/reflex.svg)
62
61
  [![Documentation](https://img.shields.io/badge/Documentation%20-Introduction%20-%20%23007ec6)](https://reflex.dev/docs/getting-started/introduction)
62
+ [![PyPI Downloads](https://static.pepy.tech/badge/reflex)](https://pepy.tech/projects/reflex)
63
63
  [![Discord](https://img.shields.io/discord/1029853095527727165?color=%237289da&label=Discord)](https://discord.gg/T5WSbC2YtQ)
64
64
 
65
65
  </div>
@@ -2,20 +2,19 @@ reflex/__init__.py,sha256=64HB9b6MKesl3Yv6aZMsozdMKKpgnxirKk-aeN45UYY,10341
2
2
  reflex/__init__.pyi,sha256=j4ZkO-mKKw5dFBhJVbaOg7AlncO-JCckV2cHENPiLG0,11303
3
3
  reflex/__main__.py,sha256=6cVrGEyT3j3tEvlEVUatpaYfbB5EF3UVY-6vc_Z7-hw,108
4
4
  reflex/admin.py,sha256=wu_vYqB0rU2njYBJSI0XZgVEkAFVZNQNUkUUXrlFbZc,343
5
- reflex/app.py,sha256=YQBe77CIgT_xTpTM-H3TIbwHUUYlHQ4UGA-K4lnzG5k,68739
6
- reflex/app_module_for_backend.py,sha256=iuEYcJNRai59vReNUIZgixtYlFHYcYp_LNFB9DPQnKs,1134
5
+ reflex/app.py,sha256=JCh2PGvwfTpYSfZJeMRANGT-6NdWw718gAFWX-hOq_U,69385
7
6
  reflex/assets.py,sha256=PLTKAMYPKMZq8eWXKX8uco6NZ9IiPGWal0bOPLUmU7k,3364
8
7
  reflex/base.py,sha256=T1sY7SJJOpTsOveEiFxp-K39EoIQtRLgqdFZhsdM0DE,3976
9
- reflex/config.py,sha256=abb4ake03wkXWRWvOfqu5IhSgFIFNcYxuaF3Kt2Q5Q0,35151
8
+ reflex/config.py,sha256=LWl45MJv-fh4fMr-cpQWffO0HgQU-UiMEeqiqJC_Gto,35100
10
9
  reflex/event.py,sha256=EX-9X-c8gIudZjRDG8qSrVAbegcaGkYXxLLRWg-7IOA,60758
11
10
  reflex/model.py,sha256=k6qCweATPW1YRB_qcHwa5X35btJmtIlB4zEQ63FaW3w,17527
12
11
  reflex/page.py,sha256=qEt8n5EtawSywCzdsiaNQJWhC8ie-vg8ig0JGuVavPI,2386
13
12
  reflex/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
- reflex/reflex.py,sha256=gmYVXXASlx_4kpyYuqEASS2qNdG2lWbmVpNQ_LYeOJQ,20399
13
+ reflex/reflex.py,sha256=BM9oQ4VaobBa__BLgf38DJ2BYhTdobTRDZCpaZkOBHk,20920
15
14
  reflex/route.py,sha256=nn_hJwtQdjiqH_dHXfqMGWKllnyPQZTSR-KWdHDhoOs,4210
16
- reflex/state.py,sha256=VmXm7SNuecE2y3sZo4yu-JW7frlb3Wi6V2o4A3it4eQ,141566
15
+ reflex/state.py,sha256=XBryDsRkXVLxYYiU_TL2B_riU7FySJsg3aU0ywUSWJs,141886
17
16
  reflex/style.py,sha256=dilXPn8de80NzsXT53GPJrmjELC5nPYIlCgongyq1zM,13145
18
- reflex/testing.py,sha256=c3boyBotUiDImK1lsO-Odeb4tgqRAvRdaT1lZ9QzPHg,35458
17
+ reflex/testing.py,sha256=IpjUHBNOJDAQtu6HnazfWIacEO5cIJvyHlCr6dYpr38,35585
19
18
  reflex/.templates/apps/blank/assets/favicon.ico,sha256=baxxgDAQ2V4-G5Q4S2yK5uUJTUGkv-AOWBQ0xd6myUo,4286
20
19
  reflex/.templates/apps/blank/code/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
20
  reflex/.templates/apps/blank/code/blank.py,sha256=oKnsBBZM1-_RFAuwGKgfiCzgsrHlN_m_XP0-Fpnld7k,926
@@ -59,13 +58,13 @@ reflex/app_mixins/lifespan.py,sha256=fwtaa9NnyENdDa8_RUHUsT8L9qnZKxcpL-mEGLTGldo
59
58
  reflex/app_mixins/middleware.py,sha256=_B33NZdbuI16IUPTENyfCmEfJ6OxFHm6rObl3JdIs-Y,3286
60
59
  reflex/app_mixins/mixin.py,sha256=si0Pa0U1EtJc-a6iZntqU9B7_NrPILwrGFxk9mKHBCE,317
61
60
  reflex/compiler/__init__.py,sha256=r8jqmDSFf09iV2lHlNhfc9XrTLjNxfDNwPYlxS4cmHE,27
62
- reflex/compiler/compiler.py,sha256=S7v2t5um_TrkAEP48LUjcZ9oQPd1AGQtPcANc7LP4r4,23789
61
+ reflex/compiler/compiler.py,sha256=Dr7eitYfwfJlcun7v88E7FEELAnkbKp8ja4-r41_6co,25870
63
62
  reflex/compiler/templates.py,sha256=NX3YUMVGGyDsy2JuDv-AmklMM0pKJHLPsIpdqamgqRQ,5854
64
63
  reflex/compiler/utils.py,sha256=w8KcAXneXQxPOSei7BvAfA9MzR4jQWjDlxm8ahN1UM0,16083
65
64
  reflex/components/__init__.py,sha256=zbIXThv1WPI0FdIGf9G9RAmGoCRoGy7nHcSZ8K5D5bA,624
66
65
  reflex/components/__init__.pyi,sha256=qoj1zIWaitcZOGcJ6k7wuGJk_GAJCE9Xtx8CeRVrvoE,861
67
66
  reflex/components/component.py,sha256=ksc0Vc3hgZkTEyDZksarETCrjA-pvDMnd7T11F01ecg,88766
68
- reflex/components/dynamic.py,sha256=W-jNbNzll1w6YoMcoF-LMjHqP4UtoQHPV-NamXs-eAY,7220
67
+ reflex/components/dynamic.py,sha256=DdlFbtciytsEbVdFHm-obmE4FFkSR6x2DH0BzYI_4C4,7150
69
68
  reflex/components/literals.py,sha256=hogLnwTJxFJODIvqihg-GD9kFZVsEBDoYzaRit56Nuk,501
70
69
  reflex/components/props.py,sha256=8F2ZNeF16BDiTh-E4F-U_vks41BMJgmkTM7xbjGvfOA,2593
71
70
  reflex/components/base/__init__.py,sha256=QIOxOPT87WrSE4TSHAsZ-358VzvUXAe1w8vWogQ3Uuo,730
@@ -98,12 +97,12 @@ reflex/components/core/auto_scroll.pyi,sha256=4oTNr6ixo5D0rzmIQVXGCEUpHSSa7KdrkW
98
97
  reflex/components/core/banner.py,sha256=OB8HlnytknFQotVoBNsbCHxE6_3W96JCCtvxS6R3QKU,18473
99
98
  reflex/components/core/banner.pyi,sha256=owB8dbiHh2YMeJsggCM5zQ3kpfIcGXoxTWQdscakpwQ,24586
100
99
  reflex/components/core/breakpoints.py,sha256=fDtfDoZqJnAOnBvpp0640FCKbuMyC9dVoSf0-RE7n6Y,2756
101
- reflex/components/core/client_side_routing.py,sha256=z2WD2jT9U-xDOyHTLjCs0mf5HkwSEJpMmUeXzl4S7ZU,1897
100
+ reflex/components/core/client_side_routing.py,sha256=CgW29H4Kiy5V4AKdJlFT9gSWaFUfki3f3Prf9twbbqA,1881
102
101
  reflex/components/core/client_side_routing.pyi,sha256=XODI3H05ccxhAo-_SvFJjKFxTAkWbRsA-wmTe9uBxRo,4182
103
102
  reflex/components/core/clipboard.py,sha256=WH2pagKO0H5G7BaIT1kChRzrMV-aP5ENv1lIKbkRzJ8,3354
104
103
  reflex/components/core/clipboard.pyi,sha256=PiCieOSgQWwN5M7uHl11_kSqUXBN8J3glred4TH-yiQ,3041
105
104
  reflex/components/core/colors.py,sha256=-hzVGLEq3TiqroqzMi_YzGBCPXMvkNsen3pS_NzIQNk,590
106
- reflex/components/core/cond.py,sha256=Pa9kbunY5Gq000yPXxMex0zsUeAiffDsUrqSIFVLoqs,5372
105
+ reflex/components/core/cond.py,sha256=j5V-CGjoB6W_Ch0blQYzLuepjLqtX4vXb8e6qvEL_3I,5685
107
106
  reflex/components/core/debounce.py,sha256=qZsnu-7xfxz3NJS4-UnA_2YQz2P8SznJyuwZz98nEwE,4961
108
107
  reflex/components/core/debounce.pyi,sha256=QjyPCR1eVGxTdDFnFPD9Ir9QbJLk-2xU8f-hSMZHcfU,2883
109
108
  reflex/components/core/foreach.py,sha256=s2wgxcgEBc_8PfTKolDjbRz1pgdKZCdq8tqk87t3QVQ,5827
@@ -113,7 +112,7 @@ reflex/components/core/match.py,sha256=M39oK1DxnfU1GW07_78mo8vYttR7PP-jH7WZY111i
113
112
  reflex/components/core/responsive.py,sha256=ACZdtJ4a4F8B3dm1k8h6J2_UJx0Z5LDB7XHQ2ty4wAc,1911
114
113
  reflex/components/core/sticky.py,sha256=2B3TxrwG2Rtp_lv1VkMOIF2bqSiT7qYGbqbiZiMKxKY,3856
115
114
  reflex/components/core/sticky.pyi,sha256=fHmH_EwTvrVUHbq-13fT-TK0R_yUMBSc2Hp-1IowpTM,32071
116
- reflex/components/core/upload.py,sha256=PVlw_sP_-AV3q0ri5NPIVoz3QdZZtqVIcEQuRgeb8Rs,11913
115
+ reflex/components/core/upload.py,sha256=mBGavdmP1A-xySEsMi6Emi0mffJ1p-BQj7mscLlPBmA,11913
117
116
  reflex/components/core/upload.pyi,sha256=ZK22Hnc4eXhOsRbrAbakrzM5oGk05DdRHWurBNI5HRM,14602
118
117
  reflex/components/core/layout/__init__.py,sha256=znldZaj_NGt8qCZDG70GMwjMTskcvCf_2N_EjCAHwdc,30
119
118
  reflex/components/datadisplay/__init__.py,sha256=L8pWWKNHWdUD2fbZRoEKjd_8c_hpDdGYO463hwkoIi4,438
@@ -159,7 +158,7 @@ reflex/components/gridjs/__init__.py,sha256=xJwDm1AZ70L5-t9LLqZwGUtDpijbf1KuMYDT
159
158
  reflex/components/gridjs/datatable.py,sha256=Q2P2lFbPEujVa6bfetV0w4Oc81APX9YgVKGnKCvhSxY,4197
160
159
  reflex/components/gridjs/datatable.pyi,sha256=zVZTSTTQJY5jjrCTnyah3XM6aySyhq_mbhBWnbFg6Io,4859
161
160
  reflex/components/lucide/__init__.py,sha256=EggTK2MuQKQeOBLKW-mF0VaDK9zdWBImu1HO2dvHZbE,73
162
- reflex/components/lucide/icon.py,sha256=jwwQGyoUXItWh991O2l4Jh2j9Caocmt5J0KXJwdaZ3o,33849
161
+ reflex/components/lucide/icon.py,sha256=lRmzrsoT2_zvC8mKAZx0b1SJW_6ebEmRjWop2ggGHwM,33600
163
162
  reflex/components/lucide/icon.pyi,sha256=DZkrFkUSq-BT23taozAIDfPuHAF3V9AsVYwaEeOCgm0,35884
164
163
  reflex/components/markdown/__init__.py,sha256=Dfl1At5uYoY7H4ufZU_RY2KOGQDLtj75dsZ2BTqqAns,87
165
164
  reflex/components/markdown/markdown.py,sha256=9VoxHQNZe44pVDoT_2b897dTn7vcel7oglBF-iTu0aM,16186
@@ -177,7 +176,7 @@ reflex/components/next/link.pyi,sha256=2-IJbrQ132FlLraBxYEXaVtVZ-Mr8fHPY--veOL5A
177
176
  reflex/components/next/video.py,sha256=GNCIPnT4pPPVp5W5P9CezVPksxCFO-YSlb2TJSJ1sG4,703
178
177
  reflex/components/next/video.pyi,sha256=z7nX_P2rSBgFIAMhqOVEbExCJM8srSdEczR2QXcPTrg,2315
179
178
  reflex/components/plotly/__init__.py,sha256=6B_woBJhkrVA9O_AbOTbsA_SxWsqjicYHmLA9FLjGfU,650
180
- reflex/components/plotly/plotly.py,sha256=YBYXZ-JMKHV6kt5Aki3iUjBDuu25Dz6JsNAxGyWaOlI,14854
179
+ reflex/components/plotly/plotly.py,sha256=N4aTmIfUG7UfCjH2gnSrbOTUSkQqBswbPj0nD9rwB8A,14853
181
180
  reflex/components/plotly/plotly.pyi,sha256=Qsxuz3ltLozNpk40e8iY92X8sos4hI7NhXAVqAndzkg,46843
182
181
  reflex/components/radix/__init__.py,sha256=fRsLvIO3MrTtPOXtmnxYDB9phvzlcbyB_utgpafYMho,474
183
182
  reflex/components/radix/__init__.pyi,sha256=YpWw_k35yv_Yq_0RZNCb52fJZ3dANWAnQllhVoVCWEE,3988
@@ -325,10 +324,10 @@ reflex/components/recharts/general.py,sha256=ff3Y4cXV9H8XruN0eyHUDf11mV3cGXWFaVl
325
324
  reflex/components/recharts/general.pyi,sha256=sRJUwnNfsQ-ASS5OE4qTknNKq5MgN1u4G3nv7K2xARg,22643
326
325
  reflex/components/recharts/polar.py,sha256=82KtPsk0RcW1Ci7B3Uivja8gM7vJ8l_LorVKFNVeLVE,15549
327
326
  reflex/components/recharts/polar.pyi,sha256=VkxCu6MyYxn-g-yYdfRy8LofpsmRsxa9M589U8E3Dr4,26369
328
- reflex/components/recharts/recharts.py,sha256=pWwrKtEcHbGaeqaDAZH1FQgPuPKj7PE6DT_df_OeIio,3176
327
+ reflex/components/recharts/recharts.py,sha256=is9FG2MJ6aYsZLDe1uW4zWNRs7LNJFKVbAndYC77jqA,3176
329
328
  reflex/components/recharts/recharts.pyi,sha256=Vr-YW67RKqg-Tzp2YBvkRS-sQc-9jA8wZr1P-Vxm7qg,6711
330
329
  reflex/components/sonner/__init__.py,sha256=L_mdRIy7-ccRGSz5VK6J8O-c-e-D1p9xWw29_ErrvGg,68
331
- reflex/components/sonner/toast.py,sha256=-5IrokS9kb_KNG_tzfmZhHk9RAi87zSV7uU7dpPF9nM,12440
330
+ reflex/components/sonner/toast.py,sha256=hvjzVN3eclix7PJpDTVkFSD_Re8X0lCPjHh5EfRjDro,12440
332
331
  reflex/components/sonner/toast.pyi,sha256=MDb952Jblm4HQOIEtZOCEL2UPYHAuY0xwqFBnZL2n38,7461
333
332
  reflex/components/suneditor/__init__.py,sha256=htkPzy0O_1ro1nw8w8gFPjYhg5xywMpsUfc4Dl3OHuw,109
334
333
  reflex/components/suneditor/editor.py,sha256=8Unbp3mv7Fxjvsxy-uvTBf6hYaCnkwkK6-exPF5ymRU,8017
@@ -339,20 +338,20 @@ reflex/components/tags/iter_tag.py,sha256=AgKtcRvuxUe8QJPU8iQp6HvOQwdENjlYFO8dYs
339
338
  reflex/components/tags/match_tag.py,sha256=3lba1H5pCcKkqxEHzM6DZb5s9s0yJLN4Se3vdhzar24,580
340
339
  reflex/components/tags/tag.py,sha256=1fopahujLVjH871UOdmau_n1kEddbQotN5MpKW_s8PU,3644
341
340
  reflex/components/tags/tagless.py,sha256=qO7Gm4V0ITDyymHkyltfz53155ZBt-W_WIPDYy93ca0,587
342
- reflex/constants/__init__.py,sha256=BG41QmjUHMQmtaROrD7YsV8AO24t2NnvKIvDx_0Qwss,2196
343
- reflex/constants/base.py,sha256=RfzOQdfJcQhVoIQRBNRAcIMyhllIHFd2hRZ37P1N28E,7837
341
+ reflex/constants/__init__.py,sha256=c5k9wh50zB_zDXkublXepPZsfAmnYx7ZeNSufIX5qKM,2180
342
+ reflex/constants/base.py,sha256=dB-gHb19wYdT_oQHxg0rxFIqM7ljtcr2BCOZDgHEawg,7937
344
343
  reflex/constants/colors.py,sha256=cgLn8iEWtlpjQgbhhlCOGjbhfOULKnzqqzPph63SJoI,1613
345
344
  reflex/constants/compiler.py,sha256=7EdvrKNyr-C7e2T6Xmvd5gpTo5rh4SAHZpmQFV1rrM4,5676
346
345
  reflex/constants/config.py,sha256=4EljK_fD1Nf4-OfJ9HLYeHSW5xTfNPN6AGjzJ5ARZSY,1579
347
346
  reflex/constants/custom_components.py,sha256=joJt4CEt1yKy7wsBH6vYo7_QRW0O_fWXrrTf0VY2q14,1317
348
347
  reflex/constants/event.py,sha256=8PWobGXnUIbkRS73dRiroj5BJw4C3sbo5AHAhJTZFyM,2849
349
- reflex/constants/installer.py,sha256=um3zu_tF7X0HUWPL6bjGGas36hGolIR1mfxViYSyhIQ,4853
348
+ reflex/constants/installer.py,sha256=Ia117STVw-ySvOK0hRFlwsI1yJ8ucWiPCh5JWuFQjXs,2518
350
349
  reflex/constants/route.py,sha256=J4QVdeeYz9wX0lYT1sgx0m3kLSArDHzmGCDZ2sqy854,2139
351
350
  reflex/constants/state.py,sha256=6Mfr7xVcAZOj5aSy7kp0W6r8oTs7K30URgGDAAFLfPQ,294
352
351
  reflex/constants/style.py,sha256=EPgRYHhAlcrPUBc2HkDTdTj-Q0uDAXHlq8Sp6D35Zf4,475
353
352
  reflex/constants/utils.py,sha256=GJhFj1uba54CDPEm70tWs8B5iS2siHgeNi--oGCjeRc,759
354
353
  reflex/custom_components/__init__.py,sha256=R4zsvOi4dfPmHc18KEphohXnQFBPnUCb50cMR5hSLDE,36
355
- reflex/custom_components/custom_components.py,sha256=62mG6tCj6nt6t_UYFu8Vcjsv7PiqABiJRQ-xsYGYsX0,33376
354
+ reflex/custom_components/custom_components.py,sha256=Ho3W97wfStsEVh6BuTEORhc3bd4UoCYzY3yB4YdVBUI,33592
356
355
  reflex/experimental/__init__.py,sha256=bvJ6qFeO3xT3L-8IBtk4ecoi5rda3EDvblgNP60yhEo,2206
357
356
  reflex/experimental/client_state.py,sha256=p_Toz94fNQGMbHY1WlwfQ-i_M01f1ExA9t1iokSvdLc,9880
358
357
  reflex/experimental/hooks.py,sha256=CHYGrAE5t8riltrJmDFgJ4D2Vhmhw-y3B3MSGNlOQow,2366
@@ -369,37 +368,37 @@ reflex/middleware/__init__.py,sha256=x7xTeDuc73Hjj43k1J63naC9x8vzFxl4sq7cCFBX7sk
369
368
  reflex/middleware/hydrate_middleware.py,sha256=1ch7bx2ZhojOR15b-LHD2JztrWCnpPJjTe8MWHJe-5Y,1510
370
369
  reflex/middleware/middleware.py,sha256=p5VVoIgQ_NwOg_GOY6g0S4fmrV76_VE1zt-HiwbMw-s,1158
371
370
  reflex/utils/__init__.py,sha256=y-AHKiRQAhk2oAkvn7W8cRVTZVK625ff8tTwvZtO7S4,24
372
- reflex/utils/build.py,sha256=gm_lRsOqKeRD5mBiRToJcT4Vt_ZQPzDuazGfvJlSeeQ,9024
371
+ reflex/utils/build.py,sha256=yt6obelsj1MUhTVHoaxdOH--gYtIEpekYjTN97iFrNg,9118
373
372
  reflex/utils/codespaces.py,sha256=TzDK--pHwP4r8Nzl0iB_8r-cOFmmL6nHfZ9xRQHA-KY,2754
374
373
  reflex/utils/compat.py,sha256=aSJH_M6iomgHPQ4onQ153xh1MWqPi3HSYDzE68N6gZM,2635
375
374
  reflex/utils/console.py,sha256=slDTb_5QXfSvdflFiwJauc874R2zqo8BOSh37JUhYLY,9469
376
375
  reflex/utils/decorator.py,sha256=EYdAjPdfgFjqjYSmLlc9qzOYnoihzavG5T4tgVgzsw4,1171
377
376
  reflex/utils/exceptions.py,sha256=Wwu7Ji2xgq521bJKtU2NgjwhmFfnG8erirEVN2h8S-g,8884
378
- reflex/utils/exec.py,sha256=QCLU-70WfDsm-h2e7Aw8qX4PbBUx4rFZrm8oN_RLgPA,17228
377
+ reflex/utils/exec.py,sha256=YVYsUYNKSm2uYVGRLNOhC-zQMW7NrGjLmRxmzpTnVfk,19054
379
378
  reflex/utils/export.py,sha256=bcJA0L8lBbjij-5PU93ka2c1d_yJqrIurp5u4mN5f68,2537
380
379
  reflex/utils/format.py,sha256=a8em_yzqp9pLTrPXRsdzFWSO1qL2x25BpJXOf9DV1t8,20638
381
380
  reflex/utils/imports.py,sha256=-EkUt9y5U3qmImjfpsXwYh7JI9qJHd_L6X9y12EPJew,3921
382
381
  reflex/utils/lazy_loader.py,sha256=-3DcwIqHNft2fb1ikgDYAMiEwNfbiWfrTBAf1gEVX2o,1367
383
382
  reflex/utils/net.py,sha256=0Yd9OLK8R_px2sqnqrDkTky6hYHtG2pEDvvilOjDfjc,1219
384
- reflex/utils/path_ops.py,sha256=Sio_pZ9-dqu6pAPUkO_JA9ONXDsyLGKWOVRoA-dCrec,7903
385
- reflex/utils/prerequisites.py,sha256=fhpp1yaRkBr0_zAowNSFeaRDZ1qjsmhR6_Tz34nebK0,63578
386
- reflex/utils/processes.py,sha256=1iZe-3Yrg-ja8jZxxAfggljqqcJgsFu8fi4bu4XQGx0,13489
383
+ reflex/utils/path_ops.py,sha256=idGxUSJRKwYLLi7ppXkq3eV6rvAytJoO-n-FuLkwl3o,7604
384
+ reflex/utils/prerequisites.py,sha256=_lgbA4udXoTPgBUYaSRW3zqyHJ3jrObgS7GXrQvgf3M,61526
385
+ reflex/utils/processes.py,sha256=B5F8m1smqGCvvwcGBO9poqQddfNBLy7uafO0J0PDcMo,13538
387
386
  reflex/utils/pyi_generator.py,sha256=cKdssbtAtGj2deOSDos9OF96w10qte8JM-TlfbzSdtw,41602
388
387
  reflex/utils/redir.py,sha256=kTqY2WSouF5_ftOe5bnvPEyU3SLpg3pcysTcxFH1UxI,1505
389
- reflex/utils/registry.py,sha256=bseD0bIO8b3pctHKpD5J2MRdDzcf7eWKtHEZVutVNJ0,1401
388
+ reflex/utils/registry.py,sha256=6DPfYc64GodbhwdAZ113_zBsvMNdbFTIJ94qDH1N6wc,1410
390
389
  reflex/utils/serializers.py,sha256=K8-erpNIjJNIKif0cDFExa9f5DEVuQUq0j5v5VH6aBI,13408
391
390
  reflex/utils/telemetry.py,sha256=qwJBwjdtAV-OGKgO4h-NWhgTvfC3gbduBdn1UB8Ikes,5608
392
391
  reflex/utils/types.py,sha256=nGX44Q_Jp33wIaxf2vxANwBWe1743V2B8RRS8H9yV4c,33449
393
392
  reflex/vars/__init__.py,sha256=2Kv6Oh9g3ISZFESjL1al8KiO7QBZUXmLKGMCBsP-DoY,1243
394
- reflex/vars/base.py,sha256=ugAwqusvYHT3FfPsCsXkxxNgvtd9SQH-hAwqjQqEGcY,101926
393
+ reflex/vars/base.py,sha256=EjerSG-V8BwXhAcB___I0jNA_0T9t81EUxff7LpjyFg,101870
395
394
  reflex/vars/datetime.py,sha256=WOEzQF6qjMjYvCat80XxgB_4hmVNHwIIZNMBSmfu0PM,5790
396
395
  reflex/vars/dep_tracking.py,sha256=kluvF4Pfbpdqf0GcpmYHjT1yP-D1erAzaSQP6qIxjB0,13846
397
396
  reflex/vars/function.py,sha256=2sVnhgetPSwtor8VFtAiYJdzZ9IRNzAKdsUJG6dXQcE,14461
398
397
  reflex/vars/number.py,sha256=hacFEtv-63tMQN-oeVDWkrLFQL4utYG-b3ahYTb8b4M,29573
399
398
  reflex/vars/object.py,sha256=-fGqHThozjxAAuQL-wTwEItPiFI-ps53P2bKoSlW_As,17081
400
- reflex/vars/sequence.py,sha256=wxyiTV-_-N6FJNufIatubsnhEpXHFShcw3GEEEpYy3M,55893
401
- reflex-0.7.3a2.dist-info/METADATA,sha256=Jnwppkn5ZoQCXpqehgIsJXD8PyHro4LU_nxWDWeC3a4,12090
402
- reflex-0.7.3a2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
403
- reflex-0.7.3a2.dist-info/entry_points.txt,sha256=Rxt4dXc7MLBNt5CSHTehVPuSe9Xqow4HLX55nD9tQQ0,45
404
- reflex-0.7.3a2.dist-info/licenses/LICENSE,sha256=dw3zLrp9f5ObD7kqS32vWfhcImfO52PMmRqvtxq_YEE,11358
405
- reflex-0.7.3a2.dist-info/RECORD,,
399
+ reflex/vars/sequence.py,sha256=PzFF1SC6r9iONV3t3nh5GKmToCTEm4B2GL3zGcNerl4,58099
400
+ reflex-0.7.4a1.dist-info/METADATA,sha256=Rl6X3yhbKBHSA5mBr88GK3STyGTmV3PSfO4RN78fcyc,12153
401
+ reflex-0.7.4a1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
402
+ reflex-0.7.4a1.dist-info/entry_points.txt,sha256=Rxt4dXc7MLBNt5CSHTehVPuSe9Xqow4HLX55nD9tQQ0,45
403
+ reflex-0.7.4a1.dist-info/licenses/LICENSE,sha256=dw3zLrp9f5ObD7kqS32vWfhcImfO52PMmRqvtxq_YEE,11358
404
+ reflex-0.7.4a1.dist-info/RECORD,,
@@ -1,33 +0,0 @@
1
- """Shims the real reflex app module for running backend server (uvicorn or gunicorn).
2
- Only the app attribute is explicitly exposed.
3
- """
4
-
5
- from concurrent.futures import ThreadPoolExecutor
6
-
7
- from reflex import constants
8
- from reflex.utils.exec import is_prod_mode
9
- from reflex.utils.prerequisites import get_and_validate_app
10
-
11
- if constants.CompileVars.APP != "app":
12
- raise AssertionError("unexpected variable name for 'app'")
13
-
14
- app, app_module = get_and_validate_app(reload=False)
15
- # For py3.9 compatibility when redis is used, we MUST add any decorator pages
16
- # before compiling the app in a thread to avoid event loop error (REF-2172).
17
- app._apply_decorated_pages()
18
- compile_future = ThreadPoolExecutor(max_workers=1).submit(app._compile)
19
- compile_future.add_done_callback(
20
- # Force background compile errors to print eagerly
21
- lambda f: f.result()
22
- )
23
- # Wait for the compile to finish in prod mode to ensure all optional endpoints are mounted.
24
- if is_prod_mode():
25
- compile_future.result()
26
-
27
- # ensure only "app" is exposed.
28
- del app_module
29
- del compile_future
30
- del get_and_validate_app
31
- del is_prod_mode
32
- del constants
33
- del ThreadPoolExecutor