flet 0.70.0.dev6326__tar.gz → 0.70.0.dev6348__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.

Potentially problematic release.


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

Files changed (270) hide show
  1. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/PKG-INFO +1 -1
  2. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/pyproject.toml +1 -1
  3. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/border.py +14 -17
  4. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/canvas/canvas.py +28 -0
  5. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/cupertino/cupertino_action_sheet.py +15 -0
  6. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/cupertino/cupertino_activity_indicator.py +7 -0
  7. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/bottom_app_bar.py +14 -0
  8. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/bottom_sheet.py +15 -0
  9. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/testing/flet_test_app.py +69 -0
  10. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/version.py +1 -1
  11. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet.egg-info/PKG-INFO +1 -1
  12. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/README.md +0 -0
  13. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/setup.cfg +0 -0
  14. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/__init__.py +0 -0
  15. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/app.py +0 -0
  16. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/auth/__init__.py +0 -0
  17. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/auth/authorization.py +0 -0
  18. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/auth/authorization_service.py +0 -0
  19. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/auth/group.py +0 -0
  20. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/auth/oauth_provider.py +0 -0
  21. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/auth/oauth_token.py +0 -0
  22. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/auth/providers/__init__.py +0 -0
  23. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/auth/providers/auth0_oauth_provider.py +0 -0
  24. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/auth/providers/azure_oauth_provider.py +0 -0
  25. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/auth/providers/github_oauth_provider.py +0 -0
  26. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/auth/providers/google_oauth_provider.py +0 -0
  27. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/auth/user.py +0 -0
  28. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/canvas/__init__.py +0 -0
  29. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/cli.py +0 -0
  30. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/components/__init__.py +0 -0
  31. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/components/component.py +0 -0
  32. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/components/component_decorator.py +0 -0
  33. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/components/component_owned.py +0 -0
  34. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/components/hooks/__init__.py +0 -0
  35. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/components/hooks/hook.py +0 -0
  36. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/components/hooks/use_callback.py +0 -0
  37. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/components/hooks/use_context.py +0 -0
  38. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/components/hooks/use_effect.py +0 -0
  39. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/components/hooks/use_memo.py +0 -0
  40. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/components/hooks/use_state.py +0 -0
  41. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/components/memo.py +0 -0
  42. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/components/observable.py +0 -0
  43. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/components/public_utils.py +0 -0
  44. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/components/utils.py +0 -0
  45. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/__init__.py +0 -0
  46. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/adaptive_control.py +0 -0
  47. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/alignment.py +0 -0
  48. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/animation.py +0 -0
  49. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/base_control.py +0 -0
  50. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/base_page.py +0 -0
  51. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/blur.py +0 -0
  52. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/border_radius.py +0 -0
  53. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/box.py +0 -0
  54. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/buttons.py +0 -0
  55. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/colors.py +0 -0
  56. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/context.py +0 -0
  57. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/control.py +0 -0
  58. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/control_event.py +0 -0
  59. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/control_state.py +0 -0
  60. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/__init__.py +0 -0
  61. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/animated_switcher.py +0 -0
  62. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/autofill_group.py +0 -0
  63. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/canvas/__init__.py +0 -0
  64. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/canvas/arc.py +0 -0
  65. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/canvas/circle.py +0 -0
  66. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/canvas/color.py +0 -0
  67. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/canvas/fill.py +0 -0
  68. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/canvas/image.py +0 -0
  69. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/canvas/line.py +0 -0
  70. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/canvas/oval.py +0 -0
  71. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/canvas/path.py +0 -0
  72. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/canvas/points.py +0 -0
  73. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/canvas/rect.py +0 -0
  74. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/canvas/shadow.py +0 -0
  75. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/canvas/shape.py +0 -0
  76. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/canvas/text.py +0 -0
  77. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/column.py +0 -0
  78. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/dismissible.py +0 -0
  79. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/drag_target.py +0 -0
  80. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/draggable.py +0 -0
  81. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/flet_app.py +0 -0
  82. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/gesture_detector.py +0 -0
  83. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/grid_view.py +0 -0
  84. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/icon.py +0 -0
  85. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/image.py +0 -0
  86. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/interactive_viewer.py +0 -0
  87. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/keyboard_listener.py +0 -0
  88. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/list_view.py +0 -0
  89. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/markdown.py +0 -0
  90. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/merge_semantics.py +0 -0
  91. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/pagelet.py +0 -0
  92. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/placeholder.py +0 -0
  93. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/reorderable_draggable.py +0 -0
  94. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/responsive_row.py +0 -0
  95. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/row.py +0 -0
  96. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/safe_area.py +0 -0
  97. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/screenshot.py +0 -0
  98. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/semantics.py +0 -0
  99. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/shader_mask.py +0 -0
  100. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/stack.py +0 -0
  101. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/text.py +0 -0
  102. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/text_span.py +0 -0
  103. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/transparent_pointer.py +0 -0
  104. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/view.py +0 -0
  105. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/window.py +0 -0
  106. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/core/window_drag_area.py +0 -0
  107. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/cupertino/__init__.py +0 -0
  108. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/cupertino/cupertino_action_sheet_action.py +0 -0
  109. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/cupertino/cupertino_alert_dialog.py +0 -0
  110. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/cupertino/cupertino_app_bar.py +0 -0
  111. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/cupertino/cupertino_bottom_sheet.py +0 -0
  112. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/cupertino/cupertino_button.py +0 -0
  113. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/cupertino/cupertino_checkbox.py +0 -0
  114. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/cupertino/cupertino_colors.py +0 -0
  115. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/cupertino/cupertino_context_menu.py +0 -0
  116. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/cupertino/cupertino_context_menu_action.py +0 -0
  117. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/cupertino/cupertino_date_picker.py +0 -0
  118. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/cupertino/cupertino_dialog_action.py +0 -0
  119. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/cupertino/cupertino_filled_button.py +0 -0
  120. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/cupertino/cupertino_icons.py +0 -0
  121. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/cupertino/cupertino_list_tile.py +0 -0
  122. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/cupertino/cupertino_navigation_bar.py +0 -0
  123. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/cupertino/cupertino_picker.py +0 -0
  124. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/cupertino/cupertino_radio.py +0 -0
  125. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/cupertino/cupertino_segmented_button.py +0 -0
  126. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/cupertino/cupertino_slider.py +0 -0
  127. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/cupertino/cupertino_sliding_segmented_button.py +0 -0
  128. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/cupertino/cupertino_switch.py +0 -0
  129. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/cupertino/cupertino_textfield.py +0 -0
  130. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/cupertino/cupertino_timer_picker.py +0 -0
  131. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/cupertino/cupertino_tinted_button.py +0 -0
  132. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/device_info.py +0 -0
  133. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/dialog_control.py +0 -0
  134. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/duration.py +0 -0
  135. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/embed_json_encoder.py +0 -0
  136. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/events.py +0 -0
  137. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/exceptions.py +0 -0
  138. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/geometry.py +0 -0
  139. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/gradients.py +0 -0
  140. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/icon_data.py +0 -0
  141. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/id_counter.py +0 -0
  142. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/keys.py +0 -0
  143. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/layout_control.py +0 -0
  144. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/margin.py +0 -0
  145. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/__init__.py +0 -0
  146. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/alert_dialog.py +0 -0
  147. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/app_bar.py +0 -0
  148. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/auto_complete.py +0 -0
  149. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/badge.py +0 -0
  150. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/banner.py +0 -0
  151. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/button.py +0 -0
  152. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/card.py +0 -0
  153. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/checkbox.py +0 -0
  154. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/chip.py +0 -0
  155. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/circle_avatar.py +0 -0
  156. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/container.py +0 -0
  157. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/datatable.py +0 -0
  158. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/date_picker.py +0 -0
  159. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/date_range_picker.py +0 -0
  160. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/divider.py +0 -0
  161. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/dropdown.py +0 -0
  162. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/dropdownm2.py +0 -0
  163. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/elevated_button.py +0 -0
  164. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/expansion_panel.py +0 -0
  165. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/expansion_tile.py +0 -0
  166. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/filled_button.py +0 -0
  167. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/filled_tonal_button.py +0 -0
  168. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/floating_action_button.py +0 -0
  169. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/form_field_control.py +0 -0
  170. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/icon_button.py +0 -0
  171. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/icons.py +0 -0
  172. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/list_tile.py +0 -0
  173. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/menu_bar.py +0 -0
  174. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/menu_item_button.py +0 -0
  175. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/navigation_bar.py +0 -0
  176. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/navigation_drawer.py +0 -0
  177. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/navigation_rail.py +0 -0
  178. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/outlined_button.py +0 -0
  179. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/popup_menu_button.py +0 -0
  180. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/progress_bar.py +0 -0
  181. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/progress_ring.py +0 -0
  182. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/radio.py +0 -0
  183. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/radio_group.py +0 -0
  184. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/range_slider.py +0 -0
  185. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/reorderable_list_view.py +0 -0
  186. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/search_bar.py +0 -0
  187. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/segmented_button.py +0 -0
  188. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/selection_area.py +0 -0
  189. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/slider.py +0 -0
  190. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/snack_bar.py +0 -0
  191. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/submenu_button.py +0 -0
  192. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/switch.py +0 -0
  193. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/tabs.py +0 -0
  194. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/text_button.py +0 -0
  195. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/textfield.py +0 -0
  196. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/time_picker.py +0 -0
  197. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/tooltip.py +0 -0
  198. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/material/vertical_divider.py +0 -0
  199. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/multi_view.py +0 -0
  200. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/object_patch.py +0 -0
  201. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/padding.py +0 -0
  202. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/page.py +0 -0
  203. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/painting.py +0 -0
  204. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/query_string.py +0 -0
  205. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/ref.py +0 -0
  206. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/scrollable_control.py +0 -0
  207. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/services/__init__.py +0 -0
  208. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/services/browser_context_menu.py +0 -0
  209. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/services/clipboard.py +0 -0
  210. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/services/file_picker.py +0 -0
  211. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/services/haptic_feedback.py +0 -0
  212. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/services/semantics_service.py +0 -0
  213. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/services/service.py +0 -0
  214. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/services/shake_detector.py +0 -0
  215. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/services/shared_preferences.py +0 -0
  216. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/services/storage_paths.py +0 -0
  217. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/services/url_launcher.py +0 -0
  218. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/template_route.py +0 -0
  219. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/text_style.py +0 -0
  220. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/theme.py +0 -0
  221. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/transform.py +0 -0
  222. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/controls/types.py +0 -0
  223. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/fastapi/__init__.py +0 -0
  224. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/messaging/connection.py +0 -0
  225. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/messaging/flet_socket_server.py +0 -0
  226. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/messaging/protocol.py +0 -0
  227. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/messaging/pyodide_connection.py +0 -0
  228. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/messaging/session.py +0 -0
  229. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/messaging/session_store.py +0 -0
  230. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/pubsub/__init__.py +0 -0
  231. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/pubsub/pubsub_client.py +0 -0
  232. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/pubsub/pubsub_hub.py +0 -0
  233. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/security/__init__.py +0 -0
  234. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/testing/__init__.py +0 -0
  235. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/testing/finder.py +0 -0
  236. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/testing/tester.py +0 -0
  237. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/utils/__init__.py +0 -0
  238. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/utils/browser.py +0 -0
  239. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/utils/classproperty.py +0 -0
  240. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/utils/deprecated.py +0 -0
  241. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/utils/files.py +0 -0
  242. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/utils/from_dict.py +0 -0
  243. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/utils/hashing.py +0 -0
  244. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/utils/json_utils.py +0 -0
  245. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/utils/locks.py +0 -0
  246. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/utils/network.py +0 -0
  247. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/utils/object_model.py +0 -0
  248. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/utils/once.py +0 -0
  249. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/utils/pip.py +0 -0
  250. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/utils/platform_utils.py +0 -0
  251. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/utils/slugify.py +0 -0
  252. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/utils/strings.py +0 -0
  253. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet/utils/vector.py +0 -0
  254. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet.egg-info/SOURCES.txt +0 -0
  255. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet.egg-info/dependency_links.txt +0 -0
  256. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet.egg-info/entry_points.txt +0 -0
  257. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet.egg-info/requires.txt +0 -0
  258. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/src/flet.egg-info/top_level.txt +0 -0
  259. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/tests/test_base_control.py +0 -0
  260. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/tests/test_colors.py +0 -0
  261. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/tests/test_dataclasses.py +0 -0
  262. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/tests/test_datetime.py +0 -0
  263. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/tests/test_events.py +0 -0
  264. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/tests/test_from_dict.py +0 -0
  265. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/tests/test_icons.py +0 -0
  266. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/tests/test_object_diff_frozen.py +0 -0
  267. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/tests/test_object_diff_in_place.py +0 -0
  268. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/tests/test_object_diff_performance.py +0 -0
  269. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/tests/test_observable.py +0 -0
  270. {flet-0.70.0.dev6326 → flet-0.70.0.dev6348}/tests/test_patch_dataclass.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flet
3
- Version: 0.70.0.dev6326
3
+ Version: 0.70.0.dev6348
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "flet"
3
- version = "0.70.0.dev6326"
3
+ version = "0.70.0.dev6348"
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"
@@ -86,34 +86,37 @@ class BorderSide:
86
86
  """
87
87
  The style of this side of the border.
88
88
 
89
- To omit a side, set `style` to `BorderStyle.NONE`.
90
- This skips painting the border, but the border still has a `width`.
89
+ Tip:
90
+ To omit a side, set `style` to [`BorderStyle.NONE`][flet.]. This skips
91
+ painting the border, but the border still has a `width`.
91
92
  """
92
93
 
93
94
  def __post_init__(self):
94
- assert self.width >= 0.0, (
95
- f"width must be greater than or equal to 0.0, got {self.width}"
96
- )
95
+ if self.width < 0.0:
96
+ raise ValueError(
97
+ f"width must be greater than or equal to 0.0, got {self.width}"
98
+ )
97
99
 
98
100
  # Properties
99
101
 
100
102
  @property
101
103
  def stroke_inset(self):
102
104
  """
103
- The amount of the stroke width that lies inside of the `BorderSide`.
105
+ The amount of the stroke width that lies inside this `BorderSide`.
104
106
 
105
- For example, this will return the `width` for a `stroke_align` of -1, half
106
- the `width` for a `stroke_align` of 0, and 0 for a `stroke_align` of 1.
107
+ For example, this will return the `width` for a `stroke_align` of `-`1, half
108
+ the `width` for a `stroke_align` of `0`, and `0` for a `stroke_align` of `1`.
107
109
  """
108
110
  return self.width * (1 - (1 + self.stroke_align) / 2)
109
111
 
110
112
  @property
111
113
  def stroke_outset(self):
112
114
  """
113
- The amount of the stroke width that lies outside of the [BorderSide].
115
+ The amount of the stroke width that lies outside this `BorderSide`.
114
116
 
115
- For example, this will return 0 for a `stroke_align` of -1, half the
116
- `width` for a `stroke_align` of 0, and the `width` for a `stroke_align` of 1.
117
+ For example, this will return `0` for a `stroke_align` of `-1`, half the
118
+ `width` for a `stroke_align` of `0`, and the `width` for a
119
+ `stroke_align` of `1`.
117
120
  """
118
121
  return self.width * (1 + self.stroke_align) / 2
119
122
 
@@ -163,12 +166,6 @@ class Border:
163
166
 
164
167
  Each side of the border is an instance of
165
168
  [`BorderSide`][flet.].
166
-
167
- Example:
168
- ```python
169
- container_1.border = ft.Border.all(10, ft.Colors.PINK_600)
170
- container_1.border = ft.Border.only(bottom=ft.BorderSide(1, "black"))
171
- ```
172
169
  """
173
170
 
174
171
  top: BorderSide = field(default_factory=lambda: BorderSide.none())
@@ -29,6 +29,34 @@ class Canvas(LayoutControl):
29
29
  """
30
30
  Canvas is a control for drawing arbitrary graphics using a set of primitives or
31
31
  "shapes" such as line, arc, path and text.
32
+
33
+ ```python
34
+ cv.Canvas(
35
+ width=160,
36
+ height=160,
37
+ shapes=[
38
+ cv.Rect(
39
+ 0,
40
+ 0,
41
+ 160,
42
+ 160,
43
+ paint=ft.Paint(
44
+ color=ft.Colors.BLUE_100,
45
+ style=ft.PaintingStyle.FILL,
46
+ ),
47
+ ),
48
+ cv.Circle(
49
+ 80,
50
+ 80,
51
+ 50,
52
+ paint=ft.Paint(
53
+ color=ft.Colors.BLUE_400,
54
+ style=ft.PaintingStyle.FILL,
55
+ ),
56
+ ),
57
+ ],
58
+ )
59
+ ```
32
60
  """
33
61
 
34
62
  shapes: list[Shape] = field(default_factory=list)
@@ -15,6 +15,21 @@ class CupertinoActionSheet(LayoutControl):
15
15
 
16
16
  Action sheets are generally used to give the user a choice between
17
17
  two or more choices for the current context.
18
+
19
+ ```python
20
+ sheet = ft.CupertinoActionSheet(
21
+ title=ft.Text("Choose an option"),
22
+ message=ft.Text("Select what you would like to do"),
23
+ actions=[
24
+ ft.CupertinoActionSheetAction(content=ft.Text("Save")),
25
+ ft.CupertinoActionSheetAction(
26
+ content=ft.Text("Delete"), destructive=True
27
+ ),
28
+ ],
29
+ cancel=ft.CupertinoActionSheetAction(content=ft.Text("Cancel")),
30
+ )
31
+ page.show_dialog(ft.CupertinoBottomSheet(sheet))
32
+ ```
18
33
  """
19
34
 
20
35
  title: Optional[StrOrControl] = None
@@ -11,6 +11,13 @@ __all__ = ["CupertinoActivityIndicator"]
11
11
  class CupertinoActivityIndicator(LayoutControl):
12
12
  """
13
13
  An iOS-style activity indicator that spins clockwise.
14
+
15
+ ```python
16
+ ft.CupertinoActivityIndicator(
17
+ radius=30,
18
+ color=ft.CupertinoColors.DARK_BACKGROUND_GRAY,
19
+ )
20
+ ```
14
21
  """
15
22
 
16
23
  radius: Number = 10
@@ -18,6 +18,20 @@ __all__ = ["BottomAppBar"]
18
18
  class BottomAppBar(LayoutControl):
19
19
  """
20
20
  A material design bottom app bar.
21
+
22
+ ```python
23
+ ft.BottomAppBar(
24
+ bgcolor=ft.Colors.SURFACE_CONTAINER_LOW,
25
+ content=ft.Row(
26
+ controls=[
27
+ ft.IconButton(ft.Icons.MENU),
28
+ ft.IconButton(ft.Icons.SEARCH),
29
+ ft.IconButton(ft.Icons.SETTINGS),
30
+ ],
31
+ alignment=ft.MainAxisAlignment.SPACE_AROUND,
32
+ ),
33
+ )
34
+ ```
21
35
  """
22
36
 
23
37
  content: Optional[Control] = None
@@ -18,6 +18,21 @@ class BottomSheet(DialogControl):
18
18
 
19
19
  A bottom sheet is an alternative to a menu or dialog and prevents the user
20
20
  from interacting with the rest of the app.
21
+
22
+ ```python
23
+ sheet = ft.BottomSheet(
24
+ content=ft.Column(
25
+ width=150,
26
+ alignment=ft.MainAxisAlignment.CENTER,
27
+ horizontal_alignment=ft.CrossAxisAlignment.CENTER,
28
+ controls=[
29
+ ft.Text("Choose an option"),
30
+ ft.TextButton("Dismiss"),
31
+ ],
32
+ )
33
+ )
34
+ page.show_dialog(sheet)
35
+ ```
21
36
  """
22
37
 
23
38
  content: Control
@@ -3,6 +3,7 @@ import logging
3
3
  import os
4
4
  import platform
5
5
  import tempfile
6
+ from collections.abc import Iterable
6
7
  from io import BytesIO
7
8
  from pathlib import Path
8
9
  from typing import Any, Optional
@@ -381,3 +382,71 @@ class FletTestApp:
381
382
  arr2 = np.array(img2)
382
383
  similarity, _ = ssim(arr1, arr2, channel_axis=-1, full=True)
383
384
  return similarity * 100
385
+
386
+ def create_gif(
387
+ self,
388
+ image_names: Iterable[str],
389
+ output_name: str,
390
+ *,
391
+ duration: int = 1000,
392
+ loop: int = 0,
393
+ ) -> Path:
394
+ """Create an animated GIF from a sequence of image files.
395
+
396
+ Args:
397
+ image_names: Iterable of file name stems (without ``.png``) in the
398
+ order they should appear in the animation.
399
+ output_name: Base name for the resulting animation. The ``.gif``
400
+ extension is added automatically and the file is stored in the
401
+ same directory as the provided frames.
402
+ duration: Frame duration in milliseconds. Defaults to ``300``.
403
+ loop: Number of times the GIF should repeat (``0`` means infinite).
404
+
405
+ Returns:
406
+ Path to the generated GIF file.
407
+
408
+ Raises:
409
+ ValueError: If ``image_names`` is empty.
410
+ FileNotFoundError: If any referenced image file does not exist.
411
+ """
412
+
413
+ if not self.__test_path:
414
+ raise ValueError("test_path must be set to create GIF animations")
415
+ if not self.test_platform:
416
+ raise ValueError("test_platform must be set to create GIF animations")
417
+
418
+ names = list(image_names)
419
+ if not names:
420
+ raise ValueError("image_names must contain at least one entry")
421
+
422
+ stem = output_name
423
+ golden_dir = (
424
+ Path(self.__test_path).parent
425
+ / "golden"
426
+ / self.test_platform
427
+ / Path(self.__test_path).stem.removeprefix("test_")
428
+ )
429
+ output = golden_dir / f"{stem}.gif"
430
+ output.parent.mkdir(parents=True, exist_ok=True)
431
+
432
+ frames: list[Image.Image] = []
433
+ try:
434
+ for name in names:
435
+ path = golden_dir / f"{name}.png"
436
+ if not path.exists():
437
+ raise FileNotFoundError(path)
438
+ frames.append(Image.open(path))
439
+
440
+ first, *rest = frames
441
+ first.save(
442
+ output,
443
+ save_all=True,
444
+ append_images=rest,
445
+ duration=duration,
446
+ loop=loop,
447
+ )
448
+ finally:
449
+ for frame in frames:
450
+ frame.close()
451
+
452
+ return output
@@ -10,7 +10,7 @@ from flet.utils import is_mobile, is_windows, which
10
10
  DEFAULT_VERSION = "0.1.0"
11
11
 
12
12
  # will be replaced by CI
13
- version = "0.70.0.dev6326"
13
+ version = "0.70.0.dev6348"
14
14
 
15
15
 
16
16
  def update_version():
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flet
3
- Version: 0.70.0.dev6326
3
+ Version: 0.70.0.dev6348
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
File without changes
File without changes