reflex 0.8.2a1__py3-none-any.whl → 0.8.3a2__py3-none-any.whl

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

Potentially problematic release.


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

Files changed (37) hide show
  1. reflex/.templates/web/utils/state.js +7 -2
  2. reflex/__init__.py +1 -0
  3. reflex/__init__.pyi +2 -0
  4. reflex/app.py +8 -11
  5. reflex/compiler/compiler.py +10 -38
  6. reflex/components/base/error_boundary.py +6 -5
  7. reflex/components/core/__init__.py +1 -0
  8. reflex/components/core/__init__.pyi +3 -0
  9. reflex/components/core/window_events.py +104 -0
  10. reflex/components/core/window_events.pyi +84 -0
  11. reflex/components/el/__init__.pyi +4 -0
  12. reflex/components/el/elements/__init__.py +1 -0
  13. reflex/components/el/elements/__init__.pyi +5 -0
  14. reflex/components/el/elements/forms.py +4 -2
  15. reflex/components/el/elements/typography.py +7 -0
  16. reflex/components/el/elements/typography.pyi +246 -0
  17. reflex/components/lucide/icon.py +303 -292
  18. reflex/components/lucide/icon.pyi +303 -292
  19. reflex/components/recharts/recharts.py +2 -2
  20. reflex/components/sonner/toast.py +1 -1
  21. reflex/config.py +3 -3
  22. reflex/constants/installer.py +2 -1
  23. reflex/environment.py +3 -0
  24. reflex/event.py +69 -8
  25. reflex/model.py +55 -0
  26. reflex/reflex.py +33 -0
  27. reflex/state.py +9 -4
  28. reflex/testing.py +180 -288
  29. reflex/utils/console.py +17 -0
  30. reflex/utils/exec.py +22 -5
  31. reflex/utils/processes.py +28 -38
  32. reflex/utils/types.py +1 -1
  33. {reflex-0.8.2a1.dist-info → reflex-0.8.3a2.dist-info}/METADATA +1 -1
  34. {reflex-0.8.2a1.dist-info → reflex-0.8.3a2.dist-info}/RECORD +37 -35
  35. {reflex-0.8.2a1.dist-info → reflex-0.8.3a2.dist-info}/WHEEL +0 -0
  36. {reflex-0.8.2a1.dist-info → reflex-0.8.3a2.dist-info}/entry_points.txt +0 -0
  37. {reflex-0.8.2a1.dist-info → reflex-0.8.3a2.dist-info}/licenses/LICENSE +0 -0
reflex/utils/exec.py CHANGED
@@ -565,6 +565,12 @@ def run_backend_prod(
565
565
  run_uvicorn_backend_prod(host, port, loglevel)
566
566
 
567
567
 
568
+ def _get_backend_workers():
569
+ from reflex.utils import processes
570
+
571
+ return processes.get_num_workers()
572
+
573
+
568
574
  def run_uvicorn_backend_prod(host: str, port: int, loglevel: LogLevel):
569
575
  """Run the backend in production mode using Uvicorn.
570
576
 
@@ -585,6 +591,7 @@ def run_uvicorn_backend_prod(host: str, port: int, loglevel: LogLevel):
585
591
  "uvicorn",
586
592
  *("--host", host),
587
593
  *("--port", str(port)),
594
+ *("--workers", str(_get_backend_workers())),
588
595
  "--factory",
589
596
  app_module,
590
597
  ]
@@ -596,10 +603,12 @@ def run_uvicorn_backend_prod(host: str, port: int, loglevel: LogLevel):
596
603
 
597
604
  # Our default args, then env args (env args win on conflicts)
598
605
  command = [
606
+ sys.executable,
607
+ "-m",
599
608
  "gunicorn",
600
609
  "--preload",
601
- "--worker-class",
602
- "uvicorn.workers.UvicornH11Worker",
610
+ *("--worker-class", "uvicorn.workers.UvicornH11Worker"),
611
+ *("--threads", str(_get_backend_workers())),
603
612
  *("--bind", f"{host}:{port}"),
604
613
  *env_args,
605
614
  f"{app_module}()",
@@ -632,6 +641,8 @@ def run_granian_backend_prod(host: str, port: int, loglevel: LogLevel):
632
641
  from reflex.utils import processes
633
642
 
634
643
  command = [
644
+ sys.executable,
645
+ "-m",
635
646
  "granian",
636
647
  *("--log-level", "critical"),
637
648
  *("--host", host),
@@ -639,13 +650,19 @@ def run_granian_backend_prod(host: str, port: int, loglevel: LogLevel):
639
650
  *("--interface", str(Interfaces.ASGI)),
640
651
  *("--factory", get_app_instance_from_file()),
641
652
  ]
653
+
654
+ extra_env = {
655
+ environment.REFLEX_SKIP_COMPILE.name: "true", # skip compile for prod backend
656
+ }
657
+
658
+ if "GRANIAN_WORKERS" not in os.environ:
659
+ extra_env["GRANIAN_WORKERS"] = str(_get_backend_workers())
660
+
642
661
  processes.new_process(
643
662
  command,
644
663
  run=True,
645
664
  show_logs=True,
646
- env={
647
- environment.REFLEX_SKIP_COMPILE.name: "true"
648
- }, # skip compile for prod backend
665
+ env=extra_env,
649
666
  )
650
667
 
651
668
 
reflex/utils/processes.py CHANGED
@@ -8,6 +8,7 @@ import os
8
8
  import signal
9
9
  import socket
10
10
  import subprocess
11
+ import sys
11
12
  from collections.abc import Callable, Generator, Sequence
12
13
  from concurrent import futures
13
14
  from contextlib import closing
@@ -68,12 +69,11 @@ def _can_bind_at_port(
68
69
  """
69
70
  try:
70
71
  with closing(socket.socket(address_family, socket.SOCK_STREAM)) as sock:
72
+ if sys.platform != "win32":
73
+ sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
71
74
  sock.bind((address, port))
72
- except OverflowError:
73
- return False
74
- except PermissionError:
75
- return False
76
- except OSError:
75
+ except (OverflowError, PermissionError, OSError) as e:
76
+ console.warn(f"Unable to bind to {address}:{port} due to: {e}.")
77
77
  return False
78
78
  return True
79
79
 
@@ -87,38 +87,13 @@ def is_process_on_port(port: int) -> bool:
87
87
  Returns:
88
88
  Whether a process is running on the given port.
89
89
  """
90
- return not _can_bind_at_port( # Test IPv4 localhost (127.0.0.1)
91
- socket.AF_INET, "127.0.0.1", port
92
- ) or not _can_bind_at_port(
93
- socket.AF_INET6, "::1", port
94
- ) # Test IPv6 localhost (::1)
90
+ return (
91
+ not _can_bind_at_port(socket.AF_INET, "", port) # Test IPv4 local network
92
+ or not _can_bind_at_port(socket.AF_INET6, "", port) # Test IPv6 local network
93
+ )
95
94
 
96
95
 
97
- def change_port(port: int, _type: str) -> int:
98
- """Change the port.
99
-
100
- Args:
101
- port: The port.
102
- _type: The type of the port.
103
-
104
- Returns:
105
- The new port.
106
-
107
- Raises:
108
- Exit: If the port is invalid or if the new port is occupied.
109
- """
110
- new_port = port + 1
111
- if new_port < 0 or new_port > 65535:
112
- console.error(
113
- f"The {_type} port: {port} is invalid. It must be between 0 and 65535."
114
- )
115
- raise click.exceptions.Exit(1)
116
- if is_process_on_port(new_port):
117
- return change_port(new_port, _type)
118
- console.info(
119
- f"The {_type} will run on port [bold underline]{new_port}[/bold underline]."
120
- )
121
- return new_port
96
+ MAXIMUM_PORT = 2**16 - 1
122
97
 
123
98
 
124
99
  def handle_port(service_name: str, port: int, auto_increment: bool) -> int:
@@ -137,13 +112,28 @@ def handle_port(service_name: str, port: int, auto_increment: bool) -> int:
137
112
  Exit:when the port is in use.
138
113
  """
139
114
  console.debug(f"Checking if {service_name.capitalize()} port: {port} is in use.")
115
+
140
116
  if not is_process_on_port(port):
141
117
  console.debug(f"{service_name.capitalize()} port: {port} is not in use.")
142
118
  return port
119
+
143
120
  if auto_increment:
144
- return change_port(port, service_name)
145
- console.error(f"{service_name.capitalize()} port: {port} is already in use.")
146
- raise click.exceptions.Exit
121
+ for new_port in range(port + 1, MAXIMUM_PORT + 1):
122
+ if not is_process_on_port(new_port):
123
+ console.info(
124
+ f"The {service_name} will run on port [bold underline]{new_port}[/bold underline]."
125
+ )
126
+ return new_port
127
+ console.debug(
128
+ f"{service_name.capitalize()} port: {new_port} is already in use."
129
+ )
130
+
131
+ # If we reach here, it means we couldn't find an available port.
132
+ console.error(f"Unable to find an available port for {service_name}")
133
+ else:
134
+ console.error(f"{service_name.capitalize()} port: {port} is already in use.")
135
+
136
+ raise click.exceptions.Exit(1)
147
137
 
148
138
 
149
139
  @overload
reflex/utils/types.py CHANGED
@@ -478,7 +478,7 @@ def get_attribute_access_type(cls: GenericType, name: str) -> GenericType | None
478
478
  if type_ in PrimitiveToAnnotation:
479
479
  type_ = PrimitiveToAnnotation[type_]
480
480
  type_ = type_[item_type] # pyright: ignore [reportIndexIssue]
481
- if column.nullable:
481
+ if hasattr(column, "nullable") and column.nullable:
482
482
  type_ = type_ | None
483
483
  return type_
484
484
  if name in insp.all_orm_descriptors:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: reflex
3
- Version: 0.8.2a1
3
+ Version: 0.8.3a2
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
@@ -1,21 +1,21 @@
1
- reflex/__init__.py,sha256=S_nJPFaTYwyxSzfOpACFxlSe2Vc8rQGr5ZDeyRSDiYQ,10264
2
- reflex/__init__.pyi,sha256=LHVB-SgdoFyB5aLiqiLEezMAd-vJje79ndxDxt9HWz8,10003
1
+ reflex/__init__.py,sha256=xGw7ZbGlWsa-OShPv-I81RuUOACxHGTQFlX17x5n9Hg,10328
2
+ reflex/__init__.pyi,sha256=GfoYvxYXK1GFGbUsMA8Su7IFoqupV_xxG6__KSgnitA,10097
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=AibNjgSeaL5h2P3lGT7SJkqNhRFU2wmdkl2cRRHl15Y,75677
5
+ reflex/app.py,sha256=xrP6jq5D5tILtNzNluhRJ_kkWuRIekj8NFA5plA-Spc,75596
6
6
  reflex/assets.py,sha256=l5O_mlrTprC0lF7Rc_McOe3a0OtSLnRdNl_PqCpDCBA,3431
7
7
  reflex/base.py,sha256=Oh664QL3fZEHErhUasFqP7fE4olYf1y-9Oj6uZI2FCU,1173
8
- reflex/config.py,sha256=Pg7hv8U6WGkRofATMJJMJTYFTZFpbA9l9yMAGiSgnWE,19359
9
- reflex/environment.py,sha256=PQF1QSLgu_tpUUP0vXWdvuC4t3wFts94nw2urt9Id8o,23227
10
- reflex/event.py,sha256=JdhRwJO1MYni4YfZ13NPSv0AWYHpLwk3L4WltH07L2c,70070
11
- reflex/model.py,sha256=xED7blemoiKxPFaOkCMrSayjjon7AJp8t5g459p7dGs,17646
8
+ reflex/config.py,sha256=HgJ57Op-glTro23GoQKmyXwUplvGYgZFKjvClYpD27s,19359
9
+ reflex/environment.py,sha256=aSZwDavbkKdNKL2oMiZvSeIiWps65eIMr0_xK826EFA,23385
10
+ reflex/event.py,sha256=QjSYc91n8XwSXgjQ3cCWwiaZwS0IbZL5z4LiPRS6ioA,72774
11
+ reflex/model.py,sha256=l1-6fm7NHRFWH-xK9oV9UzAVfvKeUXG1f-tCrF7vmfI,19403
12
12
  reflex/page.py,sha256=Bn8FTlUtjjKwUtpQA5r5eaWE_ZUb8i4XgrQi8FWbzNA,1880
13
13
  reflex/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
- reflex/reflex.py,sha256=eUP0GevShUc1nodfA5_ewB3hgefWU0_x166HGCY8QTs,21606
14
+ reflex/reflex.py,sha256=1sRT6INn5ZdbPZAL-g5C9hU6ZwMEMHJV6gUvNTx3KSg,22616
15
15
  reflex/route.py,sha256=UfhKxFwe3EYto66TZv5K2Gp6ytRbcL-_v72DJ5girEs,7691
16
- reflex/state.py,sha256=OQKUTsa-kuehbt2U4esJT4Cq8lp6e3I-8QUk0pm2XB4,91956
16
+ reflex/state.py,sha256=mrYV9wEdJ9DdWbAadgdWHbxc6onOU56dT8f4zkbznPo,92127
17
17
  reflex/style.py,sha256=JxbXXA4MTnXrk0XHEoMBoNC7J-M2oL5Hl3W_QmXvmBg,13222
18
- reflex/testing.py,sha256=6EXQN9K0tYfzEDe2aSRh4xLM_Jb_oIrI_qH2F_e0KXc,39423
18
+ reflex/testing.py,sha256=92KUvlXE9w0N4IhqVOEOF8gIFJGuRxj7edeSWJrPGgk,35092
19
19
  reflex/.templates/apps/blank/assets/favicon.ico,sha256=baxxgDAQ2V4-G5Q4S2yK5uUJTUGkv-AOWBQ0xd6myUo,4286
20
20
  reflex/.templates/apps/blank/code/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
21
  reflex/.templates/apps/blank/code/blank.py,sha256=wry9E3VjC7qtt_gzqNOyo4KZAAlzVyNp3uhFkcLZmM0,898
@@ -52,7 +52,7 @@ reflex/.templates/web/components/shiki/code.js,sha256=4Es1pxsr-lX4hTQ5mglrwwC6O_
52
52
  reflex/.templates/web/styles/__reflex_style_reset.css,sha256=qbC6JIT643YEsvSQ0D7xBmWE5vXy94JGrKNihRuEjnA,8913
53
53
  reflex/.templates/web/utils/client_side_routing.js,sha256=lRNgEGCLfTejh8W3aCuBdFuko6UI2vetk64j8wLT5Uk,1650
54
54
  reflex/.templates/web/utils/react-theme.js,sha256=4CNLOcjLS5tiRp0TIgKK7trf8bSLWtmeDVhFP6BLe80,2349
55
- reflex/.templates/web/utils/state.js,sha256=U5ihE4pOVtyTHD4JN8Jz82KVFZaWdwfpNu1wXU3h8Is,35992
55
+ reflex/.templates/web/utils/state.js,sha256=Ibr-o2RIjWaalsy5xQS3j9DOwY1-U6hGsSOaUAHwd8c,36152
56
56
  reflex/.templates/web/utils/helpers/dataeditor.js,sha256=pG6MgsHuStDR7-qPipzfiK32j9bKDBa-4hZ0JSUo4JM,1623
57
57
  reflex/.templates/web/utils/helpers/debounce.js,sha256=xGhtTRtS_xIcaeqnYVvYJNseLgQVk-DW-eFiHJYO9As,528
58
58
  reflex/.templates/web/utils/helpers/paste.js,sha256=ef30HsR83jRzzvZnl8yV79yqFP8TC_u8SlN99cCS_OM,1799
@@ -63,7 +63,7 @@ reflex/app_mixins/lifespan.py,sha256=9rrdVUY0nHyk3gj31WJm7mw6I7KHBNtvSs9tZdwUm4I
63
63
  reflex/app_mixins/middleware.py,sha256=BKhe0jUFO1_TylEC48LUZyaeYyPmAYW-NV4H5Rw221k,2848
64
64
  reflex/app_mixins/mixin.py,sha256=R1YncalqDrbdPZvpKVbm72ZKmQZxYAWfuFq9JknzTqQ,305
65
65
  reflex/compiler/__init__.py,sha256=r8jqmDSFf09iV2lHlNhfc9XrTLjNxfDNwPYlxS4cmHE,27
66
- reflex/compiler/compiler.py,sha256=DjhNeh3u_OJ-fOYEmtNlAsNHKuzlYMkZU0wy5WdxHSU,29869
66
+ reflex/compiler/compiler.py,sha256=r-qvhlz0I7Gw__rIFRjt2vCbUYW2yl-rHvznyO7SS4Q,28835
67
67
  reflex/compiler/templates.py,sha256=mQifVgvE7cKyzMFL9F5jxdJb9KFxucWJa7nuOp09ZUo,6002
68
68
  reflex/compiler/utils.py,sha256=v2LGz6WAFOSRpn3H0l215E94R7r7hB3s9vseWrQiXUQ,19045
69
69
  reflex/components/__init__.py,sha256=eWpgWFbSQDj2TpGp6StEbxU7roQgzY7ZM0XIcIc5RE8,588
@@ -82,7 +82,7 @@ reflex/components/base/body.py,sha256=KLPOhxVsKyjPwrY9AziCOOG_c9ckOqIhI4n2i3_Q3N
82
82
  reflex/components/base/body.pyi,sha256=yEILxDAFGWC4_8eF1PJzLIyAiVKEe91X1aowzW0RqrY,8785
83
83
  reflex/components/base/document.py,sha256=Fr7y22NbeKeiz8kWPH2q5BpFjKdq-AmY-sxZilee_H8,636
84
84
  reflex/components/base/document.pyi,sha256=lOdqJvR2BwODxfR0bOeSKjnZd175AIT3-su9qnPScrQ,12568
85
- reflex/components/base/error_boundary.py,sha256=lptj-mF_-i_9UlaqDCwNun3Y8i76ME1hzsmGoQdKCOk,6289
85
+ reflex/components/base/error_boundary.py,sha256=hGp0yjFjBLutbplZkI3fkHBjIWBlYOoZ_1ISth7jEV0,6351
86
86
  reflex/components/base/error_boundary.pyi,sha256=JW4FciEY2mfV0md9EvGAdhln2SKB9n8llTdfSAhZCKA,3056
87
87
  reflex/components/base/fragment.py,sha256=ys7wkokq-N8WBxa9fqkEaNIrBlSximyD7vqlFVe02hQ,342
88
88
  reflex/components/base/fragment.pyi,sha256=GrpnNRRNJLEVrOeBwZmVwT7OjsiDqxF2x1wvd9vwRPY,2531
@@ -94,8 +94,8 @@ reflex/components/base/script.py,sha256=SqH4UIE9sZgFwvoc239qeLwzktRvNBPZbiGFRj4h
94
94
  reflex/components/base/script.pyi,sha256=tE8_KuihvLyhhsi_PPmImdMFSMvlPAGDq8npHZgLfUI,10653
95
95
  reflex/components/base/strict_mode.py,sha256=_Rl2uGzL8gXTANOpoSU7uxsUQRH5JeTk2EIceWJJa5E,251
96
96
  reflex/components/base/strict_mode.pyi,sha256=pAgRgQJ9f6fgFrcIGpx7HahtojGxaoJ8khXpHYNxtjU,2510
97
- reflex/components/core/__init__.py,sha256=81araQcvIlVNXr1h-kQHaUK46sV0lfJrAlZbishb7-g,1347
98
- reflex/components/core/__init__.pyi,sha256=3IZ4XbJAHFR0aKTo3FhF3-t_qJVyfGmFK3GU_IIxLGs,1865
97
+ reflex/components/core/__init__.py,sha256=IRNnqXeQUT_Mhiaca05E3vKldxXzfkHGv5EDz_jAIqk,1418
98
+ reflex/components/core/__init__.pyi,sha256=Nr68v8pdwvBX93HhV-gHzPPYLAvRJ63kNrdICzBJxPk,1991
99
99
  reflex/components/core/auto_scroll.py,sha256=3jtFUqMUM1R_YyxWjbNVLiLktw6HHp50EzIFTkFtgto,3616
100
100
  reflex/components/core/auto_scroll.pyi,sha256=bZvBS6HBGMZrN8sZIuJs2jaW2efN0yIr_Pd-C0cxgO0,9019
101
101
  reflex/components/core/banner.py,sha256=JEutUBT1UfpgnaDJthE2BoSzpIEE-cSHoQZlEvQb0dw,18471
@@ -120,6 +120,8 @@ reflex/components/core/sticky.py,sha256=2B3TxrwG2Rtp_lv1VkMOIF2bqSiT7qYGbqbiZiMK
120
120
  reflex/components/core/sticky.pyi,sha256=U3VyCnx4hWWORd4yIiIe-mu_IdsPry2iMXrGMw2tLgQ,32906
121
121
  reflex/components/core/upload.py,sha256=b4-ubt4dznL5LDA7UCKNdWcdCX9aLOX2vNFdv4GlRdg,13544
122
122
  reflex/components/core/upload.pyi,sha256=mLJsrIXETKfwqO1nEpoE0yVrGIFXdadx9k745KyyBms,16407
123
+ reflex/components/core/window_events.py,sha256=opbuO20zVxt252kQLk49V7cltb_Um2oh7iePeGNJ538,3355
124
+ reflex/components/core/window_events.pyi,sha256=vZlbONRAopmXNhWwk-UIQtzUu_mDbFdsp4EhT-jMk0U,3336
123
125
  reflex/components/core/layout/__init__.py,sha256=znldZaj_NGt8qCZDG70GMwjMTskcvCf_2N_EjCAHwdc,30
124
126
  reflex/components/datadisplay/__init__.py,sha256=L8pWWKNHWdUD2fbZRoEKjd_8c_hpDdGYO463hwkoIi4,438
125
127
  reflex/components/datadisplay/__init__.pyi,sha256=H3LZkWdrw3RTv_csaIT8qoClgAJTonlGZ5ZMeGMV0Bs,551
@@ -131,18 +133,18 @@ reflex/components/datadisplay/logo.py,sha256=xvg5TRVRSi2IKn7Kg4oYzWcaFMHfXxUaCp0
131
133
  reflex/components/datadisplay/shiki_code_block.py,sha256=qCp4jZO3Ek4mR_1Qs4oxLh-GCEo6VBlpb8B9MDDdw4Y,24503
132
134
  reflex/components/datadisplay/shiki_code_block.pyi,sha256=FXGWyG7u3RZQIwhK4M0YAYXRaJ-Pd-Aof_wjrlG7SrY,57323
133
135
  reflex/components/el/__init__.py,sha256=JJHaCMvCh5_nsuyaWRVQ8d75A13lvaq4cpm6HoxUYuM,607
134
- reflex/components/el/__init__.pyi,sha256=DlqLHC_TT0lbUhPCrMFi3SKgRCUSMYu-h-V0KkaUP5E,6241
136
+ reflex/components/el/__init__.pyi,sha256=zmdFPcH1ta6bA1JiY3DvIXx7wPtuIFmThrzq2mk_D_E,6293
135
137
  reflex/components/el/element.py,sha256=stGVO6A2waCHq2CGQqR_g798hDKkuSZerwB0tYfZpRE,582
136
138
  reflex/components/el/element.pyi,sha256=z8WHnR-wzs3XGaqJpS6Gj02S_MMljLYp9F3fn6F3DYA,2498
137
139
  reflex/components/el/constants/__init__.py,sha256=9h2hdnOSltQLDEM6w1nGmv1B8Bf0tMquTCi5RhvBT6c,113
138
140
  reflex/components/el/constants/html.py,sha256=hIebFwWritMmd3VCMYBNg0k_2UM1QDIhT_Q-EQsCWEA,7175
139
141
  reflex/components/el/constants/react.py,sha256=f1-Vo8iWn2jSrR7vy-UwGbGRvw88UUZnbb3Rb56MSS4,15554
140
142
  reflex/components/el/constants/reflex.py,sha256=7ChVeOvzjovZLHa-4vjWEGDqHsefV3tNsa8TKHWFaXM,1697
141
- reflex/components/el/elements/__init__.py,sha256=IqclwtTctrEpodT3Wulei7RiB2Q5oWTzA7xpNPc6M54,2761
142
- reflex/components/el/elements/__init__.pyi,sha256=cv9TAlYcXurFWuF05zkWfVWIHw9C8P_vGdJpT51xpBQ,8540
143
+ reflex/components/el/elements/__init__.py,sha256=PKchWo_qdR2oSedspbMN1kDmB7OZG90Yxt-nzDenMBs,2779
144
+ reflex/components/el/elements/__init__.pyi,sha256=0efVjUvi7r1UsCKf4U3qPyRhEJVcqs7DdBTa3dVTVbA,8610
143
145
  reflex/components/el/elements/base.py,sha256=4jnwyCQUHvWcIfwiIWVCiIC_jbwZlkAiOgx73t7tdw8,3075
144
146
  reflex/components/el/elements/base.pyi,sha256=-wd-cLLOx1rXdtAJ_1UlF9B4mtTJyZAs1Y1uYMcp-0M,10204
145
- reflex/components/el/elements/forms.py,sha256=sPGCaCMxAgAXK3rkAKWI01Ggg8hkunkpZEgmchm5HkQ,21655
147
+ reflex/components/el/elements/forms.py,sha256=nZzPKCvStfMAJ3IGdUw2rf_5ISvN8nNdoEEFW-3LtFk,21751
146
148
  reflex/components/el/elements/forms.pyi,sha256=mq21H_9lIY53lWtmR2iIZMF5hOEaauFdIDU0nimSXbk,170986
147
149
  reflex/components/el/elements/inline.py,sha256=q3Ku_x8L9NaXrYQovCfkWwZ5AfXG0VyhGN_OT73kA0Y,4126
148
150
  reflex/components/el/elements/inline.pyi,sha256=mWgJ4a_2De__0ZpailJXDpDonEE0861zrIO9Bc039iU,235400
@@ -158,14 +160,14 @@ reflex/components/el/elements/sectioning.py,sha256=wVkR35dt4DMHKcJN5f0aglH16xSZz
158
160
  reflex/components/el/elements/sectioning.pyi,sha256=eAgzFAcXZMBJB5zpTymcSnIgp1K-7HFXN4xlkWDgtN8,125073
159
161
  reflex/components/el/elements/tables.py,sha256=Rt-C07s39TQm_dHSMaly2J7yD0OZhx9q6G2k5k2IkMo,2176
160
162
  reflex/components/el/elements/tables.pyi,sha256=Oum8D0o1GS7f8gqmv7uqK-H9G2onHSQDMZI9OknGX_s,85304
161
- reflex/components/el/elements/typography.py,sha256=78XFCj1rzFd4a3exppmvwJ9H6UQca2Wj9oLmB1aZaaY,2460
162
- reflex/components/el/elements/typography.pyi,sha256=bvzEl9aiewu7JR2PIY9UnpkZKNOBkDzAjbAcNwo-YK4,126233
163
+ reflex/components/el/elements/typography.py,sha256=0Oj94kwTY2-Get-xr8FwwIEpZmc_hIwoC6XRXEIxvPg,2567
164
+ reflex/components/el/elements/typography.pyi,sha256=hdcV9mcSSBTF2sufql7S6720a5RL1yisOCFxYpET1T0,134546
163
165
  reflex/components/gridjs/__init__.py,sha256=xJwDm1AZ70L5-t9LLqZwGUtDpijbf1KuMYDT-j8g3pM,88
164
166
  reflex/components/gridjs/datatable.py,sha256=7JKrRw1zkpFB0_wwoaIhrVrldsm7-dyi3PASgqLq8Hc,4224
165
167
  reflex/components/gridjs/datatable.pyi,sha256=rJZO5_kdS-JgsLyR4_vVA-b_SfieGynOW2z_DzNbKqM,5445
166
168
  reflex/components/lucide/__init__.py,sha256=EggTK2MuQKQeOBLKW-mF0VaDK9zdWBImu1HO2dvHZbE,73
167
- reflex/components/lucide/icon.py,sha256=9nId075KvvWEVS032vP3qDrrc2N0tOHfvVQb6w1obDQ,34709
168
- reflex/components/lucide/icon.pyi,sha256=r5-UzFXp4n7ZgXEhzjLwLeiLx1VITHYWleqqPAY8aHU,37868
169
+ reflex/components/lucide/icon.py,sha256=1vzI8WDjAJlSkt_4FSOmxyTCTANBbROfgbvVDMma7Hs,34871
170
+ reflex/components/lucide/icon.pyi,sha256=d5sfVhduWYUkLEmimyHUOSrWlXCMcNok-o7LtOHLd1Y,38030
169
171
  reflex/components/markdown/__init__.py,sha256=Dfl1At5uYoY7H4ufZU_RY2KOGQDLtj75dsZ2BTqqAns,87
170
172
  reflex/components/markdown/markdown.py,sha256=scDHnmn2n4KHXS2Imqa1jw1wTk1ewCB2MojC9NgKGHQ,15503
171
173
  reflex/components/markdown/markdown.pyi,sha256=b1_NsT165Hx7MuzfkiEBaH5JNyrCRa_vuzIYC4mHjq4,4452
@@ -324,10 +326,10 @@ reflex/components/recharts/general.py,sha256=DuPDfccUWWehc40ji7_JSYHX_AoJyGn_-4y
324
326
  reflex/components/recharts/general.pyi,sha256=-FcVLHn30AR7SzbjETpfKD5mXfOcv3GJO0w9c6MBmWQ,24242
325
327
  reflex/components/recharts/polar.py,sha256=zocHpwWQ0lbg4BTnEBwQ6J9SSJsOYRwZGf9UPzxoNKs,15682
326
328
  reflex/components/recharts/polar.pyi,sha256=6_karFX40GH0SwJK7o_VVHu4pn4o-UKx470cxayWnfg,27717
327
- reflex/components/recharts/recharts.py,sha256=gQ1zk6ickKV86M4rCB7o3Ym4KVH4s4vlfMMNa5IS2Jo,3221
329
+ reflex/components/recharts/recharts.py,sha256=CrkZ1Ez6QhDpDvlL0TkeT_qtBg0keLaGS9L2qfgr8zI,3221
328
330
  reflex/components/recharts/recharts.pyi,sha256=9iHH1FiIGNYwn1zqyU2iqa9n71Q04AVfy9gWKkUirN0,7344
329
331
  reflex/components/sonner/__init__.py,sha256=L_mdRIy7-ccRGSz5VK6J8O-c-e-D1p9xWw29_ErrvGg,68
330
- reflex/components/sonner/toast.py,sha256=W3JF5G1pXNu5FjIUDXzmPTiO6vRJ2dNjfSjaqji68do,12392
332
+ reflex/components/sonner/toast.py,sha256=T_Vsq6wPnDLNeL6bmxu-DZsRRpoHm4Z4lqKW7URbSgY,12392
331
333
  reflex/components/sonner/toast.pyi,sha256=uBGCcTFePImUcG0wBDu80i9fvK5RZXdtl5k9b4sorhA,7788
332
334
  reflex/components/tags/__init__.py,sha256=Pc0JU-Tv_W7KCsydXgbKmu7w2VtHNkI6Cx2hTkNhW_Q,152
333
335
  reflex/components/tags/cond_tag.py,sha256=YHxqq34PD-1D88YivO7kn7FsbW8SfPS2McNg7j_nncI,588
@@ -342,7 +344,7 @@ reflex/constants/compiler.py,sha256=VoA1vWZpl-2EdIOhAiOLwSX4S-bFLbkiESlNBmN08NQ,
342
344
  reflex/constants/config.py,sha256=8OIjiBdZZJrRVHsNBheMwopE9AwBFFzau0SXqXKcrPg,1715
343
345
  reflex/constants/custom_components.py,sha256=joJt4CEt1yKy7wsBH6vYo7_QRW0O_fWXrrTf0VY2q14,1317
344
346
  reflex/constants/event.py,sha256=tgoynWQi2L0_Kqc3XhXo7XXL76A-OKhJGHRrNjm7gFw,2885
345
- reflex/constants/installer.py,sha256=SxiOr0fPuwDBFWKDDlq05HMM6rpfr5xISfP5ZHGEUSM,4113
347
+ reflex/constants/installer.py,sha256=hPfNCA3HiFf67-BBYL-KK4Fi71c-EZXF71mrQNCojfs,4141
346
348
  reflex/constants/route.py,sha256=UBjqaAOxiUxlDZCSY4O2JJChKvA4MZrhUU0E5rNvKbM,2682
347
349
  reflex/constants/state.py,sha256=uF_7-M9Gid-P3DjAOq4F1ERplyZhiNccowo_jLrdJrg,323
348
350
  reflex/constants/utils.py,sha256=e1ChEvbHfmE_V2UJvCSUhD_qTVAIhEGPpRJSqdSd6PA,780
@@ -371,10 +373,10 @@ reflex/utils/__init__.py,sha256=y-AHKiRQAhk2oAkvn7W8cRVTZVK625ff8tTwvZtO7S4,24
371
373
  reflex/utils/build.py,sha256=lk8hE69onG95dv-LxRhjtEugct1g-KcWPUDorzqeGIE,7964
372
374
  reflex/utils/codespaces.py,sha256=kEQ-j-jclTukFpXDlYgNp95kYMGDrQmP3VNEoYGZ1u4,3052
373
375
  reflex/utils/compat.py,sha256=aSJH_M6iomgHPQ4onQ153xh1MWqPi3HSYDzE68N6gZM,2635
374
- reflex/utils/console.py,sha256=ZgRJdsjfvZ-WXvFB1zfCE0NDS1TCMYZ_FWocMOr-RAU,11531
376
+ reflex/utils/console.py,sha256=s9M3yL7G8-mW3gXuVBMOgoDYk9EfHJ0sL1XADwye67o,12088
375
377
  reflex/utils/decorator.py,sha256=DVrlVGljV5OchMs-5_y1CbbqnCWlH6lv-dFko8yHxVY,1738
376
378
  reflex/utils/exceptions.py,sha256=Wwu7Ji2xgq521bJKtU2NgjwhmFfnG8erirEVN2h8S-g,8884
377
- reflex/utils/exec.py,sha256=LpCwG34VymgJMfwuWpkImU7Bqh0E4i9SDeGbSHZXkoM,21562
379
+ reflex/utils/exec.py,sha256=_LmatrFVNQJPJEqh6Ov3p14UQedPHZj92hLb_HmEqHs,21993
378
380
  reflex/utils/export.py,sha256=Z2AHuhkxGQzOi9I90BejQ4qEcD0URr2i-ZU5qTJt7eQ,2562
379
381
  reflex/utils/format.py,sha256=6lgPpYsArWDwGuC_BT-X9g4BnCG14vvH7-oNjrCA5Xc,21119
380
382
  reflex/utils/imports.py,sha256=Ov-lqv-PfsPl3kTEW13r5aDauIfn6TqzEMyv42RKLOA,3761
@@ -383,13 +385,13 @@ reflex/utils/misc.py,sha256=zbYIl7mI08is9enr851sj7PnDaNeVVvq5jDmQ4wdlCE,2879
383
385
  reflex/utils/net.py,sha256=HEHA8L5g7L9s0fFG4dTiZzB9PFO_0WRrlbMgpZr_GAQ,4093
384
386
  reflex/utils/path_ops.py,sha256=_RS17IQDNr5vcoLLGZx2-z1E5WP-JgDHvaRAOgqrZiU,8154
385
387
  reflex/utils/prerequisites.py,sha256=L2tCFqqiYqygRbQ0JMMBduMdsMkKJLDvzGKZnvI1Enc,66001
386
- reflex/utils/processes.py,sha256=lhUWsk1vJWoc0d62W6FN4ngArlqJNxlVvWnEJKpiPEo,16936
388
+ reflex/utils/processes.py,sha256=q9RwI82t4zaVs7_xUGC8HNk9x6QCY9rcgEGitfqzG10,16918
387
389
  reflex/utils/pyi_generator.py,sha256=HdmUVs50Bk7MAMFSvpATRhH--_50w-9URMFnjLlwT40,46086
388
390
  reflex/utils/redir.py,sha256=3JG0cRdfIZnFIBHHN32ynD5cfbUZa7gLRxzrxRGGl5I,1751
389
391
  reflex/utils/registry.py,sha256=DEF7csYQ5VnrZhy6ULVfMlceh7XVH0pks96lIyyThuc,1882
390
392
  reflex/utils/serializers.py,sha256=sVLfbWIBKPpmo0CVVxoxXGu0K3R9mYMWgaI02LXZmcM,13952
391
393
  reflex/utils/telemetry.py,sha256=9k5S6dST_6rylhKyLMlnwzsxZ4p_Q0oikxOBpTckQxw,7448
392
- reflex/utils/types.py,sha256=P358rXSLGXBdeE-RpT7DD6q4_YkgfNMEOHoyIJLztVU,38358
394
+ reflex/utils/types.py,sha256=jFHfd2-yHWV61L7YP2gc9Zj2ZLwdthHOOfRIc_PAWH0,38390
393
395
  reflex/vars/__init__.py,sha256=85eXMt32bFoKtMdH3KxYRMD8mtnKyYiQcThPxJLoW1k,1359
394
396
  reflex/vars/base.py,sha256=IGCU5iwZSsVMPVQqODEjmHJrskqfpfMIQ2yzcVFMoSQ,112940
395
397
  reflex/vars/datetime.py,sha256=F2Jv_bfydipFSkIQ1F6x5MnSgFEyES9Vq5RG_uGH81E,5118
@@ -399,8 +401,8 @@ reflex/vars/number.py,sha256=tO7pnvFaBsedq1HWT4skytnSqHWMluGEhUbjAUMx8XQ,28190
399
401
  reflex/vars/object.py,sha256=BDmeiwG8v97s_BnR1Egq3NxOKVjv9TfnREB3cz0zZtk,17322
400
402
  reflex/vars/sequence.py,sha256=1kBrqihspyjyQ1XDqFPC8OpVGtZs_EVkOdIKBro5ilA,55249
401
403
  scripts/hatch_build.py,sha256=-4pxcLSFmirmujGpQX9UUxjhIC03tQ_fIQwVbHu9kc0,1861
402
- reflex-0.8.2a1.dist-info/METADATA,sha256=rWK98kWX3eiVK4F-E21E-S71p9_Bol6_q0KpvvnZz2k,12371
403
- reflex-0.8.2a1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
404
- reflex-0.8.2a1.dist-info/entry_points.txt,sha256=Rxt4dXc7MLBNt5CSHTehVPuSe9Xqow4HLX55nD9tQQ0,45
405
- reflex-0.8.2a1.dist-info/licenses/LICENSE,sha256=dw3zLrp9f5ObD7kqS32vWfhcImfO52PMmRqvtxq_YEE,11358
406
- reflex-0.8.2a1.dist-info/RECORD,,
404
+ reflex-0.8.3a2.dist-info/METADATA,sha256=EXg7yHNzrGXELUGgv9wt1N8WikdQ3NDHBzPsqqR2I_k,12371
405
+ reflex-0.8.3a2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
406
+ reflex-0.8.3a2.dist-info/entry_points.txt,sha256=Rxt4dXc7MLBNt5CSHTehVPuSe9Xqow4HLX55nD9tQQ0,45
407
+ reflex-0.8.3a2.dist-info/licenses/LICENSE,sha256=dw3zLrp9f5ObD7kqS32vWfhcImfO52PMmRqvtxq_YEE,11358
408
+ reflex-0.8.3a2.dist-info/RECORD,,