flet 0.86.4__tar.gz → 1.0.0.dev0__tar.gz

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.
Files changed (330) hide show
  1. {flet-0.86.4 → flet-1.0.0.dev0}/PKG-INFO +14 -11
  2. {flet-0.86.4 → flet-1.0.0.dev0}/README.md +5 -2
  3. {flet-0.86.4 → flet-1.0.0.dev0}/pyproject.toml +9 -9
  4. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/__init__.py +30 -13
  5. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/app.py +39 -42
  6. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/components/component_owned.py +10 -1
  7. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/components/hooks/hook.py +2 -1
  8. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/components/hooks/use_context.py +2 -1
  9. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/components/hooks/use_dialog.py +60 -24
  10. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/components/hooks/use_effect.py +2 -1
  11. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/components/hooks/use_memo.py +2 -1
  12. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/components/hooks/use_ref.py +2 -1
  13. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/components/hooks/use_state.py +2 -1
  14. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/components/observable.py +4 -1
  15. flet-1.0.0.dev0/src/flet/controls/action_control.py +38 -0
  16. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/base_control.py +23 -14
  17. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/base_page.py +1 -1
  18. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/buttons.py +1 -1
  19. flet-1.0.0.dev0/src/flet/controls/client_action.py +118 -0
  20. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/colors.py +1 -27
  21. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/context.py +50 -11
  22. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/canvas/path.py +1 -1
  23. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/canvas/text.py +2 -2
  24. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/drag_target.py +0 -49
  25. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/flet_app.py +0 -57
  26. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/grid_view.py +1 -1
  27. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/icon.py +1 -1
  28. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/semantics.py +1 -1
  29. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/text.py +1 -1
  30. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/text_span.py +2 -2
  31. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/cupertino/cupertino_app_bar.py +3 -3
  32. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/cupertino/cupertino_button.py +2 -1
  33. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/cupertino/cupertino_list_tile.py +2 -1
  34. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/cupertino/cupertino_textfield.py +20 -0
  35. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/layout_control.py +1 -11
  36. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/button.py +3 -2
  37. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/container.py +2 -1
  38. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/context_menu.py +3 -3
  39. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/dropdown.py +79 -23
  40. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/dropdownm2.py +28 -8
  41. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/expansion_panel.py +1 -1
  42. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/floating_action_button.py +2 -1
  43. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/form_field_control.py +226 -51
  44. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/icon_button.py +2 -1
  45. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/list_tile.py +2 -1
  46. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/outlined_button.py +2 -1
  47. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/text_button.py +2 -1
  48. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/page.py +0 -171
  49. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/painting.py +13 -24
  50. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/services/clipboard.py +30 -1
  51. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/services/file_picker.py +118 -0
  52. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/services/share.py +47 -0
  53. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/services/url_launcher.py +41 -1
  54. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/types.py +1 -1
  55. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/messaging/connection.py +2 -2
  56. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/messaging/flet_dart_bridge_server.py +10 -10
  57. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/messaging/flet_socket_server.py +10 -10
  58. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/messaging/protocol.py +15 -7
  59. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/messaging/pyodide_connection.py +10 -10
  60. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/messaging/session.py +9 -9
  61. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/testing/flet_test_app.py +6 -0
  62. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/utils/__init__.py +0 -2
  63. flet-1.0.0.dev0/src/flet/utils/environment.py +38 -0
  64. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/utils/files.py +0 -27
  65. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/version.py +1 -1
  66. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet.egg-info/PKG-INFO +14 -11
  67. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet.egg-info/SOURCES.txt +9 -1
  68. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet.egg-info/requires.txt +8 -8
  69. flet-1.0.0.dev0/tests/test_assets_dir_resolution.py +117 -0
  70. flet-1.0.0.dev0/tests/test_client_actions.py +111 -0
  71. flet-1.0.0.dev0/tests/test_component_owned_identity.py +120 -0
  72. flet-1.0.0.dev0/tests/test_context_auto_update.py +124 -0
  73. flet-1.0.0.dev0/tests/test_environment.py +70 -0
  74. flet-1.0.0.dev0/tests/test_generator_handler_yield.py +161 -0
  75. {flet-0.86.4 → flet-1.0.0.dev0}/tests/test_session_disconnect_buffering.py +4 -4
  76. {flet-0.86.4 → flet-1.0.0.dev0}/tests/test_use_dialog.py +83 -2
  77. flet-0.86.4/src/flet/controls/material/elevated_button.py +0 -13
  78. {flet-0.86.4 → flet-1.0.0.dev0}/setup.cfg +0 -0
  79. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/auth/__init__.py +0 -0
  80. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/auth/authorization.py +0 -0
  81. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/auth/authorization_service.py +0 -0
  82. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/auth/group.py +0 -0
  83. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/auth/oauth_provider.py +0 -0
  84. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/auth/oauth_token.py +0 -0
  85. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/auth/providers/__init__.py +0 -0
  86. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/auth/providers/auth0_oauth_provider.py +0 -0
  87. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/auth/providers/azure_oauth_provider.py +0 -0
  88. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/auth/providers/github_oauth_provider.py +0 -0
  89. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/auth/providers/google_oauth_provider.py +0 -0
  90. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/auth/user.py +0 -0
  91. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/canvas/__init__.py +0 -0
  92. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/cli.py +0 -0
  93. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/components/__init__.py +0 -0
  94. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/components/component.py +0 -0
  95. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/components/component_decorator.py +0 -0
  96. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/components/hooks/__init__.py +0 -0
  97. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/components/hooks/use_callback.py +0 -0
  98. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/components/memo.py +0 -0
  99. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/components/public_utils.py +0 -0
  100. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/components/router.py +0 -0
  101. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/components/utils.py +0 -0
  102. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/__init__.py +0 -0
  103. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/adaptive_control.py +0 -0
  104. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/alignment.py +0 -0
  105. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/animation.py +0 -0
  106. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/blur.py +0 -0
  107. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/border.py +0 -0
  108. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/border_radius.py +0 -0
  109. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/box.py +0 -0
  110. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/control.py +0 -0
  111. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/control_event.py +0 -0
  112. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/control_state.py +0 -0
  113. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/__init__.py +0 -0
  114. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/animated_switcher.py +0 -0
  115. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/autofill_group.py +0 -0
  116. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/canvas/__init__.py +0 -0
  117. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/canvas/arc.py +0 -0
  118. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/canvas/canvas.py +0 -0
  119. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/canvas/circle.py +0 -0
  120. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/canvas/color.py +0 -0
  121. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/canvas/fill.py +0 -0
  122. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/canvas/image.py +0 -0
  123. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/canvas/line.py +0 -0
  124. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/canvas/oval.py +0 -0
  125. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/canvas/points.py +0 -0
  126. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/canvas/rect.py +0 -0
  127. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/canvas/shadow.py +0 -0
  128. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/canvas/shape.py +0 -0
  129. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/column.py +0 -0
  130. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/dismissible.py +0 -0
  131. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/draggable.py +0 -0
  132. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/gesture_detector.py +0 -0
  133. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/hero.py +0 -0
  134. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/image.py +0 -0
  135. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/interactive_viewer.py +0 -0
  136. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/keyboard_listener.py +0 -0
  137. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/list_view.py +0 -0
  138. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/markdown.py +0 -0
  139. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/merge_semantics.py +0 -0
  140. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/page_view.py +0 -0
  141. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/pagelet.py +0 -0
  142. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/placeholder.py +0 -0
  143. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/raw_image.py +0 -0
  144. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/reorderable_drag_handle.py +0 -0
  145. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/responsive_row.py +0 -0
  146. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/rotated_box.py +0 -0
  147. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/row.py +0 -0
  148. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/safe_area.py +0 -0
  149. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/screenshot.py +0 -0
  150. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/shader_mask.py +0 -0
  151. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/shimmer.py +0 -0
  152. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/stack.py +0 -0
  153. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/transparent_pointer.py +0 -0
  154. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/view.py +0 -0
  155. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/window.py +0 -0
  156. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/core/window_drag_area.py +0 -0
  157. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/cupertino/__init__.py +0 -0
  158. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/cupertino/cupertino_action_sheet.py +0 -0
  159. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/cupertino/cupertino_action_sheet_action.py +0 -0
  160. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/cupertino/cupertino_activity_indicator.py +0 -0
  161. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/cupertino/cupertino_alert_dialog.py +0 -0
  162. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/cupertino/cupertino_bottom_sheet.py +0 -0
  163. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/cupertino/cupertino_checkbox.py +0 -0
  164. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/cupertino/cupertino_colors.py +0 -0
  165. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/cupertino/cupertino_context_menu.py +0 -0
  166. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/cupertino/cupertino_context_menu_action.py +0 -0
  167. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/cupertino/cupertino_date_picker.py +0 -0
  168. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/cupertino/cupertino_dialog_action.py +0 -0
  169. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/cupertino/cupertino_filled_button.py +0 -0
  170. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/cupertino/cupertino_icons.json +0 -0
  171. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/cupertino/cupertino_icons.py +0 -0
  172. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/cupertino/cupertino_icons.pyi +0 -0
  173. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/cupertino/cupertino_navigation_bar.py +0 -0
  174. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/cupertino/cupertino_picker.py +0 -0
  175. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/cupertino/cupertino_radio.py +0 -0
  176. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/cupertino/cupertino_segmented_button.py +0 -0
  177. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/cupertino/cupertino_slider.py +0 -0
  178. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/cupertino/cupertino_sliding_segmented_button.py +0 -0
  179. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/cupertino/cupertino_switch.py +0 -0
  180. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/cupertino/cupertino_timer_picker.py +0 -0
  181. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/cupertino/cupertino_tinted_button.py +0 -0
  182. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/device_info.py +0 -0
  183. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/dialog_control.py +0 -0
  184. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/duration.py +0 -0
  185. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/embed_json_encoder.py +0 -0
  186. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/events.py +0 -0
  187. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/exceptions.py +0 -0
  188. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/geometry.py +0 -0
  189. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/gradients.py +0 -0
  190. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/icon_data.py +0 -0
  191. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/id_counter.py +0 -0
  192. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/keys.py +0 -0
  193. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/margin.py +0 -0
  194. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/__init__.py +0 -0
  195. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/alert_dialog.py +0 -0
  196. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/app_bar.py +0 -0
  197. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/auto_complete.py +0 -0
  198. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/badge.py +0 -0
  199. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/banner.py +0 -0
  200. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/bottom_app_bar.py +0 -0
  201. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/bottom_sheet.py +0 -0
  202. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/card.py +0 -0
  203. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/checkbox.py +0 -0
  204. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/chip.py +0 -0
  205. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/circle_avatar.py +0 -0
  206. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/datatable.py +0 -0
  207. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/date_picker.py +0 -0
  208. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/date_range_picker.py +0 -0
  209. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/divider.py +0 -0
  210. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/expansion_tile.py +0 -0
  211. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/filled_button.py +0 -0
  212. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/filled_tonal_button.py +0 -0
  213. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/icons.json +0 -0
  214. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/icons.py +0 -0
  215. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/icons.pyi +0 -0
  216. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/menu_bar.py +0 -0
  217. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/menu_item_button.py +0 -0
  218. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/navigation_bar.py +0 -0
  219. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/navigation_drawer.py +0 -0
  220. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/navigation_rail.py +0 -0
  221. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/popup_menu_button.py +0 -0
  222. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/progress_bar.py +0 -0
  223. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/progress_ring.py +0 -0
  224. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/radio.py +0 -0
  225. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/radio_group.py +0 -0
  226. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/range_slider.py +0 -0
  227. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/reorderable_list_view.py +0 -0
  228. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/search_bar.py +0 -0
  229. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/segmented_button.py +0 -0
  230. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/selection_area.py +0 -0
  231. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/slider.py +0 -0
  232. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/snack_bar.py +0 -0
  233. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/submenu_button.py +0 -0
  234. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/switch.py +0 -0
  235. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/tabs.py +0 -0
  236. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/textfield.py +0 -0
  237. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/time_picker.py +0 -0
  238. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/tooltip.py +0 -0
  239. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/material/vertical_divider.py +0 -0
  240. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/multi_view.py +0 -0
  241. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/object_patch.py +0 -0
  242. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/padding.py +0 -0
  243. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/query_string.py +0 -0
  244. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/ref.py +0 -0
  245. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/scrollable_control.py +0 -0
  246. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/services/__init__.py +0 -0
  247. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/services/accelerometer.py +0 -0
  248. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/services/barometer.py +0 -0
  249. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/services/battery.py +0 -0
  250. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/services/browser_context_menu.py +0 -0
  251. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/services/connectivity.py +0 -0
  252. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/services/gyroscope.py +0 -0
  253. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/services/haptic_feedback.py +0 -0
  254. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/services/magnetometer.py +0 -0
  255. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/services/screen_brightness.py +0 -0
  256. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/services/semantics_service.py +0 -0
  257. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/services/sensor_error_event.py +0 -0
  258. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/services/service.py +0 -0
  259. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/services/shake_detector.py +0 -0
  260. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/services/shared_preferences.py +0 -0
  261. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/services/storage_paths.py +0 -0
  262. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/services/user_accelerometer.py +0 -0
  263. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/services/wakelock.py +0 -0
  264. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/template_route.py +0 -0
  265. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/text_style.py +0 -0
  266. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/theme.py +0 -0
  267. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/transform.py +0 -0
  268. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/controls/value_types.py +0 -0
  269. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/data_channel.py +0 -0
  270. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/fastapi/__init__.py +0 -0
  271. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/messaging/session_store.py +0 -0
  272. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/pubsub/__init__.py +0 -0
  273. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/pubsub/pubsub_client.py +0 -0
  274. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/pubsub/pubsub_hub.py +0 -0
  275. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/py.typed +0 -0
  276. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/pytest_plugin.py +0 -0
  277. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/security/__init__.py +0 -0
  278. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/testing/__init__.py +0 -0
  279. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/testing/finder.py +0 -0
  280. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/testing/remote_tester.py +0 -0
  281. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/testing/tester.py +0 -0
  282. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/utils/browser.py +0 -0
  283. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/utils/classproperty.py +0 -0
  284. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/utils/deprecated.py +0 -0
  285. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/utils/deprecated_enum.py +0 -0
  286. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/utils/from_dict.py +0 -0
  287. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/utils/griffe_deprecations.py +0 -0
  288. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/utils/hashing.py +0 -0
  289. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/utils/json_utils.py +0 -0
  290. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/utils/locks.py +0 -0
  291. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/utils/network.py +0 -0
  292. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/utils/object_model.py +0 -0
  293. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/utils/once.py +0 -0
  294. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/utils/pip.py +0 -0
  295. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/utils/platform_utils.py +0 -0
  296. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/utils/slugify.py +0 -0
  297. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/utils/strings.py +0 -0
  298. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/utils/typing_utils.py +0 -0
  299. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/utils/validation.py +0 -0
  300. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet/utils/vector.py +0 -0
  301. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet.egg-info/dependency_links.txt +0 -0
  302. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet.egg-info/entry_points.txt +0 -0
  303. {flet-0.86.4 → flet-1.0.0.dev0}/src/flet.egg-info/top_level.txt +0 -0
  304. {flet-0.86.4 → flet-1.0.0.dev0}/tests/test_auth_lazy_imports.py +0 -0
  305. {flet-0.86.4 → flet-1.0.0.dev0}/tests/test_base_control.py +0 -0
  306. {flet-0.86.4 → flet-1.0.0.dev0}/tests/test_colors.py +0 -0
  307. {flet-0.86.4 → flet-1.0.0.dev0}/tests/test_component_diff.py +0 -0
  308. {flet-0.86.4 → flet-1.0.0.dev0}/tests/test_component_effects.py +0 -0
  309. {flet-0.86.4 → flet-1.0.0.dev0}/tests/test_component_renderer.py +0 -0
  310. {flet-0.86.4 → flet-1.0.0.dev0}/tests/test_dataclasses.py +0 -0
  311. {flet-0.86.4 → flet-1.0.0.dev0}/tests/test_datetime.py +0 -0
  312. {flet-0.86.4 → flet-1.0.0.dev0}/tests/test_deprecated.py +0 -0
  313. {flet-0.86.4 → flet-1.0.0.dev0}/tests/test_events.py +0 -0
  314. {flet-0.86.4 → flet-1.0.0.dev0}/tests/test_from_dict.py +0 -0
  315. {flet-0.86.4 → flet-1.0.0.dev0}/tests/test_griffe_deprecations.py +0 -0
  316. {flet-0.86.4 → flet-1.0.0.dev0}/tests/test_icons.py +0 -0
  317. {flet-0.86.4 → flet-1.0.0.dev0}/tests/test_object_diff_frozen.py +0 -0
  318. {flet-0.86.4 → flet-1.0.0.dev0}/tests/test_object_diff_in_place.py +0 -0
  319. {flet-0.86.4 → flet-1.0.0.dev0}/tests/test_object_diff_memory_churn.py +0 -0
  320. {flet-0.86.4 → flet-1.0.0.dev0}/tests/test_object_diff_performance.py +0 -0
  321. {flet-0.86.4 → flet-1.0.0.dev0}/tests/test_observable.py +0 -0
  322. {flet-0.86.4 → flet-1.0.0.dev0}/tests/test_patch_dataclass.py +0 -0
  323. {flet-0.86.4 → flet-1.0.0.dev0}/tests/test_raw_image_pixels.py +0 -0
  324. {flet-0.86.4 → flet-1.0.0.dev0}/tests/test_router_modal.py +0 -0
  325. {flet-0.86.4 → flet-1.0.0.dev0}/tests/test_router_pop.py +0 -0
  326. {flet-0.86.4 → flet-1.0.0.dev0}/tests/test_router_recursive.py +0 -0
  327. {flet-0.86.4 → flet-1.0.0.dev0}/tests/test_skip_double_update.py +0 -0
  328. {flet-0.86.4 → flet-1.0.0.dev0}/tests/test_validation.py +0 -0
  329. {flet-0.86.4 → flet-1.0.0.dev0}/tests/test_validation_benchmark.py +0 -0
  330. {flet-0.86.4 → flet-1.0.0.dev0}/tests/test_version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flet
3
- Version: 0.86.4
3
+ Version: 1.0.0.dev0
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,23 +9,23 @@ Project-URL: Repository, https://github.com/flet-dev/flet
9
9
  Project-URL: Documentation, https://flet.dev/docs/
10
10
  Requires-Python: >=3.10
11
11
  Description-Content-Type: text/markdown
12
- Requires-Dist: flet-cli==0.86.4; extra == "cli"
13
- Requires-Dist: flet-web==0.86.4; extra == "web"
12
+ Requires-Dist: flet-cli==1.0.0.dev0; extra == "cli"
13
+ Requires-Dist: flet-web==1.0.0.dev0; extra == "web"
14
14
  Requires-Dist: oauthlib>=3.2.2; platform_system != "Emscripten"
15
15
  Requires-Dist: httpx>=0.28.1; platform_system != "Emscripten"
16
16
  Requires-Dist: repath>=0.9.0
17
17
  Requires-Dist: msgpack>=1.1.0
18
18
  Requires-Dist: typing-extensions; python_version < "3.11"
19
19
  Provides-Extra: all
20
- Requires-Dist: flet-cli==0.86.4; extra == "all"
21
- Requires-Dist: flet-web==0.86.4; extra == "all"
22
- Requires-Dist: flet-desktop==0.86.4; extra == "all"
20
+ Requires-Dist: flet-cli==1.0.0.dev0; extra == "all"
21
+ Requires-Dist: flet-web==1.0.0.dev0; extra == "all"
22
+ Requires-Dist: flet-desktop==1.0.0.dev0; extra == "all"
23
23
  Provides-Extra: cli
24
- Requires-Dist: flet-cli==0.86.4; extra == "cli"
24
+ Requires-Dist: flet-cli==1.0.0.dev0; extra == "cli"
25
25
  Provides-Extra: desktop
26
- Requires-Dist: flet-desktop==0.86.4; extra == "desktop"
26
+ Requires-Dist: flet-desktop==1.0.0.dev0; extra == "desktop"
27
27
  Provides-Extra: web
28
- Requires-Dist: flet-web==0.86.4; extra == "web"
28
+ Requires-Dist: flet-web==1.0.0.dev0; extra == "web"
29
29
  Provides-Extra: test
30
30
  Requires-Dist: pytest>=7.2.0; extra == "test"
31
31
  Requires-Dist: pytest-asyncio>=1.1.0; extra == "test"
@@ -34,7 +34,10 @@ Requires-Dist: pillow>=10.3.0; extra == "test"
34
34
  Requires-Dist: scikit-image>=0.25.2; extra == "test"
35
35
 
36
36
  <p align="center">
37
- <a href="https://flet.dev"><img src="https://raw.githubusercontent.com/flet-dev/flet/refs/heads/main/media/logo/flet-logo.svg" height="150" alt="Flet logo"></a>
37
+ <a href="https://flet.dev"><picture>
38
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/flet-dev/flet/refs/heads/main/media/logo/flet-logo-dark.svg">
39
+ <img src="https://raw.githubusercontent.com/flet-dev/flet/refs/heads/main/media/logo/flet-logo.svg" height="150" alt="Flet logo">
40
+ </picture></a>
38
41
  </p>
39
42
 
40
43
  <p align="center">
@@ -163,7 +166,7 @@ flet run --web counter.py
163
166
  * [Website](https://flet.dev)
164
167
  * [Documentation](https://flet.dev/docs/)
165
168
  * [Roadmap](https://flet.dev/roadmap)
166
- * [Apps Gallery](https://flet.dev/gallery)
169
+ * [Apps Gallery](https://studio.flet.dev/gallery)
167
170
 
168
171
  ## Community
169
172
 
@@ -1,5 +1,8 @@
1
1
  <p align="center">
2
- <a href="https://flet.dev"><img src="https://raw.githubusercontent.com/flet-dev/flet/refs/heads/main/media/logo/flet-logo.svg" height="150" alt="Flet logo"></a>
2
+ <a href="https://flet.dev"><picture>
3
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/flet-dev/flet/refs/heads/main/media/logo/flet-logo-dark.svg">
4
+ <img src="https://raw.githubusercontent.com/flet-dev/flet/refs/heads/main/media/logo/flet-logo.svg" height="150" alt="Flet logo">
5
+ </picture></a>
3
6
  </p>
4
7
 
5
8
  <p align="center">
@@ -128,7 +131,7 @@ flet run --web counter.py
128
131
  * [Website](https://flet.dev)
129
132
  * [Documentation](https://flet.dev/docs/)
130
133
  * [Roadmap](https://flet.dev/roadmap)
131
- * [Apps Gallery](https://flet.dev/gallery)
134
+ * [Apps Gallery](https://studio.flet.dev/gallery)
132
135
 
133
136
  ## Community
134
137
 
@@ -1,14 +1,14 @@
1
1
  [project]
2
2
  name = "flet"
3
- version = "0.86.4"
3
+ version = "1.0.0.dev0"
4
4
  description = "Flet for Python - easily build interactive multi-platform apps in Python"
5
5
  authors = [{name = "Appveyor Systems Inc.", email = "hello@flet.dev"}]
6
6
  license = "Apache-2.0"
7
7
  readme = "README.md"
8
8
  requires-python = ">=3.10"
9
9
  dependencies = [
10
- "flet-cli==0.86.4; extra == 'cli'",
11
- "flet-web==0.86.4; extra == 'web'",
10
+ "flet-cli==1.0.0.dev0; extra == 'cli'",
11
+ "flet-web==1.0.0.dev0; extra == 'web'",
12
12
  "oauthlib >=3.2.2; platform_system != 'Emscripten'",
13
13
  "httpx >=0.28.1; platform_system != 'Emscripten'",
14
14
  "repath >=0.9.0",
@@ -23,15 +23,15 @@ Documentation = "https://flet.dev/docs/"
23
23
 
24
24
  [project.optional-dependencies]
25
25
  all = [
26
- "flet-cli==0.86.4",
27
- "flet-web==0.86.4",
28
- "flet-desktop==0.86.4",
26
+ "flet-cli==1.0.0.dev0",
27
+ "flet-web==1.0.0.dev0",
28
+ "flet-desktop==1.0.0.dev0",
29
29
  ]
30
- cli = ["flet-cli==0.86.4"]
30
+ cli = ["flet-cli==1.0.0.dev0"]
31
31
  desktop = [
32
- "flet-desktop==0.86.4",
32
+ "flet-desktop==1.0.0.dev0",
33
33
  ]
34
- web = ["flet-web==0.86.4"]
34
+ web = ["flet-web==1.0.0.dev0"]
35
35
  # Dependencies needed to run integration tests written with `flet.testing`
36
36
  # (the `flet test` command / the pytest plugin). Pillow/numpy/scikit-image
37
37
  # back screenshot and GIF comparison.
@@ -9,8 +9,6 @@ from flet.version import flet_version as __version__
9
9
  if TYPE_CHECKING:
10
10
  from flet.app import (
11
11
  AppCallable,
12
- app,
13
- app_async,
14
12
  run,
15
13
  run_async,
16
14
  )
@@ -56,6 +54,7 @@ if TYPE_CHECKING:
56
54
  margin,
57
55
  padding,
58
56
  )
57
+ from flet.controls.action_control import ActionControl
59
58
  from flet.controls.adaptive_control import AdaptiveControl
60
59
  from flet.controls.alignment import (
61
60
  Alignment,
@@ -116,6 +115,7 @@ if TYPE_CHECKING:
116
115
  ShapeBorder,
117
116
  StadiumBorder,
118
117
  )
118
+ from flet.controls.client_action import ClientAction
119
119
  from flet.controls.colors import Colors
120
120
  from flet.controls.context import (
121
121
  Context,
@@ -334,7 +334,6 @@ if TYPE_CHECKING:
334
334
  ValueKey,
335
335
  )
336
336
  from flet.controls.layout_control import (
337
- ConstrainedControl,
338
337
  LayoutControl,
339
338
  LayoutSizeChangeEvent,
340
339
  )
@@ -396,7 +395,6 @@ if TYPE_CHECKING:
396
395
  DropdownOption,
397
396
  )
398
397
  from flet.controls.material.dropdownm2 import DropdownM2
399
- from flet.controls.material.elevated_button import ElevatedButton
400
398
  from flet.controls.material.expansion_panel import (
401
399
  ExpansionPanel,
402
400
  ExpansionPanelList,
@@ -412,6 +410,9 @@ if TYPE_CHECKING:
412
410
  from flet.controls.material.form_field_control import (
413
411
  FormFieldControl,
414
412
  InputBorder,
413
+ NoInputBorder,
414
+ OutlineInputBorder,
415
+ UnderlineInputBorder,
415
416
  )
416
417
  from flet.controls.material.icon_button import (
417
418
  FilledIconButton,
@@ -559,7 +560,7 @@ if TYPE_CHECKING:
559
560
  BatteryStateChangeEvent,
560
561
  )
561
562
  from flet.controls.services.browser_context_menu import BrowserContextMenu
562
- from flet.controls.services.clipboard import Clipboard
563
+ from flet.controls.services.clipboard import Clipboard, CopyToClipboard
563
564
  from flet.controls.services.connectivity import (
564
565
  Connectivity,
565
566
  ConnectivityChangeEvent,
@@ -569,8 +570,10 @@ if TYPE_CHECKING:
569
570
  FilePicker,
570
571
  FilePickerFile,
571
572
  FilePickerFileType,
573
+ FilePickerResultEvent,
572
574
  FilePickerUploadEvent,
573
575
  FilePickerUploadFile,
576
+ PickFiles,
574
577
  )
575
578
  from flet.controls.services.gyroscope import (
576
579
  Gyroscope,
@@ -598,12 +601,14 @@ if TYPE_CHECKING:
598
601
  ShareFile,
599
602
  ShareResult,
600
603
  ShareResultStatus,
604
+ ShareText,
601
605
  )
602
606
  from flet.controls.services.shared_preferences import SharedPreferences
603
607
  from flet.controls.services.storage_paths import StoragePaths
604
608
  from flet.controls.services.url_launcher import (
605
609
  BrowserConfiguration,
606
610
  LaunchMode,
611
+ OpenUrl,
607
612
  UrlLauncher,
608
613
  WebViewConfiguration,
609
614
  )
@@ -731,6 +736,7 @@ if TYPE_CHECKING:
731
736
  __all__ = [
732
737
  "Accelerometer",
733
738
  "AccelerometerReadingEvent",
739
+ "ActionControl",
734
740
  "AdaptiveControl",
735
741
  "AlertDialog",
736
742
  "Alignment",
@@ -808,6 +814,7 @@ __all__ = [
808
814
  "CircleAvatar",
809
815
  "CircleBorder",
810
816
  "CircularRectangleNotchShape",
817
+ "ClientAction",
811
818
  "ClipBehavior",
812
819
  "Clipboard",
813
820
  "ColorFilter",
@@ -819,7 +826,6 @@ __all__ = [
819
826
  "Connectivity",
820
827
  "ConnectivityChangeEvent",
821
828
  "ConnectivityType",
822
- "ConstrainedControl",
823
829
  "Container",
824
830
  "Context",
825
831
  "ContextMenu",
@@ -833,6 +839,7 @@ __all__ = [
833
839
  "ControlEventHandler",
834
840
  "ControlState",
835
841
  "ControlStateValue",
842
+ "CopyToClipboard",
836
843
  "CrossAxisAlignment",
837
844
  "CupertinoActionSheet",
838
845
  "CupertinoActionSheetAction",
@@ -905,7 +912,6 @@ __all__ = [
905
912
  "DropdownTheme",
906
913
  "Duration",
907
914
  "DurationValue",
908
- "ElevatedButton",
909
915
  "Event",
910
916
  "EventControlType",
911
917
  "EventHandler",
@@ -917,6 +923,7 @@ __all__ = [
917
923
  "FilePicker",
918
924
  "FilePickerFile",
919
925
  "FilePickerFileType",
926
+ "FilePickerResultEvent",
920
927
  "FilePickerUploadEvent",
921
928
  "FilePickerUploadFile",
922
929
  "FilledButton",
@@ -1022,6 +1029,7 @@ __all__ = [
1022
1029
  "NavigationRailDestination",
1023
1030
  "NavigationRailLabelType",
1024
1031
  "NavigationRailTheme",
1032
+ "NoInputBorder",
1025
1033
  "NotchShape",
1026
1034
  "Number",
1027
1035
  "NumbersOnlyInputFilter",
@@ -1030,7 +1038,9 @@ __all__ = [
1030
1038
  "OffsetValue",
1031
1039
  "OnReorderEvent",
1032
1040
  "OnScrollEvent",
1041
+ "OpenUrl",
1033
1042
  "Orientation",
1043
+ "OutlineInputBorder",
1034
1044
  "OutlinedBorder",
1035
1045
  "OutlinedButton",
1036
1046
  "OutlinedButtonTheme",
@@ -1052,6 +1062,7 @@ __all__ = [
1052
1062
  "PaintRadialGradient",
1053
1063
  "PaintSweepGradient",
1054
1064
  "PaintingStyle",
1065
+ "PickFiles",
1055
1066
  "Placeholder",
1056
1067
  "PlatformBrightnessChangeEvent",
1057
1068
  "PointerDeviceType",
@@ -1125,6 +1136,7 @@ __all__ = [
1125
1136
  "ShareFile",
1126
1137
  "ShareResult",
1127
1138
  "ShareResultStatus",
1139
+ "ShareText",
1128
1140
  "SharedPreferences",
1129
1141
  "Shimmer",
1130
1142
  "ShimmerDirection",
@@ -1195,6 +1207,7 @@ __all__ = [
1195
1207
  "TooltipValue",
1196
1208
  "Transform",
1197
1209
  "TransparentPointer",
1210
+ "UnderlineInputBorder",
1198
1211
  "UnderlineTabIndicator",
1199
1212
  "Url",
1200
1213
  "UrlLauncher",
@@ -1222,8 +1235,6 @@ __all__ = [
1222
1235
  "WindowsDeviceInfo",
1223
1236
  "__version__",
1224
1237
  "alignment",
1225
- "app",
1226
- "app_async",
1227
1238
  "border",
1228
1239
  "border_radius",
1229
1240
  "component",
@@ -1265,6 +1276,7 @@ __all__ = [
1265
1276
  _LAZY = {
1266
1277
  "Accelerometer": "flet.controls.services.accelerometer",
1267
1278
  "AccelerometerReadingEvent": "flet.controls.services.accelerometer",
1279
+ "ActionControl": "flet.controls.action_control",
1268
1280
  "AdaptiveControl": "flet.controls.adaptive_control",
1269
1281
  "AlertDialog": "flet.controls.material.alert_dialog",
1270
1282
  "Alignment": "flet.controls.alignment",
@@ -1342,6 +1354,7 @@ _LAZY = {
1342
1354
  "CircleAvatar": "flet.controls.material.circle_avatar",
1343
1355
  "CircleBorder": "flet.controls.buttons",
1344
1356
  "CircularRectangleNotchShape": "flet.controls.types",
1357
+ "ClientAction": "flet.controls.client_action",
1345
1358
  "ClipBehavior": "flet.controls.types",
1346
1359
  "Clipboard": "flet.controls.services.clipboard",
1347
1360
  "ColorFilter": "flet.controls.box",
@@ -1353,7 +1366,6 @@ _LAZY = {
1353
1366
  "Connectivity": "flet.controls.services.connectivity",
1354
1367
  "ConnectivityChangeEvent": "flet.controls.services.connectivity",
1355
1368
  "ConnectivityType": "flet.controls.services.connectivity",
1356
- "ConstrainedControl": "flet.controls.layout_control",
1357
1369
  "Container": "flet.controls.material.container",
1358
1370
  "Context": "flet.controls.context",
1359
1371
  "ContextMenu": "flet.controls.material.context_menu",
@@ -1367,6 +1379,7 @@ _LAZY = {
1367
1379
  "ControlEventHandler": "flet.controls.control_event",
1368
1380
  "ControlState": "flet.controls.control_state",
1369
1381
  "ControlStateValue": "flet.controls.control_state",
1382
+ "CopyToClipboard": "flet.controls.services.clipboard",
1370
1383
  "CrossAxisAlignment": "flet.controls.types",
1371
1384
  "CupertinoActionSheet": "flet.controls.cupertino.cupertino_action_sheet",
1372
1385
  "CupertinoActionSheetAction": "flet.controls.cupertino.cupertino_action_sheet_action", # noqa: E501
@@ -1439,7 +1452,6 @@ _LAZY = {
1439
1452
  "DropdownTheme": "flet.controls.theme",
1440
1453
  "Duration": "flet.controls.duration",
1441
1454
  "DurationValue": "flet.controls.duration",
1442
- "ElevatedButton": "flet.controls.material.elevated_button",
1443
1455
  "Event": "flet.controls.control_event",
1444
1456
  "EventControlType": "flet.controls.control_event",
1445
1457
  "EventHandler": "flet.controls.control_event",
@@ -1451,6 +1463,7 @@ _LAZY = {
1451
1463
  "FilePicker": "flet.controls.services.file_picker",
1452
1464
  "FilePickerFile": "flet.controls.services.file_picker",
1453
1465
  "FilePickerFileType": "flet.controls.services.file_picker",
1466
+ "FilePickerResultEvent": "flet.controls.services.file_picker",
1454
1467
  "FilePickerUploadEvent": "flet.controls.services.file_picker",
1455
1468
  "FilePickerUploadFile": "flet.controls.services.file_picker",
1456
1469
  "FilledButton": "flet.controls.material.filled_button",
@@ -1556,6 +1569,7 @@ _LAZY = {
1556
1569
  "NavigationRailDestination": "flet.controls.material.navigation_rail",
1557
1570
  "NavigationRailLabelType": "flet.controls.material.navigation_rail",
1558
1571
  "NavigationRailTheme": "flet.controls.theme",
1572
+ "NoInputBorder": "flet.controls.material.form_field_control",
1559
1573
  "NotchShape": "flet.controls.types",
1560
1574
  "Number": "flet.controls.types",
1561
1575
  "NumbersOnlyInputFilter": "flet.controls.material.textfield",
@@ -1564,7 +1578,9 @@ _LAZY = {
1564
1578
  "OffsetValue": "flet.controls.transform",
1565
1579
  "OnReorderEvent": "flet.controls.material.reorderable_list_view",
1566
1580
  "OnScrollEvent": "flet.controls.scrollable_control",
1581
+ "OpenUrl": "flet.controls.services.url_launcher",
1567
1582
  "Orientation": "flet.controls.types",
1583
+ "OutlineInputBorder": "flet.controls.material.form_field_control",
1568
1584
  "OutlinedBorder": "flet.controls.buttons",
1569
1585
  "OutlinedButton": "flet.controls.material.outlined_button",
1570
1586
  "OutlinedButtonTheme": "flet.controls.theme",
@@ -1586,6 +1602,7 @@ _LAZY = {
1586
1602
  "PaintRadialGradient": "flet.controls.painting",
1587
1603
  "PaintSweepGradient": "flet.controls.painting",
1588
1604
  "PaintingStyle": "flet.controls.painting",
1605
+ "PickFiles": "flet.controls.services.file_picker",
1589
1606
  "Placeholder": "flet.controls.core.placeholder",
1590
1607
  "PlatformBrightnessChangeEvent": "flet.controls.page",
1591
1608
  "PointerDeviceType": "flet.controls.types",
@@ -1659,6 +1676,7 @@ _LAZY = {
1659
1676
  "ShareFile": "flet.controls.services.share",
1660
1677
  "ShareResult": "flet.controls.services.share",
1661
1678
  "ShareResultStatus": "flet.controls.services.share",
1679
+ "ShareText": "flet.controls.services.share",
1662
1680
  "SharedPreferences": "flet.controls.services.shared_preferences",
1663
1681
  "Shimmer": "flet.controls.core.shimmer",
1664
1682
  "ShimmerDirection": "flet.controls.core.shimmer",
@@ -1729,6 +1747,7 @@ _LAZY = {
1729
1747
  "TooltipValue": "flet.controls.material.tooltip",
1730
1748
  "Transform": "flet.controls.transform",
1731
1749
  "TransparentPointer": "flet.controls.core.transparent_pointer",
1750
+ "UnderlineInputBorder": "flet.controls.material.form_field_control",
1732
1751
  "UnderlineTabIndicator": "flet.controls.material.tabs",
1733
1752
  "Url": "flet.controls.types",
1734
1753
  "UrlLauncher": "flet.controls.services.url_launcher",
@@ -1755,8 +1774,6 @@ _LAZY = {
1755
1774
  "WindowResizeEdge": "flet.controls.core.window",
1756
1775
  "WindowsDeviceInfo": "flet.controls.device_info",
1757
1776
  "alignment": "flet.controls",
1758
- "app": "flet.app",
1759
- "app_async": "flet.app",
1760
1777
  "border": "flet.controls",
1761
1778
  "border_radius": "flet.controls",
1762
1779
  "component": "flet.components.component_decorator",
@@ -23,7 +23,6 @@ from flet.utils import (
23
23
  is_pyodide,
24
24
  open_in_browser,
25
25
  )
26
- from flet.utils.deprecated import deprecated
27
26
  from flet.utils.pip import (
28
27
  ensure_flet_desktop_package_installed,
29
28
  ensure_flet_web_package_installed,
@@ -31,6 +30,11 @@ from flet.utils.pip import (
31
30
 
32
31
  logger = logging.getLogger("flet")
33
32
 
33
+ #: Conventional assets directory name, used as the default for `assets_dir`.
34
+ #: A missing directory of this name is unremarkable; any other value was
35
+ #: chosen deliberately, so a missing one is reported.
36
+ DEFAULT_ASSETS_DIR = "assets"
37
+
34
38
  AppCallable = Callable[[Page], Union[Any, Awaitable[Any]]]
35
39
  """Type alias for Flet app lifecycle callbacks.
36
40
 
@@ -41,32 +45,6 @@ Used for both `main` and `before_main` handlers.
41
45
  """
42
46
 
43
47
 
44
- @deprecated(
45
- "Use run() instead.",
46
- docs_reason="Use [`run()`][flet.run] instead.",
47
- version="0.80.0",
48
- show_parentheses=True,
49
- )
50
- def app(*args, **kwargs):
51
- new_args = list(args)
52
- if "target" in kwargs:
53
- new_args.insert(0, kwargs["target"])
54
- return run(*new_args, **kwargs)
55
-
56
-
57
- @deprecated(
58
- "Use run_async() instead.",
59
- docs_reason="Use [`run_async()`][flet.run_async] instead.",
60
- version="0.80.0",
61
- show_parentheses=True,
62
- )
63
- def app_async(*args, **kwargs):
64
- new_args = list(args)
65
- if "target" in kwargs:
66
- new_args.insert(0, kwargs["target"])
67
- return run_async(*new_args, **kwargs)
68
-
69
-
70
48
  def run(
71
49
  main: AppCallable,
72
50
  before_main: Optional[AppCallable] = None,
@@ -74,13 +52,12 @@ def run(
74
52
  host: Optional[str] = None,
75
53
  port: int = 0,
76
54
  view: Optional[AppView] = AppView.FLET_APP,
77
- assets_dir: Optional[str] = "assets",
55
+ assets_dir: Optional[str] = DEFAULT_ASSETS_DIR,
78
56
  upload_dir: Optional[str] = None,
79
57
  web_renderer: WebRenderer = WebRenderer.AUTO,
80
58
  route_url_strategy: RouteUrlStrategy = RouteUrlStrategy.PATH,
81
59
  no_cdn: Optional[bool] = False,
82
60
  export_asgi_app: Optional[bool] = False,
83
- target=None,
84
61
  ):
85
62
  """
86
63
  Runs the Flet app.
@@ -101,14 +78,13 @@ def run(
101
78
  no_cdn: Whether not load CanvasKit, Pyodide, or fonts from CDN.
102
79
  export_asgi_app: If `True`, returns a configured ASGI app instead of
103
80
  running an event loop.
104
- target: Deprecated alias for `main`.
105
81
 
106
82
  Returns:
107
83
  A FastAPI ASGI app when `export_asgi_app=True`.
108
84
  Otherwise, runs the app and returns `None`.
109
85
  """
110
86
  if is_pyodide():
111
- __run_pyodide(main=main or target, before_main=before_main)
87
+ __run_pyodide(main=main, before_main=before_main)
112
88
  return
113
89
 
114
90
  if export_asgi_app:
@@ -116,7 +92,7 @@ def run(
116
92
  from flet_web.fastapi.serve_fastapi_web_app import get_fastapi_web_app
117
93
 
118
94
  return get_fastapi_web_app(
119
- main=main or target,
95
+ main=main,
120
96
  before_main=before_main,
121
97
  page_name=__get_page_name(name),
122
98
  assets_dir=__get_assets_dir_path(assets_dir, relative_to_cwd=True),
@@ -134,7 +110,7 @@ def run(
134
110
 
135
111
  return asyncio.run(
136
112
  run_async(
137
- main=main or target,
113
+ main=main,
138
114
  before_main=before_main,
139
115
  name=name,
140
116
  host=host,
@@ -156,12 +132,11 @@ async def run_async(
156
132
  host: Optional[str] = None,
157
133
  port: int = 0,
158
134
  view: Optional[AppView] = AppView.FLET_APP,
159
- assets_dir: Optional[str] = "assets",
135
+ assets_dir: Optional[str] = DEFAULT_ASSETS_DIR,
160
136
  upload_dir: Optional[str] = None,
161
137
  web_renderer: WebRenderer = WebRenderer.AUTO,
162
138
  route_url_strategy: RouteUrlStrategy = RouteUrlStrategy.PATH,
163
139
  no_cdn: Optional[bool] = False,
164
- target=None,
165
140
  ):
166
141
  """
167
142
  Asynchronously run a Flet app using socket or web server transport.
@@ -179,11 +154,10 @@ async def run_async(
179
154
  web_renderer: Web renderer type for web-hosted mode.
180
155
  route_url_strategy: Route URL strategy (`path` or `hash`).
181
156
  no_cdn: Whether to avoid loading CanvasKit, Pyodide, and fonts from CDN.
182
- target: Deprecated alias for `main`.
183
157
  """
184
158
 
185
159
  if is_pyodide():
186
- __run_pyodide(main=main or target, before_main=before_main)
160
+ __run_pyodide(main=main, before_main=before_main)
187
161
  return
188
162
 
189
163
  if isinstance(view, str):
@@ -270,19 +244,19 @@ async def run_async(
270
244
  if is_embedded() and bridge_port_env:
271
245
  conn = await __run_dart_bridge_server(
272
246
  port=int(bridge_port_env),
273
- main=main or target,
247
+ main=main,
274
248
  before_main=before_main,
275
249
  )
276
250
  elif is_socket_server:
277
251
  conn = await __run_socket_server(
278
252
  port=port,
279
- main=main or target,
253
+ main=main,
280
254
  before_main=before_main,
281
255
  blocking=is_embedded(),
282
256
  )
283
257
  else:
284
258
  conn = await __run_web_server(
285
- main=main or target,
259
+ main=main,
286
260
  before_main=before_main,
287
261
  host=host,
288
262
  port=port,
@@ -680,16 +654,32 @@ def __get_assets_dir_path(assets_dir: Optional[str], relative_to_cwd=False):
680
654
  """
681
655
  Resolve assets directory to an absolute path and apply env override.
682
656
 
657
+ A resolved directory that does not exist is dropped rather than passed on,
658
+ because a caller receiving it can only either ignore it silently (what the
659
+ desktop view does) or complain (what the web server does) - and the two
660
+ disagreeing is why the same app warned only under `--web`.
661
+
662
+ Whether that is worth reporting depends on where the value came from.
663
+ `assets_dir` defaults to `DEFAULT_ASSETS_DIR` whether or not the app has
664
+ such a directory, so a missing one is unremarkable; any other value was
665
+ chosen deliberately, so a missing one is a mistake worth a warning.
666
+
667
+ The env override is applied afterwards and is never dropped:
668
+ `FLET_ASSETS_DIR` is always set on purpose, so a bad value there is left
669
+ for downstream to report.
670
+
683
671
  Args:
684
672
  assets_dir: Input assets directory path.
685
673
  relative_to_cwd: Resolve relative paths from current working directory
686
674
  instead of current script directory.
687
675
 
688
676
  Returns:
689
- Resolved assets directory path or `None`.
677
+ Resolved assets directory path, or `None` if it was not set or does not
678
+ exist.
690
679
  """
691
680
 
692
681
  if assets_dir:
682
+ requested = assets_dir
693
683
  if not Path(assets_dir).is_absolute():
694
684
  if "_MEI" in __file__:
695
685
  # support for "onefile" PyInstaller
@@ -702,7 +692,14 @@ def __get_assets_dir_path(assets_dir: Optional[str], relative_to_cwd=False):
702
692
  .joinpath(assets_dir)
703
693
  .resolve()
704
694
  )
705
- logger.info("Assets path configured: %s", assets_dir)
695
+ if os.path.isdir(assets_dir):
696
+ logger.info("Assets path configured: %s", assets_dir)
697
+ else:
698
+ if requested == DEFAULT_ASSETS_DIR:
699
+ logger.debug("No assets directory at %s", assets_dir)
700
+ else:
701
+ logger.warning("assets_dir does not exist: %s", assets_dir)
702
+ assets_dir = None
706
703
 
707
704
  env_assets_dir = os.getenv("FLET_ASSETS_DIR")
708
705
  if env_assets_dir:
@@ -6,13 +6,22 @@ if TYPE_CHECKING:
6
6
  from flet.components.component import Component
7
7
 
8
8
 
9
- @dataclass()
9
+ # `eq=False` keeps identity-based `__eq__`/`__hash__` from `object`. These are
10
+ # lifecycle objects tracked in lists and matched with `in`/`list.remove`, so two
11
+ # distinct instances must never compare equal - a generated `__eq__` compares
12
+ # fields and would match (and remove) the wrong instance. See #6776.
13
+ #
14
+ # `@dataclass` regenerates `__eq__` on every subclass, so each subclass of
15
+ # `ComponentOwned` must repeat `eq=False`; inheriting it is not enough.
16
+ @dataclass(eq=False)
10
17
  class ComponentOwned:
11
18
  """
12
19
  Base mixin for objects owned by a component via weak reference.
13
20
 
14
21
  Used by hook/subscription state objects that must reference their owning
15
22
  component without creating strong-reference cycles.
23
+
24
+ Subclasses are compared by identity, not by field values.
16
25
  """
17
26
 
18
27
  owner: InitVar["Component"]
@@ -7,7 +7,8 @@ if TYPE_CHECKING:
7
7
  pass
8
8
 
9
9
 
10
- @dataclass()
10
+ # eq=False: see ComponentOwned. Must be repeated on every Hook subclass.
11
+ @dataclass(eq=False)
11
12
  class Hook(ComponentOwned):
12
13
  """
13
14
  Base class for component hook state objects.
@@ -7,7 +7,8 @@ from flet.components.observable import Observable
7
7
  from flet.components.utils import current_component, current_renderer
8
8
 
9
9
 
10
- @dataclass
10
+ # eq=False: see ComponentOwned - lifecycle objects compare by identity.
11
+ @dataclass(eq=False)
11
12
  class ContextHook(Hook):
12
13
  """
13
14
  Marker hook for `use_context` subscription ordering.