flet 0.82.3.dev7863__tar.gz → 0.82.3.dev7877__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.
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/PKG-INFO +9 -9
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/pyproject.toml +9 -9
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/context.py +22 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/reorderable_list_view.py +44 -14
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/page.py +1 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/messaging/session.py +2 -1
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/version.py +1 -1
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet.egg-info/PKG-INFO +9 -9
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet.egg-info/SOURCES.txt +2 -1
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet.egg-info/requires.txt +8 -8
- flet-0.82.3.dev7877/tests/test_skip_double_update.py +137 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/README.md +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/setup.cfg +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/__init__.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/app.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/auth/__init__.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/auth/authorization.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/auth/authorization_service.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/auth/group.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/auth/oauth_provider.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/auth/oauth_token.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/auth/providers/__init__.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/auth/providers/auth0_oauth_provider.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/auth/providers/azure_oauth_provider.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/auth/providers/github_oauth_provider.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/auth/providers/google_oauth_provider.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/auth/user.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/canvas/__init__.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/cli.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/components/__init__.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/components/component.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/components/component_decorator.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/components/component_owned.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/components/hooks/__init__.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/components/hooks/hook.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/components/hooks/use_callback.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/components/hooks/use_context.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/components/hooks/use_effect.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/components/hooks/use_memo.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/components/hooks/use_ref.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/components/hooks/use_state.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/components/memo.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/components/observable.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/components/public_utils.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/components/utils.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/__init__.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/adaptive_control.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/alignment.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/animation.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/base_control.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/base_page.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/blur.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/border.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/border_radius.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/box.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/buttons.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/colors.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/control.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/control_event.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/control_state.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/__init__.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/animated_switcher.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/autofill_group.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/canvas/__init__.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/canvas/arc.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/canvas/canvas.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/canvas/circle.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/canvas/color.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/canvas/fill.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/canvas/image.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/canvas/line.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/canvas/oval.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/canvas/path.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/canvas/points.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/canvas/rect.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/canvas/shadow.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/canvas/shape.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/canvas/text.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/column.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/dismissible.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/drag_target.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/draggable.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/flet_app.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/gesture_detector.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/grid_view.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/hero.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/icon.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/image.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/interactive_viewer.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/keyboard_listener.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/list_view.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/markdown.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/merge_semantics.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/page_view.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/pagelet.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/placeholder.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/reorderable_drag_handle.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/responsive_row.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/rotated_box.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/row.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/safe_area.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/screenshot.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/semantics.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/shader_mask.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/shimmer.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/stack.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/text.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/text_span.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/transparent_pointer.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/view.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/window.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/core/window_drag_area.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/cupertino/__init__.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/cupertino/cupertino_action_sheet.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/cupertino/cupertino_action_sheet_action.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/cupertino/cupertino_activity_indicator.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/cupertino/cupertino_alert_dialog.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/cupertino/cupertino_app_bar.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/cupertino/cupertino_bottom_sheet.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/cupertino/cupertino_button.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/cupertino/cupertino_checkbox.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/cupertino/cupertino_colors.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/cupertino/cupertino_context_menu.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/cupertino/cupertino_context_menu_action.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/cupertino/cupertino_date_picker.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/cupertino/cupertino_dialog_action.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/cupertino/cupertino_filled_button.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/cupertino/cupertino_icons.json +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/cupertino/cupertino_icons.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/cupertino/cupertino_icons.pyi +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/cupertino/cupertino_list_tile.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/cupertino/cupertino_navigation_bar.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/cupertino/cupertino_picker.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/cupertino/cupertino_radio.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/cupertino/cupertino_segmented_button.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/cupertino/cupertino_slider.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/cupertino/cupertino_sliding_segmented_button.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/cupertino/cupertino_switch.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/cupertino/cupertino_textfield.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/cupertino/cupertino_timer_picker.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/cupertino/cupertino_tinted_button.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/device_info.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/dialog_control.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/duration.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/embed_json_encoder.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/events.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/exceptions.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/geometry.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/gradients.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/icon_data.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/id_counter.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/keys.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/layout_control.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/margin.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/__init__.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/alert_dialog.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/app_bar.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/auto_complete.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/badge.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/banner.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/bottom_app_bar.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/bottom_sheet.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/button.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/card.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/checkbox.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/chip.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/circle_avatar.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/container.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/context_menu.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/datatable.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/date_picker.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/date_range_picker.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/divider.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/dropdown.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/dropdownm2.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/elevated_button.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/expansion_panel.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/expansion_tile.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/filled_button.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/filled_tonal_button.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/floating_action_button.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/form_field_control.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/icon_button.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/icons.json +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/icons.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/icons.pyi +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/list_tile.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/menu_bar.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/menu_item_button.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/navigation_bar.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/navigation_drawer.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/navigation_rail.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/outlined_button.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/popup_menu_button.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/progress_bar.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/progress_ring.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/radio.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/radio_group.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/range_slider.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/search_bar.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/segmented_button.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/selection_area.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/slider.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/snack_bar.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/submenu_button.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/switch.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/tabs.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/text_button.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/textfield.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/time_picker.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/tooltip.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/vertical_divider.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/multi_view.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/object_patch.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/padding.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/painting.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/query_string.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/ref.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/scrollable_control.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/services/__init__.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/services/accelerometer.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/services/barometer.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/services/battery.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/services/browser_context_menu.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/services/clipboard.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/services/connectivity.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/services/file_picker.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/services/gyroscope.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/services/haptic_feedback.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/services/magnetometer.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/services/screen_brightness.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/services/semantics_service.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/services/sensor_error_event.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/services/service.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/services/shake_detector.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/services/share.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/services/shared_preferences.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/services/storage_paths.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/services/url_launcher.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/services/user_accelerometer.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/services/wakelock.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/template_route.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/text_style.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/theme.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/transform.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/types.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/fastapi/__init__.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/messaging/connection.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/messaging/flet_socket_server.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/messaging/protocol.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/messaging/pyodide_connection.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/messaging/session_store.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/pubsub/__init__.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/pubsub/pubsub_client.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/pubsub/pubsub_hub.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/py.typed +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/security/__init__.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/testing/__init__.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/testing/finder.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/testing/flet_test_app.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/testing/tester.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/utils/__init__.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/utils/browser.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/utils/classproperty.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/utils/deprecated.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/utils/deprecated_enum.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/utils/files.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/utils/from_dict.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/utils/hashing.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/utils/json_utils.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/utils/locks.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/utils/network.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/utils/object_model.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/utils/once.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/utils/pip.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/utils/platform_utils.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/utils/slugify.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/utils/strings.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/utils/typing_utils.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/utils/vector.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet.egg-info/dependency_links.txt +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet.egg-info/entry_points.txt +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet.egg-info/top_level.txt +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/tests/test_auth_lazy_imports.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/tests/test_base_control.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/tests/test_colors.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/tests/test_component_effects.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/tests/test_component_renderer.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/tests/test_dataclasses.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/tests/test_datetime.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/tests/test_events.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/tests/test_from_dict.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/tests/test_icons.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/tests/test_object_diff_frozen.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/tests/test_object_diff_in_place.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/tests/test_object_diff_memory_churn.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/tests/test_object_diff_performance.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/tests/test_observable.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/tests/test_patch_dataclass.py +0 -0
- {flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/tests/test_session_disconnect_buffering.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flet
|
|
3
|
-
Version: 0.82.3.
|
|
3
|
+
Version: 0.82.3.dev7877
|
|
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://docs.flet.dev/
|
|
10
10
|
Requires-Python: >=3.10
|
|
11
11
|
Description-Content-Type: text/markdown
|
|
12
|
-
Requires-Dist: flet-cli==0.82.3.
|
|
13
|
-
Requires-Dist: flet-web==0.82.3.
|
|
12
|
+
Requires-Dist: flet-cli==0.82.3.dev7877; extra == "cli"
|
|
13
|
+
Requires-Dist: flet-web==0.82.3.dev7877; extra == "web"
|
|
14
14
|
Requires-Dist: oauthlib>=3.2.2; platform_system != "Pyodide"
|
|
15
15
|
Requires-Dist: httpx>=0.28.1; platform_system != "Pyodide"
|
|
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.82.3.
|
|
21
|
-
Requires-Dist: flet-web==0.82.3.
|
|
22
|
-
Requires-Dist: flet-desktop==0.82.3.
|
|
20
|
+
Requires-Dist: flet-cli==0.82.3.dev7877; extra == "all"
|
|
21
|
+
Requires-Dist: flet-web==0.82.3.dev7877; extra == "all"
|
|
22
|
+
Requires-Dist: flet-desktop==0.82.3.dev7877; extra == "all"
|
|
23
23
|
Provides-Extra: cli
|
|
24
|
-
Requires-Dist: flet-cli==0.82.3.
|
|
24
|
+
Requires-Dist: flet-cli==0.82.3.dev7877; extra == "cli"
|
|
25
25
|
Provides-Extra: desktop
|
|
26
|
-
Requires-Dist: flet-desktop==0.82.3.
|
|
26
|
+
Requires-Dist: flet-desktop==0.82.3.dev7877; extra == "desktop"
|
|
27
27
|
Provides-Extra: web
|
|
28
|
-
Requires-Dist: flet-web==0.82.3.
|
|
28
|
+
Requires-Dist: flet-web==0.82.3.dev7877; extra == "web"
|
|
29
29
|
|
|
30
30
|
<p align="center">
|
|
31
31
|
<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>
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "flet"
|
|
3
|
-
version = "0.82.3.
|
|
3
|
+
version = "0.82.3.dev7877"
|
|
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.82.3.
|
|
11
|
-
"flet-web==0.82.3.
|
|
10
|
+
"flet-cli==0.82.3.dev7877; extra == 'cli'",
|
|
11
|
+
"flet-web==0.82.3.dev7877; extra == 'web'",
|
|
12
12
|
"oauthlib >=3.2.2; platform_system != 'Pyodide'",
|
|
13
13
|
"httpx >=0.28.1; platform_system != 'Pyodide'",
|
|
14
14
|
"repath >=0.9.0",
|
|
@@ -23,15 +23,15 @@ Documentation = "https://docs.flet.dev/"
|
|
|
23
23
|
|
|
24
24
|
[project.optional-dependencies]
|
|
25
25
|
all = [
|
|
26
|
-
"flet-cli==0.82.3.
|
|
27
|
-
"flet-web==0.82.3.
|
|
28
|
-
"flet-desktop==0.82.3.
|
|
26
|
+
"flet-cli==0.82.3.dev7877",
|
|
27
|
+
"flet-web==0.82.3.dev7877",
|
|
28
|
+
"flet-desktop==0.82.3.dev7877",
|
|
29
29
|
]
|
|
30
|
-
cli = ["flet-cli==0.82.3.
|
|
30
|
+
cli = ["flet-cli==0.82.3.dev7877"]
|
|
31
31
|
desktop = [
|
|
32
|
-
"flet-desktop==0.82.3.
|
|
32
|
+
"flet-desktop==0.82.3.dev7877",
|
|
33
33
|
]
|
|
34
|
-
web = ["flet-web==0.82.3.
|
|
34
|
+
web = ["flet-web==0.82.3.dev7877"]
|
|
35
35
|
|
|
36
36
|
[project.scripts]
|
|
37
37
|
flet = "flet.cli:main"
|
|
@@ -110,6 +110,27 @@ class Context:
|
|
|
110
110
|
"""
|
|
111
111
|
return self.__components_mode
|
|
112
112
|
|
|
113
|
+
def mark_update_called(self):
|
|
114
|
+
"""
|
|
115
|
+
Marks that `.update()` was explicitly called during the current handler.
|
|
116
|
+
"""
|
|
117
|
+
_update_behavior_context_var.get()._update_called = True
|
|
118
|
+
|
|
119
|
+
def was_update_called(self) -> bool:
|
|
120
|
+
"""
|
|
121
|
+
Returns whether `.update()` was explicitly called during the current handler.
|
|
122
|
+
|
|
123
|
+
Returns:
|
|
124
|
+
`True` if `.update()` was called, `False` otherwise.
|
|
125
|
+
"""
|
|
126
|
+
return _update_behavior_context_var.get()._update_called
|
|
127
|
+
|
|
128
|
+
def reset_update_called(self):
|
|
129
|
+
"""
|
|
130
|
+
Resets the update-called flag for the current context.
|
|
131
|
+
"""
|
|
132
|
+
_update_behavior_context_var.get()._update_called = False
|
|
133
|
+
|
|
113
134
|
def auto_update_enabled(self) -> bool:
|
|
114
135
|
"""
|
|
115
136
|
Returns whether auto-update is enabled in the current context.
|
|
@@ -143,6 +164,7 @@ class UpdateBehavior:
|
|
|
143
164
|
"""
|
|
144
165
|
|
|
145
166
|
_auto_update_enabled: bool = True
|
|
167
|
+
_update_called: bool = False
|
|
146
168
|
|
|
147
169
|
|
|
148
170
|
_context_page = ContextVar("flet_session_page", default=None)
|
{flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/controls/material/reorderable_list_view.py
RENAMED
|
@@ -14,15 +14,26 @@ from flet.controls.types import MouseCursor, Number
|
|
|
14
14
|
@dataclass
|
|
15
15
|
class OnReorderEvent(Event["ReorderableListView"]):
|
|
16
16
|
"""
|
|
17
|
-
|
|
18
|
-
[`ReorderableListView`][flet.].
|
|
17
|
+
Payload for [`ReorderableListView`][flet.] events related to item reordering.
|
|
19
18
|
"""
|
|
20
19
|
|
|
21
|
-
new_index: Optional[int]
|
|
22
|
-
"""
|
|
20
|
+
new_index: Optional[int] = None
|
|
21
|
+
"""
|
|
22
|
+
The new position of the item after the reordering, if available.
|
|
23
|
+
|
|
24
|
+
Will be non-`None` only for the following events:
|
|
25
|
+
[`ReorderableListView.on_reorder`][flet.],
|
|
26
|
+
[`ReorderableListView.on_reorder_end`][flet.].
|
|
27
|
+
"""
|
|
23
28
|
|
|
24
|
-
old_index: Optional[int]
|
|
25
|
-
"""
|
|
29
|
+
old_index: Optional[int] = None
|
|
30
|
+
"""
|
|
31
|
+
The previous position of the item before the reordering, if available.
|
|
32
|
+
|
|
33
|
+
Will be non-`None` only for the following events:
|
|
34
|
+
[`ReorderableListView.on_reorder`][flet.],
|
|
35
|
+
[`ReorderableListView.on_reorder_start`][flet.].
|
|
36
|
+
"""
|
|
26
37
|
|
|
27
38
|
|
|
28
39
|
@control("ReorderableListView")
|
|
@@ -53,7 +64,13 @@ class ReorderableListView(ListView):
|
|
|
53
64
|
|
|
54
65
|
controls: list[Control] = field(default_factory=list)
|
|
55
66
|
"""
|
|
56
|
-
The controls
|
|
67
|
+
The controls displayed by this [`ReorderableListView`][(c)].
|
|
68
|
+
|
|
69
|
+
Note:
|
|
70
|
+
When an item of this list gets reordered, [`on_reorder`][(c).] event gets
|
|
71
|
+
fired, but it doesn't reorder the `controls` list automatically. So, to keep
|
|
72
|
+
`controls` list in sync with the UI, reorder this list inside your
|
|
73
|
+
[`on_reorder`][(c).] event handler. ([example][(c).on_reorder])
|
|
57
74
|
"""
|
|
58
75
|
|
|
59
76
|
anchor: Number = 0.0
|
|
@@ -89,13 +106,12 @@ class ReorderableListView(ListView):
|
|
|
89
106
|
|
|
90
107
|
The default desktop drag handle is just an `Icons.DRAG_HANDLE`
|
|
91
108
|
wrapped by a [`ReorderableDragHandle`][flet.]. On mobile platforms, the entire
|
|
92
|
-
item is wrapped with a [`
|
|
109
|
+
item is wrapped with a [`ReorderableDragHandle`][flet.].
|
|
93
110
|
|
|
94
111
|
To customize the appearance or layout of drag handles, wrap each
|
|
95
112
|
[`controls`][(c).] item, or a control within each of them, with a
|
|
96
|
-
[`ReorderableDragHandle`][flet.]
|
|
97
|
-
|
|
98
|
-
over the drag handles, you might want to set `show_default_drag_handles` to `False`.
|
|
113
|
+
[`ReorderableDragHandle`][flet.]. For full control over the drag handles,
|
|
114
|
+
you might want to set `show_default_drag_handles` to `False`.
|
|
99
115
|
|
|
100
116
|
Example:
|
|
101
117
|
```python
|
|
@@ -122,9 +138,23 @@ class ReorderableListView(ListView):
|
|
|
122
138
|
|
|
123
139
|
on_reorder: Optional[EventHandler[OnReorderEvent]] = None
|
|
124
140
|
"""
|
|
125
|
-
Called when a [`controls`][(c).] item has been dragged to a new location/position
|
|
126
|
-
|
|
127
|
-
|
|
141
|
+
Called when a [`controls`][(c).] item has been dragged to a new location/position.
|
|
142
|
+
|
|
143
|
+
Note:
|
|
144
|
+
This event does not reorder [`controls`][(c).] automatically. So, to keep
|
|
145
|
+
[`controls`][(c).] list in sync with the UI, reorder it accordingly inside
|
|
146
|
+
your `on_reorder` event handler.
|
|
147
|
+
|
|
148
|
+
/// admonition | Example
|
|
149
|
+
```python
|
|
150
|
+
def handle_reorder(e: ft.OnReorderEvent):
|
|
151
|
+
rlv = e.control
|
|
152
|
+
moved_item = rlv.controls.pop(e.old_index) # Remove the reordered item from its old position
|
|
153
|
+
rlv.controls.insert(e.new_index, moved_item) # Insert the reordered item into its new position
|
|
154
|
+
rlv.update()
|
|
155
|
+
```
|
|
156
|
+
///
|
|
157
|
+
""" # noqa: E501
|
|
128
158
|
|
|
129
159
|
on_reorder_start: Optional[EventHandler[OnReorderEvent]] = None
|
|
130
160
|
"""
|
|
@@ -435,8 +435,9 @@ class Session:
|
|
|
435
435
|
control: Control that handled the event, or `None`.
|
|
436
436
|
"""
|
|
437
437
|
# call auto-update
|
|
438
|
-
if context.auto_update_enabled():
|
|
438
|
+
if context.auto_update_enabled() and not context.was_update_called():
|
|
439
439
|
await self.__auto_update(control)
|
|
440
|
+
context.reset_update_called()
|
|
440
441
|
|
|
441
442
|
# unregister unreferenced services
|
|
442
443
|
self.page._services.unregister_services()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flet
|
|
3
|
-
Version: 0.82.3.
|
|
3
|
+
Version: 0.82.3.dev7877
|
|
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://docs.flet.dev/
|
|
10
10
|
Requires-Python: >=3.10
|
|
11
11
|
Description-Content-Type: text/markdown
|
|
12
|
-
Requires-Dist: flet-cli==0.82.3.
|
|
13
|
-
Requires-Dist: flet-web==0.82.3.
|
|
12
|
+
Requires-Dist: flet-cli==0.82.3.dev7877; extra == "cli"
|
|
13
|
+
Requires-Dist: flet-web==0.82.3.dev7877; extra == "web"
|
|
14
14
|
Requires-Dist: oauthlib>=3.2.2; platform_system != "Pyodide"
|
|
15
15
|
Requires-Dist: httpx>=0.28.1; platform_system != "Pyodide"
|
|
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.82.3.
|
|
21
|
-
Requires-Dist: flet-web==0.82.3.
|
|
22
|
-
Requires-Dist: flet-desktop==0.82.3.
|
|
20
|
+
Requires-Dist: flet-cli==0.82.3.dev7877; extra == "all"
|
|
21
|
+
Requires-Dist: flet-web==0.82.3.dev7877; extra == "all"
|
|
22
|
+
Requires-Dist: flet-desktop==0.82.3.dev7877; extra == "all"
|
|
23
23
|
Provides-Extra: cli
|
|
24
|
-
Requires-Dist: flet-cli==0.82.3.
|
|
24
|
+
Requires-Dist: flet-cli==0.82.3.dev7877; extra == "cli"
|
|
25
25
|
Provides-Extra: desktop
|
|
26
|
-
Requires-Dist: flet-desktop==0.82.3.
|
|
26
|
+
Requires-Dist: flet-desktop==0.82.3.dev7877; extra == "desktop"
|
|
27
27
|
Provides-Extra: web
|
|
28
|
-
Requires-Dist: flet-web==0.82.3.
|
|
28
|
+
Requires-Dist: flet-web==0.82.3.dev7877; extra == "web"
|
|
29
29
|
|
|
30
30
|
<p align="center">
|
|
31
31
|
<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>
|
|
@@ -294,4 +294,5 @@ tests/test_object_diff_memory_churn.py
|
|
|
294
294
|
tests/test_object_diff_performance.py
|
|
295
295
|
tests/test_observable.py
|
|
296
296
|
tests/test_patch_dataclass.py
|
|
297
|
-
tests/test_session_disconnect_buffering.py
|
|
297
|
+
tests/test_session_disconnect_buffering.py
|
|
298
|
+
tests/test_skip_double_update.py
|
|
@@ -2,10 +2,10 @@ repath>=0.9.0
|
|
|
2
2
|
msgpack>=1.1.0
|
|
3
3
|
|
|
4
4
|
[:extra == "cli"]
|
|
5
|
-
flet-cli==0.82.3.
|
|
5
|
+
flet-cli==0.82.3.dev7877
|
|
6
6
|
|
|
7
7
|
[:extra == "web"]
|
|
8
|
-
flet-web==0.82.3.
|
|
8
|
+
flet-web==0.82.3.dev7877
|
|
9
9
|
|
|
10
10
|
[:platform_system != "Pyodide"]
|
|
11
11
|
oauthlib>=3.2.2
|
|
@@ -15,15 +15,15 @@ httpx>=0.28.1
|
|
|
15
15
|
typing-extensions
|
|
16
16
|
|
|
17
17
|
[all]
|
|
18
|
-
flet-cli==0.82.3.
|
|
19
|
-
flet-web==0.82.3.
|
|
20
|
-
flet-desktop==0.82.3.
|
|
18
|
+
flet-cli==0.82.3.dev7877
|
|
19
|
+
flet-web==0.82.3.dev7877
|
|
20
|
+
flet-desktop==0.82.3.dev7877
|
|
21
21
|
|
|
22
22
|
[cli]
|
|
23
|
-
flet-cli==0.82.3.
|
|
23
|
+
flet-cli==0.82.3.dev7877
|
|
24
24
|
|
|
25
25
|
[desktop]
|
|
26
|
-
flet-desktop==0.82.3.
|
|
26
|
+
flet-desktop==0.82.3.dev7877
|
|
27
27
|
|
|
28
28
|
[web]
|
|
29
|
-
flet-web==0.82.3.
|
|
29
|
+
flet-web==0.82.3.dev7877
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"""Tests for skipping auto-update when .update() was already called."""
|
|
2
|
+
|
|
3
|
+
from unittest.mock import AsyncMock, patch
|
|
4
|
+
|
|
5
|
+
import pytest
|
|
6
|
+
|
|
7
|
+
from flet.controls.context import UpdateBehavior, _update_behavior_context_var, context
|
|
8
|
+
from flet.messaging.connection import Connection
|
|
9
|
+
from flet.messaging.session import Session
|
|
10
|
+
from flet.pubsub.pubsub_hub import PubSubHub
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@pytest.fixture(autouse=True)
|
|
14
|
+
def _fresh_update_behavior():
|
|
15
|
+
"""Ensure each test starts with a clean UpdateBehavior."""
|
|
16
|
+
token = _update_behavior_context_var.set(UpdateBehavior())
|
|
17
|
+
yield
|
|
18
|
+
_update_behavior_context_var.reset(token)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def _make_session():
|
|
22
|
+
conn = Connection()
|
|
23
|
+
conn.pubsubhub = PubSubHub()
|
|
24
|
+
return Session(conn)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
# --- Context flag unit tests ---
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def test_update_called_flag_defaults_to_false():
|
|
31
|
+
assert context.was_update_called() is False
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def test_mark_update_called_sets_flag():
|
|
35
|
+
context.mark_update_called()
|
|
36
|
+
assert context.was_update_called() is True
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def test_reset_update_called_clears_flag():
|
|
40
|
+
context.mark_update_called()
|
|
41
|
+
context.reset_update_called()
|
|
42
|
+
assert context.was_update_called() is False
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def test_reset_auto_update_starts_with_clean_flag():
|
|
46
|
+
context.mark_update_called()
|
|
47
|
+
context.reset_auto_update()
|
|
48
|
+
assert context.was_update_called() is False
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
# --- after_event integration tests ---
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
@pytest.mark.asyncio
|
|
55
|
+
async def test_after_event_skips_auto_update_when_update_was_called():
|
|
56
|
+
session = _make_session()
|
|
57
|
+
context.mark_update_called()
|
|
58
|
+
|
|
59
|
+
with patch.object(
|
|
60
|
+
session, "_Session__auto_update", new_callable=AsyncMock
|
|
61
|
+
) as mock_auto:
|
|
62
|
+
await session.after_event(session.page)
|
|
63
|
+
mock_auto.assert_not_called()
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
@pytest.mark.asyncio
|
|
67
|
+
async def test_after_event_runs_auto_update_when_update_was_not_called():
|
|
68
|
+
session = _make_session()
|
|
69
|
+
|
|
70
|
+
with patch.object(
|
|
71
|
+
session, "_Session__auto_update", new_callable=AsyncMock
|
|
72
|
+
) as mock_auto:
|
|
73
|
+
await session.after_event(session.page)
|
|
74
|
+
mock_auto.assert_called_once_with(session.page)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
@pytest.mark.asyncio
|
|
78
|
+
async def test_after_event_resets_flag_after_check():
|
|
79
|
+
session = _make_session()
|
|
80
|
+
context.mark_update_called()
|
|
81
|
+
|
|
82
|
+
with patch.object(session, "_Session__auto_update", new_callable=AsyncMock):
|
|
83
|
+
await session.after_event(session.page)
|
|
84
|
+
|
|
85
|
+
assert context.was_update_called() is False
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
@pytest.mark.asyncio
|
|
89
|
+
async def test_after_event_resets_flag_even_when_auto_update_disabled():
|
|
90
|
+
session = _make_session()
|
|
91
|
+
context.mark_update_called()
|
|
92
|
+
context.disable_auto_update()
|
|
93
|
+
|
|
94
|
+
with patch.object(session, "_Session__auto_update", new_callable=AsyncMock):
|
|
95
|
+
await session.after_event(session.page)
|
|
96
|
+
|
|
97
|
+
assert context.was_update_called() is False
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
# --- Generator handler simulation ---
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
@pytest.mark.asyncio
|
|
104
|
+
async def test_generator_handler_flag_resets_between_yields():
|
|
105
|
+
"""Simulate a generator handler where after_event is called after each yield.
|
|
106
|
+
|
|
107
|
+
First yield: .update() was called -> skip auto-update
|
|
108
|
+
Second yield: no .update() called -> auto-update fires
|
|
109
|
+
"""
|
|
110
|
+
session = _make_session()
|
|
111
|
+
|
|
112
|
+
with patch.object(
|
|
113
|
+
session, "_Session__auto_update", new_callable=AsyncMock
|
|
114
|
+
) as mock_auto:
|
|
115
|
+
# First yield segment: user called .update()
|
|
116
|
+
context.mark_update_called()
|
|
117
|
+
await session.after_event(session.page)
|
|
118
|
+
assert mock_auto.call_count == 0
|
|
119
|
+
|
|
120
|
+
# Second yield segment: no .update() called
|
|
121
|
+
await session.after_event(session.page)
|
|
122
|
+
assert mock_auto.call_count == 1
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
# --- Page.update() marks the flag ---
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
def test_page_update_marks_flag():
|
|
129
|
+
session = _make_session()
|
|
130
|
+
page = session.page
|
|
131
|
+
|
|
132
|
+
# Page.update() internally calls patch_control which needs a real connection,
|
|
133
|
+
# so we mock __update to isolate the flag-setting behavior.
|
|
134
|
+
with patch.object(page, "_Page__update"):
|
|
135
|
+
page.update()
|
|
136
|
+
|
|
137
|
+
assert context.was_update_called() is True
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/auth/providers/github_oauth_provider.py
RENAMED
|
File without changes
|
{flet-0.82.3.dev7863 → flet-0.82.3.dev7877}/src/flet/auth/providers/google_oauth_provider.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|