flet 0.70.0.dev6365__tar.gz → 0.70.0.dev6370__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.dev6365 → flet-0.70.0.dev6370}/PKG-INFO +1 -1
  2. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/pyproject.toml +1 -1
  3. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/__init__.py +2 -0
  4. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/base_control.py +13 -10
  5. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/base_page.py +10 -2
  6. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/border.py +1 -1
  7. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/box.py +18 -16
  8. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/colors.py +5 -4
  9. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/context.py +1 -1
  10. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/control_event.py +2 -1
  11. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/dismissible.py +1 -5
  12. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/interactive_viewer.py +10 -23
  13. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/responsive_row.py +1 -2
  14. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/row.py +1 -2
  15. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/view.py +2 -4
  16. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/window.py +12 -8
  17. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/cupertino/cupertino_colors.py +8 -6
  18. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/app_bar.py +5 -6
  19. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/chip.py +4 -11
  20. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/circle_avatar.py +5 -6
  21. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/dropdown.py +11 -5
  22. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/dropdownm2.py +4 -5
  23. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/expansion_panel.py +19 -15
  24. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/menu_bar.py +7 -5
  25. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/snack_bar.py +1 -4
  26. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/tabs.py +7 -12
  27. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/page.py +48 -1
  28. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/services/shared_preferences.py +2 -1
  29. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/types.py +29 -3
  30. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/pubsub/pubsub_hub.py +2 -1
  31. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/testing/flet_test_app.py +11 -6
  32. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/utils/pip.py +19 -14
  33. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/version.py +1 -1
  34. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet.egg-info/PKG-INFO +1 -1
  35. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/tests/test_from_dict.py +1 -0
  36. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/README.md +0 -0
  37. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/setup.cfg +0 -0
  38. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/app.py +0 -0
  39. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/auth/__init__.py +0 -0
  40. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/auth/authorization.py +0 -0
  41. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/auth/authorization_service.py +0 -0
  42. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/auth/group.py +0 -0
  43. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/auth/oauth_provider.py +0 -0
  44. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/auth/oauth_token.py +0 -0
  45. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/auth/providers/__init__.py +0 -0
  46. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/auth/providers/auth0_oauth_provider.py +0 -0
  47. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/auth/providers/azure_oauth_provider.py +0 -0
  48. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/auth/providers/github_oauth_provider.py +0 -0
  49. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/auth/providers/google_oauth_provider.py +0 -0
  50. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/auth/user.py +0 -0
  51. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/canvas/__init__.py +0 -0
  52. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/cli.py +0 -0
  53. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/components/__init__.py +0 -0
  54. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/components/component.py +0 -0
  55. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/components/component_decorator.py +0 -0
  56. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/components/component_owned.py +0 -0
  57. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/components/hooks/__init__.py +0 -0
  58. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/components/hooks/hook.py +0 -0
  59. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/components/hooks/use_callback.py +0 -0
  60. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/components/hooks/use_context.py +0 -0
  61. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/components/hooks/use_effect.py +0 -0
  62. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/components/hooks/use_memo.py +0 -0
  63. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/components/hooks/use_state.py +0 -0
  64. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/components/memo.py +0 -0
  65. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/components/observable.py +0 -0
  66. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/components/public_utils.py +0 -0
  67. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/components/utils.py +0 -0
  68. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/__init__.py +0 -0
  69. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/adaptive_control.py +0 -0
  70. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/alignment.py +0 -0
  71. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/animation.py +0 -0
  72. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/blur.py +0 -0
  73. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/border_radius.py +0 -0
  74. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/buttons.py +0 -0
  75. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/control.py +0 -0
  76. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/control_state.py +0 -0
  77. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/__init__.py +0 -0
  78. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/animated_switcher.py +0 -0
  79. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/autofill_group.py +0 -0
  80. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/canvas/__init__.py +0 -0
  81. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/canvas/arc.py +0 -0
  82. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/canvas/canvas.py +0 -0
  83. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/canvas/circle.py +0 -0
  84. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/canvas/color.py +0 -0
  85. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/canvas/fill.py +0 -0
  86. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/canvas/image.py +0 -0
  87. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/canvas/line.py +0 -0
  88. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/canvas/oval.py +0 -0
  89. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/canvas/path.py +0 -0
  90. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/canvas/points.py +0 -0
  91. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/canvas/rect.py +0 -0
  92. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/canvas/shadow.py +0 -0
  93. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/canvas/shape.py +0 -0
  94. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/canvas/text.py +0 -0
  95. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/column.py +0 -0
  96. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/drag_target.py +0 -0
  97. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/draggable.py +0 -0
  98. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/flet_app.py +0 -0
  99. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/gesture_detector.py +0 -0
  100. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/grid_view.py +0 -0
  101. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/icon.py +0 -0
  102. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/image.py +0 -0
  103. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/keyboard_listener.py +0 -0
  104. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/list_view.py +0 -0
  105. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/markdown.py +0 -0
  106. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/merge_semantics.py +0 -0
  107. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/pagelet.py +0 -0
  108. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/placeholder.py +0 -0
  109. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/reorderable_draggable.py +0 -0
  110. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/safe_area.py +0 -0
  111. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/screenshot.py +0 -0
  112. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/semantics.py +0 -0
  113. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/shader_mask.py +0 -0
  114. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/stack.py +0 -0
  115. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/text.py +0 -0
  116. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/text_span.py +0 -0
  117. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/transparent_pointer.py +0 -0
  118. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/core/window_drag_area.py +0 -0
  119. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/cupertino/__init__.py +0 -0
  120. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/cupertino/cupertino_action_sheet.py +0 -0
  121. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/cupertino/cupertino_action_sheet_action.py +0 -0
  122. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/cupertino/cupertino_activity_indicator.py +0 -0
  123. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/cupertino/cupertino_alert_dialog.py +0 -0
  124. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/cupertino/cupertino_app_bar.py +0 -0
  125. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/cupertino/cupertino_bottom_sheet.py +0 -0
  126. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/cupertino/cupertino_button.py +0 -0
  127. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/cupertino/cupertino_checkbox.py +0 -0
  128. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/cupertino/cupertino_context_menu.py +0 -0
  129. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/cupertino/cupertino_context_menu_action.py +0 -0
  130. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/cupertino/cupertino_date_picker.py +0 -0
  131. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/cupertino/cupertino_dialog_action.py +0 -0
  132. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/cupertino/cupertino_filled_button.py +0 -0
  133. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/cupertino/cupertino_icons.py +0 -0
  134. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/cupertino/cupertino_list_tile.py +0 -0
  135. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/cupertino/cupertino_navigation_bar.py +0 -0
  136. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/cupertino/cupertino_picker.py +0 -0
  137. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/cupertino/cupertino_radio.py +0 -0
  138. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/cupertino/cupertino_segmented_button.py +0 -0
  139. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/cupertino/cupertino_slider.py +0 -0
  140. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/cupertino/cupertino_sliding_segmented_button.py +0 -0
  141. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/cupertino/cupertino_switch.py +0 -0
  142. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/cupertino/cupertino_textfield.py +0 -0
  143. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/cupertino/cupertino_timer_picker.py +0 -0
  144. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/cupertino/cupertino_tinted_button.py +0 -0
  145. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/device_info.py +0 -0
  146. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/dialog_control.py +0 -0
  147. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/duration.py +0 -0
  148. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/embed_json_encoder.py +0 -0
  149. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/events.py +0 -0
  150. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/exceptions.py +0 -0
  151. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/geometry.py +0 -0
  152. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/gradients.py +0 -0
  153. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/icon_data.py +0 -0
  154. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/id_counter.py +0 -0
  155. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/keys.py +0 -0
  156. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/layout_control.py +0 -0
  157. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/margin.py +0 -0
  158. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/__init__.py +0 -0
  159. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/alert_dialog.py +0 -0
  160. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/auto_complete.py +0 -0
  161. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/badge.py +0 -0
  162. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/banner.py +0 -0
  163. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/bottom_app_bar.py +0 -0
  164. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/bottom_sheet.py +0 -0
  165. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/button.py +0 -0
  166. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/card.py +0 -0
  167. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/checkbox.py +0 -0
  168. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/container.py +0 -0
  169. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/datatable.py +0 -0
  170. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/date_picker.py +0 -0
  171. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/date_range_picker.py +0 -0
  172. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/divider.py +0 -0
  173. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/elevated_button.py +0 -0
  174. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/expansion_tile.py +0 -0
  175. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/filled_button.py +0 -0
  176. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/filled_tonal_button.py +0 -0
  177. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/floating_action_button.py +0 -0
  178. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/form_field_control.py +0 -0
  179. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/icon_button.py +0 -0
  180. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/icons.py +0 -0
  181. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/list_tile.py +0 -0
  182. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/menu_item_button.py +0 -0
  183. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/navigation_bar.py +0 -0
  184. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/navigation_drawer.py +0 -0
  185. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/navigation_rail.py +0 -0
  186. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/outlined_button.py +0 -0
  187. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/popup_menu_button.py +0 -0
  188. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/progress_bar.py +0 -0
  189. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/progress_ring.py +0 -0
  190. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/radio.py +0 -0
  191. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/radio_group.py +0 -0
  192. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/range_slider.py +0 -0
  193. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/reorderable_list_view.py +0 -0
  194. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/search_bar.py +0 -0
  195. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/segmented_button.py +0 -0
  196. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/selection_area.py +0 -0
  197. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/slider.py +0 -0
  198. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/submenu_button.py +0 -0
  199. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/switch.py +0 -0
  200. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/text_button.py +0 -0
  201. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/textfield.py +0 -0
  202. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/time_picker.py +0 -0
  203. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/tooltip.py +0 -0
  204. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/material/vertical_divider.py +0 -0
  205. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/multi_view.py +0 -0
  206. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/object_patch.py +0 -0
  207. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/padding.py +0 -0
  208. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/painting.py +0 -0
  209. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/query_string.py +0 -0
  210. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/ref.py +0 -0
  211. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/scrollable_control.py +0 -0
  212. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/services/__init__.py +0 -0
  213. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/services/browser_context_menu.py +0 -0
  214. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/services/clipboard.py +0 -0
  215. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/services/file_picker.py +0 -0
  216. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/services/haptic_feedback.py +0 -0
  217. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/services/semantics_service.py +0 -0
  218. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/services/service.py +0 -0
  219. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/services/shake_detector.py +0 -0
  220. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/services/storage_paths.py +0 -0
  221. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/services/url_launcher.py +0 -0
  222. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/template_route.py +0 -0
  223. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/text_style.py +0 -0
  224. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/theme.py +0 -0
  225. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/controls/transform.py +0 -0
  226. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/fastapi/__init__.py +0 -0
  227. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/messaging/connection.py +0 -0
  228. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/messaging/flet_socket_server.py +0 -0
  229. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/messaging/protocol.py +0 -0
  230. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/messaging/pyodide_connection.py +0 -0
  231. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/messaging/session.py +0 -0
  232. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/messaging/session_store.py +0 -0
  233. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/pubsub/__init__.py +0 -0
  234. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/pubsub/pubsub_client.py +0 -0
  235. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/security/__init__.py +0 -0
  236. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/testing/__init__.py +0 -0
  237. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/testing/finder.py +0 -0
  238. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/testing/tester.py +0 -0
  239. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/utils/__init__.py +0 -0
  240. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/utils/browser.py +0 -0
  241. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/utils/classproperty.py +0 -0
  242. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/utils/deprecated.py +0 -0
  243. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/utils/files.py +0 -0
  244. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/utils/from_dict.py +0 -0
  245. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/utils/hashing.py +0 -0
  246. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/utils/json_utils.py +0 -0
  247. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/utils/locks.py +0 -0
  248. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/utils/network.py +0 -0
  249. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/utils/object_model.py +0 -0
  250. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/utils/once.py +0 -0
  251. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/utils/platform_utils.py +0 -0
  252. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/utils/slugify.py +0 -0
  253. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/utils/strings.py +0 -0
  254. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet/utils/vector.py +0 -0
  255. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet.egg-info/SOURCES.txt +0 -0
  256. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet.egg-info/dependency_links.txt +0 -0
  257. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet.egg-info/entry_points.txt +0 -0
  258. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet.egg-info/requires.txt +0 -0
  259. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/src/flet.egg-info/top_level.txt +0 -0
  260. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/tests/test_base_control.py +0 -0
  261. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/tests/test_colors.py +0 -0
  262. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/tests/test_dataclasses.py +0 -0
  263. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/tests/test_datetime.py +0 -0
  264. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/tests/test_events.py +0 -0
  265. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/tests/test_icons.py +0 -0
  266. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/tests/test_object_diff_frozen.py +0 -0
  267. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/tests/test_object_diff_in_place.py +0 -0
  268. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/tests/test_object_diff_performance.py +0 -0
  269. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/tests/test_observable.py +0 -0
  270. {flet-0.70.0.dev6365 → flet-0.70.0.dev6370}/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.dev6365
3
+ Version: 0.70.0.dev6370
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.dev6365"
3
+ version = "0.70.0.dev6370"
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"
@@ -491,6 +491,7 @@ from flet.controls.types import (
491
491
  ClipBehavior,
492
492
  ColorValue,
493
493
  CrossAxisAlignment,
494
+ DeviceOrientation,
494
495
  FloatingActionButtonLocation,
495
496
  FontWeight,
496
497
  IconDataOrControl,
@@ -658,6 +659,7 @@ __all__ = [
658
659
  "DateTimeValue",
659
660
  "DecorationImage",
660
661
  "DeviceInfo",
662
+ "DeviceOrientation",
661
663
  "DialogControl",
662
664
  "DialogTheme",
663
665
  "DismissDirection",
@@ -233,9 +233,10 @@ class BaseControl:
233
233
  def update(self) -> None:
234
234
  if hasattr(self, "_frozen"):
235
235
  raise Exception("Frozen control cannot be updated.")
236
- assert (
237
- self.page
238
- ), f"{self.__class__.__qualname__} Control must be added to the page first"
236
+ if not self.page:
237
+ raise RuntimeError(
238
+ f"{self.__class__.__qualname__} Control must be added to the page first"
239
+ )
239
240
  self.page.update(self)
240
241
 
241
242
  async def _invoke_method(
@@ -244,9 +245,10 @@ class BaseControl:
244
245
  arguments: Optional[dict[str, Any]] = None,
245
246
  timeout: Optional[float] = None,
246
247
  ) -> Any:
247
- assert (
248
- self.page
249
- ), f"{self.__class__.__qualname__} Control must be added to the page first"
248
+ if not self.page:
249
+ raise RuntimeError(
250
+ f"{self.__class__.__qualname__} Control must be added to the page first"
251
+ )
250
252
 
251
253
  return await self.page.session.invoke_method(
252
254
  self._i, method_name, arguments, timeout
@@ -282,10 +284,11 @@ class BaseControl:
282
284
 
283
285
  controls_log.debug(f"Trigger event {self}.{field_name} {e}")
284
286
 
285
- assert self.page, (
286
- "Control must be added to a page before triggering events. "
287
- "Use page.add(control) or add it to a parent control that's on a page."
288
- )
287
+ if not self.page:
288
+ raise RuntimeError(
289
+ "Control must be added to a page before triggering events. Use "
290
+ "page.add(control) or add it to a parent control that's on a page."
291
+ )
289
292
  session = self.page.session
290
293
 
291
294
  # Handle async and sync event handlers accordingly
@@ -35,6 +35,7 @@ from flet.controls.types import (
35
35
  LocaleConfiguration,
36
36
  MainAxisAlignment,
37
37
  Number,
38
+ Orientation,
38
39
  ScrollMode,
39
40
  ThemeMode,
40
41
  )
@@ -75,6 +76,11 @@ class PageMediaData:
75
76
  The number of device pixels for each logical pixel.
76
77
  """
77
78
 
79
+ orientation: Orientation
80
+ """
81
+ The orientation of the page.
82
+ """
83
+
78
84
 
79
85
  @dataclass
80
86
  class PageResizeEvent(Event["BasePage"]):
@@ -184,7 +190,7 @@ class BasePage(AdaptiveControl):
184
190
 
185
191
  on_media_change: Optional[EventHandler[PageMediaData]] = None
186
192
  """
187
- Called when `media` has changed.
193
+ Called when [`media`][(c).] has changed.
188
194
  """
189
195
 
190
196
  media: PageMediaData = field(
@@ -193,6 +199,7 @@ class BasePage(AdaptiveControl):
193
199
  view_padding=Padding.zero(),
194
200
  view_insets=Padding.zero(),
195
201
  device_pixel_ratio=0,
202
+ orientation=Orientation.PORTRAIT,
196
203
  )
197
204
  )
198
205
  """
@@ -231,7 +238,8 @@ class BasePage(AdaptiveControl):
231
238
  _dialogs: "Dialogs" = field(default_factory=lambda: Dialogs())
232
239
 
233
240
  def __default_view(self) -> View:
234
- assert len(self.views) > 0, "views list is empty."
241
+ if len(self.views) == 0:
242
+ raise RuntimeError("views list is empty.")
235
243
  return self.views[0]
236
244
 
237
245
  def update(self, *controls) -> None:
@@ -68,7 +68,7 @@ class BorderSide:
68
68
  to [`BorderStyle.NONE`][flet.].
69
69
 
70
70
  Raises:
71
- AssertionError: If [`width`][(c).] is negative.
71
+ ValueError: If it is less than zero.
72
72
  """
73
73
 
74
74
  color: ColorValue = Colors.BLACK
@@ -336,17 +336,17 @@ class BoxDecoration:
336
336
  """
337
337
 
338
338
  def __post_init__(self):
339
- assert (
339
+ if not (
340
340
  self.blend_mode is None
341
341
  or self.bgcolor is not None
342
342
  or self.gradient is not None
343
- ), (
344
- "blend_mode applies to the BoxDecoration's background color or gradient, "
345
- "but no color or gradient was provided"
346
- )
347
- assert not (self.shape == BoxShape.CIRCLE and self.border_radius), (
348
- "border_radius must be None when shape is BoxShape.CIRCLE"
349
- )
343
+ ):
344
+ raise ValueError(
345
+ "blend_mode applies to the BoxDecoration's background color "
346
+ "or gradient, but no color or gradient was provided"
347
+ )
348
+ if self.shape == BoxShape.CIRCLE and self.border_radius:
349
+ raise ValueError("border_radius must be None when shape is BoxShape.CIRCLE")
350
350
 
351
351
  def copy(
352
352
  self,
@@ -414,14 +414,16 @@ class BoxConstraints:
414
414
  """
415
415
 
416
416
  def __post_init__(self):
417
- assert 0 <= self.min_width <= self.max_width <= float("inf"), (
418
- "min_width and max_width must be between 0 and infinity "
419
- "and min_width must be less than or equal to max_width"
420
- )
421
- assert 0 <= self.min_height <= self.max_height <= float("inf"), (
422
- "min_height and max_height must be between 0 and infinity "
423
- "and min_height must be less than or equal to max_height"
424
- )
417
+ if not (0 <= self.min_width <= self.max_width <= float("inf")):
418
+ raise ValueError(
419
+ "min_width and max_width must be between 0 and infinity "
420
+ "and min_width must be less than or equal to max_width"
421
+ )
422
+ if not (0 <= self.min_height <= self.max_height <= float("inf")):
423
+ raise ValueError(
424
+ "min_height and max_height must be between 0 and infinity "
425
+ "and min_height must be less than or equal to max_height"
426
+ )
425
427
 
426
428
  def copy(
427
429
  self,
@@ -120,11 +120,12 @@ class Colors(str, Enum):
120
120
  'red,0.5'
121
121
 
122
122
  Raises:
123
- AssertionError: If the opacity is not between `0` and `1` (inclusive).
123
+ ValueError: If the opacity is not between `0` and `1` (inclusive).
124
124
  """
125
- assert 0 <= opacity <= 1, (
126
- f"opacity must be between 0.0 and 1.0 inclusive, got {opacity}"
127
- )
125
+ if not (0 <= opacity <= 1):
126
+ raise ValueError(
127
+ f"opacity must be between 0.0 and 1.0 inclusive, got {opacity}"
128
+ )
128
129
  color_str = color.value if isinstance(color, Enum) else color
129
130
  return f"{color_str},{opacity}"
130
131
 
@@ -32,7 +32,7 @@ class Context:
32
32
  The current page.
33
33
 
34
34
  Raises:
35
- AssertionError: if property is called outside of Flet app.
35
+ RuntimeError: If the property is accessed outside a running Flet app.
36
36
  """
37
37
  page = _context_page.get()
38
38
  if page is None:
@@ -97,7 +97,8 @@ class Event(Generic[EventControlType]):
97
97
 
98
98
  @property
99
99
  def page(self) -> Union["Page", "BasePage"]:
100
- assert self.control.page
100
+ if not self.control.page:
101
+ raise RuntimeError("event control is not attached to a page")
101
102
  return self.control.page
102
103
 
103
104
  @property
@@ -70,12 +70,8 @@ class Dismissible(LayoutControl, AdaptiveControl):
70
70
  A control that is stacked behind the [`content`][(c).] and is
71
71
  exposed when it has been dragged up or to the left.
72
72
 
73
- Note:
74
- Can only be specified if [`background`][(c).] is also
75
- specified/visible.
76
-
77
73
  Raises:
78
- ValueError: If the [`secondary_background`][(c).] is provided and visible
74
+ ValueError: If it is provided and visible
79
75
  but the [`background`][(c).] is not provided and visible.
80
76
  """
81
77
 
@@ -58,36 +58,25 @@ class InteractiveViewer(LayoutControl):
58
58
  """
59
59
  The maximum allowed scale.
60
60
 
61
- Note:
62
- Must be greater than or equal to [`min_scale`][(c).].
63
-
64
61
  Raises:
65
- ValueError: If [`max_scale`][(c).] is not greater than `0` or is less than
62
+ ValueError: If it is not greater than `0` or is less than
66
63
  [`min_scale`][(c).].
67
- """ # noqa: E501
64
+ """
68
65
 
69
66
  min_scale: Number = 0.8
70
67
  """
71
68
  The minimum allowed scale.
72
69
 
73
- Note:
74
- Must be greater than `0` and less than or equal
75
- to [`max_scale`][(c).].
76
-
77
70
  Raises:
78
- ValueError: If [`min_scale`][(c).] is not greater than `0`.
71
+ ValueError: If it is not greater than `0` or less than [`max_scale`][(c).].
79
72
  """
80
73
 
81
74
  interaction_end_friction_coefficient: Number = 0.0000135
82
75
  """
83
76
  Changes the deceleration behavior after a gesture.
84
77
 
85
- Note:
86
- Must be greater than `0`.
87
-
88
78
  Raises:
89
- ValueError: If [`interaction_end_friction_coefficient`][(c).] is not greater
90
- than `0`.
79
+ ValueError: If it is less than or equal to `0`.
91
80
  """
92
81
 
93
82
  scale_factor: Number = 200
@@ -97,22 +86,23 @@ class InteractiveViewer(LayoutControl):
97
86
 
98
87
  clip_behavior: ClipBehavior = ClipBehavior.HARD_EDGE
99
88
  """
100
- How to clip the `content`.
89
+ Defines how to clip the [`content`][(c).].
101
90
  """
102
91
 
103
92
  alignment: Optional[Alignment] = None
104
93
  """
105
- Alignment of the `content` within.
94
+ The alignment of the [`content`][(c).] within this viewer.
106
95
  """
107
96
 
108
97
  boundary_margin: MarginValue = 0
109
98
  """
110
- A margin for the visible boundaries of the `content`.
99
+ A margin for the visible boundaries of the [`content`][(c).].
111
100
  """
112
101
 
113
102
  interaction_update_interval: int = 200
114
103
  """
115
- The interval (in milliseconds) at which the `on_interaction_update` event is fired.
104
+ The interval (in milliseconds) at which the
105
+ [`on_interaction_update`][(c).] event is fired.
116
106
  """
117
107
 
118
108
  on_interaction_start: Optional[
@@ -149,10 +139,7 @@ class InteractiveViewer(LayoutControl):
149
139
  "max_scale must be greater than or equal to min_scale, "
150
140
  f"got max_scale={self.max_scale}, min_scale={self.min_scale}"
151
141
  )
152
- if (
153
- self.interaction_end_friction_coefficient is not None
154
- and self.interaction_end_friction_coefficient <= 0
155
- ):
142
+ if self.interaction_end_friction_coefficient <= 0:
156
143
  raise ValueError(
157
144
  "interaction_end_friction_coefficient must be greater than 0, "
158
145
  f"got {self.interaction_end_friction_coefficient}"
@@ -56,8 +56,7 @@ class ResponsiveRow(LayoutControl, AdaptiveControl):
56
56
 
57
57
  Note:
58
58
  Has effect only when [`alignment`][(c).] is set to
59
- [`MainAxisAlignment.START`][flet.],
60
- [`MainAxisAlignment.END`][flet.],
59
+ [`MainAxisAlignment.START`][flet.], [`MainAxisAlignment.END`][flet.],
61
60
  or [`MainAxisAlignment.CENTER`][flet.].
62
61
  """
63
62
 
@@ -40,8 +40,7 @@ class Row(LayoutControl, ScrollableControl, AdaptiveControl):
40
40
 
41
41
  Note:
42
42
  Has effect only when [`alignment`][(c).] is set to
43
- [`MainAxisAlignment.START`][flet.],
44
- [`MainAxisAlignment.END`][flet.],
43
+ [`MainAxisAlignment.START`][flet.], [`MainAxisAlignment.END`][flet.],
45
44
  or [`MainAxisAlignment.CENTER`][flet.].
46
45
  """
47
46
 
@@ -131,10 +131,8 @@ class View(ScrollableControl, LayoutControl):
131
131
 
132
132
  Note:
133
133
  Has effect only when [`vertical_alignment`][(c).]
134
- is set to
135
- [`MainAxisAlignment.START`][flet.],
136
- [`MainAxisAlignment.END`][flet.],
137
- or [`MainAxisAlignment.CENTER`][flet.].
134
+ is set to [`MainAxisAlignment.START`][flet.],
135
+ [`MainAxisAlignment.END`][flet.], or [`MainAxisAlignment.CENTER`][flet.].
138
136
  """
139
137
 
140
138
  padding: Optional[PaddingValue] = field(default_factory=lambda: Padding.all(10))
@@ -54,7 +54,7 @@ class Window(BaseControl):
54
54
  """
55
55
  Controls the app window.
56
56
 
57
- Note:
57
+ Limitation:
58
58
  This control is for Desktop platforms (macOS, Windows, Linux) only.
59
59
  """
60
60
 
@@ -113,8 +113,8 @@ class Window(BaseControl):
113
113
  """
114
114
  Defines the opacity of the app window.
115
115
 
116
- Note:
117
- Must be between `0.0` and `1.0`.
116
+ Raises:
117
+ ValueError: If it is not between `0.0` and `1.0` inclusive.
118
118
  """
119
119
 
120
120
  aspect_ratio: Optional[Number] = None
@@ -160,7 +160,7 @@ class Window(BaseControl):
160
160
  """
161
161
  Whether the app window can be moved.
162
162
 
163
- Note:
163
+ Limitation:
164
164
  Has effect on macOS only.
165
165
  """
166
166
 
@@ -178,7 +178,7 @@ class Window(BaseControl):
178
178
  """
179
179
  Whether the app window should always be displayed below other windows.
180
180
 
181
- Note:
181
+ Limitation:
182
182
  Has effect on Linux and Windows only.
183
183
  """
184
184
 
@@ -204,7 +204,7 @@ class Window(BaseControl):
204
204
  """
205
205
  Whether to hide the app window's title bar buttons.
206
206
 
207
- Note:
207
+ Limitation:
208
208
  Has effect on macOS only.
209
209
  """
210
210
 
@@ -246,7 +246,7 @@ class Window(BaseControl):
246
246
  """
247
247
  Sets a badge label on the app window.
248
248
 
249
- Note:
249
+ Limitation:
250
250
  Has effect on macOS only.
251
251
  """
252
252
 
@@ -256,7 +256,7 @@ class Window(BaseControl):
256
256
 
257
257
  The file should have the `.ico` extension.
258
258
 
259
- Note:
259
+ Limitation:
260
260
  Has effect on Windows only.
261
261
  """
262
262
 
@@ -275,6 +275,10 @@ class Window(BaseControl):
275
275
  def __post_init__(self, ref) -> None:
276
276
  super().__post_init__(ref)
277
277
  self._i = 2
278
+ if self.opacity < 0.0 or self.opacity > 1.0:
279
+ raise ValueError(
280
+ f"opacity must be between 0.0 and 1.0 inclusive, got {self.opacity}"
281
+ )
278
282
 
279
283
  async def wait_until_ready_to_show(self):
280
284
  """
@@ -19,7 +19,7 @@ Code to sort the members:
19
19
  ```
20
20
  s = sorted(CupertinoColors, key=lambda i: i.name)
21
21
  for i in s:
22
- print(f"{i.name} = \"{i.value}\"")
22
+ print(f'{i.name} = "{i.value}"')
23
23
  ```
24
24
  """
25
25
 
@@ -54,18 +54,20 @@ class CupertinoColors(str, Enum):
54
54
  color: The color to apply opacity to.
55
55
 
56
56
  Returns:
57
- A string representing the color with opacity, in the format `"color,opacity"`.
57
+ A string representing the color with opacity,
58
+ in the format `"color,opacity"`.
58
59
 
59
60
  Examples:
60
61
  >>> CupertinoColors.with_opacity(0.5, CupertinoColors.WHITE)
61
62
  'white,0.5'
62
63
 
63
64
  Raises:
64
- AssertionError: If the opacity is not between `0` and `1` (inclusive).
65
+ ValueError: If the opacity is not between `0` and `1` (inclusive).
65
66
  """
66
- assert 0 <= opacity <= 1, (
67
- f"opacity must be between 0.0 and 1.0 inclusive, got {opacity}"
68
- )
67
+ if not (0 <= opacity <= 1):
68
+ raise ValueError(
69
+ f"opacity must be between 0.0 and 1.0 inclusive, got {opacity}"
70
+ )
69
71
  color_str = color.value if isinstance(color, Enum) else color
70
72
  return f"{color_str},{opacity}"
71
73
 
@@ -103,7 +103,7 @@ class AppBar(AdaptiveControl):
103
103
  (when [`Theme.use_material3`][flet.] is `False`).
104
104
 
105
105
  Raises:
106
- ValueError: If [`elevation`][(c).] is negative.
106
+ ValueError: If it is less than `0.0`.
107
107
  """
108
108
 
109
109
  elevation_on_scroll: Optional[Number] = None
@@ -111,7 +111,7 @@ class AppBar(AdaptiveControl):
111
111
  The elevation to be used if this app bar has something scrolled underneath it.
112
112
 
113
113
  Raises:
114
- ValueError: If [`elevation_on_scroll`][(c).] is negative.
114
+ ValueError: If it is less than `0.0`.
115
115
  """
116
116
 
117
117
  shadow_color: Optional[ColorValue] = None
@@ -183,12 +183,11 @@ class AppBar(AdaptiveControl):
183
183
  """
184
184
  The opacity of the toolbar.
185
185
 
186
- Note:
187
- Must be in the range `0.0` (transparent) to `1.0` (fully opaque).
186
+ - `0.0`: transparent
187
+ - `1.0`: fully opaque
188
188
 
189
189
  Raises:
190
- ValueError: If [`toolbar_opacity`][(c).] is not between `0.0`
191
- and `1.0` inclusive.
190
+ ValueError: If it is not between `0.0` and `1.0` inclusive.
192
191
  """
193
192
 
194
193
  title_text_style: Optional[TextStyle] = None
@@ -168,11 +168,8 @@ class Chip(LayoutControl):
168
168
 
169
169
  Defaults to `8.0`.
170
170
 
171
- Note:
172
- Must be non-negative.
173
-
174
171
  Raises:
175
- ValueError: If [`elevation_on_click`][(c).] is negative.
172
+ ValueError: If it is less than `0.0`.
176
173
  """
177
174
 
178
175
  clip_behavior: ClipBehavior = ClipBehavior.NONE
@@ -230,12 +227,8 @@ class Chip(LayoutControl):
230
227
  """
231
228
  Called when the user clicks on this chip.
232
229
 
233
- Note:
234
- Cannot be specified together with [`on_select`][(c).].
235
-
236
230
  Raises:
237
- ValueError: If both [`on_click`][(c).] and [`on_select`][(c).] callbacks
238
- are provided.
231
+ ValueError: If specified together with [`on_select`][(c).].
239
232
  """
240
233
 
241
234
  on_delete: Optional[ControlEventHandler["Chip"]] = None
@@ -249,8 +242,8 @@ class Chip(LayoutControl):
249
242
 
250
243
  It internally changes [`selected`][(c).] property to the opposite value.
251
244
 
252
- Note:
253
- Cannot be specified together with [`on_click`][(c).].
245
+ Raises:
246
+ ValueError: If specified together with [`on_click`][(c).].
254
247
  """
255
248
 
256
249
  on_focus: Optional[ControlEventHandler["Chip"]] = None
@@ -79,9 +79,8 @@ class CircleAvatar(LayoutControl):
79
79
  [`max_radius`][(c).] may be specified.
80
80
 
81
81
  Raises:
82
- ValueError: If [`radius`][(c).] is negative.
83
- ValueError: If [`radius`][(c).] is set while [`min_radius`][(c).]
84
- or [`max_radius`][(c).] is provided.
82
+ ValueError: If it is less than `0.0` or if it is
83
+ provided while [`min_radius`][(c).] or [`max_radius`][(c).] is set.
85
84
  """
86
85
 
87
86
  min_radius: Optional[Number] = None
@@ -92,7 +91,7 @@ class CircleAvatar(LayoutControl):
92
91
  Defaults to `0.0`.
93
92
 
94
93
  Raises:
95
- ValueError: If [`min_radius`][(c).] is negative.
94
+ ValueError: If it is negative.
96
95
  """
97
96
 
98
97
  max_radius: Optional[Number] = None
@@ -105,8 +104,8 @@ class CircleAvatar(LayoutControl):
105
104
  If `max_radius` is specified, then [`radius`][(c).] should not be specified.
106
105
 
107
106
  Raises:
108
- ValueError: If [`max_radius`][(c).] is negative.
109
- ValueError: If [`max_radius`][(c).] is provided while [`radius`][(c).] is set.
107
+ ValueError: If it is less than `0.0` or if it is
108
+ provided while [`radius`][(c).] is set.
110
109
  """
111
110
 
112
111
  on_image_error: Optional[ControlEventHandler["CircleAvatar"]] = None
@@ -29,7 +29,7 @@ __all__ = ["Dropdown", "DropdownOption"]
29
29
  class DropdownOption(Control):
30
30
  """
31
31
  Represents an item in a dropdown. Either `key` or `text` must be specified, else an
32
- `AssertionError` will be raised.
32
+ A `ValueError` will be raised.
33
33
  """
34
34
 
35
35
  key: Optional[str] = None
@@ -247,7 +247,8 @@ class Dropdown(LayoutControl):
247
247
  """
248
248
  Text that appears below the input border.
249
249
 
250
- If non-null, the border's color animates to red and the `helper_text` is not shown.
250
+ If non-null, the border's color animates to red and the [`helper_text`][(c).] is
251
+ not shown.
251
252
  """
252
253
 
253
254
  text_size: Optional[Number] = None
@@ -291,13 +292,18 @@ class Dropdown(LayoutControl):
291
292
 
292
293
  border_width: Number = 1
293
294
  """
294
- The width of the border in virtual pixels. Set to `0` to completely remove border.
295
+ The width of the border in virtual pixels.
296
+
297
+ Tip:
298
+ Set to `0` to completely remove the border.
295
299
  """
296
300
 
297
301
  border_color: Optional[ColorValue] = None
298
302
  """
299
- Border color. Could be `transparent` to
300
- hide the border.
303
+ Border color.
304
+
305
+ Tip:
306
+ Set to [`Colors.TRANSPARENT`][flet.] to hide the border.
301
307
  """
302
308
 
303
309
  border_radius: Optional[BorderRadiusValue] = None
@@ -19,8 +19,8 @@ __all__ = ["DropdownM2", "Option"]
19
19
  @control("Option")
20
20
  class Option(Control):
21
21
  """
22
- Represents an item in a dropdown. Either `key` or `text` must be specified, else an
23
- `AssertionError` will be raised.
22
+ Represents an item in a dropdown. Either `key` or `text` must be specified, else a
23
+ `ValueError` will be raised.
24
24
  """
25
25
 
26
26
  key: Optional[str] = None
@@ -58,9 +58,8 @@ class Option(Control):
58
58
 
59
59
  def before_update(self):
60
60
  super().before_update()
61
- assert self.key is not None or self.text is not None, (
62
- "key or text must be specified"
63
- )
61
+ if self.key is None and self.text is None:
62
+ raise ValueError("key or text must be specified")
64
63
 
65
64
 
66
65
  @control("DropdownM2")