reflex 0.7.14a2__py3-none-any.whl → 0.7.14a4__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 +2 -1
- reflex/assets.py +1 -1
- reflex/compiler/compiler.py +2 -1
- reflex/components/base/bare.py +1 -1
- reflex/components/component.py +8 -0
- reflex/components/core/banner.py +1 -1
- reflex/components/core/upload.py +1 -1
- reflex/config.py +16 -602
- reflex/constants/base.py +3 -3
- reflex/constants/installer.py +1 -1
- reflex/environment.py +606 -0
- reflex/istate/manager.py +2 -1
- reflex/model.py +2 -1
- reflex/reflex.py +2 -1
- reflex/state.py +1 -1
- reflex/testing.py +3 -1
- reflex/utils/console.py +61 -0
- reflex/utils/exec.py +104 -28
- reflex/utils/export.py +2 -1
- reflex/utils/net.py +2 -2
- reflex/utils/path_ops.py +2 -1
- reflex/utils/prerequisites.py +2 -1
- reflex/utils/processes.py +1 -1
- reflex/utils/registry.py +1 -1
- reflex/utils/telemetry.py +16 -1
- {reflex-0.7.14a2.dist-info → reflex-0.7.14a4.dist-info}/METADATA +1 -1
- {reflex-0.7.14a2.dist-info → reflex-0.7.14a4.dist-info}/RECORD +30 -29
- {reflex-0.7.14a2.dist-info → reflex-0.7.14a4.dist-info}/WHEEL +0 -0
- {reflex-0.7.14a2.dist-info → reflex-0.7.14a4.dist-info}/entry_points.txt +0 -0
- {reflex-0.7.14a2.dist-info → reflex-0.7.14a4.dist-info}/licenses/LICENSE +0 -0
reflex/utils/console.py
CHANGED
|
@@ -15,6 +15,8 @@ from rich.progress import MofNCompleteColumn, Progress, TimeElapsedColumn
|
|
|
15
15
|
from rich.prompt import Prompt
|
|
16
16
|
|
|
17
17
|
from reflex.constants import LogLevel
|
|
18
|
+
from reflex.constants.base import Reflex
|
|
19
|
+
from reflex.utils.decorator import once
|
|
18
20
|
|
|
19
21
|
# Console for pretty printing.
|
|
20
22
|
_console = Console()
|
|
@@ -92,6 +94,51 @@ def print(msg: str, dedupe: bool = False, **kwargs):
|
|
|
92
94
|
_console.print(msg, **kwargs)
|
|
93
95
|
|
|
94
96
|
|
|
97
|
+
@once
|
|
98
|
+
def log_file_console():
|
|
99
|
+
"""Create a console that logs to a file.
|
|
100
|
+
|
|
101
|
+
Returns:
|
|
102
|
+
A Console object that logs to a file.
|
|
103
|
+
"""
|
|
104
|
+
from reflex.environment import environment
|
|
105
|
+
|
|
106
|
+
if not (env_log_file := environment.REFLEX_LOG_FILE.get()):
|
|
107
|
+
subseconds = int((time.time() % 1) * 1000)
|
|
108
|
+
timestamp = time.strftime("%Y-%m-%d_%H-%M-%S") + f"_{subseconds:03d}"
|
|
109
|
+
log_file = Reflex.DIR / "logs" / (timestamp + ".log")
|
|
110
|
+
log_file.parent.mkdir(parents=True, exist_ok=True)
|
|
111
|
+
else:
|
|
112
|
+
log_file = env_log_file
|
|
113
|
+
if log_file.exists():
|
|
114
|
+
log_file.unlink()
|
|
115
|
+
log_file.touch()
|
|
116
|
+
return Console(file=log_file.open("a", encoding="utf-8"))
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
@once
|
|
120
|
+
def should_use_log_file_console() -> bool:
|
|
121
|
+
"""Check if the log file console should be used.
|
|
122
|
+
|
|
123
|
+
Returns:
|
|
124
|
+
True if the log file console should be used, False otherwise.
|
|
125
|
+
"""
|
|
126
|
+
from reflex.environment import environment
|
|
127
|
+
|
|
128
|
+
return environment.REFLEX_ENABLE_FULL_LOGGING.get()
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
def print_to_log_file(msg: str, dedupe: bool = False, **kwargs):
|
|
132
|
+
"""Print a message to the log file.
|
|
133
|
+
|
|
134
|
+
Args:
|
|
135
|
+
msg: The message to print.
|
|
136
|
+
dedupe: If True, suppress multiple console logs of print message.
|
|
137
|
+
kwargs: Keyword arguments to pass to the print function.
|
|
138
|
+
"""
|
|
139
|
+
log_file_console().print(msg, **kwargs)
|
|
140
|
+
|
|
141
|
+
|
|
95
142
|
def debug(msg: str, dedupe: bool = False, **kwargs):
|
|
96
143
|
"""Print a debug message.
|
|
97
144
|
|
|
@@ -110,6 +157,8 @@ def debug(msg: str, dedupe: bool = False, **kwargs):
|
|
|
110
157
|
progress.console.print(msg_, **kwargs)
|
|
111
158
|
else:
|
|
112
159
|
print(msg_, **kwargs)
|
|
160
|
+
if should_use_log_file_console() and kwargs.pop("progress", None) is None:
|
|
161
|
+
print_to_log_file(f"[purple]Debug: {msg}[/purple]", **kwargs)
|
|
113
162
|
|
|
114
163
|
|
|
115
164
|
def info(msg: str, dedupe: bool = False, **kwargs):
|
|
@@ -126,6 +175,8 @@ def info(msg: str, dedupe: bool = False, **kwargs):
|
|
|
126
175
|
return
|
|
127
176
|
_EMITTED_INFO.add(msg)
|
|
128
177
|
print(f"[cyan]Info: {msg}[/cyan]", **kwargs)
|
|
178
|
+
if should_use_log_file_console():
|
|
179
|
+
print_to_log_file(f"[cyan]Info: {msg}[/cyan]", **kwargs)
|
|
129
180
|
|
|
130
181
|
|
|
131
182
|
def success(msg: str, dedupe: bool = False, **kwargs):
|
|
@@ -142,6 +193,8 @@ def success(msg: str, dedupe: bool = False, **kwargs):
|
|
|
142
193
|
return
|
|
143
194
|
_EMITTED_SUCCESS.add(msg)
|
|
144
195
|
print(f"[green]Success: {msg}[/green]", **kwargs)
|
|
196
|
+
if should_use_log_file_console():
|
|
197
|
+
print_to_log_file(f"[green]Success: {msg}[/green]", **kwargs)
|
|
145
198
|
|
|
146
199
|
|
|
147
200
|
def log(msg: str, dedupe: bool = False, **kwargs):
|
|
@@ -158,6 +211,8 @@ def log(msg: str, dedupe: bool = False, **kwargs):
|
|
|
158
211
|
return
|
|
159
212
|
_EMITTED_LOGS.add(msg)
|
|
160
213
|
_console.log(msg, **kwargs)
|
|
214
|
+
if should_use_log_file_console():
|
|
215
|
+
print_to_log_file(msg, **kwargs)
|
|
161
216
|
|
|
162
217
|
|
|
163
218
|
def rule(title: str, **kwargs):
|
|
@@ -184,6 +239,8 @@ def warn(msg: str, dedupe: bool = False, **kwargs):
|
|
|
184
239
|
return
|
|
185
240
|
_EMIITED_WARNINGS.add(msg)
|
|
186
241
|
print(f"[orange1]Warning: {msg}[/orange1]", **kwargs)
|
|
242
|
+
if should_use_log_file_console():
|
|
243
|
+
print_to_log_file(f"[orange1]Warning: {msg}[/orange1]", **kwargs)
|
|
187
244
|
|
|
188
245
|
|
|
189
246
|
def _get_first_non_framework_frame() -> FrameType | None:
|
|
@@ -248,6 +305,8 @@ def deprecate(
|
|
|
248
305
|
)
|
|
249
306
|
if _LOG_LEVEL <= LogLevel.WARNING:
|
|
250
307
|
print(f"[yellow]DeprecationWarning: {msg}[/yellow]", **kwargs)
|
|
308
|
+
if should_use_log_file_console():
|
|
309
|
+
print_to_log_file(f"[yellow]DeprecationWarning: {msg}[/yellow]", **kwargs)
|
|
251
310
|
if dedupe:
|
|
252
311
|
_EMITTED_DEPRECATION_WARNINGS.add(dedupe_key)
|
|
253
312
|
|
|
@@ -266,6 +325,8 @@ def error(msg: str, dedupe: bool = False, **kwargs):
|
|
|
266
325
|
return
|
|
267
326
|
_EMITTED_ERRORS.add(msg)
|
|
268
327
|
print(f"[red]{msg}[/red]", **kwargs)
|
|
328
|
+
if should_use_log_file_console():
|
|
329
|
+
print_to_log_file(f"[red]{msg}[/red]", **kwargs)
|
|
269
330
|
|
|
270
331
|
|
|
271
332
|
def ask(
|
reflex/utils/exec.py
CHANGED
|
@@ -12,13 +12,15 @@ import subprocess
|
|
|
12
12
|
import sys
|
|
13
13
|
from collections.abc import Sequence
|
|
14
14
|
from pathlib import Path
|
|
15
|
+
from typing import NamedTuple, TypedDict
|
|
15
16
|
from urllib.parse import urljoin
|
|
16
17
|
|
|
17
18
|
import psutil
|
|
18
19
|
|
|
19
20
|
from reflex import constants
|
|
20
|
-
from reflex.config import
|
|
21
|
+
from reflex.config import get_config
|
|
21
22
|
from reflex.constants.base import LogLevel
|
|
23
|
+
from reflex.environment import environment
|
|
22
24
|
from reflex.utils import console, path_ops
|
|
23
25
|
from reflex.utils.decorator import once
|
|
24
26
|
from reflex.utils.prerequisites import get_web_dir
|
|
@@ -27,26 +29,102 @@ from reflex.utils.prerequisites import get_web_dir
|
|
|
27
29
|
frontend_process = None
|
|
28
30
|
|
|
29
31
|
|
|
30
|
-
def
|
|
31
|
-
"""
|
|
32
|
+
def get_package_json_and_hash(package_json_path: Path) -> tuple[PackageJson, str]:
|
|
33
|
+
"""Get the content of package.json and its hash.
|
|
32
34
|
|
|
33
35
|
Args:
|
|
34
|
-
|
|
36
|
+
package_json_path: The path to the package.json file.
|
|
35
37
|
|
|
36
38
|
Returns:
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
Example:
|
|
40
|
-
>>> detect_package_change("package.json")
|
|
41
|
-
'a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6a7b8c9d0e1f2'
|
|
39
|
+
A tuple containing the content of package.json as a dictionary and its SHA-256 hash.
|
|
42
40
|
"""
|
|
43
|
-
with
|
|
41
|
+
with package_json_path.open("r") as file:
|
|
44
42
|
json_data = json.load(file)
|
|
45
43
|
|
|
46
44
|
# Calculate the hash
|
|
47
45
|
json_string = json.dumps(json_data, sort_keys=True)
|
|
48
46
|
hash_object = hashlib.sha256(json_string.encode())
|
|
49
|
-
return hash_object.hexdigest()
|
|
47
|
+
return (json_data, hash_object.hexdigest())
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class PackageJson(TypedDict):
|
|
51
|
+
"""package.json content."""
|
|
52
|
+
|
|
53
|
+
dependencies: dict[str, str]
|
|
54
|
+
devDependencies: dict[str, str]
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
class Change(NamedTuple):
|
|
58
|
+
"""A named tuple to represent a change in package dependencies."""
|
|
59
|
+
|
|
60
|
+
added: set[str]
|
|
61
|
+
removed: set[str]
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def format_change(name: str, change: Change) -> str:
|
|
65
|
+
"""Format the change for display.
|
|
66
|
+
|
|
67
|
+
Args:
|
|
68
|
+
name: The name of the change (e.g., "dependencies" or "devDependencies").
|
|
69
|
+
change: The Change named tuple containing added and removed packages.
|
|
70
|
+
|
|
71
|
+
Returns:
|
|
72
|
+
A formatted string representing the changes.
|
|
73
|
+
"""
|
|
74
|
+
if not change.added and not change.removed:
|
|
75
|
+
return ""
|
|
76
|
+
added_str = ", ".join(sorted(change.added))
|
|
77
|
+
removed_str = ", ".join(sorted(change.removed))
|
|
78
|
+
change_str = f"{name}:\n"
|
|
79
|
+
if change.added:
|
|
80
|
+
change_str += f" Added: {added_str}\n"
|
|
81
|
+
if change.removed:
|
|
82
|
+
change_str += f" Removed: {removed_str}\n"
|
|
83
|
+
return change_str.strip()
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def get_different_packages(
|
|
87
|
+
old_package_json_content: PackageJson,
|
|
88
|
+
new_package_json_content: PackageJson,
|
|
89
|
+
) -> tuple[Change, Change]:
|
|
90
|
+
"""Get the packages that are different between two package JSON contents.
|
|
91
|
+
|
|
92
|
+
Args:
|
|
93
|
+
old_package_json_content: The content of the old package JSON.
|
|
94
|
+
new_package_json_content: The content of the new package JSON.
|
|
95
|
+
|
|
96
|
+
Returns:
|
|
97
|
+
A tuple containing two `Change` named tuples:
|
|
98
|
+
- The first `Change` contains the changes in the `dependencies` section.
|
|
99
|
+
- The second `Change` contains the changes in the `devDependencies` section.
|
|
100
|
+
"""
|
|
101
|
+
|
|
102
|
+
def get_changes(old: dict[str, str], new: dict[str, str]) -> Change:
|
|
103
|
+
"""Get the changes between two dictionaries.
|
|
104
|
+
|
|
105
|
+
Args:
|
|
106
|
+
old: The old dictionary of packages.
|
|
107
|
+
new: The new dictionary of packages.
|
|
108
|
+
|
|
109
|
+
Returns:
|
|
110
|
+
A `Change` named tuple containing the added and removed packages.
|
|
111
|
+
"""
|
|
112
|
+
old_keys = set(old.keys())
|
|
113
|
+
new_keys = set(new.keys())
|
|
114
|
+
added = new_keys - old_keys
|
|
115
|
+
removed = old_keys - new_keys
|
|
116
|
+
return Change(added=added, removed=removed)
|
|
117
|
+
|
|
118
|
+
dependencies_change = get_changes(
|
|
119
|
+
old_package_json_content.get("dependencies", {}),
|
|
120
|
+
new_package_json_content.get("dependencies", {}),
|
|
121
|
+
)
|
|
122
|
+
dev_dependencies_change = get_changes(
|
|
123
|
+
old_package_json_content.get("devDependencies", {}),
|
|
124
|
+
new_package_json_content.get("devDependencies", {}),
|
|
125
|
+
)
|
|
126
|
+
|
|
127
|
+
return dependencies_change, dev_dependencies_change
|
|
50
128
|
|
|
51
129
|
|
|
52
130
|
def kill(proc_pid: int):
|
|
@@ -86,7 +164,7 @@ def run_process_and_launch_url(
|
|
|
86
164
|
from reflex.utils import processes
|
|
87
165
|
|
|
88
166
|
json_file_path = get_web_dir() / constants.PackageJson.PATH
|
|
89
|
-
last_hash =
|
|
167
|
+
last_content, last_hash = get_package_json_and_hash(json_file_path)
|
|
90
168
|
process = None
|
|
91
169
|
first_run = True
|
|
92
170
|
|
|
@@ -105,6 +183,18 @@ def run_process_and_launch_url(
|
|
|
105
183
|
frontend_process = process
|
|
106
184
|
if process.stdout:
|
|
107
185
|
for line in processes.stream_logs("Starting frontend", process):
|
|
186
|
+
new_content, new_hash = get_package_json_and_hash(json_file_path)
|
|
187
|
+
if new_hash != last_hash:
|
|
188
|
+
dependencies_change, dev_dependencies_change = (
|
|
189
|
+
get_different_packages(last_content, new_content)
|
|
190
|
+
)
|
|
191
|
+
last_content, last_hash = new_content, new_hash
|
|
192
|
+
console.info(
|
|
193
|
+
"Detected changes in package.json.\n"
|
|
194
|
+
+ format_change("Dependencies", dependencies_change)
|
|
195
|
+
+ format_change("Dev Dependencies", dev_dependencies_change)
|
|
196
|
+
)
|
|
197
|
+
|
|
108
198
|
match = re.search(constants.Next.FRONTEND_LISTENING_REGEX, line)
|
|
109
199
|
if match:
|
|
110
200
|
if first_run:
|
|
@@ -119,22 +209,8 @@ def run_process_and_launch_url(
|
|
|
119
209
|
notify_backend()
|
|
120
210
|
first_run = False
|
|
121
211
|
else:
|
|
122
|
-
console.print("
|
|
123
|
-
|
|
124
|
-
if any(
|
|
125
|
-
x in line for x in ("bin executable does not exist on disk",)
|
|
126
|
-
):
|
|
127
|
-
console.error(
|
|
128
|
-
"Try setting `REFLEX_USE_NPM=1` and re-running `reflex init` and `reflex run` to use npm instead of bun:\n"
|
|
129
|
-
"`REFLEX_USE_NPM=1 reflex init`\n"
|
|
130
|
-
"`REFLEX_USE_NPM=1 reflex run`"
|
|
131
|
-
)
|
|
132
|
-
new_hash = detect_package_change(json_file_path)
|
|
133
|
-
if new_hash != last_hash:
|
|
134
|
-
last_hash = new_hash
|
|
135
|
-
kill(process.pid)
|
|
136
|
-
process = None
|
|
137
|
-
break # for line in process.stdout
|
|
212
|
+
console.print("Frontend is restarting...")
|
|
213
|
+
|
|
138
214
|
if process is not None:
|
|
139
215
|
break # while True
|
|
140
216
|
|
reflex/utils/export.py
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
from pathlib import Path
|
|
4
4
|
|
|
5
5
|
from reflex import constants
|
|
6
|
-
from reflex.config import
|
|
6
|
+
from reflex.config import get_config
|
|
7
|
+
from reflex.environment import environment
|
|
7
8
|
from reflex.utils import build, console, exec, prerequisites, telemetry
|
|
8
9
|
|
|
9
10
|
|
reflex/utils/net.py
CHANGED
|
@@ -19,7 +19,7 @@ def _httpx_verify_kwarg() -> bool:
|
|
|
19
19
|
Returns:
|
|
20
20
|
True if SSL verification is enabled, False otherwise
|
|
21
21
|
"""
|
|
22
|
-
from reflex.
|
|
22
|
+
from reflex.environment import environment
|
|
23
23
|
|
|
24
24
|
return not environment.SSL_NO_VERIFY.get()
|
|
25
25
|
|
|
@@ -131,7 +131,7 @@ def _httpx_local_address_kwarg() -> str:
|
|
|
131
131
|
Returns:
|
|
132
132
|
The local address to bind to
|
|
133
133
|
"""
|
|
134
|
-
from reflex.
|
|
134
|
+
from reflex.environment import environment
|
|
135
135
|
|
|
136
136
|
return environment.REFLEX_HTTP_CLIENT_BIND_ADDRESS.get() or (
|
|
137
137
|
"::" if _should_use_ipv6() else "0.0.0.0"
|
reflex/utils/path_ops.py
CHANGED
reflex/utils/prerequisites.py
CHANGED
|
@@ -36,7 +36,8 @@ from redis.exceptions import RedisError
|
|
|
36
36
|
|
|
37
37
|
from reflex import constants, model
|
|
38
38
|
from reflex.compiler import templates
|
|
39
|
-
from reflex.config import Config,
|
|
39
|
+
from reflex.config import Config, get_config
|
|
40
|
+
from reflex.environment import environment
|
|
40
41
|
from reflex.utils import console, net, path_ops, processes, redir
|
|
41
42
|
from reflex.utils.decorator import once
|
|
42
43
|
from reflex.utils.exceptions import SystemPackageMissingError
|
reflex/utils/processes.py
CHANGED
|
@@ -19,7 +19,7 @@ from redis.exceptions import RedisError
|
|
|
19
19
|
from rich.progress import Progress
|
|
20
20
|
|
|
21
21
|
from reflex import constants
|
|
22
|
-
from reflex.
|
|
22
|
+
from reflex.environment import environment
|
|
23
23
|
from reflex.utils import console, path_ops, prerequisites
|
|
24
24
|
from reflex.utils.registry import get_npm_registry
|
|
25
25
|
|
reflex/utils/registry.py
CHANGED
reflex/utils/telemetry.py
CHANGED
|
@@ -4,6 +4,7 @@ from __future__ import annotations
|
|
|
4
4
|
|
|
5
5
|
import asyncio
|
|
6
6
|
import dataclasses
|
|
7
|
+
import importlib.metadata
|
|
7
8
|
import multiprocessing
|
|
8
9
|
import platform
|
|
9
10
|
import warnings
|
|
@@ -15,7 +16,7 @@ import httpx
|
|
|
15
16
|
import psutil
|
|
16
17
|
|
|
17
18
|
from reflex import constants
|
|
18
|
-
from reflex.
|
|
19
|
+
from reflex.environment import environment
|
|
19
20
|
from reflex.utils import console
|
|
20
21
|
from reflex.utils.decorator import once_unless_none
|
|
21
22
|
from reflex.utils.exceptions import ReflexError
|
|
@@ -76,6 +77,18 @@ def get_cpu_count() -> int:
|
|
|
76
77
|
return multiprocessing.cpu_count()
|
|
77
78
|
|
|
78
79
|
|
|
80
|
+
def get_reflex_enterprise_version() -> str | None:
|
|
81
|
+
"""Get the version of reflex-enterprise if installed.
|
|
82
|
+
|
|
83
|
+
Returns:
|
|
84
|
+
The version string if installed, None if not installed.
|
|
85
|
+
"""
|
|
86
|
+
try:
|
|
87
|
+
return importlib.metadata.version("reflex-enterprise")
|
|
88
|
+
except importlib.metadata.PackageNotFoundError:
|
|
89
|
+
return None
|
|
90
|
+
|
|
91
|
+
|
|
79
92
|
def get_memory() -> int:
|
|
80
93
|
"""Get the total memory in MB.
|
|
81
94
|
|
|
@@ -113,6 +126,7 @@ class _Properties(TypedDict):
|
|
|
113
126
|
python_version: str
|
|
114
127
|
node_version: str | None
|
|
115
128
|
bun_version: str | None
|
|
129
|
+
reflex_enterprise_version: str | None
|
|
116
130
|
cpu_count: int
|
|
117
131
|
memory: int
|
|
118
132
|
cpu_info: dict
|
|
@@ -166,6 +180,7 @@ def _get_event_defaults() -> _DefaultEvent | None:
|
|
|
166
180
|
"bun_version": (
|
|
167
181
|
str(bun_version) if (bun_version := get_bun_version()) else None
|
|
168
182
|
),
|
|
183
|
+
"reflex_enterprise_version": get_reflex_enterprise_version(),
|
|
169
184
|
"cpu_count": get_cpu_count(),
|
|
170
185
|
"memory": get_memory(),
|
|
171
186
|
"cpu_info": dataclasses.asdict(cpuinfo) if cpuinfo else {},
|
|
@@ -2,19 +2,20 @@ reflex/__init__.py,sha256=wMrUAcxHI0Th4EwHIVm9G5zT-zNgO1JX6yWejx0IvvQ,10380
|
|
|
2
2
|
reflex/__init__.pyi,sha256=SDnppfexuPej7E5zD2fHKq1gppvvZHBUqqS0tX2Wj-g,11391
|
|
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=
|
|
6
|
-
reflex/assets.py,sha256=
|
|
5
|
+
reflex/app.py,sha256=s6B2kru4D1k4wIOjTL0bBGXIlc6NzcilcOuL-JalJR8,77071
|
|
6
|
+
reflex/assets.py,sha256=l5O_mlrTprC0lF7Rc_McOe3a0OtSLnRdNl_PqCpDCBA,3431
|
|
7
7
|
reflex/base.py,sha256=GYu-PvZ28BVRfnivcAh7s0QiqzxhlDkcugTI4dPMShc,3901
|
|
8
|
-
reflex/config.py,sha256=
|
|
8
|
+
reflex/config.py,sha256=S0gEO0vT2GPm2Gof79BT7Qv04dvzq9E-qM1_68lUkVA,19555
|
|
9
|
+
reflex/environment.py,sha256=WmxzlXx9MqogJ5ro3jqLcpPhhCF6rjC0hSdrJ_qYcL0,19748
|
|
9
10
|
reflex/event.py,sha256=D-sdpUoz3cGI5FtzM5RGYZSPHhwkql4S1_F4Or4SYDM,67009
|
|
10
|
-
reflex/model.py,sha256=
|
|
11
|
+
reflex/model.py,sha256=xED7blemoiKxPFaOkCMrSayjjon7AJp8t5g459p7dGs,17646
|
|
11
12
|
reflex/page.py,sha256=mqioadLDsABvfNqdLbxvUKqi1gulSKddMihZe3pjtdc,2678
|
|
12
13
|
reflex/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
13
|
-
reflex/reflex.py,sha256
|
|
14
|
+
reflex/reflex.py,sha256=-soFv5fHxwXDeDgCr_wifU0sznu8F31gWm2I8E31zvU,21551
|
|
14
15
|
reflex/route.py,sha256=iO7VQQ9mTWG8LiVYNqZXtbtrD463aWNTS0wn1YolGbw,4192
|
|
15
|
-
reflex/state.py,sha256=
|
|
16
|
+
reflex/state.py,sha256=7JrD1sh0zhryIfGWpRWswY-yD0emd6QFkOxf5yL_Jkw,90876
|
|
16
17
|
reflex/style.py,sha256=JxbXXA4MTnXrk0XHEoMBoNC7J-M2oL5Hl3W_QmXvmBg,13222
|
|
17
|
-
reflex/testing.py,sha256=
|
|
18
|
+
reflex/testing.py,sha256=HfcXe7bZyT0cM832PL5AXKy2GhpO7DHNqHN3KTbZCig,36777
|
|
18
19
|
reflex/.templates/apps/blank/assets/favicon.ico,sha256=baxxgDAQ2V4-G5Q4S2yK5uUJTUGkv-AOWBQ0xd6myUo,4286
|
|
19
20
|
reflex/.templates/apps/blank/code/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
20
21
|
reflex/.templates/apps/blank/code/blank.py,sha256=UmGz7aDxGULYINwLgotQoj-9qqpy7EOfAEpLmOT7C_k,917
|
|
@@ -56,12 +57,12 @@ reflex/app_mixins/lifespan.py,sha256=9rrdVUY0nHyk3gj31WJm7mw6I7KHBNtvSs9tZdwUm4I
|
|
|
56
57
|
reflex/app_mixins/middleware.py,sha256=BKhe0jUFO1_TylEC48LUZyaeYyPmAYW-NV4H5Rw221k,2848
|
|
57
58
|
reflex/app_mixins/mixin.py,sha256=R1YncalqDrbdPZvpKVbm72ZKmQZxYAWfuFq9JknzTqQ,305
|
|
58
59
|
reflex/compiler/__init__.py,sha256=r8jqmDSFf09iV2lHlNhfc9XrTLjNxfDNwPYlxS4cmHE,27
|
|
59
|
-
reflex/compiler/compiler.py,sha256
|
|
60
|
+
reflex/compiler/compiler.py,sha256=Y2fBmLn7DOzV8yN44z1T8rh4t399N8bhLqANl7FoEcQ,28239
|
|
60
61
|
reflex/compiler/templates.py,sha256=SKFIJtL_ozEvEHhiMj34tBwBN1CWSYy_-VzlojZMG44,6015
|
|
61
62
|
reflex/compiler/utils.py,sha256=NYvNedrkqoh8i86QL8tOjFZ60JabOM1wBXNkY1ORtiQ,16549
|
|
62
63
|
reflex/components/__init__.py,sha256=zbIXThv1WPI0FdIGf9G9RAmGoCRoGy7nHcSZ8K5D5bA,624
|
|
63
64
|
reflex/components/__init__.pyi,sha256=qoj1zIWaitcZOGcJ6k7wuGJk_GAJCE9Xtx8CeRVrvoE,861
|
|
64
|
-
reflex/components/component.py,sha256=
|
|
65
|
+
reflex/components/component.py,sha256=5bnI90s6EINL8ls_HlcMLaj-t26ABn01P7QEX_sGaIU,99015
|
|
65
66
|
reflex/components/dynamic.py,sha256=rDPSyoeAWAe7pxA9ZpuamKfBispOrxR-Y2DP8KfwRq8,7404
|
|
66
67
|
reflex/components/literals.py,sha256=hogLnwTJxFJODIvqihg-GD9kFZVsEBDoYzaRit56Nuk,501
|
|
67
68
|
reflex/components/props.py,sha256=pte-hBXbwsvB2fS7vYtiyxbHWlWYcDNg8baCfDaOvBE,2699
|
|
@@ -69,7 +70,7 @@ reflex/components/base/__init__.py,sha256=QIOxOPT87WrSE4TSHAsZ-358VzvUXAe1w8vWog
|
|
|
69
70
|
reflex/components/base/__init__.pyi,sha256=c-8lUF9MAgAo9OHMjKIrV2ScM5S0fg8gTXp3iYFwVKU,1055
|
|
70
71
|
reflex/components/base/app_wrap.py,sha256=5K_myvYvHPeAJbm3BdEX17tKvdNEj6SV9RYahbIQBAQ,514
|
|
71
72
|
reflex/components/base/app_wrap.pyi,sha256=-qdsW5SDxROhV11q4TIgnm_1CHx8_AZHHhsnmkdiv18,1915
|
|
72
|
-
reflex/components/base/bare.py,sha256=
|
|
73
|
+
reflex/components/base/bare.py,sha256=f9e9cW48mjyf7fh6BgsIUV71vSdbK-Xs-SAjngAufg4,7315
|
|
73
74
|
reflex/components/base/body.py,sha256=KLPOhxVsKyjPwrY9AziCOOG_c9ckOqIhI4n2i3_Q3NU,129
|
|
74
75
|
reflex/components/base/body.pyi,sha256=4gWLicS47-WND25iWoj_oOg7i_0oqb36f26vID7NZH8,8665
|
|
75
76
|
reflex/components/base/document.py,sha256=L5kRdI1bvPQ9dTpHkeG6kqyDvzqZ4uZG4QSj3GMLBuM,551
|
|
@@ -92,7 +93,7 @@ reflex/components/core/__init__.py,sha256=1Z5MUA5wRPi4w7TXzRFyCfxbG8lUMqs29buWHI
|
|
|
92
93
|
reflex/components/core/__init__.pyi,sha256=HDZSx-RIBpryukJo8ECdxSnZwpThP0IR2LV66h1XyJ4,2046
|
|
93
94
|
reflex/components/core/auto_scroll.py,sha256=3jtFUqMUM1R_YyxWjbNVLiLktw6HHp50EzIFTkFtgto,3616
|
|
94
95
|
reflex/components/core/auto_scroll.pyi,sha256=fuJKqsjcau2vk2y543U5Gcjs-FBl7h-kDurIV4MOkeg,8899
|
|
95
|
-
reflex/components/core/banner.py,sha256=
|
|
96
|
+
reflex/components/core/banner.py,sha256=DIjy4-qydJuLYVDKJYtrIeO4HFLdbgpXDVF4o2sRkDs,18568
|
|
96
97
|
reflex/components/core/banner.pyi,sha256=DENYyCF9R46YC-mFgSFhUog225lMbZHFAt1pEFfCCfE,25414
|
|
97
98
|
reflex/components/core/breakpoints.py,sha256=7nNG9Ewjvbk1hB0VoFiQxlDR333Mq2y977CNWjslAWA,2692
|
|
98
99
|
reflex/components/core/client_side_routing.py,sha256=CgW29H4Kiy5V4AKdJlFT9gSWaFUfki3f3Prf9twbbqA,1881
|
|
@@ -110,7 +111,7 @@ reflex/components/core/match.py,sha256=FkqrfHYjcGnO61r52FFJORJ3y3JzZeyY1kNIivRYI
|
|
|
110
111
|
reflex/components/core/responsive.py,sha256=ACZdtJ4a4F8B3dm1k8h6J2_UJx0Z5LDB7XHQ2ty4wAc,1911
|
|
111
112
|
reflex/components/core/sticky.py,sha256=2B3TxrwG2Rtp_lv1VkMOIF2bqSiT7qYGbqbiZiMKxKY,3856
|
|
112
113
|
reflex/components/core/sticky.pyi,sha256=M9_X-1vri4fo8vQjeT7y4OKNYGV-GqWAPox6oOMUKX0,32420
|
|
113
|
-
reflex/components/core/upload.py,sha256=
|
|
114
|
+
reflex/components/core/upload.py,sha256=ZWrwRnGoIm0geCvI9AfSampj37qHCuPCu48RcvxB--c,13361
|
|
114
115
|
reflex/components/core/upload.pyi,sha256=1tbf7VYWNf5-6RmDW7N14-uU6Eh78MAjHxBWAN1AXdk,15787
|
|
115
116
|
reflex/components/core/layout/__init__.py,sha256=znldZaj_NGt8qCZDG70GMwjMTskcvCf_2N_EjCAHwdc,30
|
|
116
117
|
reflex/components/datadisplay/__init__.py,sha256=L8pWWKNHWdUD2fbZRoEKjd_8c_hpDdGYO463hwkoIi4,438
|
|
@@ -337,13 +338,13 @@ reflex/components/tags/match_tag.py,sha256=3lba1H5pCcKkqxEHzM6DZb5s9s0yJLN4Se3vd
|
|
|
337
338
|
reflex/components/tags/tag.py,sha256=BRPODHi1R5g4VwkYLztIUJBMyDgrGPZRqB-QP_u67jk,3665
|
|
338
339
|
reflex/components/tags/tagless.py,sha256=qO7Gm4V0ITDyymHkyltfz53155ZBt-W_WIPDYy93ca0,587
|
|
339
340
|
reflex/constants/__init__.py,sha256=QAtyTYtH10D7680kp5EsKkTz1FeL9u6pvvXn-6hPFU8,2176
|
|
340
|
-
reflex/constants/base.py,sha256=
|
|
341
|
+
reflex/constants/base.py,sha256=Zj8Di8mzu_qOlGjIwGtBTheGNF3Z3Cjp2WLKoIoujPA,8596
|
|
341
342
|
reflex/constants/colors.py,sha256=n-FN7stNrvk5rCN0TAvE28dqwUeQZHue-b5q1CO0EyQ,2048
|
|
342
343
|
reflex/constants/compiler.py,sha256=Kp-b2uOHCxIcuNlYySzrmP83XSbzve7HoRlj0fX1Q8s,5750
|
|
343
344
|
reflex/constants/config.py,sha256=8OIjiBdZZJrRVHsNBheMwopE9AwBFFzau0SXqXKcrPg,1715
|
|
344
345
|
reflex/constants/custom_components.py,sha256=joJt4CEt1yKy7wsBH6vYo7_QRW0O_fWXrrTf0VY2q14,1317
|
|
345
346
|
reflex/constants/event.py,sha256=8PWobGXnUIbkRS73dRiroj5BJw4C3sbo5AHAhJTZFyM,2849
|
|
346
|
-
reflex/constants/installer.py,sha256=
|
|
347
|
+
reflex/constants/installer.py,sha256=lU6fC9rJ7K5J1BYMDldiR_cOkxayfjxyks-Qmhb5SsE,3827
|
|
347
348
|
reflex/constants/route.py,sha256=YnLgsp0iYc1lFjQ-cEqTlSE5SEeaNkaWORBoUM0-taI,2079
|
|
348
349
|
reflex/constants/state.py,sha256=6Mfr7xVcAZOj5aSy7kp0W6r8oTs7K30URgGDAAFLfPQ,294
|
|
349
350
|
reflex/constants/utils.py,sha256=e1ChEvbHfmE_V2UJvCSUhD_qTVAIhEGPpRJSqdSd6PA,780
|
|
@@ -357,7 +358,7 @@ reflex/experimental/layout.pyi,sha256=3v3xo3THcNwKv3IximCSDnItfywzuKNxjrauO2g2Ez
|
|
|
357
358
|
reflex/istate/__init__.py,sha256=LDu_3-31ZI1Jn9NWp4mM0--fDiXI0x8x3gR4-kdrziY,57
|
|
358
359
|
reflex/istate/data.py,sha256=igpPEXs_ZJvK7J3JJ1mLiKnLmS5iFJiMLesCaQZpgqs,5798
|
|
359
360
|
reflex/istate/dynamic.py,sha256=xOQ9upZVPf6ngqcLQZ9HdAAYmoWwJ8kRFPH34Q5HTiM,91
|
|
360
|
-
reflex/istate/manager.py,sha256=
|
|
361
|
+
reflex/istate/manager.py,sha256=r8CQuycOLBP1VBnXYaI9zXJbCVHAYcyRV-krILPhjyQ,30361
|
|
361
362
|
reflex/istate/proxy.py,sha256=IgsjRfMejhA-RDeWxkMx0A1NcduQF9HZvf4lQd2JUu8,25836
|
|
362
363
|
reflex/istate/storage.py,sha256=gCPoiZxuG-Rw0y-Pz3OC7rv4o08dQ_jK1fE2u8Jhxqg,4339
|
|
363
364
|
reflex/istate/wrappers.py,sha256=p8uuioXRbR5hperwbOJHUcWdu7hukLikQdoR7qrnKsI,909
|
|
@@ -372,24 +373,24 @@ reflex/utils/__init__.py,sha256=y-AHKiRQAhk2oAkvn7W8cRVTZVK625ff8tTwvZtO7S4,24
|
|
|
372
373
|
reflex/utils/build.py,sha256=HvIRNdIx6TJ1qml0SjOMxv0pNLWhlViQSXsxg7bOsBo,9189
|
|
373
374
|
reflex/utils/codespaces.py,sha256=kEQ-j-jclTukFpXDlYgNp95kYMGDrQmP3VNEoYGZ1u4,3052
|
|
374
375
|
reflex/utils/compat.py,sha256=aSJH_M6iomgHPQ4onQ153xh1MWqPi3HSYDzE68N6gZM,2635
|
|
375
|
-
reflex/utils/console.py,sha256=
|
|
376
|
+
reflex/utils/console.py,sha256=OFyXqnyhpAgXCDM7m5lokoUMjvXMohc2ftgrmcf62nc,11500
|
|
376
377
|
reflex/utils/decorator.py,sha256=DVrlVGljV5OchMs-5_y1CbbqnCWlH6lv-dFko8yHxVY,1738
|
|
377
378
|
reflex/utils/exceptions.py,sha256=Wwu7Ji2xgq521bJKtU2NgjwhmFfnG8erirEVN2h8S-g,8884
|
|
378
|
-
reflex/utils/exec.py,sha256=
|
|
379
|
-
reflex/utils/export.py,sha256=
|
|
379
|
+
reflex/utils/exec.py,sha256=SQ6zUurvkdlMQuLB0dpYYU1-llnTFsjQGHxGn4G_sTM,23173
|
|
380
|
+
reflex/utils/export.py,sha256=e4RM4NcB_dha6ke-ezFej5QaUxc8Ttr62iVaJ81Jfyw,2597
|
|
380
381
|
reflex/utils/format.py,sha256=TGPrbqByYMkUjXgFatk_UvMy4tMP8ByzVYvOB7Z6-Xo,21302
|
|
381
382
|
reflex/utils/imports.py,sha256=VpaIEq-_y8RzX4mzqPy4w5QfW7I3daPFFgI6n3tnAEI,4073
|
|
382
383
|
reflex/utils/lazy_loader.py,sha256=UREKeql_aSusSFMn6qldyol4n8qD3Sm9Wg7LLICjJgQ,4136
|
|
383
384
|
reflex/utils/misc.py,sha256=2JkJG7jQVMgRUBylck4A-a_lf2rScFsyKMZOjQw7oAw,749
|
|
384
|
-
reflex/utils/net.py,sha256=
|
|
385
|
-
reflex/utils/path_ops.py,sha256=
|
|
386
|
-
reflex/utils/prerequisites.py,sha256
|
|
387
|
-
reflex/utils/processes.py,sha256=
|
|
385
|
+
reflex/utils/net.py,sha256=HEHA8L5g7L9s0fFG4dTiZzB9PFO_0WRrlbMgpZr_GAQ,4093
|
|
386
|
+
reflex/utils/path_ops.py,sha256=_RS17IQDNr5vcoLLGZx2-z1E5WP-JgDHvaRAOgqrZiU,8154
|
|
387
|
+
reflex/utils/prerequisites.py,sha256=V3Yaf4Smlvt34ivk60CQCGOf-uTItgXihbPSG34OTAU,65789
|
|
388
|
+
reflex/utils/processes.py,sha256=Jly2gNZY--GOGaYg4mB11roMqtx83ZPiyYKQ45CTsdM,16652
|
|
388
389
|
reflex/utils/pyi_generator.py,sha256=XA5V-Qdey45mjOt4FgrHrbxkUPTD3OsfBjLJHCmatRU,45784
|
|
389
390
|
reflex/utils/redir.py,sha256=3JG0cRdfIZnFIBHHN32ynD5cfbUZa7gLRxzrxRGGl5I,1751
|
|
390
|
-
reflex/utils/registry.py,sha256=
|
|
391
|
+
reflex/utils/registry.py,sha256=DEF7csYQ5VnrZhy6ULVfMlceh7XVH0pks96lIyyThuc,1882
|
|
391
392
|
reflex/utils/serializers.py,sha256=HPxHb-5ytO25vq4tAa600OiVDhx_c6p_oHku2L3x6jc,13637
|
|
392
|
-
reflex/utils/telemetry.py,sha256=
|
|
393
|
+
reflex/utils/telemetry.py,sha256=78trO4PU71IPZhx_lmvhYGsH5MEjl15j6heAKena4vE,7760
|
|
393
394
|
reflex/utils/types.py,sha256=TiZokWTgNgmpH2zY0vVj7-hoJzDi0UtBNoL-VBLjNPQ,34604
|
|
394
395
|
reflex/vars/__init__.py,sha256=2Kv6Oh9g3ISZFESjL1al8KiO7QBZUXmLKGMCBsP-DoY,1243
|
|
395
396
|
reflex/vars/base.py,sha256=ZcGGnA7xJtPJhy60R0qZGE1Df_l7vOp51EMbLZdiHXg,104529
|
|
@@ -400,8 +401,8 @@ reflex/vars/number.py,sha256=tO7pnvFaBsedq1HWT4skytnSqHWMluGEhUbjAUMx8XQ,28190
|
|
|
400
401
|
reflex/vars/object.py,sha256=BDmeiwG8v97s_BnR1Egq3NxOKVjv9TfnREB3cz0zZtk,17322
|
|
401
402
|
reflex/vars/sequence.py,sha256=1kBrqihspyjyQ1XDqFPC8OpVGtZs_EVkOdIKBro5ilA,55249
|
|
402
403
|
scripts/hatch_build.py,sha256=-4pxcLSFmirmujGpQX9UUxjhIC03tQ_fIQwVbHu9kc0,1861
|
|
403
|
-
reflex-0.7.
|
|
404
|
-
reflex-0.7.
|
|
405
|
-
reflex-0.7.
|
|
406
|
-
reflex-0.7.
|
|
407
|
-
reflex-0.7.
|
|
404
|
+
reflex-0.7.14a4.dist-info/METADATA,sha256=M0L66VwQh_yM3B_9wIjk2D5S5nMBbq7WEKrzzIf5U7Y,11837
|
|
405
|
+
reflex-0.7.14a4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
406
|
+
reflex-0.7.14a4.dist-info/entry_points.txt,sha256=Rxt4dXc7MLBNt5CSHTehVPuSe9Xqow4HLX55nD9tQQ0,45
|
|
407
|
+
reflex-0.7.14a4.dist-info/licenses/LICENSE,sha256=dw3zLrp9f5ObD7kqS32vWfhcImfO52PMmRqvtxq_YEE,11358
|
|
408
|
+
reflex-0.7.14a4.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|