flet 0.70.0.dev5774__py3-none-any.whl → 0.70.0.dev5835__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 flet might be problematic. Click here for more details.
- flet/__init__.py +32 -4
- flet/components/__init__.py +0 -0
- flet/components/component.py +346 -0
- flet/components/component_decorator.py +24 -0
- flet/components/component_owned.py +22 -0
- flet/components/hooks/__init__.py +0 -0
- flet/components/hooks/hook.py +12 -0
- flet/components/hooks/use_callback.py +28 -0
- flet/components/hooks/use_context.py +91 -0
- flet/components/hooks/use_effect.py +104 -0
- flet/components/hooks/use_memo.py +52 -0
- flet/components/hooks/use_state.py +58 -0
- flet/components/memo.py +34 -0
- flet/components/observable.py +269 -0
- flet/components/public_utils.py +10 -0
- flet/components/utils.py +85 -0
- flet/controls/base_control.py +34 -10
- flet/controls/base_page.py +44 -40
- flet/controls/context.py +22 -1
- flet/controls/control.py +12 -6
- flet/controls/control_event.py +19 -2
- flet/controls/core/animated_switcher.py +3 -2
- flet/controls/core/autofill_group.py +6 -2
- flet/controls/core/column.py +5 -0
- flet/controls/core/dismissible.py +12 -10
- flet/controls/core/drag_target.py +20 -10
- flet/controls/core/draggable.py +9 -9
- flet/controls/core/icon.py +16 -12
- flet/controls/core/interactive_viewer.py +24 -23
- flet/controls/core/pagelet.py +3 -2
- flet/controls/core/reorderable_draggable.py +3 -2
- flet/controls/core/row.py +5 -0
- flet/controls/core/safe_area.py +3 -2
- flet/controls/core/text_span.py +5 -3
- flet/controls/core/view.py +6 -6
- flet/controls/core/window_drag_area.py +3 -2
- flet/controls/cupertino/cupertino_action_sheet.py +10 -5
- flet/controls/cupertino/cupertino_action_sheet_action.py +3 -4
- flet/controls/cupertino/cupertino_activity_indicator.py +4 -3
- flet/controls/cupertino/cupertino_alert_dialog.py +6 -3
- flet/controls/cupertino/cupertino_button.py +6 -5
- flet/controls/cupertino/cupertino_context_menu.py +8 -4
- flet/controls/cupertino/cupertino_context_menu_action.py +3 -4
- flet/controls/cupertino/cupertino_date_picker.py +44 -28
- flet/controls/cupertino/cupertino_dialog_action.py +3 -4
- flet/controls/cupertino/cupertino_list_tile.py +3 -4
- flet/controls/cupertino/cupertino_navigation_bar.py +6 -5
- flet/controls/cupertino/cupertino_picker.py +14 -10
- flet/controls/cupertino/cupertino_segmented_button.py +6 -5
- flet/controls/cupertino/cupertino_slider.py +16 -12
- flet/controls/cupertino/cupertino_sliding_segmented_button.py +6 -5
- flet/controls/cupertino/cupertino_timer_picker.py +38 -31
- flet/controls/id_counter.py +24 -0
- flet/controls/material/alert_dialog.py +6 -5
- flet/controls/material/app_bar.py +17 -14
- flet/controls/material/banner.py +13 -11
- flet/controls/material/bottom_app_bar.py +5 -4
- flet/controls/material/bottom_sheet.py +5 -4
- flet/controls/material/button.py +12 -4
- flet/controls/material/chip.py +13 -12
- flet/controls/material/circle_avatar.py +17 -13
- flet/controls/material/datatable.py +48 -41
- flet/controls/material/divider.py +30 -14
- flet/controls/material/dropdown.py +5 -3
- flet/controls/material/expansion_tile.py +11 -22
- flet/controls/material/floating_action_button.py +32 -23
- flet/controls/material/icon_button.py +7 -3
- flet/controls/material/navigation_rail.py +14 -11
- flet/controls/material/outlined_button.py +7 -3
- flet/controls/material/progress_bar.py +18 -10
- flet/controls/material/radio_group.py +5 -1
- flet/controls/material/range_slider.py +13 -13
- flet/controls/material/segmented_button.py +21 -17
- flet/controls/material/selection_area.py +3 -2
- flet/controls/material/slider.py +16 -12
- flet/controls/material/snack_bar.py +18 -10
- flet/controls/material/switch.py +6 -5
- flet/controls/material/tabs.py +18 -14
- flet/controls/material/textfield.py +32 -15
- flet/controls/material/vertical_divider.py +20 -12
- flet/controls/object_patch.py +434 -197
- flet/controls/page.py +205 -85
- flet/controls/services/haptic_feedback.py +0 -3
- flet/controls/services/shake_detector.py +0 -3
- flet/messaging/flet_socket_server.py +13 -6
- flet/messaging/session.py +103 -10
- flet/{controls/session_storage.py → messaging/session_store.py} +2 -2
- flet/version.py +1 -1
- {flet-0.70.0.dev5774.dist-info → flet-0.70.0.dev5835.dist-info}/METADATA +5 -5
- {flet-0.70.0.dev5774.dist-info → flet-0.70.0.dev5835.dist-info}/RECORD +93 -80
- flet/controls/cache.py +0 -87
- flet/controls/control_id.py +0 -22
- flet/controls/core/state_view.py +0 -60
- {flet-0.70.0.dev5774.dist-info → flet-0.70.0.dev5835.dist-info}/WHEEL +0 -0
- {flet-0.70.0.dev5774.dist-info → flet-0.70.0.dev5835.dist-info}/entry_points.txt +0 -0
- {flet-0.70.0.dev5774.dist-info → flet-0.70.0.dev5835.dist-info}/top_level.txt +0 -0
flet/messaging/session.py
CHANGED
|
@@ -5,6 +5,7 @@ import weakref
|
|
|
5
5
|
from datetime import datetime, timedelta, timezone
|
|
6
6
|
from typing import Any, Optional
|
|
7
7
|
|
|
8
|
+
from flet.components.hooks.use_effect import EffectHook
|
|
8
9
|
from flet.controls.base_control import BaseControl
|
|
9
10
|
from flet.controls.context import _context_page, context
|
|
10
11
|
from flet.controls.object_patch import ObjectPatch
|
|
@@ -17,11 +18,13 @@ from flet.messaging.protocol import (
|
|
|
17
18
|
PatchControlBody,
|
|
18
19
|
SessionCrashedBody,
|
|
19
20
|
)
|
|
21
|
+
from flet.messaging.session_store import SessionStore
|
|
20
22
|
from flet.pubsub.pubsub_client import PubSubClient
|
|
21
23
|
from flet.utils.object_model import patch_dataclass
|
|
22
24
|
from flet.utils.strings import random_string
|
|
23
25
|
|
|
24
26
|
logger = logging.getLogger("flet")
|
|
27
|
+
patch_logger = logging.getLogger("flet_object_patch")
|
|
25
28
|
|
|
26
29
|
__all__ = ["Session"]
|
|
27
30
|
|
|
@@ -37,9 +40,14 @@ class Session:
|
|
|
37
40
|
)
|
|
38
41
|
self.__page = Page(self)
|
|
39
42
|
self.__index[self.__page._i] = self.__page
|
|
43
|
+
self.__store: SessionStore = SessionStore()
|
|
40
44
|
self.__pubsub_client = PubSubClient(conn.pubsubhub, self.__id)
|
|
41
45
|
self.__method_calls: dict[str, asyncio.Event] = {}
|
|
42
46
|
self.__method_call_results: dict[asyncio.Event, tuple[Any, Optional[str]]] = {}
|
|
47
|
+
self.__updates_ready: asyncio.Event = asyncio.Event()
|
|
48
|
+
self.__pending_updates: set[BaseControl] = set()
|
|
49
|
+
self.__pending_effects: list[tuple[weakref.ref[EffectHook], bool]] = []
|
|
50
|
+
self.__closed = False
|
|
43
51
|
|
|
44
52
|
session_id = self.__id
|
|
45
53
|
weakref.finalize(
|
|
@@ -70,6 +78,10 @@ class Session:
|
|
|
70
78
|
def pubsub_client(self) -> PubSubClient:
|
|
71
79
|
return self.__pubsub_client
|
|
72
80
|
|
|
81
|
+
@property
|
|
82
|
+
def store(self) -> SessionStore:
|
|
83
|
+
return self.__store
|
|
84
|
+
|
|
73
85
|
async def connect(self, conn: Connection) -> None:
|
|
74
86
|
logger.debug(f"Connect session: {self.id}")
|
|
75
87
|
_context_page.set(self.__page)
|
|
@@ -92,18 +104,30 @@ class Session:
|
|
|
92
104
|
|
|
93
105
|
def close(self):
|
|
94
106
|
logger.debug(f"Closing expired session: {self.id}")
|
|
107
|
+
self.__closed = True
|
|
95
108
|
self.__pubsub_client.unsubscribe_all()
|
|
96
109
|
self.__cancel_method_calls()
|
|
97
110
|
asyncio.create_task(self.dispatch_event(self.__page._i, "close", None))
|
|
98
111
|
|
|
99
|
-
def patch_control(
|
|
112
|
+
def patch_control(
|
|
113
|
+
self,
|
|
114
|
+
control: BaseControl,
|
|
115
|
+
prev_control: Optional[BaseControl] = None,
|
|
116
|
+
parent: Any = None,
|
|
117
|
+
path: Optional[list[Any]] = None,
|
|
118
|
+
frozen: bool = False,
|
|
119
|
+
):
|
|
100
120
|
patch, added_controls, removed_controls = self.__get_update_control_patch(
|
|
101
|
-
control=control,
|
|
121
|
+
control=control,
|
|
122
|
+
prev_control=prev_control or control,
|
|
123
|
+
parent=parent,
|
|
124
|
+
path=path,
|
|
125
|
+
frozen=frozen,
|
|
102
126
|
)
|
|
103
127
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
128
|
+
patch_logger.debug(f"\npatch removed_controls ({len(removed_controls)}):")
|
|
129
|
+
for c in removed_controls:
|
|
130
|
+
patch_logger.debug(" %s", c)
|
|
107
131
|
|
|
108
132
|
for removed_control in removed_controls:
|
|
109
133
|
if not any(added._i == removed_control._i for added in added_controls):
|
|
@@ -113,13 +137,14 @@ class Session:
|
|
|
113
137
|
if len(patch) > 1:
|
|
114
138
|
self.__send_message(
|
|
115
139
|
ClientMessage(
|
|
116
|
-
ClientAction.PATCH_CONTROL,
|
|
140
|
+
ClientAction.PATCH_CONTROL,
|
|
141
|
+
PatchControlBody(parent._i if parent else control._i, patch),
|
|
117
142
|
)
|
|
118
143
|
)
|
|
119
144
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
145
|
+
patch_logger.debug(f"\npatch added_controls: ({len(added_controls)})")
|
|
146
|
+
for ac in added_controls:
|
|
147
|
+
patch_logger.debug(" %s", ac)
|
|
123
148
|
|
|
124
149
|
for added_control in added_controls:
|
|
125
150
|
self.__index[added_control._i] = added_control
|
|
@@ -258,15 +283,83 @@ class Session:
|
|
|
258
283
|
self.__send_buffer.append(message)
|
|
259
284
|
|
|
260
285
|
def __get_update_control_patch(
|
|
261
|
-
self,
|
|
286
|
+
self,
|
|
287
|
+
control: BaseControl,
|
|
288
|
+
prev_control: Optional[BaseControl],
|
|
289
|
+
parent: Any = None,
|
|
290
|
+
path: Optional[list[Any]] = None,
|
|
291
|
+
frozen: bool = False,
|
|
262
292
|
):
|
|
293
|
+
# start_time = datetime.now()
|
|
294
|
+
|
|
263
295
|
# calculate patch
|
|
264
296
|
patch, added_controls, removed_controls = ObjectPatch.from_diff(
|
|
265
297
|
prev_control,
|
|
266
298
|
control,
|
|
267
299
|
control_cls=BaseControl,
|
|
300
|
+
parent=parent,
|
|
301
|
+
path=path,
|
|
302
|
+
frozen=frozen,
|
|
268
303
|
)
|
|
269
304
|
|
|
305
|
+
# end_time = datetime.now()
|
|
306
|
+
# elapsed_time = end_time - start_time
|
|
307
|
+
# print(
|
|
308
|
+
# "Time spent calculating patch: "
|
|
309
|
+
# f"{elapsed_time.total_seconds() * 1000:.3f} ms"
|
|
310
|
+
# )
|
|
311
|
+
|
|
270
312
|
# print("\n\npatch:", patch)
|
|
271
313
|
|
|
272
314
|
return patch.to_message(), added_controls, removed_controls
|
|
315
|
+
|
|
316
|
+
def schedule_update(self, control: BaseControl):
|
|
317
|
+
logger.debug("Schedule_update(%s)", control)
|
|
318
|
+
self.__pending_updates.add(control)
|
|
319
|
+
self.__updates_ready.set()
|
|
320
|
+
|
|
321
|
+
def schedule_effect(self, hook: EffectHook, is_cleanup: bool):
|
|
322
|
+
logger.debug("Schedule_effect(%s, %s)", hook, is_cleanup)
|
|
323
|
+
self.__pending_effects.append((weakref.ref(hook), is_cleanup))
|
|
324
|
+
self.__updates_ready.set()
|
|
325
|
+
|
|
326
|
+
def start_updates_scheduler(self):
|
|
327
|
+
logger.debug(f"Starting updates scheduler: {self.id}")
|
|
328
|
+
asyncio.create_task(self.__updates_scheduler())
|
|
329
|
+
|
|
330
|
+
async def __updates_scheduler(self):
|
|
331
|
+
while not self.__closed:
|
|
332
|
+
await self.__updates_ready.wait()
|
|
333
|
+
self.__updates_ready.clear()
|
|
334
|
+
|
|
335
|
+
# Process pending updates
|
|
336
|
+
for control in self.__pending_updates:
|
|
337
|
+
control.update()
|
|
338
|
+
|
|
339
|
+
self.__pending_updates.clear()
|
|
340
|
+
|
|
341
|
+
# Process pending effects
|
|
342
|
+
for effect in self.__pending_effects:
|
|
343
|
+
try:
|
|
344
|
+
hook = effect[0]()
|
|
345
|
+
is_cleanup = effect[1]
|
|
346
|
+
# print(f"**** Running effect: {hook} {is_cleanup}")
|
|
347
|
+
if hook and hook.setup and not is_cleanup:
|
|
348
|
+
hook.cancel()
|
|
349
|
+
if asyncio.iscoroutinefunction(hook.setup):
|
|
350
|
+
hook._setup_task = asyncio.create_task(hook.setup())
|
|
351
|
+
else:
|
|
352
|
+
res = hook.setup()
|
|
353
|
+
if callable(res):
|
|
354
|
+
hook.cleanup = res
|
|
355
|
+
elif hook and hook.cleanup and is_cleanup:
|
|
356
|
+
hook.cancel()
|
|
357
|
+
if asyncio.iscoroutinefunction(hook.cleanup):
|
|
358
|
+
hook._cleanup_task = asyncio.create_task(hook.cleanup())
|
|
359
|
+
else:
|
|
360
|
+
hook.cleanup()
|
|
361
|
+
except Exception as ex:
|
|
362
|
+
tb = traceback.format_exc()
|
|
363
|
+
self.error(f"Exception in effect: {ex}\n{tb}")
|
|
364
|
+
|
|
365
|
+
self.__pending_effects.clear()
|
flet/version.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flet
|
|
3
|
-
Version: 0.70.0.
|
|
3
|
+
Version: 0.70.0.dev5835
|
|
4
4
|
Summary: Flet for Python - easily build interactive multi-platform apps in Python
|
|
5
5
|
Author-email: "Appveyor Systems Inc." <hello@flet.dev>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -9,10 +9,10 @@ Project-URL: Repository, https://github.com/flet-dev/flet
|
|
|
9
9
|
Project-URL: Documentation, https://docs.flet.dev/
|
|
10
10
|
Requires-Python: >=3.10
|
|
11
11
|
Description-Content-Type: text/markdown
|
|
12
|
-
Requires-Dist: flet-cli==0.70.0.
|
|
13
|
-
Requires-Dist: flet-desktop==0.70.0.
|
|
14
|
-
Requires-Dist: flet-desktop-light==0.70.0.
|
|
15
|
-
Requires-Dist: flet-web==0.70.0.
|
|
12
|
+
Requires-Dist: flet-cli==0.70.0.dev5835; extra == "cli"
|
|
13
|
+
Requires-Dist: flet-desktop==0.70.0.dev5835; extra == "desktop" and (platform_system == "Darwin" or platform_system == "Windows")
|
|
14
|
+
Requires-Dist: flet-desktop-light==0.70.0.dev5835; platform_system == "Linux" and (extra == "all" or extra == "desktop")
|
|
15
|
+
Requires-Dist: flet-web==0.70.0.dev5835; extra == "web"
|
|
16
16
|
Requires-Dist: oauthlib>=3.2.2; platform_system != "Pyodide"
|
|
17
17
|
Requires-Dist: httpx>=0.28.1; platform_system != "Pyodide"
|
|
18
18
|
Requires-Dist: repath>=0.9.0
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
flet/__init__.py,sha256
|
|
1
|
+
flet/__init__.py,sha256=Lv9YmVVMQHTiO5E089OW9ES1CnGyoJadzi4IFk0bhmI,25642
|
|
2
2
|
flet/app.py,sha256=HSws0Zm4ZO0-Hp2P9h7xirCVnRkKCVXhuekyAXT_9Fo,11883
|
|
3
3
|
flet/cli.py,sha256=IUM25fY_sqMtl0hlQGhlMQaBb1oNyO0VZeeBgRodhuA,204
|
|
4
|
-
flet/version.py,sha256=
|
|
4
|
+
flet/version.py,sha256=eHFiuFHZ31WYF3bMGm1eqUJexiv7Yl9gY-obkEgdxJU,2512
|
|
5
5
|
flet/auth/__init__.py,sha256=eDqmi0Ki8Resd198S7XxgYa2R14wnNqIXnYhBLPl8fQ,289
|
|
6
6
|
flet/auth/authorization.py,sha256=hP_36RiRPtSwmK_Yp6MMzAjQdDxbBiEcZ2yFNqyNiRs,357
|
|
7
7
|
flet/auth/authorization_service.py,sha256=6N2LvisSt7KI_VgfyCH0OaJ6jTcmXCkAldN1yYlakzQ,6410
|
|
@@ -15,23 +15,36 @@ flet/auth/providers/azure_oauth_provider.py,sha256=EF8-Nl_HR5LeP3wztV5IVwrEzGXYk
|
|
|
15
15
|
flet/auth/providers/github_oauth_provider.py,sha256=iiJEUGlQysYQlvIURgUqNZuL4izaaB-_PC-PSj-Pjmk,2643
|
|
16
16
|
flet/auth/providers/google_oauth_provider.py,sha256=RGPQfbal53C6okaniDeegt1GH8TvyAvja6G-SNme8RU,799
|
|
17
17
|
flet/canvas/__init__.py,sha256=_02Qjscc6DU4c4FYVSjv2S35ld6WFte_Be8NBABRN8Q,957
|
|
18
|
+
flet/components/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
19
|
+
flet/components/component.py,sha256=-bkB0A3Q9OpiQ0xuxeK15wajYnJl8hjnsc5_zKTFfHE,11671
|
|
20
|
+
flet/components/component_decorator.py,sha256=14ocjVSXPVl-SduJUtEQ1JivhpIoWnDDG4ioD0TCn0I,639
|
|
21
|
+
flet/components/component_owned.py,sha256=eC2NNNFWmZADBivLHjScfrmEj-s7xygHlABo7CiGtFA,563
|
|
22
|
+
flet/components/memo.py,sha256=tpztAInP4LkGOCFSJLyRuKp2t6EKM2AnX7SQmXiUZH8,620
|
|
23
|
+
flet/components/observable.py,sha256=XnO3ZOA7tttILoyKvKaSaozrKrYEqt3Duz0YxxwCKDo,6888
|
|
24
|
+
flet/components/public_utils.py,sha256=9orF-ZoxspZtTmjMUp9KmXL4-jpQG6TAOVSrGTEbVyo,180
|
|
25
|
+
flet/components/utils.py,sha256=6Uzs2cXg2VAWKr82vghSGTL3JglbHzADxkqc_7vns8o,2079
|
|
26
|
+
flet/components/hooks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
27
|
+
flet/components/hooks/hook.py,sha256=otO5mz15MutMsRujuqLMefZvepm777FyIkGA4PTqI-8,207
|
|
28
|
+
flet/components/hooks/use_callback.py,sha256=TUTIfwBeZ5Xsbt7wI8OVbzfMKBGyPq27z3Jj9U5-k7s,791
|
|
29
|
+
flet/components/hooks/use_context.py,sha256=38_MYBIOzHE-X45psuyHV6cTjbcrQVXVRzcCz_bMwv8,2516
|
|
30
|
+
flet/components/hooks/use_effect.py,sha256=dZik3viWSfkOi5uTzc-kWV00P2_DIWcV2OzA8OexAN4,3225
|
|
31
|
+
flet/components/hooks/use_memo.py,sha256=4IbT89yQXicMgzqp9a6hJ6egit_6GX8sVkn4DczVeyQ,1693
|
|
32
|
+
flet/components/hooks/use_state.py,sha256=ZAhtIRnm2CKDK2-cIWmkWWEV-Gz2eOx7f9ZhsE1b06M,1680
|
|
18
33
|
flet/controls/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
19
34
|
flet/controls/adaptive_control.py,sha256=Pw0E7z0IlNSe05cQTi5BLElLF3OnlVLzwfvtOQpsRr8,1594
|
|
20
35
|
flet/controls/alignment.py,sha256=re4jnpuqNPPWs55bf8RB_c9llqcuGhZcCjdNutx2N5M,3257
|
|
21
36
|
flet/controls/animation.py,sha256=C3Sxqte4S225m3UvlQOm-DGxd1WJaqfdLpA6e10B_BM,3763
|
|
22
|
-
flet/controls/base_control.py,sha256=
|
|
23
|
-
flet/controls/base_page.py,sha256=
|
|
37
|
+
flet/controls/base_control.py,sha256=1Yea_zW1O9dpjyrgdt8Cr-jUJyujlscKedkdK08lRHA,10713
|
|
38
|
+
flet/controls/base_page.py,sha256=SuuoK-XHqsTmOQZXYz84DxOibE9_43sKZulalSjIxYI,17927
|
|
24
39
|
flet/controls/blur.py,sha256=taMH4qtILyAFn1qNsgBGRV3z0GSH6V7VKPV3ZSBhOL4,602
|
|
25
40
|
flet/controls/border.py,sha256=X0NGRfjAx1YN3VcdOvOdH0BOH27LgeIrtjxiDKzrx0g,8931
|
|
26
41
|
flet/controls/border_radius.py,sha256=ePfpA_uNhR6bfBSmYxy2cO0mZ3FU1r63qX_5RuHWwDM,6605
|
|
27
42
|
flet/controls/box.py,sha256=f9T25pJYOk-VzmzapgYHKprucTuIPMMJRphIBinrZQ4,12606
|
|
28
43
|
flet/controls/buttons.py,sha256=0mLPx4fBjQNGn-ejMuNu1wHb38_0BGU0JOggmqbUs1E,9943
|
|
29
|
-
flet/controls/cache.py,sha256=0SJVqUtouvypBV_SEzJ-HLT-QBG5HtpWXCsJGH_zNSw,2872
|
|
30
44
|
flet/controls/colors.py,sha256=J5A9ZQ25xqyKkM7X1SjX3uRlBP9PCsUJoHhCdM-YNOw,15345
|
|
31
|
-
flet/controls/context.py,sha256=
|
|
32
|
-
flet/controls/control.py,sha256=
|
|
33
|
-
flet/controls/control_event.py,sha256=
|
|
34
|
-
flet/controls/control_id.py,sha256=6GrwGlpnQhTkh1QnBIGutFDKfQwLuvoC5XIHnD4zDcU,671
|
|
45
|
+
flet/controls/context.py,sha256=xmmkrF2r4jD9ILe9lIrwtmkhvXv6awYpnwjHeqM5jFk,4239
|
|
46
|
+
flet/controls/control.py,sha256=7uZKB9NOtj3zM-5uGq_x2GjsuDaXuSuVzuEKLJ1ysJU,4473
|
|
47
|
+
flet/controls/control_event.py,sha256=wuI62LF8K42U6Ba2LK5R5YyhBtmxyTHBgZN4XfRKGRk,3107
|
|
35
48
|
flet/controls/control_state.py,sha256=7Pi_WirBkE5dmUN0QnQLjSaW17Nj_escRlUvNxlrNR8,433
|
|
36
49
|
flet/controls/dialog_control.py,sha256=4a1poIK4al6DAsdiV56jE-Q4E-eKrvP12DqYw5HFvYM,507
|
|
37
50
|
flet/controls/duration.py,sha256=Fwb26eyHKrU_lqvmGuTLw4m-28leLHOlgHxtqRIQsnA,7398
|
|
@@ -41,57 +54,56 @@ flet/controls/exceptions.py,sha256=DV7sWQamNFSGlU6w1IBi59U03qsDBLPUzIVRnuVPrhc,8
|
|
|
41
54
|
flet/controls/geometry.py,sha256=1M_rLlKlPdZF2s4wOBNCUGpGK8-vC5HJc8VHUhxomCQ,5000
|
|
42
55
|
flet/controls/gradients.py,sha256=oUYQTL0wI4FYbhOzd2b-KkbCUsijBgGpH9gSRIMYQdk,5804
|
|
43
56
|
flet/controls/icon_data.py,sha256=dtlNXm8_8yd_PRp_ogBuTDPz3-IXCXP47FA9C6SGoSk,2357
|
|
57
|
+
flet/controls/id_counter.py,sha256=YhZT-dB_yYYqPEBJ8IoTA98NU_EPFnx6T7FWbA9ENB4,627
|
|
44
58
|
flet/controls/keys.py,sha256=YpcAeINKelX3WgSOMF8_T7wMzcFmAXNg-ssPej_NZWY,614
|
|
45
59
|
flet/controls/layout_control.py,sha256=17JFILKY6_G73VgoyGofF41E3hykUl4ipQh6EKCig3Y,7279
|
|
46
60
|
flet/controls/margin.py,sha256=ni5FwkchO1LPKPTKV0Cimvh2YzABi-t5DhOqTS25eIQ,2305
|
|
47
61
|
flet/controls/multi_view.py,sha256=7RbM1nt8t75qgTKyfemsV06XQ04Mer0Op409Nu9q9Vs,304
|
|
48
|
-
flet/controls/object_patch.py,sha256=
|
|
62
|
+
flet/controls/object_patch.py,sha256=0OE8TswTyYH_l1yEqJPIf-Z6kLnOCCQCYiV-gNUvuSA,44111
|
|
49
63
|
flet/controls/padding.py,sha256=AdxAZ5dbg1-Bo8aKeJ7AptUdyjaX7VWBIJto5mBT9Pk,2485
|
|
50
|
-
flet/controls/page.py,sha256=
|
|
64
|
+
flet/controls/page.py,sha256=_1FGO52-hWj7Z99Q9mEynQwWLqnmdxJZKcp6L4tPnJ4,26383
|
|
51
65
|
flet/controls/painting.py,sha256=GCEycacejiCAdA4eZBQlTgxmE2ccXyad4Gy7VsjIwn0,12108
|
|
52
66
|
flet/controls/query_string.py,sha256=NDrf1P0cxSWuJd4Rqz1qYld_JKDJpHY7mKcP52-70DI,3575
|
|
53
67
|
flet/controls/ref.py,sha256=Lde_Nlly6NEtJX_LYv_DxIDkao6w4Buo7Nus4XUPQDA,580
|
|
54
68
|
flet/controls/scrollable_control.py,sha256=Mu0oGA3fxweurlJQq1TuaUw2NMA8xy3DC27zJndQBZc,4571
|
|
55
|
-
flet/controls/session_storage.py,sha256=UzDpebR1ddDW9seghplws9zgirlvQjRgAnskVDcrbas,561
|
|
56
69
|
flet/controls/template_route.py,sha256=qP5KvFY5gazw-G9Q9bcoADlWAh-MJ_9wsIyIxjElkaE,662
|
|
57
70
|
flet/controls/text_style.py,sha256=WC8uPdfps5PyZ64cdPBnWhC2HULK39Uah5V368JdVoI,9386
|
|
58
71
|
flet/controls/theme.py,sha256=jed561Y3ENTgp1aHB6z5djzJdZdmazaDjfMy1acpWuI,97055
|
|
59
72
|
flet/controls/transform.py,sha256=gZQGM5nhfiapvm25uxvswbTWu0qQM3oBGRVxSTDhGYY,2782
|
|
60
73
|
flet/controls/types.py,sha256=f4rUZ36Ul5FID2ZTgamPXAT7wZTfJl4Lbam9dpANtvI,25574
|
|
61
74
|
flet/controls/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
62
|
-
flet/controls/core/animated_switcher.py,sha256=
|
|
63
|
-
flet/controls/core/autofill_group.py,sha256=
|
|
64
|
-
flet/controls/core/column.py,sha256=
|
|
65
|
-
flet/controls/core/dismissible.py,sha256=
|
|
66
|
-
flet/controls/core/drag_target.py,sha256
|
|
67
|
-
flet/controls/core/draggable.py,sha256=
|
|
75
|
+
flet/controls/core/animated_switcher.py,sha256=qkPoKcmN3_fMN39VEnJw1dlV_7W46DT2O8LF0t13m2I,1873
|
|
76
|
+
flet/controls/core/autofill_group.py,sha256=3py4hGl8ez9prZ6e4dpT2zazk7aBPqs40M64p5awWHk,3687
|
|
77
|
+
flet/controls/core/column.py,sha256=g04SvwdP0iqJP-1w3STJl2eCEciwN4dt6eLKZ_xzV2U,2157
|
|
78
|
+
flet/controls/core/dismissible.py,sha256=ywMKNAVpYx6vkSSWIKEO8gyrkSbUqj66emrVHWGsmOk,5542
|
|
79
|
+
flet/controls/core/drag_target.py,sha256=-u_5vUH_CJy-DbOmW8A1M2kl6pSyFS3W7_JMiG2Ga7c,2810
|
|
80
|
+
flet/controls/core/draggable.py,sha256=jTwiflMgocFKA6NGYtSpzQplpck_76uX_F3Ta0JmJM8,3846
|
|
68
81
|
flet/controls/core/flet_app.py,sha256=5WvbgRiktRxAMRKiZ667o1Yt7ozfuSM811yTE6D2rfA,1116
|
|
69
82
|
flet/controls/core/gesture_detector.py,sha256=dcSzIiIjD7QOPVGcKDdW2MxvCdtla8M_yHvqxn4N1kg,8911
|
|
70
83
|
flet/controls/core/grid_view.py,sha256=kzln6PKgQ2jGEoNkNMjx0auoFfUndfzx6x0TgzLn5yA,3139
|
|
71
|
-
flet/controls/core/icon.py,sha256=
|
|
84
|
+
flet/controls/core/icon.py,sha256=fOf8mCKtQ8tlm_lzSliPq_qk8QTBGFE8Tq5OfiyfK3M,4001
|
|
72
85
|
flet/controls/core/image.py,sha256=ES4byvkgl3z_YbsBVNnYVox8QN4_qCnOn9RjBK_3vUY,3950
|
|
73
|
-
flet/controls/core/interactive_viewer.py,sha256=
|
|
86
|
+
flet/controls/core/interactive_viewer.py,sha256=id5x4Z3Gf41naRy1kOj_cmBnfTlsoeBCJOmf8lLJp-o,4857
|
|
74
87
|
flet/controls/core/keyboard_listener.py,sha256=S8h0ZELveIT8EyAxNilnUNPg9I9MVnOMmSKW_7cwylQ,2467
|
|
75
88
|
flet/controls/core/list_view.py,sha256=zyWHHG8Tpr4VYztQFWA_mRipLXKO6bVJ-Ra1Gso4qp4,3273
|
|
76
89
|
flet/controls/core/markdown.py,sha256=zTAlVDJpwh5Ay1Lh7aHlTNCJ0zktCwNGit1QiyWjUyE,10939
|
|
77
90
|
flet/controls/core/merge_semantics.py,sha256=o2olHjIDU-QNKAc8JHdQABiZUKeR4dWJApOCEcBaFF4,627
|
|
78
|
-
flet/controls/core/pagelet.py,sha256=
|
|
91
|
+
flet/controls/core/pagelet.py,sha256=PBpw49SBniprw_3CuxlsjzuJPvxjzJaWesXza020plE,4163
|
|
79
92
|
flet/controls/core/placeholder.py,sha256=XqqP1QmjlboezVKIrwZHA4FCcl06cptqxvYQs7kVkB8,992
|
|
80
|
-
flet/controls/core/reorderable_draggable.py,sha256=
|
|
93
|
+
flet/controls/core/reorderable_draggable.py,sha256=Mdu9mHvfNs0m9VTFQ0wfYPnvB592t53XT-NyvoZs5Fs,1016
|
|
81
94
|
flet/controls/core/responsive_row.py,sha256=Ij02f54UuB2qPUfJ3Y6l-W06nZQcZnEuY3ef3mn44EI,2382
|
|
82
|
-
flet/controls/core/row.py,sha256=
|
|
83
|
-
flet/controls/core/safe_area.py,sha256=
|
|
95
|
+
flet/controls/core/row.py,sha256=u_mWESVQv9Q9zV19Rzag0eMA5TCugh7mRNZFGvTwPeA,2167
|
|
96
|
+
flet/controls/core/safe_area.py,sha256=oDCmD9aWHSfYa-d_Nagw32bfnwuDNX6yiTCqDyFLxus,2230
|
|
84
97
|
flet/controls/core/screenshot.py,sha256=6X3f6rYaX7PHkvWM7gpFlyhA2xzt-M15ax-Nfd45n1g,1110
|
|
85
98
|
flet/controls/core/semantics.py,sha256=tiRTyFMYYNIcj8kuiopZMPGxeo_n4L7eCchHcywColI,7413
|
|
86
99
|
flet/controls/core/shader_mask.py,sha256=z4sr8RP2PnP-ooh0c5KNiUDLsHmj1S-R7ATm53j5CJo,1034
|
|
87
100
|
flet/controls/core/stack.py,sha256=JqCIXFcDxd4C7dhJik0qwOu7IoHRmkj7BpvF6LhM03k,1954
|
|
88
|
-
flet/controls/core/state_view.py,sha256=BLDp0PkPsI6TGs2akAJqXyxq64XqJJaisTgUKxT3CxY,1842
|
|
89
101
|
flet/controls/core/text.py,sha256=Z2gqu5IIOvUQYV7RpoqAmoEueiHozxL0xN0hlnyMseQ,8811
|
|
90
|
-
flet/controls/core/text_span.py,sha256=
|
|
102
|
+
flet/controls/core/text_span.py,sha256=KpW6jER8HYRj-kHQPuAaSOa816B-nQc02le9i9M22Pc,2939
|
|
91
103
|
flet/controls/core/transparent_pointer.py,sha256=BGDFuDWyDUIYOmwaEgMMks6OWS_lVjZObAw2M-3r2bQ,963
|
|
92
|
-
flet/controls/core/view.py,sha256=
|
|
104
|
+
flet/controls/core/view.py,sha256=WuXwdjKtMwhzy1foPJa5kPsrwnpti_b85g8w_ldhOeQ,5031
|
|
93
105
|
flet/controls/core/window.py,sha256=7SbbEoprqCoO_xz9-tHppOMYj0m9nJwDi3tRlnuVSoo,7157
|
|
94
|
-
flet/controls/core/window_drag_area.py,sha256
|
|
106
|
+
flet/controls/core/window_drag_area.py,sha256=cgq3bH4vkXZl3HcYRceSiqS4-pbibRSuuhgNzOG5m2I,1834
|
|
95
107
|
flet/controls/core/canvas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
96
108
|
flet/controls/core/canvas/arc.py,sha256=pgZ6e2yhzx2cAbb3zBnlhwtuJR_YEyVTjo_11GAra_Q,1772
|
|
97
109
|
flet/controls/core/canvas/canvas.py,sha256=eOIO5k2qhkdb3bKXoM9-9MnX30ZGBEZIpF5SO-0M838,2898
|
|
@@ -108,105 +120,106 @@ flet/controls/core/canvas/shadow.py,sha256=GuUwsGD9pO55lqRtVtuoRdESYNeruzkXrOyGx
|
|
|
108
120
|
flet/controls/core/canvas/shape.py,sha256=Usq8DgS1jbi_uKva0SROima_8koDHmS3BO9VWznfX_E,484
|
|
109
121
|
flet/controls/core/canvas/text.py,sha256=KJU7XepvY_klGYaecWRXlQZc86P0ZtMsxLAC591J1EA,2008
|
|
110
122
|
flet/controls/cupertino/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
111
|
-
flet/controls/cupertino/cupertino_action_sheet.py,sha256=
|
|
112
|
-
flet/controls/cupertino/cupertino_action_sheet_action.py,sha256=
|
|
113
|
-
flet/controls/cupertino/cupertino_activity_indicator.py,sha256=
|
|
114
|
-
flet/controls/cupertino/cupertino_alert_dialog.py,sha256=
|
|
123
|
+
flet/controls/cupertino/cupertino_action_sheet.py,sha256=GyDUD-WwWKeplUsRBFTodmnh8MPo9nE7tku24sgWefc,1865
|
|
124
|
+
flet/controls/cupertino/cupertino_action_sheet_action.py,sha256=yCk-lv5bvc_xc2jupEQKz6q_JE521iMjWUyIhdgzoUU,1378
|
|
125
|
+
flet/controls/cupertino/cupertino_activity_indicator.py,sha256=3mso-hpHjhi9ynpnJ32APBls0DcbsMLFgZ4AuIND8Z0,1014
|
|
126
|
+
flet/controls/cupertino/cupertino_alert_dialog.py,sha256=kcACIyiv7gWN3KX27aqPfMS9BUVTPt0CPW8k2L9hC2o,2284
|
|
115
127
|
flet/controls/cupertino/cupertino_app_bar.py,sha256=CxhgW5Z_tohnyn7WkGxes9aN_KBDjovzcn_mEuhRqms,5176
|
|
116
128
|
flet/controls/cupertino/cupertino_bottom_sheet.py,sha256=o8154fJuBtJUSJtqJFrjE6tEBv1ylNtgDW8qn6vwSxs,938
|
|
117
|
-
flet/controls/cupertino/cupertino_button.py,sha256=
|
|
129
|
+
flet/controls/cupertino/cupertino_button.py,sha256=1_BuVzEDYQPcITJtuzv8vBihUdc8zs5ifjebrgeN8Co,4504
|
|
118
130
|
flet/controls/cupertino/cupertino_checkbox.py,sha256=XmTY2IQL4MX08uEPTm4mAeb17o2QoWrybZaxcgfB1vs,4449
|
|
119
131
|
flet/controls/cupertino/cupertino_colors.py,sha256=nbkvUsvt4hN1Z5Ay5tqX24pX56qFfPK2qB1DSnrEuvw,5106
|
|
120
|
-
flet/controls/cupertino/cupertino_context_menu.py,sha256=
|
|
121
|
-
flet/controls/cupertino/cupertino_context_menu_action.py,sha256=
|
|
122
|
-
flet/controls/cupertino/cupertino_date_picker.py,sha256=
|
|
123
|
-
flet/controls/cupertino/cupertino_dialog_action.py,sha256=
|
|
132
|
+
flet/controls/cupertino/cupertino_context_menu.py,sha256=J094wDwQm6ywd15e-eMAaY-gPsoB7-uRr8xHceOCUxE,1490
|
|
133
|
+
flet/controls/cupertino/cupertino_context_menu_action.py,sha256=RFAx2lCBcCbNiRKvAn7hUFC6qDL5OM_s8O5wdjj369Y,1427
|
|
134
|
+
flet/controls/cupertino/cupertino_date_picker.py,sha256=DqXMt8OsfLAsUT_XXlKzGAlQbAIjzliVNX8aVm5NFYg,7960
|
|
135
|
+
flet/controls/cupertino/cupertino_dialog_action.py,sha256=MPTF_SkG778XEUEQStXNAqSoqlkk6zFDzgo42DtJgcM,1660
|
|
124
136
|
flet/controls/cupertino/cupertino_filled_button.py,sha256=BQ9sSUMEPCCJQl8isEnIOP_qXO4tjsX7yyCTs-O4hw0,313
|
|
125
137
|
flet/controls/cupertino/cupertino_icons.py,sha256=cjFjErATn_1UBvIQhZsgh3qLELVoFZIGJfHUC_8C_5I,40308
|
|
126
|
-
flet/controls/cupertino/cupertino_list_tile.py,sha256=
|
|
127
|
-
flet/controls/cupertino/cupertino_navigation_bar.py,sha256=
|
|
128
|
-
flet/controls/cupertino/cupertino_picker.py,sha256=
|
|
138
|
+
flet/controls/cupertino/cupertino_list_tile.py,sha256=mrRBBmBrPKYbsRo2ReTgebl1Cw4zbm5QVFMRstaqxrc,3397
|
|
139
|
+
flet/controls/cupertino/cupertino_navigation_bar.py,sha256=CDFExJPxiJYH5c4BqMNdN-ziVNm4QyD9Cyad6M3Qre4,2845
|
|
140
|
+
flet/controls/cupertino/cupertino_picker.py,sha256=5R8GXK5qFXmpJZ_sgvqILn00RkM6PE6FgsaVOQT7Bcw,3473
|
|
129
141
|
flet/controls/cupertino/cupertino_radio.py,sha256=WksRSPn0mAcMiAnE2UU7Piqe2ae_isocjzUZzNcQ-eA,2339
|
|
130
|
-
flet/controls/cupertino/cupertino_segmented_button.py,sha256=
|
|
131
|
-
flet/controls/cupertino/cupertino_slider.py,sha256=
|
|
132
|
-
flet/controls/cupertino/cupertino_sliding_segmented_button.py,sha256=
|
|
142
|
+
flet/controls/cupertino/cupertino_segmented_button.py,sha256=DEntfRb7D1HZWTfa5GPQnjdLKJvxN8WuSBthDa-5FSQ,2975
|
|
143
|
+
flet/controls/cupertino/cupertino_slider.py,sha256=hOdSrWy_sKBLqP5n6E0DWf3J0fhT6Xcovg1CI7YBgns,3467
|
|
144
|
+
flet/controls/cupertino/cupertino_sliding_segmented_button.py,sha256=h9D8L6m-jqyht_96wJlfypP7wqVipGtvmNW8hF1zcJQ,3045
|
|
133
145
|
flet/controls/cupertino/cupertino_switch.py,sha256=0UtGp1fhCGlYVf2w8xXic0MfcEds-uNqF7WQi84Ld8w,4201
|
|
134
146
|
flet/controls/cupertino/cupertino_textfield.py,sha256=rQmJrP-fo5m8HYGDhtBWPmhg0JywXDn5GFapYM6wZgY,2897
|
|
135
|
-
flet/controls/cupertino/cupertino_timer_picker.py,sha256=
|
|
147
|
+
flet/controls/cupertino/cupertino_timer_picker.py,sha256=YNMAeazkm6nGEwF2X-r9WuB25aqam6PYORuq1yoptBk,4509
|
|
136
148
|
flet/controls/cupertino/cupertino_tinted_button.py,sha256=rU1bW9qfu2GGkma3zlTTMZOhBlqBtj4bYxqJMrwJBF8,313
|
|
137
149
|
flet/controls/material/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
138
|
-
flet/controls/material/alert_dialog.py,sha256=
|
|
139
|
-
flet/controls/material/app_bar.py,sha256=
|
|
150
|
+
flet/controls/material/alert_dialog.py,sha256=8CYnb8Lcfn_EDP4mQTZe-cUVFXjHA8AdxBa6-vohjAQ,7606
|
|
151
|
+
flet/controls/material/app_bar.py,sha256=XBy4SavDp6Lc_o5O9npAAsQRBV591apOEnJT0-trmDM,6392
|
|
140
152
|
flet/controls/material/auto_complete.py,sha256=MVesy4fUvLvY0pw_BDQXpRB5o9ac1Ci7icTdG4nC5oM,1856
|
|
141
153
|
flet/controls/material/badge.py,sha256=xtyG18lElGMjKtvZg6OX4nRney8sAlC7TNTe2dUDj1M,3247
|
|
142
|
-
flet/controls/material/banner.py,sha256=
|
|
143
|
-
flet/controls/material/bottom_app_bar.py,sha256=
|
|
144
|
-
flet/controls/material/bottom_sheet.py,sha256=
|
|
145
|
-
flet/controls/material/button.py,sha256=
|
|
154
|
+
flet/controls/material/banner.py,sha256=1QXFji-E7bOUh8d0iRL_byyE8kTMyepA24rWVx178pA,4159
|
|
155
|
+
flet/controls/material/bottom_app_bar.py,sha256=I5DO0wdbYsYe1_EatIU-jLGHFA8WT670sCrGUj6IM50,2083
|
|
156
|
+
flet/controls/material/bottom_sheet.py,sha256=o7y8a80HSeJWwI4Q3JNFeJ-6kvziuuj3t9f9gadGrhw,2791
|
|
157
|
+
flet/controls/material/button.py,sha256=14QzipCjIQpfLRoV4XBMTAxeR_EJNNvUcni7f2JLnL0,2584
|
|
146
158
|
flet/controls/material/card.py,sha256=vNPL9Dv8rBg5v-0E7whgI-dV9jVRR6Z3oPctPQ8v7FU,2616
|
|
147
159
|
flet/controls/material/checkbox.py,sha256=4F2OcbvBJ4BJXVD2F-U7YdI17elmwgMe3NhWIsFgA7o,5716
|
|
148
|
-
flet/controls/material/chip.py,sha256=
|
|
149
|
-
flet/controls/material/circle_avatar.py,sha256=
|
|
160
|
+
flet/controls/material/chip.py,sha256=nGRGylhipV0wNj4w8v_qfKOqQkFSfubTBw2Nn4dcnJ0,7809
|
|
161
|
+
flet/controls/material/circle_avatar.py,sha256=dVhGnrvnc5uieeFTCJZ8FHDZbwVkBDFzzk-EEEugWWc,4014
|
|
150
162
|
flet/controls/material/container.py,sha256=quw_KEu7N5tbEFK7EuX39OQ4Idd0i4qa4Nu6HIeS440,6875
|
|
151
|
-
flet/controls/material/datatable.py,sha256=
|
|
163
|
+
flet/controls/material/datatable.py,sha256=fw2qtz5BAPxwfW3s8xm9hTrpNx9tNDkOkLhCe8RGf5E,17535
|
|
152
164
|
flet/controls/material/date_picker.py,sha256=JCuU3-BcwFkb8KHQdcRQm0Scfdur7FGiMXElUX4WSxU,5336
|
|
153
165
|
flet/controls/material/date_range_picker.py,sha256=7KJKE78bQYLJRdsTKgNu9JZbmyu3xh8xQUbrgwN5HwY,5350
|
|
154
|
-
flet/controls/material/divider.py,sha256=
|
|
155
|
-
flet/controls/material/dropdown.py,sha256=
|
|
166
|
+
flet/controls/material/divider.py,sha256=e3EUc8TqeDpiUwJjjtaewM3ghxQDXSy8huwWpz_R6Yo,2908
|
|
167
|
+
flet/controls/material/dropdown.py,sha256=hkDIO1GTLBNbX7QW45Um0RfnCxKFbUl0Qwq71fdBiPU,9863
|
|
156
168
|
flet/controls/material/dropdownm2.py,sha256=JGie5s9jReAbhGWQkkoBMY1S8iBgdEvqqhhL7JMIoJg,5452
|
|
157
169
|
flet/controls/material/elevated_button.py,sha256=AjrLkxn1ViwGE7ms8aNlNTgaR1-qIFhN8aU254Hx9Vc,274
|
|
158
170
|
flet/controls/material/expansion_panel.py,sha256=nk7pforJciuaz5i2Sqmlmk7xksqR2ah425wzIseO-rM,3406
|
|
159
|
-
flet/controls/material/expansion_tile.py,sha256=
|
|
171
|
+
flet/controls/material/expansion_tile.py,sha256=D-43qpmmVqF8MvFHBJvWhvfImgM7YTv3B9nuLM-ivkM,5435
|
|
160
172
|
flet/controls/material/filled_button.py,sha256=yG-JqPNMUvdkTny-oULS7IUicL2Wnw4ngeKUuDfHgC8,391
|
|
161
173
|
flet/controls/material/filled_tonal_button.py,sha256=SoNneqj0O-RiCm895s-mpXbQAigsrlrplFTSii0DdHs,508
|
|
162
|
-
flet/controls/material/floating_action_button.py,sha256=
|
|
174
|
+
flet/controls/material/floating_action_button.py,sha256=ZPDz7OaBqy_dEpMlUzphcKZPN_W5DNrEKnveGXvkAHA,5787
|
|
163
175
|
flet/controls/material/form_field_control.py,sha256=khfIY-7S4Auk0-slhHV1Q1znM2XuRfAtMjjSz9MLN9Y,8491
|
|
164
|
-
flet/controls/material/icon_button.py,sha256=
|
|
176
|
+
flet/controls/material/icon_button.py,sha256=iKGaav-BxkD1N156iESjbZbo2vHsizB7UyttEZVmgFo,7552
|
|
165
177
|
flet/controls/material/icons.py,sha256=piwc7LmopX6inmzdT4G0wpuvP6NZWGJQdG_KXCPPhEs,287248
|
|
166
178
|
flet/controls/material/list_tile.py,sha256=LysJ_L9rshEBRY5Yeptt5HJjgILqmvnYrBtc1wyBZMA,7785
|
|
167
179
|
flet/controls/material/menu_bar.py,sha256=P0bn4HDtNgrfe0GzWbEH4A-oiGA-n4dFoeyvUle3HeY,2168
|
|
168
180
|
flet/controls/material/menu_item_button.py,sha256=ICiTw3FMCTL7maI04KggHOcuxEOEHLPxAU08D_XVVxY,2523
|
|
169
181
|
flet/controls/material/navigation_bar.py,sha256=HzSiMT6P6bgkxz-d1iWxRNACMuOqnPKi2qbLBmp7BCg,4998
|
|
170
182
|
flet/controls/material/navigation_drawer.py,sha256=_Wraal9cxMqyXUbDC26wMEUWlWu0pVT7V28DR-MCoQE,3794
|
|
171
|
-
flet/controls/material/navigation_rail.py,sha256=
|
|
172
|
-
flet/controls/material/outlined_button.py,sha256=
|
|
183
|
+
flet/controls/material/navigation_rail.py,sha256=mGNRtJVjT00ftBSoBVxPYz8ZM-CPbk5soXOW0n3-JYw,7830
|
|
184
|
+
flet/controls/material/outlined_button.py,sha256=Tf8Q9qRSsyMrVM4pDSNRNiwYFcNLrFa_PWYM-xwGPnI,3036
|
|
173
185
|
flet/controls/material/popup_menu_button.py,sha256=iYBDno7UZcoqnpQpdA5JRCb9Fb1QrsSNDV-voGY8tnQ,4820
|
|
174
|
-
flet/controls/material/progress_bar.py,sha256=
|
|
186
|
+
flet/controls/material/progress_bar.py,sha256=txAFMDGVeEj1jDoAlMusMHFjXCvqg4MtsiOvMPdztVw,4295
|
|
175
187
|
flet/controls/material/progress_ring.py,sha256=7Nq4jUNN8ayHD5kHDgqT5dpOoTooVIHlA65jXENXjyw,3655
|
|
176
188
|
flet/controls/material/radio.py,sha256=IK3hS-qT3BHA-0xDXWRDSoFQQHnMw4t-x6EayPBebIA,2797
|
|
177
|
-
flet/controls/material/radio_group.py,sha256=
|
|
178
|
-
flet/controls/material/range_slider.py,sha256=
|
|
189
|
+
flet/controls/material/radio_group.py,sha256=FyMPDvJTxQa210LNUyeFJUdgUD9RtKz56BbZpkw5COc,972
|
|
190
|
+
flet/controls/material/range_slider.py,sha256=nhtIwoHZ9YXS7zsclGr3cK03T5tPXPIwoxybhWbegIM,4229
|
|
179
191
|
flet/controls/material/reorderable_list_view.py,sha256=iH87xlj7pIK1Kf-nQk5_PJ1sWmA0NXLCSQArDDrB-8Q,4692
|
|
180
192
|
flet/controls/material/search_bar.py,sha256=hoeZxdTG4vqCqgWlRBaJi-iGenDOpIpedHrUJqp9X04,8448
|
|
181
|
-
flet/controls/material/segmented_button.py,sha256=
|
|
182
|
-
flet/controls/material/selection_area.py,sha256=
|
|
183
|
-
flet/controls/material/slider.py,sha256=
|
|
184
|
-
flet/controls/material/snack_bar.py,sha256=
|
|
193
|
+
flet/controls/material/segmented_button.py,sha256=aGUID6XWzIDUoHkg7NosWcwF0vpw4q3diAP1wuZSQ00,5294
|
|
194
|
+
flet/controls/material/selection_area.py,sha256=lVvhKpfdaSizyRvn9xL3di02JRLIiZi_Mk2DfciLBRo,1031
|
|
195
|
+
flet/controls/material/slider.py,sha256=KTYfbmbpCOzT1w6u6EIQXLdr5m-hpLiXci_Ll_gthKA,6887
|
|
196
|
+
flet/controls/material/snack_bar.py,sha256=M_zZ1MmfV9p-zXwl-kO9rECJOJOsZp6AHAxdwh85g3k,7425
|
|
185
197
|
flet/controls/material/submenu_button.py,sha256=4iQvOPTNRjNwXx3in8FWqBFKW6Mt22awwAhL8HiWd_I,2683
|
|
186
|
-
flet/controls/material/switch.py,sha256=
|
|
187
|
-
flet/controls/material/tabs.py,sha256=
|
|
198
|
+
flet/controls/material/switch.py,sha256=sykhqKToMADriYkp2dmGCUZCqum-2Ht6MMCJ3o2UHU4,6892
|
|
199
|
+
flet/controls/material/tabs.py,sha256=aWdLCgNyGPTzhTmEq28syYjvGAMXwPaJ7GLWF0de3PA,18642
|
|
188
200
|
flet/controls/material/text_button.py,sha256=Mkvz4LIl0yH1-e0ekOjPD6z8CZ5ZUIyE00zcb7sLKns,2578
|
|
189
|
-
flet/controls/material/textfield.py,sha256=
|
|
201
|
+
flet/controls/material/textfield.py,sha256=tFxtWIk7JCXeq7oL_2Ltmbw5bqmY4125PIBd07Qur3Y,11668
|
|
190
202
|
flet/controls/material/time_picker.py,sha256=_gUTaQi4N-mo1Oj_yJEsti8ToM0WhwhofbCjP5v2gzA,3070
|
|
191
203
|
flet/controls/material/tooltip.py,sha256=PTqJiiE95z4WCTlvCx7i3vA-gGwphUT7w_2oXMiiVtY,5636
|
|
192
|
-
flet/controls/material/vertical_divider.py,sha256=
|
|
204
|
+
flet/controls/material/vertical_divider.py,sha256=5-yjdV-sDXotSZFg_ApP_rtzBHlai4WkyeCOEoJhK34,2787
|
|
193
205
|
flet/controls/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
194
206
|
flet/controls/services/browser_context_menu.py,sha256=iLb160q7wPicdiVPXLZLzzQ4MCGxl2e-mOV4y4d2xQg,721
|
|
195
207
|
flet/controls/services/clipboard.py,sha256=Linpoz32r5i-K5vpafFwNKaWwByZ6cVFhJZ0p87M_UE,987
|
|
196
208
|
flet/controls/services/file_picker.py,sha256=Gsh1A4XBD3nIS9MDsLDirDwTMwO9nBZGHeC-F2furXI,7662
|
|
197
|
-
flet/controls/services/haptic_feedback.py,sha256=
|
|
209
|
+
flet/controls/services/haptic_feedback.py,sha256=JZMveq3loC3CWt3LPp87iWl6IeAzyUOnRejKzX9nLmo,1164
|
|
198
210
|
flet/controls/services/semantics_service.py,sha256=eF_EcVqOMsgUyyZYhKTNLP-PcFTX0a8NQsQkAU-jxyk,1662
|
|
199
211
|
flet/controls/services/service.py,sha256=1k3PGJxkJOub5Eb9SIjrRo2-Ik_xrmERQD0TfxjHYC0,378
|
|
200
|
-
flet/controls/services/shake_detector.py,sha256=
|
|
212
|
+
flet/controls/services/shake_detector.py,sha256=A9o5Z89lBUL7j6OhhMWv3Qna2O_ke1h3R1AFwKgmMwk,895
|
|
201
213
|
flet/controls/services/shared_preferences.py,sha256=xCwAxSf52PL56KfObLLG8DGQvSZRLtQmKXP3nB0kdDY,949
|
|
202
214
|
flet/controls/services/storage_paths.py,sha256=q6ykCW33IeMhvMQKAWaXZ8HKzsfdUpHGWAC52SM2NAQ,7800
|
|
203
215
|
flet/controls/services/url_launcher.py,sha256=YfvNGaivvwJ2vrSkxwgQ2R1l3A5wbgY6AxX8n2Fe02U,2735
|
|
204
216
|
flet/fastapi/__init__.py,sha256=crLmmKE-B-O-cm5MTlXFreYCUnqkw6mK4eIPUUMvSCM,45
|
|
205
217
|
flet/messaging/connection.py,sha256=yd7NlEAwAMxhCEhh6mLN-cihYfeJdUlHhx5SycRVct4,1646
|
|
206
|
-
flet/messaging/flet_socket_server.py,sha256=
|
|
218
|
+
flet/messaging/flet_socket_server.py,sha256=bFeC-hlKFhBoVHBYy6o_LzWiuFaUmT-vMT81t5lGEUM,9146
|
|
207
219
|
flet/messaging/protocol.py,sha256=LTdTUHD2RQfP55rL6InG2w0FfTJPWoKo_SGcand3YpA,3856
|
|
208
220
|
flet/messaging/pyodide_connection.py,sha256=-bNGKh0nYNtgdJ_nhBGJTF1TNX3vHqgxygetv2ZQwUs,4313
|
|
209
|
-
flet/messaging/session.py,sha256=
|
|
221
|
+
flet/messaging/session.py,sha256=RQkYkZDIKW-l9ShUvbYKPD6ZXgfD4yVz2WERgUnp_OA,12310
|
|
222
|
+
flet/messaging/session_store.py,sha256=80yy3fjEGJs_60UxS_o2tXl2QCenFb9IVDaJCK8wckY,557
|
|
210
223
|
flet/pubsub/__init__.py,sha256=qWcHYUa7oQEKysceGCeYG2AgIe0IO18NRXiP47jb_6o,126
|
|
211
224
|
flet/pubsub/pubsub_client.py,sha256=Wamm3T_md2ObOu5odN5-bPuMgt9Si8YvbYhSC2TtAIA,1245
|
|
212
225
|
flet/pubsub/pubsub_hub.py,sha256=1loRKhFYq23E89EYPaK4RMCbFdOW2qVeTQk8JqnbNp8,6514
|
|
@@ -232,8 +245,8 @@ flet/utils/platform_utils.py,sha256=U4cqV3EPi5QNYjbhfZmtk41-KMtI_P7KvVdnZzMOgJA,
|
|
|
232
245
|
flet/utils/slugify.py,sha256=e-lsoDc2_dk5jQnySaHCU83AA4O6mguEgCEdk2smW2Y,466
|
|
233
246
|
flet/utils/strings.py,sha256=R63_i7PdSAStCDPJ-O_WHBt3H02JQ14GSbnjLIpPTUc,178
|
|
234
247
|
flet/utils/vector.py,sha256=pYZzjldBWCZbSeSkZ8VmujwcZC7VBWk1NLBPA-2th3U,3207
|
|
235
|
-
flet-0.70.0.
|
|
236
|
-
flet-0.70.0.
|
|
237
|
-
flet-0.70.0.
|
|
238
|
-
flet-0.70.0.
|
|
239
|
-
flet-0.70.0.
|
|
248
|
+
flet-0.70.0.dev5835.dist-info/METADATA,sha256=GUvIKok6bJMD_anTcdBLA4S3G4gRtTN7Cwvsy6GUtoo,6220
|
|
249
|
+
flet-0.70.0.dev5835.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
250
|
+
flet-0.70.0.dev5835.dist-info/entry_points.txt,sha256=mbBhHNUnLHiDqR36WeJrfLJU0Y0y087-M4wagQmaQ_Y,39
|
|
251
|
+
flet-0.70.0.dev5835.dist-info/top_level.txt,sha256=HbLrSnWJX2jZOEZAI14cGzW8Q5BbOGTtE-7knD5FDh0,5
|
|
252
|
+
flet-0.70.0.dev5835.dist-info/RECORD,,
|
flet/controls/cache.py
DELETED
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import functools
|
|
2
|
-
import hashlib
|
|
3
|
-
import weakref
|
|
4
|
-
from typing import Callable, Optional, ParamSpec, TypeVar, Union, overload
|
|
5
|
-
|
|
6
|
-
P = ParamSpec("P")
|
|
7
|
-
R = TypeVar("R")
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
def _hash_args(*args, **kwargs):
|
|
11
|
-
try:
|
|
12
|
-
# Convert args/kwargs to a string and hash it
|
|
13
|
-
sig = repr((args, kwargs))
|
|
14
|
-
return hashlib.sha256(sig.encode()).hexdigest()
|
|
15
|
-
except Exception:
|
|
16
|
-
# fallback to id-based hash if unhashable
|
|
17
|
-
return str(id(args)) + str(id(kwargs))
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
def _freeze_controls(control):
|
|
21
|
-
if isinstance(control, list):
|
|
22
|
-
return [_freeze_controls(c) for c in control]
|
|
23
|
-
elif isinstance(control, dict):
|
|
24
|
-
return {k: _freeze_controls(v) for k, v in control.items()}
|
|
25
|
-
elif hasattr(control, "__dict__"): # assume it's a control
|
|
26
|
-
object.__setattr__(control, "_frozen", True)
|
|
27
|
-
return control
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
@overload
|
|
31
|
-
def cache(
|
|
32
|
-
_fn: None = ..., *, freeze: bool = False
|
|
33
|
-
) -> Callable[[Callable[P, R]], Callable[P, R]]: ...
|
|
34
|
-
@overload
|
|
35
|
-
def cache(_fn: Callable[P, R], *, freeze: bool = False) -> Callable[P, R]: ...
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
def cache(
|
|
39
|
-
_fn: Optional[Callable[P, R]] = None, *, freeze: bool = False
|
|
40
|
-
) -> Union[Callable[[Callable[P, R]], Callable[P, R]], Callable[P, R]]:
|
|
41
|
-
"""
|
|
42
|
-
A decorator to cache the results of a function based on its arguments.
|
|
43
|
-
Used with Flet controls to optimize comparisons in declarative apps.
|
|
44
|
-
|
|
45
|
-
Args:
|
|
46
|
-
_fn: The function to be decorated.
|
|
47
|
-
If None, the decorator is used with arguments.
|
|
48
|
-
freeze: If `True`, freezes the returned controls
|
|
49
|
-
by setting a `_frozen` attribute.
|
|
50
|
-
|
|
51
|
-
Returns:
|
|
52
|
-
A decorated function that caches its results.
|
|
53
|
-
"""
|
|
54
|
-
|
|
55
|
-
def decorator(fn: Callable[P, R]) -> Callable[P, R]:
|
|
56
|
-
# Use a weak reference dictionary to store cached results
|
|
57
|
-
cache_store = weakref.WeakValueDictionary()
|
|
58
|
-
|
|
59
|
-
@functools.wraps(fn)
|
|
60
|
-
def wrapper(*args: P.args, **kwargs: P.kwargs) -> R:
|
|
61
|
-
# Generate a unique hash key based on the function arguments
|
|
62
|
-
key = _hash_args(*args, **kwargs)
|
|
63
|
-
|
|
64
|
-
# Return cached result if it exists
|
|
65
|
-
if key in cache_store:
|
|
66
|
-
return cache_store[key]
|
|
67
|
-
|
|
68
|
-
# Call the original function and cache the result
|
|
69
|
-
result = fn(*args, **kwargs)
|
|
70
|
-
if result is not None:
|
|
71
|
-
if freeze:
|
|
72
|
-
# Freeze the controls if the freeze flag is set
|
|
73
|
-
_freeze_controls(result)
|
|
74
|
-
cache_store[key] = result
|
|
75
|
-
elif key in cache_store:
|
|
76
|
-
# Remove the cache entry if the result is None
|
|
77
|
-
del cache_store[key]
|
|
78
|
-
return result
|
|
79
|
-
|
|
80
|
-
return wrapper
|
|
81
|
-
|
|
82
|
-
# If _fn is None, return the decorator itself for use with arguments
|
|
83
|
-
if _fn is None:
|
|
84
|
-
return decorator
|
|
85
|
-
else:
|
|
86
|
-
# Apply the decorator directly if _fn is provided
|
|
87
|
-
return decorator(_fn)
|