reflex 0.8.0a7__py3-none-any.whl → 0.8.1a1__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/.templates/web/utils/state.js +18 -1
- reflex/.templates/web/vite-plugin-safari-cachebust.js +160 -0
- reflex/.templates/web/vite.config.js +28 -6
- reflex/app.py +1 -1
- reflex/components/__init__.py +1 -0
- reflex/components/component.py +53 -1
- reflex/components/core/upload.py +5 -5
- reflex/components/el/__init__.py +7 -1
- reflex/components/radix/themes/typography/link.py +1 -30
- reflex/components/react_router/__init__.py +5 -0
- reflex/components/react_router/dom.py +69 -0
- reflex/components/recharts/recharts.py +2 -2
- reflex/constants/installer.py +2 -2
- reflex/environment.py +46 -0
- reflex/event.py +18 -1
- reflex/istate/data.py +142 -69
- reflex/plugins/tailwind_v4.py +2 -2
- reflex/state.py +3 -3
- reflex/utils/exec.py +27 -5
- reflex/utils/lazy_loader.py +7 -1
- reflex/utils/processes.py +2 -1
- reflex/utils/pyi_generator.py +17 -2
- {reflex-0.8.0a7.dist-info → reflex-0.8.1a1.dist-info}/METADATA +2 -2
- {reflex-0.8.0a7.dist-info → reflex-0.8.1a1.dist-info}/RECORD +27 -24
- {reflex-0.8.0a7.dist-info → reflex-0.8.1a1.dist-info}/WHEEL +0 -0
- {reflex-0.8.0a7.dist-info → reflex-0.8.1a1.dist-info}/entry_points.txt +0 -0
- {reflex-0.8.0a7.dist-info → reflex-0.8.1a1.dist-info}/licenses/LICENSE +0 -0
reflex/istate/data.py
CHANGED
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
import dataclasses
|
|
4
4
|
from collections.abc import Mapping
|
|
5
|
+
from typing import TYPE_CHECKING
|
|
6
|
+
from urllib.parse import _NetlocResultMixinStr, urlsplit
|
|
5
7
|
|
|
6
8
|
from reflex import constants
|
|
7
|
-
from reflex.utils import format
|
|
9
|
+
from reflex.utils import console, format
|
|
8
10
|
from reflex.utils.serializers import serializer
|
|
9
11
|
|
|
10
12
|
|
|
@@ -45,36 +47,40 @@ class _HeaderData:
|
|
|
45
47
|
)
|
|
46
48
|
|
|
47
49
|
|
|
48
|
-
|
|
50
|
+
_HEADER_DATA_FIELDS = frozenset(
|
|
51
|
+
[field.name for field in dataclasses.fields(_HeaderData)]
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
@dataclasses.dataclass(frozen=True)
|
|
49
56
|
class HeaderData(_HeaderData):
|
|
50
57
|
"""An object containing headers data."""
|
|
51
58
|
|
|
52
|
-
|
|
53
|
-
|
|
59
|
+
@classmethod
|
|
60
|
+
def from_router_data(cls, router_data: dict) -> "HeaderData":
|
|
61
|
+
"""Create a HeaderData object from the given router_data.
|
|
54
62
|
|
|
55
63
|
Args:
|
|
56
64
|
router_data: the router_data dict.
|
|
65
|
+
|
|
66
|
+
Returns:
|
|
67
|
+
A HeaderData object initialized with the provided router_data.
|
|
57
68
|
"""
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
).items()
|
|
74
|
-
if v
|
|
75
|
-
}
|
|
76
|
-
),
|
|
77
|
-
)
|
|
69
|
+
return cls(
|
|
70
|
+
**{
|
|
71
|
+
snake_case_key: v
|
|
72
|
+
for k, v in router_data.get(constants.RouteVar.HEADERS, {}).items()
|
|
73
|
+
if v
|
|
74
|
+
and (snake_case_key := format.to_snake_case(k)) in _HEADER_DATA_FIELDS
|
|
75
|
+
},
|
|
76
|
+
raw_headers=_FrozenDictStrStr(
|
|
77
|
+
**{
|
|
78
|
+
k: v
|
|
79
|
+
for k, v in router_data.get(constants.RouteVar.HEADERS, {}).items()
|
|
80
|
+
if v
|
|
81
|
+
}
|
|
82
|
+
),
|
|
83
|
+
)
|
|
78
84
|
|
|
79
85
|
|
|
80
86
|
@serializer(to=dict)
|
|
@@ -90,6 +96,35 @@ def serialize_frozen_dict_str_str(obj: _FrozenDictStrStr) -> dict:
|
|
|
90
96
|
return dict(obj._data)
|
|
91
97
|
|
|
92
98
|
|
|
99
|
+
class ReflexURL(str, _NetlocResultMixinStr):
|
|
100
|
+
"""A class representing a URL split result."""
|
|
101
|
+
|
|
102
|
+
if TYPE_CHECKING:
|
|
103
|
+
scheme: str
|
|
104
|
+
netloc: str
|
|
105
|
+
path: str
|
|
106
|
+
query: str
|
|
107
|
+
fragment: str
|
|
108
|
+
|
|
109
|
+
def __new__(cls, url: str):
|
|
110
|
+
"""Create a new ReflexURL instance.
|
|
111
|
+
|
|
112
|
+
Args:
|
|
113
|
+
url: the URL to split.
|
|
114
|
+
|
|
115
|
+
Returns:
|
|
116
|
+
A new ReflexURL instance.
|
|
117
|
+
"""
|
|
118
|
+
(scheme, netloc, path, query, fragment) = urlsplit(url)
|
|
119
|
+
obj = super().__new__(cls, url)
|
|
120
|
+
object.__setattr__(obj, "scheme", scheme)
|
|
121
|
+
object.__setattr__(obj, "netloc", netloc)
|
|
122
|
+
object.__setattr__(obj, "path", path)
|
|
123
|
+
object.__setattr__(obj, "query", query)
|
|
124
|
+
object.__setattr__(obj, "fragment", fragment)
|
|
125
|
+
return obj
|
|
126
|
+
|
|
127
|
+
|
|
93
128
|
@dataclasses.dataclass(frozen=True)
|
|
94
129
|
class PageData:
|
|
95
130
|
"""An object containing page data."""
|
|
@@ -101,39 +136,30 @@ class PageData:
|
|
|
101
136
|
full_raw_path: str = ""
|
|
102
137
|
params: dict = dataclasses.field(default_factory=dict)
|
|
103
138
|
|
|
104
|
-
|
|
105
|
-
|
|
139
|
+
@classmethod
|
|
140
|
+
def from_router_data(cls, router_data: dict) -> "PageData":
|
|
141
|
+
"""Create a PageData object from the given router_data.
|
|
106
142
|
|
|
107
143
|
Args:
|
|
108
144
|
router_data: the router_data dict.
|
|
145
|
+
|
|
146
|
+
Returns:
|
|
147
|
+
A PageData object initialized with the provided router_data.
|
|
109
148
|
"""
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
)
|
|
122
|
-
object.__setattr__(self, "full_path", f"{self.host}{self.path}")
|
|
123
|
-
object.__setattr__(self, "full_raw_path", f"{self.host}{self.raw_path}")
|
|
124
|
-
object.__setattr__(
|
|
125
|
-
self, "params", router_data.get(constants.RouteVar.QUERY, {})
|
|
126
|
-
)
|
|
127
|
-
else:
|
|
128
|
-
object.__setattr__(self, "host", "")
|
|
129
|
-
object.__setattr__(self, "path", "")
|
|
130
|
-
object.__setattr__(self, "raw_path", "")
|
|
131
|
-
object.__setattr__(self, "full_path", "")
|
|
132
|
-
object.__setattr__(self, "full_raw_path", "")
|
|
133
|
-
object.__setattr__(self, "params", {})
|
|
149
|
+
host = router_data.get(constants.RouteVar.HEADERS, {}).get("origin", "")
|
|
150
|
+
path = router_data.get(constants.RouteVar.PATH, "")
|
|
151
|
+
raw_path = router_data.get(constants.RouteVar.ORIGIN, "")
|
|
152
|
+
return cls(
|
|
153
|
+
host=host,
|
|
154
|
+
path=path,
|
|
155
|
+
raw_path=raw_path,
|
|
156
|
+
full_path=f"{host}{path}",
|
|
157
|
+
full_raw_path=f"{host}{raw_path}",
|
|
158
|
+
params=router_data.get(constants.RouteVar.QUERY, {}),
|
|
159
|
+
)
|
|
134
160
|
|
|
135
161
|
|
|
136
|
-
@dataclasses.dataclass(frozen=True
|
|
162
|
+
@dataclasses.dataclass(frozen=True)
|
|
137
163
|
class SessionData:
|
|
138
164
|
"""An object containing session data."""
|
|
139
165
|
|
|
@@ -141,37 +167,84 @@ class SessionData:
|
|
|
141
167
|
client_ip: str = ""
|
|
142
168
|
session_id: str = ""
|
|
143
169
|
|
|
144
|
-
|
|
145
|
-
|
|
170
|
+
@classmethod
|
|
171
|
+
def from_router_data(cls, router_data: dict) -> "SessionData":
|
|
172
|
+
"""Create a SessionData object from the given router_data.
|
|
146
173
|
|
|
147
174
|
Args:
|
|
148
175
|
router_data: the router_data dict.
|
|
176
|
+
|
|
177
|
+
Returns:
|
|
178
|
+
A SessionData object initialized with the provided router_data.
|
|
149
179
|
"""
|
|
150
|
-
|
|
151
|
-
client_token
|
|
152
|
-
client_ip
|
|
153
|
-
session_id
|
|
154
|
-
|
|
155
|
-
client_token = client_ip = session_id = ""
|
|
156
|
-
object.__setattr__(self, "client_token", client_token)
|
|
157
|
-
object.__setattr__(self, "client_ip", client_ip)
|
|
158
|
-
object.__setattr__(self, "session_id", session_id)
|
|
180
|
+
return cls(
|
|
181
|
+
client_token=router_data.get(constants.RouteVar.CLIENT_TOKEN, ""),
|
|
182
|
+
client_ip=router_data.get(constants.RouteVar.CLIENT_IP, ""),
|
|
183
|
+
session_id=router_data.get(constants.RouteVar.SESSION_ID, ""),
|
|
184
|
+
)
|
|
159
185
|
|
|
160
186
|
|
|
161
|
-
@dataclasses.dataclass(frozen=True
|
|
187
|
+
@dataclasses.dataclass(frozen=True)
|
|
162
188
|
class RouterData:
|
|
163
189
|
"""An object containing RouterData."""
|
|
164
190
|
|
|
165
191
|
session: SessionData = dataclasses.field(default_factory=SessionData)
|
|
166
192
|
headers: HeaderData = dataclasses.field(default_factory=HeaderData)
|
|
167
|
-
|
|
193
|
+
_page: PageData = dataclasses.field(default_factory=PageData)
|
|
194
|
+
url: ReflexURL = dataclasses.field(default=ReflexURL(""))
|
|
195
|
+
route_id: str = ""
|
|
168
196
|
|
|
169
|
-
|
|
170
|
-
|
|
197
|
+
@property
|
|
198
|
+
def page(self) -> PageData:
|
|
199
|
+
"""Get the page data.
|
|
200
|
+
|
|
201
|
+
Returns:
|
|
202
|
+
The PageData object.
|
|
203
|
+
"""
|
|
204
|
+
console.deprecate(
|
|
205
|
+
"RouterData.page",
|
|
206
|
+
"Use RouterData.url instead",
|
|
207
|
+
deprecation_version="0.8.1",
|
|
208
|
+
removal_version="0.9.0",
|
|
209
|
+
)
|
|
210
|
+
return self._page
|
|
211
|
+
|
|
212
|
+
@classmethod
|
|
213
|
+
def from_router_data(cls, router_data: dict) -> "RouterData":
|
|
214
|
+
"""Create a RouterData object from the given router_data.
|
|
171
215
|
|
|
172
216
|
Args:
|
|
173
217
|
router_data: the router_data dict.
|
|
218
|
+
|
|
219
|
+
Returns:
|
|
220
|
+
A RouterData object initialized with the provided router_data.
|
|
174
221
|
"""
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
222
|
+
return cls(
|
|
223
|
+
session=SessionData.from_router_data(router_data),
|
|
224
|
+
headers=HeaderData.from_router_data(router_data),
|
|
225
|
+
_page=PageData.from_router_data(router_data),
|
|
226
|
+
url=ReflexURL(
|
|
227
|
+
router_data.get(constants.RouteVar.HEADERS, {}).get("origin", "")
|
|
228
|
+
+ router_data.get(constants.RouteVar.ORIGIN, "")
|
|
229
|
+
),
|
|
230
|
+
route_id=router_data.get(constants.RouteVar.PATH, ""),
|
|
231
|
+
)
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
@serializer(to=dict)
|
|
235
|
+
def serialize_router_data(obj: RouterData) -> dict:
|
|
236
|
+
"""Serialize a RouterData object to a dict.
|
|
237
|
+
|
|
238
|
+
Args:
|
|
239
|
+
obj: the RouterData object.
|
|
240
|
+
|
|
241
|
+
Returns:
|
|
242
|
+
A dict representation of the RouterData object.
|
|
243
|
+
"""
|
|
244
|
+
return {
|
|
245
|
+
"session": obj.session,
|
|
246
|
+
"headers": obj.headers,
|
|
247
|
+
"page": obj._page,
|
|
248
|
+
"url": obj.url,
|
|
249
|
+
"route_id": obj.route_id,
|
|
250
|
+
}
|
reflex/plugins/tailwind_v4.py
CHANGED
|
@@ -17,7 +17,7 @@ class Constants(SimpleNamespace):
|
|
|
17
17
|
"""Tailwind constants."""
|
|
18
18
|
|
|
19
19
|
# The Tailwindcss version
|
|
20
|
-
VERSION = "tailwindcss@4.1.
|
|
20
|
+
VERSION = "tailwindcss@4.1.11"
|
|
21
21
|
# The Tailwind config.
|
|
22
22
|
CONFIG = "tailwind.config.js"
|
|
23
23
|
# Default Tailwind content paths
|
|
@@ -156,7 +156,7 @@ class TailwindV4Plugin(TailwindPlugin):
|
|
|
156
156
|
return [
|
|
157
157
|
*super().get_frontend_development_dependencies(**context),
|
|
158
158
|
Constants.VERSION,
|
|
159
|
-
"@tailwindcss/postcss@4.1.
|
|
159
|
+
"@tailwindcss/postcss@4.1.11",
|
|
160
160
|
]
|
|
161
161
|
|
|
162
162
|
def pre_compile(self, **context):
|
reflex/state.py
CHANGED
|
@@ -1204,7 +1204,7 @@ class BaseState(EvenMoreBasicBaseState):
|
|
|
1204
1204
|
|
|
1205
1205
|
def argsingle_factory(param: str):
|
|
1206
1206
|
def inner_func(self: BaseState) -> str:
|
|
1207
|
-
return self.router.
|
|
1207
|
+
return self.router._page.params.get(param, "")
|
|
1208
1208
|
|
|
1209
1209
|
inner_func.__name__ = param
|
|
1210
1210
|
|
|
@@ -1212,7 +1212,7 @@ class BaseState(EvenMoreBasicBaseState):
|
|
|
1212
1212
|
|
|
1213
1213
|
def arglist_factory(param: str):
|
|
1214
1214
|
def inner_func(self: BaseState) -> list[str]:
|
|
1215
|
-
return self.router.
|
|
1215
|
+
return self.router._page.params.get(param, [])
|
|
1216
1216
|
|
|
1217
1217
|
inner_func.__name__ = param
|
|
1218
1218
|
|
|
@@ -2466,7 +2466,7 @@ class OnLoadInternalState(State):
|
|
|
2466
2466
|
"""
|
|
2467
2467
|
# Do not app._compile()! It should be already compiled by now.
|
|
2468
2468
|
load_events = prerequisites.get_and_validate_app().app.get_load_events(
|
|
2469
|
-
self.router.
|
|
2469
|
+
self.router._page.path
|
|
2470
2470
|
)
|
|
2471
2471
|
if not load_events:
|
|
2472
2472
|
self.is_hydrated = True
|
reflex/utils/exec.py
CHANGED
|
@@ -573,15 +573,37 @@ def run_uvicorn_backend_prod(host: str, port: int, loglevel: LogLevel):
|
|
|
573
573
|
port: The app port
|
|
574
574
|
loglevel: The log level.
|
|
575
575
|
"""
|
|
576
|
+
import os
|
|
577
|
+
import shlex
|
|
578
|
+
|
|
576
579
|
from reflex.utils import processes
|
|
577
580
|
|
|
578
581
|
app_module = get_app_instance()
|
|
579
582
|
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
583
|
+
if constants.IS_WINDOWS:
|
|
584
|
+
command = [
|
|
585
|
+
"uvicorn",
|
|
586
|
+
*("--host", host),
|
|
587
|
+
*("--port", str(port)),
|
|
588
|
+
"--factory",
|
|
589
|
+
app_module,
|
|
590
|
+
]
|
|
591
|
+
else:
|
|
592
|
+
# Parse GUNICORN_CMD_ARGS for user overrides
|
|
593
|
+
env_args = []
|
|
594
|
+
if gunicorn_cmd_args := os.environ.get("GUNICORN_CMD_ARGS", ""):
|
|
595
|
+
env_args = shlex.split(gunicorn_cmd_args)
|
|
596
|
+
|
|
597
|
+
# Our default args, then env args (env args win on conflicts)
|
|
598
|
+
command = [
|
|
599
|
+
"gunicorn",
|
|
600
|
+
"--preload",
|
|
601
|
+
"--worker-class",
|
|
602
|
+
"uvicorn.workers.UvicornH11Worker",
|
|
603
|
+
*("--bind", f"{host}:{port}"),
|
|
604
|
+
*env_args,
|
|
605
|
+
f"{app_module}()",
|
|
606
|
+
]
|
|
585
607
|
|
|
586
608
|
command += [
|
|
587
609
|
*("--log-level", loglevel.value),
|
reflex/utils/lazy_loader.py
CHANGED
|
@@ -27,6 +27,7 @@ def attach(
|
|
|
27
27
|
package_name: str,
|
|
28
28
|
submodules: set[str] | None = None,
|
|
29
29
|
submod_attrs: dict[str, list[str]] | None = None,
|
|
30
|
+
**extra_mappings,
|
|
30
31
|
):
|
|
31
32
|
"""Replaces a package's __getattr__, __dir__, and __all__ attributes using lazy.attach.
|
|
32
33
|
The lazy loader __getattr__ doesn't support tuples as list values. We needed to add
|
|
@@ -39,6 +40,7 @@ def attach(
|
|
|
39
40
|
submodules : List of submodules to attach.
|
|
40
41
|
submod_attrs : Dictionary of submodule -> list of attributes / functions.
|
|
41
42
|
These attributes are imported as they are used.
|
|
43
|
+
extra_mappings: Additional mappings to resolve lazily.
|
|
42
44
|
|
|
43
45
|
Returns:
|
|
44
46
|
__getattr__, __dir__, __all__
|
|
@@ -60,9 +62,13 @@ def attach(
|
|
|
60
62
|
attr: mod for mod, attrs in submod_attrs.items() for attr in attrs
|
|
61
63
|
}
|
|
62
64
|
|
|
63
|
-
__all__ = sorted(submodules | attr_to_modules.keys())
|
|
65
|
+
__all__ = sorted([*(submodules | attr_to_modules.keys()), *(extra_mappings or [])])
|
|
64
66
|
|
|
65
67
|
def __getattr__(name: str): # noqa: N807
|
|
68
|
+
if name in extra_mappings:
|
|
69
|
+
submod_path, attr = extra_mappings[name].rsplit(".", 1)
|
|
70
|
+
submod = importlib.import_module(submod_path)
|
|
71
|
+
return getattr(submod, attr)
|
|
66
72
|
if name in submodules:
|
|
67
73
|
return importlib.import_module(f"{package_name}.{name}")
|
|
68
74
|
if name in attr_to_modules:
|
reflex/utils/processes.py
CHANGED
|
@@ -15,6 +15,7 @@ from pathlib import Path
|
|
|
15
15
|
from typing import Any, Literal, overload
|
|
16
16
|
|
|
17
17
|
import click
|
|
18
|
+
import rich.markup
|
|
18
19
|
from redis.exceptions import RedisError
|
|
19
20
|
from rich.progress import Progress
|
|
20
21
|
|
|
@@ -281,7 +282,7 @@ def stream_logs(
|
|
|
281
282
|
return
|
|
282
283
|
try:
|
|
283
284
|
for line in process.stdout:
|
|
284
|
-
console.debug(line, end="", progress=progress)
|
|
285
|
+
console.debug(rich.markup.escape(line), end="", progress=progress)
|
|
285
286
|
logs.append(line)
|
|
286
287
|
yield line
|
|
287
288
|
except ValueError:
|
reflex/utils/pyi_generator.py
CHANGED
|
@@ -1108,11 +1108,13 @@ class PyiGenerator:
|
|
|
1108
1108
|
sub_mod_attrs: dict[str, list[str | tuple[str, str]]] | None = getattr(
|
|
1109
1109
|
mod, "_SUBMOD_ATTRS", None
|
|
1110
1110
|
)
|
|
1111
|
+
extra_mappings: dict[str, str] | None = getattr(mod, "_EXTRA_MAPPINGS", None)
|
|
1111
1112
|
|
|
1112
|
-
if not sub_mods and not sub_mod_attrs:
|
|
1113
|
+
if not sub_mods and not sub_mod_attrs and not extra_mappings:
|
|
1113
1114
|
return None
|
|
1114
1115
|
sub_mods_imports = []
|
|
1115
1116
|
sub_mod_attrs_imports = []
|
|
1117
|
+
extra_mappings_imports = []
|
|
1116
1118
|
|
|
1117
1119
|
if sub_mods:
|
|
1118
1120
|
sub_mods_imports = [f"from . import {mod}" for mod in sorted(sub_mods)]
|
|
@@ -1140,7 +1142,20 @@ class PyiGenerator:
|
|
|
1140
1142
|
]
|
|
1141
1143
|
sub_mod_attrs_imports.append("")
|
|
1142
1144
|
|
|
1143
|
-
|
|
1145
|
+
if extra_mappings:
|
|
1146
|
+
for alias, import_path in extra_mappings.items():
|
|
1147
|
+
module_name, import_name = import_path.rsplit(".", 1)
|
|
1148
|
+
extra_mappings_imports.append(
|
|
1149
|
+
f"from {module_name} import {import_name} as {alias}"
|
|
1150
|
+
)
|
|
1151
|
+
|
|
1152
|
+
text = (
|
|
1153
|
+
"\n"
|
|
1154
|
+
+ "\n".join(
|
|
1155
|
+
[*sub_mods_imports, *sub_mod_attrs_imports, *extra_mappings_imports]
|
|
1156
|
+
)
|
|
1157
|
+
+ "\n"
|
|
1158
|
+
)
|
|
1144
1159
|
text += ast.unparse(new_tree) + "\n\n"
|
|
1145
1160
|
text += f"__all__ = {getattr(mod, '__all__', [])!r}\n"
|
|
1146
1161
|
return text
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: reflex
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.1a1
|
|
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
|
|
@@ -31,7 +31,7 @@ Requires-Dist: pydantic<3.0,>=1.10.21
|
|
|
31
31
|
Requires-Dist: python-multipart<1.0,>=0.0.20
|
|
32
32
|
Requires-Dist: python-socketio<6.0,>=5.12.0
|
|
33
33
|
Requires-Dist: redis<7.0,>=5.2.1
|
|
34
|
-
Requires-Dist: reflex-hosting-cli>=0.1.
|
|
34
|
+
Requires-Dist: reflex-hosting-cli>=0.1.51
|
|
35
35
|
Requires-Dist: rich<15,>=13
|
|
36
36
|
Requires-Dist: sqlmodel<0.1,>=0.0.24
|
|
37
37
|
Requires-Dist: typing-extensions>=4.13.0
|
|
@@ -2,18 +2,18 @@ reflex/__init__.py,sha256=S_nJPFaTYwyxSzfOpACFxlSe2Vc8rQGr5ZDeyRSDiYQ,10264
|
|
|
2
2
|
reflex/__init__.pyi,sha256=LHVB-SgdoFyB5aLiqiLEezMAd-vJje79ndxDxt9HWz8,10003
|
|
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=
|
|
5
|
+
reflex/app.py,sha256=2H_MpJvHkfMlfKp6j5ieydCrftM_k_uVwvLB6LmvNJw,75020
|
|
6
6
|
reflex/assets.py,sha256=l5O_mlrTprC0lF7Rc_McOe3a0OtSLnRdNl_PqCpDCBA,3431
|
|
7
7
|
reflex/base.py,sha256=Oh664QL3fZEHErhUasFqP7fE4olYf1y-9Oj6uZI2FCU,1173
|
|
8
8
|
reflex/config.py,sha256=tEUaW4oJbkCDtQ1SgsT4APtLpQ9-VknVWdqwFoYorvg,15729
|
|
9
|
-
reflex/environment.py,sha256=
|
|
10
|
-
reflex/event.py,sha256=
|
|
9
|
+
reflex/environment.py,sha256=bYikxi9VANTrA1EDWtygVT2WyoYx_Q6xFX7P8CeoIbM,23205
|
|
10
|
+
reflex/event.py,sha256=JdhRwJO1MYni4YfZ13NPSv0AWYHpLwk3L4WltH07L2c,70070
|
|
11
11
|
reflex/model.py,sha256=xED7blemoiKxPFaOkCMrSayjjon7AJp8t5g459p7dGs,17646
|
|
12
12
|
reflex/page.py,sha256=Bn8FTlUtjjKwUtpQA5r5eaWE_ZUb8i4XgrQi8FWbzNA,1880
|
|
13
13
|
reflex/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
14
14
|
reflex/reflex.py,sha256=eUP0GevShUc1nodfA5_ewB3hgefWU0_x166HGCY8QTs,21606
|
|
15
15
|
reflex/route.py,sha256=UfhKxFwe3EYto66TZv5K2Gp6ytRbcL-_v72DJ5girEs,7691
|
|
16
|
-
reflex/state.py,sha256=
|
|
16
|
+
reflex/state.py,sha256=OQKUTsa-kuehbt2U4esJT4Cq8lp6e3I-8QUk0pm2XB4,91956
|
|
17
17
|
reflex/style.py,sha256=JxbXXA4MTnXrk0XHEoMBoNC7J-M2oL5Hl3W_QmXvmBg,13222
|
|
18
18
|
reflex/testing.py,sha256=6EXQN9K0tYfzEDe2aSRh4xLM_Jb_oIrI_qH2F_e0KXc,39423
|
|
19
19
|
reflex/.templates/apps/blank/assets/favicon.ico,sha256=baxxgDAQ2V4-G5Q4S2yK5uUJTUGkv-AOWBQ0xd6myUo,4286
|
|
@@ -43,7 +43,8 @@ reflex/.templates/web/.gitignore,sha256=3tT0CtVkCL09D_Y3Hd4myUgGcBuESeavCa0WHU5i
|
|
|
43
43
|
reflex/.templates/web/jsconfig.json,sha256=rhQZZRBYxBWclFYTeU6UakzbGveM4qyRQZUpEAVhyqY,118
|
|
44
44
|
reflex/.templates/web/postcss.config.js,sha256=6Hf540Ny078yfmJ_-tniZtmgHW6euyEyxO0zH-Y1EtQ,86
|
|
45
45
|
reflex/.templates/web/react-router.config.js,sha256=5K1FBryYdPusn1nE513GwB5_5UdPzoyH8ZMANUbpodQ,84
|
|
46
|
-
reflex/.templates/web/vite.
|
|
46
|
+
reflex/.templates/web/vite-plugin-safari-cachebust.js,sha256=FcyppYYBxUlZtQ-D_iyVaQIT6TBVisBH7DMzWxYm-zA,5300
|
|
47
|
+
reflex/.templates/web/vite.config.js,sha256=JkeosM-OI3zwbwE3zON1ws8SrMAORG54nuQsPecU5d4,1429
|
|
47
48
|
reflex/.templates/web/app/entry.client.js,sha256=2Jv-5SQWHhHmA07BP50f1ew1V-LOsX5VoLtSInnFDj8,264
|
|
48
49
|
reflex/.templates/web/app/routes.js,sha256=OPPW82B079c4FGq_p5C5OBrkVnTNRFhgG3--WKlJSy0,312
|
|
49
50
|
reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js,sha256=dnDHW49imtdalZJQqj7J_u7cj2z8Sve7OlhtOO0FbKE,916
|
|
@@ -51,7 +52,7 @@ reflex/.templates/web/components/shiki/code.js,sha256=4Es1pxsr-lX4hTQ5mglrwwC6O_
|
|
|
51
52
|
reflex/.templates/web/styles/__reflex_style_reset.css,sha256=qbC6JIT643YEsvSQ0D7xBmWE5vXy94JGrKNihRuEjnA,8913
|
|
52
53
|
reflex/.templates/web/utils/client_side_routing.js,sha256=lRNgEGCLfTejh8W3aCuBdFuko6UI2vetk64j8wLT5Uk,1650
|
|
53
54
|
reflex/.templates/web/utils/react-theme.js,sha256=4CNLOcjLS5tiRp0TIgKK7trf8bSLWtmeDVhFP6BLe80,2349
|
|
54
|
-
reflex/.templates/web/utils/state.js,sha256=
|
|
55
|
+
reflex/.templates/web/utils/state.js,sha256=U5ihE4pOVtyTHD4JN8Jz82KVFZaWdwfpNu1wXU3h8Is,35992
|
|
55
56
|
reflex/.templates/web/utils/helpers/dataeditor.js,sha256=pG6MgsHuStDR7-qPipzfiK32j9bKDBa-4hZ0JSUo4JM,1623
|
|
56
57
|
reflex/.templates/web/utils/helpers/debounce.js,sha256=xGhtTRtS_xIcaeqnYVvYJNseLgQVk-DW-eFiHJYO9As,528
|
|
57
58
|
reflex/.templates/web/utils/helpers/paste.js,sha256=ef30HsR83jRzzvZnl8yV79yqFP8TC_u8SlN99cCS_OM,1799
|
|
@@ -65,9 +66,9 @@ reflex/compiler/__init__.py,sha256=r8jqmDSFf09iV2lHlNhfc9XrTLjNxfDNwPYlxS4cmHE,2
|
|
|
65
66
|
reflex/compiler/compiler.py,sha256=p-8xacPH7kCjE6tpW1AzbfNQJsF0033yXMpu03Exti4,29923
|
|
66
67
|
reflex/compiler/templates.py,sha256=mQifVgvE7cKyzMFL9F5jxdJb9KFxucWJa7nuOp09ZUo,6002
|
|
67
68
|
reflex/compiler/utils.py,sha256=v2LGz6WAFOSRpn3H0l215E94R7r7hB3s9vseWrQiXUQ,19045
|
|
68
|
-
reflex/components/__init__.py,sha256=
|
|
69
|
+
reflex/components/__init__.py,sha256=eWpgWFbSQDj2TpGp6StEbxU7roQgzY7ZM0XIcIc5RE8,588
|
|
69
70
|
reflex/components/__init__.pyi,sha256=ZqnBIRh1UuLSwAk6wLFmHlexyZ-6SNGo7AGJjWI7aGQ,698
|
|
70
|
-
reflex/components/component.py,sha256=
|
|
71
|
+
reflex/components/component.py,sha256=0ZouhQgfO5hAbKu3Z4ytM0jvaz70U0Uab9SrIewdUbQ,99431
|
|
71
72
|
reflex/components/dynamic.py,sha256=AyOjAW5LQZlDShIFJ7d9P2dFTI-1pr1tZR32E2Rhr9s,7422
|
|
72
73
|
reflex/components/field.py,sha256=j5JZFzNlET3GAIW91m1L31RypXylMAxJNm0-CJbtykM,5745
|
|
73
74
|
reflex/components/literals.py,sha256=hogLnwTJxFJODIvqihg-GD9kFZVsEBDoYzaRit56Nuk,501
|
|
@@ -117,7 +118,7 @@ reflex/components/core/match.py,sha256=syVnQw0OS2jYpqE9AsLH0uODyjmFJVBqrEPviUYf3
|
|
|
117
118
|
reflex/components/core/responsive.py,sha256=ACZdtJ4a4F8B3dm1k8h6J2_UJx0Z5LDB7XHQ2ty4wAc,1911
|
|
118
119
|
reflex/components/core/sticky.py,sha256=2B3TxrwG2Rtp_lv1VkMOIF2bqSiT7qYGbqbiZiMKxKY,3856
|
|
119
120
|
reflex/components/core/sticky.pyi,sha256=U3VyCnx4hWWORd4yIiIe-mu_IdsPry2iMXrGMw2tLgQ,32906
|
|
120
|
-
reflex/components/core/upload.py,sha256=
|
|
121
|
+
reflex/components/core/upload.py,sha256=b4-ubt4dznL5LDA7UCKNdWcdCX9aLOX2vNFdv4GlRdg,13544
|
|
121
122
|
reflex/components/core/upload.pyi,sha256=q88GncKmdgG9s1PQkEs0SWGEdzpxdr31UXmDIYq9qhQ,16385
|
|
122
123
|
reflex/components/core/layout/__init__.py,sha256=znldZaj_NGt8qCZDG70GMwjMTskcvCf_2N_EjCAHwdc,30
|
|
123
124
|
reflex/components/datadisplay/__init__.py,sha256=L8pWWKNHWdUD2fbZRoEKjd_8c_hpDdGYO463hwkoIi4,438
|
|
@@ -129,7 +130,7 @@ reflex/components/datadisplay/dataeditor.pyi,sha256=qda-3yLFPykvMSrKk-j3EOliVXY8
|
|
|
129
130
|
reflex/components/datadisplay/logo.py,sha256=xvg5TRVRSi2IKn7Kg4oYzWcaFMHfXxUaCp0cQmuKSn0,1993
|
|
130
131
|
reflex/components/datadisplay/shiki_code_block.py,sha256=qCp4jZO3Ek4mR_1Qs4oxLh-GCEo6VBlpb8B9MDDdw4Y,24503
|
|
131
132
|
reflex/components/datadisplay/shiki_code_block.pyi,sha256=FXGWyG7u3RZQIwhK4M0YAYXRaJ-Pd-Aof_wjrlG7SrY,57323
|
|
132
|
-
reflex/components/el/__init__.py,sha256=
|
|
133
|
+
reflex/components/el/__init__.py,sha256=JJHaCMvCh5_nsuyaWRVQ8d75A13lvaq4cpm6HoxUYuM,607
|
|
133
134
|
reflex/components/el/__init__.pyi,sha256=7P6mNFbjiPyE0vNwUO4B5i-a2cqhjNRSJ7YNL7xKa7E,6194
|
|
134
135
|
reflex/components/el/element.py,sha256=stGVO6A2waCHq2CGQqR_g798hDKkuSZerwB0tYfZpRE,582
|
|
135
136
|
reflex/components/el/element.pyi,sha256=z8WHnR-wzs3XGaqJpS6Gj02S_MMljLYp9F3fn6F3DYA,2498
|
|
@@ -299,7 +300,7 @@ reflex/components/radix/themes/typography/code.py,sha256=sSshc5GsSOsJPi_SbR7nkAe
|
|
|
299
300
|
reflex/components/radix/themes/typography/code.pyi,sha256=0iuE24yCemd2u__-SBcB33RJRWQiBQbCxQJMZmW6RBw,11740
|
|
300
301
|
reflex/components/radix/themes/typography/heading.py,sha256=YVoQu9cLx5SJSNkliNp5UyVhrwu7vgpIMj1X43jifd0,1575
|
|
301
302
|
reflex/components/radix/themes/typography/heading.pyi,sha256=bfhGqJJU_MW5WRXc5hZElJmrVnKseBnKLOmefyIB_FE,12558
|
|
302
|
-
reflex/components/radix/themes/typography/link.py,sha256
|
|
303
|
+
reflex/components/radix/themes/typography/link.py,sha256=UpjiOLMiJTlra5bY3UAF1iC0faU2F7hpxUP527n-jao,3928
|
|
303
304
|
reflex/components/radix/themes/typography/link.pyi,sha256=uLdbyTjmc-vlxOnnj9knnP3RsMT_7WkhdiDskKVsiYM,25886
|
|
304
305
|
reflex/components/radix/themes/typography/text.py,sha256=qnpZuqyabh-VuKGBtlOmu3dfZloBXehjCtEk4AmZQLg,2843
|
|
305
306
|
reflex/components/radix/themes/typography/text.pyi,sha256=exTgSHtho1PIDMsT46dNyRmXb2kOH7x8eiryfbmHMlA,73279
|
|
@@ -310,6 +311,8 @@ reflex/components/react_player/react_player.py,sha256=_yiqTiT73p3Lig0-oVzDxzBxZ7
|
|
|
310
311
|
reflex/components/react_player/react_player.pyi,sha256=gAvuhIxYNj-JG9zMHveIIREi0v50f9Jh9fSCUECoAHs,5874
|
|
311
312
|
reflex/components/react_player/video.py,sha256=WmdxzLtrZNNm9Nals5IpYUGhm45P14hR7I1NCaIW-eg,176
|
|
312
313
|
reflex/components/react_player/video.pyi,sha256=wdleNz97WblmeMU9qtJV77OH6urmgtiQacddc6H3lmg,5814
|
|
314
|
+
reflex/components/react_router/__init__.py,sha256=ittQ4lHlEsjDneYXODIjz3U0Z8jjtD6xjQuQNDd2MOQ,105
|
|
315
|
+
reflex/components/react_router/dom.py,sha256=1Aw6UfojyO1EmylyNX_ozxqhGUqfjrgWki8zN_d5QqM,2298
|
|
313
316
|
reflex/components/recharts/__init__.py,sha256=M8Xa0KVrwloklxPHqZCEBF8HaDluK4w5brXnlIrdNHI,2696
|
|
314
317
|
reflex/components/recharts/__init__.pyi,sha256=MnpXChZwm3DYprV7Ufc-yOptpqKpzRT_sou3oRk11jk,4080
|
|
315
318
|
reflex/components/recharts/cartesian.py,sha256=o0PYn-EwW1UcGDM5eXBcPnzNGFgzphjis_HeQ9-5Sew,34234
|
|
@@ -320,7 +323,7 @@ reflex/components/recharts/general.py,sha256=DuPDfccUWWehc40ji7_JSYHX_AoJyGn_-4y
|
|
|
320
323
|
reflex/components/recharts/general.pyi,sha256=-FcVLHn30AR7SzbjETpfKD5mXfOcv3GJO0w9c6MBmWQ,24242
|
|
321
324
|
reflex/components/recharts/polar.py,sha256=zocHpwWQ0lbg4BTnEBwQ6J9SSJsOYRwZGf9UPzxoNKs,15682
|
|
322
325
|
reflex/components/recharts/polar.pyi,sha256=6_karFX40GH0SwJK7o_VVHu4pn4o-UKx470cxayWnfg,27717
|
|
323
|
-
reflex/components/recharts/recharts.py,sha256=
|
|
326
|
+
reflex/components/recharts/recharts.py,sha256=gQ1zk6ickKV86M4rCB7o3Ym4KVH4s4vlfMMNa5IS2Jo,3221
|
|
324
327
|
reflex/components/recharts/recharts.pyi,sha256=9iHH1FiIGNYwn1zqyU2iqa9n71Q04AVfy9gWKkUirN0,7344
|
|
325
328
|
reflex/components/sonner/__init__.py,sha256=L_mdRIy7-ccRGSz5VK6J8O-c-e-D1p9xWw29_ErrvGg,68
|
|
326
329
|
reflex/components/sonner/toast.py,sha256=W3JF5G1pXNu5FjIUDXzmPTiO6vRJ2dNjfSjaqji68do,12392
|
|
@@ -338,7 +341,7 @@ reflex/constants/compiler.py,sha256=y72_HbyHGyCVv_Xqr3hB3_Nu1p8NA4gUebBqL8cxY6Y,
|
|
|
338
341
|
reflex/constants/config.py,sha256=8OIjiBdZZJrRVHsNBheMwopE9AwBFFzau0SXqXKcrPg,1715
|
|
339
342
|
reflex/constants/custom_components.py,sha256=joJt4CEt1yKy7wsBH6vYo7_QRW0O_fWXrrTf0VY2q14,1317
|
|
340
343
|
reflex/constants/event.py,sha256=tgoynWQi2L0_Kqc3XhXo7XXL76A-OKhJGHRrNjm7gFw,2885
|
|
341
|
-
reflex/constants/installer.py,sha256=
|
|
344
|
+
reflex/constants/installer.py,sha256=5PeqMLsQRlUTNG2JXXyoukIc2Qpz55rVJTaySiqq_Js,4106
|
|
342
345
|
reflex/constants/route.py,sha256=UBjqaAOxiUxlDZCSY4O2JJChKvA4MZrhUU0E5rNvKbM,2682
|
|
343
346
|
reflex/constants/state.py,sha256=uF_7-M9Gid-P3DjAOq4F1ERplyZhiNccowo_jLrdJrg,323
|
|
344
347
|
reflex/constants/utils.py,sha256=e1ChEvbHfmE_V2UJvCSUhD_qTVAIhEGPpRJSqdSd6PA,780
|
|
@@ -348,7 +351,7 @@ reflex/experimental/__init__.py,sha256=P8fe8S2e2gy2HCwHFGQzr3lPMmh7qN5Ii2e8ukoPH
|
|
|
348
351
|
reflex/experimental/client_state.py,sha256=1VOe6rYhpOBOZi7-tZwfOnSNPPdX3tsXzlfgNs7aDrg,10020
|
|
349
352
|
reflex/experimental/hooks.py,sha256=CHYGrAE5t8riltrJmDFgJ4D2Vhmhw-y3B3MSGNlOQow,2366
|
|
350
353
|
reflex/istate/__init__.py,sha256=afq_pCS5B_REC-Kl3Rbaa538uWi59xNz4INeuENcWnk,2039
|
|
351
|
-
reflex/istate/data.py,sha256=
|
|
354
|
+
reflex/istate/data.py,sha256=oMaBzjpgxnHdU9Pp9tdstxQ7EdkJ8caS5nuu0zoDPLI,7267
|
|
352
355
|
reflex/istate/dynamic.py,sha256=xOQ9upZVPf6ngqcLQZ9HdAAYmoWwJ8kRFPH34Q5HTiM,91
|
|
353
356
|
reflex/istate/manager.py,sha256=te5uQN6n-ctOGrf6NbZUVy6BKgWapLlMtCzDaO6RthU,30412
|
|
354
357
|
reflex/istate/proxy.py,sha256=Q8JrV1m6drVcTNJL9JuN-nKUXclazs96OHl_fhR0UBk,25928
|
|
@@ -362,7 +365,7 @@ reflex/plugins/base.py,sha256=fVez3g3OVlu0NZ-ldMMAYFxpj1avyxBoJSNH1wUdJYE,3057
|
|
|
362
365
|
reflex/plugins/shared_tailwind.py,sha256=UXUndEEcYBZ02klymw-vSZv01IZVLJG3oSaBHpQ617U,6426
|
|
363
366
|
reflex/plugins/sitemap.py,sha256=dbbqIWaim4zl1LEU6Su-gyxd0BgM3E6S8gCExDfkTRo,6154
|
|
364
367
|
reflex/plugins/tailwind_v3.py,sha256=7bXI-zsGoS1pW27-_gskxGaUOQ7NQMPcYkoI5lnmIMA,4819
|
|
365
|
-
reflex/plugins/tailwind_v4.py,sha256=
|
|
368
|
+
reflex/plugins/tailwind_v4.py,sha256=gDzQd9M1F03n6sU0xSKhNZZ3xFO5SJMBmSXL-dPteOM,5239
|
|
366
369
|
reflex/utils/__init__.py,sha256=y-AHKiRQAhk2oAkvn7W8cRVTZVK625ff8tTwvZtO7S4,24
|
|
367
370
|
reflex/utils/build.py,sha256=lk8hE69onG95dv-LxRhjtEugct1g-KcWPUDorzqeGIE,7964
|
|
368
371
|
reflex/utils/codespaces.py,sha256=kEQ-j-jclTukFpXDlYgNp95kYMGDrQmP3VNEoYGZ1u4,3052
|
|
@@ -370,17 +373,17 @@ reflex/utils/compat.py,sha256=aSJH_M6iomgHPQ4onQ153xh1MWqPi3HSYDzE68N6gZM,2635
|
|
|
370
373
|
reflex/utils/console.py,sha256=OFyXqnyhpAgXCDM7m5lokoUMjvXMohc2ftgrmcf62nc,11500
|
|
371
374
|
reflex/utils/decorator.py,sha256=DVrlVGljV5OchMs-5_y1CbbqnCWlH6lv-dFko8yHxVY,1738
|
|
372
375
|
reflex/utils/exceptions.py,sha256=Wwu7Ji2xgq521bJKtU2NgjwhmFfnG8erirEVN2h8S-g,8884
|
|
373
|
-
reflex/utils/exec.py,sha256=
|
|
376
|
+
reflex/utils/exec.py,sha256=LpCwG34VymgJMfwuWpkImU7Bqh0E4i9SDeGbSHZXkoM,21562
|
|
374
377
|
reflex/utils/export.py,sha256=Z2AHuhkxGQzOi9I90BejQ4qEcD0URr2i-ZU5qTJt7eQ,2562
|
|
375
378
|
reflex/utils/format.py,sha256=6lgPpYsArWDwGuC_BT-X9g4BnCG14vvH7-oNjrCA5Xc,21119
|
|
376
379
|
reflex/utils/imports.py,sha256=Ov-lqv-PfsPl3kTEW13r5aDauIfn6TqzEMyv42RKLOA,3761
|
|
377
|
-
reflex/utils/lazy_loader.py,sha256=
|
|
380
|
+
reflex/utils/lazy_loader.py,sha256=BiY9OvmAJDCz10qpuyTYv9duXgMFQa6RXKQmTO9hqKU,4453
|
|
378
381
|
reflex/utils/misc.py,sha256=zbYIl7mI08is9enr851sj7PnDaNeVVvq5jDmQ4wdlCE,2879
|
|
379
382
|
reflex/utils/net.py,sha256=HEHA8L5g7L9s0fFG4dTiZzB9PFO_0WRrlbMgpZr_GAQ,4093
|
|
380
383
|
reflex/utils/path_ops.py,sha256=_RS17IQDNr5vcoLLGZx2-z1E5WP-JgDHvaRAOgqrZiU,8154
|
|
381
384
|
reflex/utils/prerequisites.py,sha256=L2tCFqqiYqygRbQ0JMMBduMdsMkKJLDvzGKZnvI1Enc,66001
|
|
382
|
-
reflex/utils/processes.py,sha256=
|
|
383
|
-
reflex/utils/pyi_generator.py,sha256=
|
|
385
|
+
reflex/utils/processes.py,sha256=eYzdfFhhnGnPxWN5USxdoLaYA8m8UEOOuxwxRRtLMW0,16196
|
|
386
|
+
reflex/utils/pyi_generator.py,sha256=HdmUVs50Bk7MAMFSvpATRhH--_50w-9URMFnjLlwT40,46086
|
|
384
387
|
reflex/utils/redir.py,sha256=3JG0cRdfIZnFIBHHN32ynD5cfbUZa7gLRxzrxRGGl5I,1751
|
|
385
388
|
reflex/utils/registry.py,sha256=DEF7csYQ5VnrZhy6ULVfMlceh7XVH0pks96lIyyThuc,1882
|
|
386
389
|
reflex/utils/serializers.py,sha256=sVLfbWIBKPpmo0CVVxoxXGu0K3R9mYMWgaI02LXZmcM,13952
|
|
@@ -395,8 +398,8 @@ reflex/vars/number.py,sha256=tO7pnvFaBsedq1HWT4skytnSqHWMluGEhUbjAUMx8XQ,28190
|
|
|
395
398
|
reflex/vars/object.py,sha256=BDmeiwG8v97s_BnR1Egq3NxOKVjv9TfnREB3cz0zZtk,17322
|
|
396
399
|
reflex/vars/sequence.py,sha256=1kBrqihspyjyQ1XDqFPC8OpVGtZs_EVkOdIKBro5ilA,55249
|
|
397
400
|
scripts/hatch_build.py,sha256=-4pxcLSFmirmujGpQX9UUxjhIC03tQ_fIQwVbHu9kc0,1861
|
|
398
|
-
reflex-0.8.
|
|
399
|
-
reflex-0.8.
|
|
400
|
-
reflex-0.8.
|
|
401
|
-
reflex-0.8.
|
|
402
|
-
reflex-0.8.
|
|
401
|
+
reflex-0.8.1a1.dist-info/METADATA,sha256=oBA8su-NDM7o_4kCnWj_BiHrr3bqA6xYd0lW0EskyWU,12371
|
|
402
|
+
reflex-0.8.1a1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
403
|
+
reflex-0.8.1a1.dist-info/entry_points.txt,sha256=Rxt4dXc7MLBNt5CSHTehVPuSe9Xqow4HLX55nD9tQQ0,45
|
|
404
|
+
reflex-0.8.1a1.dist-info/licenses/LICENSE,sha256=dw3zLrp9f5ObD7kqS32vWfhcImfO52PMmRqvtxq_YEE,11358
|
|
405
|
+
reflex-0.8.1a1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|