flet 0.82.3.dev7882__tar.gz → 0.82.3.dev7889__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.dev7882 → flet-0.82.3.dev7889}/PKG-INFO +9 -9
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/pyproject.toml +9 -9
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/__init__.py +9 -2
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/app.py +3 -3
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/alignment.py +2 -2
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/animation.py +4 -3
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/base_control.py +47 -6
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/blur.py +2 -2
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/border.py +4 -3
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/border_radius.py +2 -2
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/box.py +7 -6
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/buttons.py +10 -9
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/canvas/path.py +13 -13
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/markdown.py +3 -4
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/device_info.py +12 -11
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/duration.py +2 -2
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/geometry.py +3 -3
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/gradients.py +6 -5
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/keys.py +15 -4
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/margin.py +2 -2
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/auto_complete.py +2 -2
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/expansion_panel.py +66 -19
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/menu_bar.py +3 -3
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/tabs.py +2 -2
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/textfield.py +2 -3
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/tooltip.py +3 -2
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/object_patch.py +265 -175
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/padding.py +2 -2
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/page.py +1 -1
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/painting.py +7 -6
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/text_style.py +3 -3
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/theme.py +45 -44
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/transform.py +9 -8
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/types.py +8 -7
- flet-0.82.3.dev7889/src/flet/controls/value_types.py +206 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/messaging/flet_socket_server.py +7 -7
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/messaging/protocol.py +112 -30
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/messaging/pyodide_connection.py +2 -2
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/messaging/session.py +12 -9
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/pubsub/pubsub_hub.py +11 -11
- flet-0.82.3.dev7889/src/flet/testing/__init__.py +5 -0
- flet-0.82.3.dev7889/src/flet/utils/classproperty.py +11 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/utils/object_model.py +30 -8
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/version.py +1 -1
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet.egg-info/PKG-INFO +9 -9
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet.egg-info/SOURCES.txt +1 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet.egg-info/requires.txt +8 -8
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/tests/test_datetime.py +0 -2
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/tests/test_object_diff_frozen.py +5 -4
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/tests/test_object_diff_in_place.py +1 -1
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/tests/test_object_diff_memory_churn.py +2 -1
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/tests/test_patch_dataclass.py +26 -4
- flet-0.82.3.dev7882/src/flet/testing/__init__.py +0 -6
- flet-0.82.3.dev7882/src/flet/utils/classproperty.py +0 -12
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/README.md +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/setup.cfg +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/auth/__init__.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/auth/authorization.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/auth/authorization_service.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/auth/group.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/auth/oauth_provider.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/auth/oauth_token.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/auth/providers/__init__.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/auth/providers/auth0_oauth_provider.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/auth/providers/azure_oauth_provider.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/auth/providers/github_oauth_provider.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/auth/providers/google_oauth_provider.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/auth/user.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/canvas/__init__.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/cli.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/components/__init__.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/components/component.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/components/component_decorator.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/components/component_owned.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/components/hooks/__init__.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/components/hooks/hook.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/components/hooks/use_callback.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/components/hooks/use_context.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/components/hooks/use_effect.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/components/hooks/use_memo.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/components/hooks/use_ref.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/components/hooks/use_state.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/components/memo.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/components/observable.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/components/public_utils.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/components/utils.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/__init__.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/adaptive_control.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/base_page.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/colors.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/context.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/control.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/control_event.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/control_state.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/__init__.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/animated_switcher.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/autofill_group.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/canvas/__init__.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/canvas/arc.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/canvas/canvas.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/canvas/circle.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/canvas/color.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/canvas/fill.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/canvas/image.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/canvas/line.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/canvas/oval.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/canvas/points.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/canvas/rect.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/canvas/shadow.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/canvas/shape.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/canvas/text.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/column.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/dismissible.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/drag_target.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/draggable.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/flet_app.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/gesture_detector.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/grid_view.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/hero.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/icon.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/image.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/interactive_viewer.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/keyboard_listener.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/list_view.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/merge_semantics.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/page_view.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/pagelet.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/placeholder.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/reorderable_drag_handle.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/responsive_row.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/rotated_box.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/row.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/safe_area.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/screenshot.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/semantics.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/shader_mask.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/shimmer.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/stack.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/text.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/text_span.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/transparent_pointer.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/view.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/window.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/core/window_drag_area.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/cupertino/__init__.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/cupertino/cupertino_action_sheet.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/cupertino/cupertino_action_sheet_action.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/cupertino/cupertino_activity_indicator.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/cupertino/cupertino_alert_dialog.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/cupertino/cupertino_app_bar.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/cupertino/cupertino_bottom_sheet.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/cupertino/cupertino_button.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/cupertino/cupertino_checkbox.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/cupertino/cupertino_colors.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/cupertino/cupertino_context_menu.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/cupertino/cupertino_context_menu_action.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/cupertino/cupertino_date_picker.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/cupertino/cupertino_dialog_action.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/cupertino/cupertino_filled_button.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/cupertino/cupertino_icons.json +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/cupertino/cupertino_icons.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/cupertino/cupertino_icons.pyi +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/cupertino/cupertino_list_tile.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/cupertino/cupertino_navigation_bar.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/cupertino/cupertino_picker.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/cupertino/cupertino_radio.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/cupertino/cupertino_segmented_button.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/cupertino/cupertino_slider.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/cupertino/cupertino_sliding_segmented_button.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/cupertino/cupertino_switch.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/cupertino/cupertino_textfield.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/cupertino/cupertino_timer_picker.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/cupertino/cupertino_tinted_button.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/dialog_control.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/embed_json_encoder.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/events.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/exceptions.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/icon_data.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/id_counter.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/layout_control.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/__init__.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/alert_dialog.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/app_bar.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/badge.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/banner.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/bottom_app_bar.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/bottom_sheet.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/button.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/card.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/checkbox.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/chip.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/circle_avatar.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/container.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/context_menu.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/datatable.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/date_picker.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/date_range_picker.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/divider.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/dropdown.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/dropdownm2.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/elevated_button.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/expansion_tile.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/filled_button.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/filled_tonal_button.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/floating_action_button.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/form_field_control.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/icon_button.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/icons.json +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/icons.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/icons.pyi +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/list_tile.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/menu_item_button.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/navigation_bar.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/navigation_drawer.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/navigation_rail.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/outlined_button.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/popup_menu_button.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/progress_bar.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/progress_ring.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/radio.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/radio_group.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/range_slider.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/reorderable_list_view.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/search_bar.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/segmented_button.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/selection_area.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/slider.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/snack_bar.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/submenu_button.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/switch.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/text_button.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/time_picker.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/material/vertical_divider.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/multi_view.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/query_string.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/ref.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/scrollable_control.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/services/__init__.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/services/accelerometer.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/services/barometer.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/services/battery.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/services/browser_context_menu.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/services/clipboard.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/services/connectivity.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/services/file_picker.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/services/gyroscope.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/services/haptic_feedback.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/services/magnetometer.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/services/screen_brightness.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/services/semantics_service.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/services/sensor_error_event.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/services/service.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/services/shake_detector.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/services/share.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/services/shared_preferences.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/services/storage_paths.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/services/url_launcher.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/services/user_accelerometer.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/services/wakelock.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/controls/template_route.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/fastapi/__init__.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/messaging/connection.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/messaging/session_store.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/pubsub/__init__.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/pubsub/pubsub_client.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/py.typed +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/security/__init__.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/testing/finder.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/testing/flet_test_app.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/testing/tester.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/utils/__init__.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/utils/browser.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/utils/deprecated.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/utils/deprecated_enum.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/utils/files.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/utils/from_dict.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/utils/hashing.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/utils/json_utils.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/utils/locks.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/utils/network.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/utils/once.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/utils/pip.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/utils/platform_utils.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/utils/slugify.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/utils/strings.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/utils/typing_utils.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet/utils/vector.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet.egg-info/dependency_links.txt +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet.egg-info/entry_points.txt +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/src/flet.egg-info/top_level.txt +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/tests/test_auth_lazy_imports.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/tests/test_base_control.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/tests/test_colors.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/tests/test_component_effects.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/tests/test_component_renderer.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/tests/test_dataclasses.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/tests/test_events.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/tests/test_from_dict.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/tests/test_icons.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/tests/test_object_diff_performance.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/tests/test_observable.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/tests/test_session_disconnect_buffering.py +0 -0
- {flet-0.82.3.dev7882 → flet-0.82.3.dev7889}/tests/test_skip_double_update.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.dev7889
|
|
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.dev7889; extra == "cli"
|
|
13
|
+
Requires-Dist: flet-web==0.82.3.dev7889; 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.dev7889; extra == "all"
|
|
21
|
+
Requires-Dist: flet-web==0.82.3.dev7889; extra == "all"
|
|
22
|
+
Requires-Dist: flet-desktop==0.82.3.dev7889; extra == "all"
|
|
23
23
|
Provides-Extra: cli
|
|
24
|
-
Requires-Dist: flet-cli==0.82.3.
|
|
24
|
+
Requires-Dist: flet-cli==0.82.3.dev7889; extra == "cli"
|
|
25
25
|
Provides-Extra: desktop
|
|
26
|
-
Requires-Dist: flet-desktop==0.82.3.
|
|
26
|
+
Requires-Dist: flet-desktop==0.82.3.dev7889; extra == "desktop"
|
|
27
27
|
Provides-Extra: web
|
|
28
|
-
Requires-Dist: flet-web==0.82.3.
|
|
28
|
+
Requires-Dist: flet-web==0.82.3.dev7889; 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.dev7889"
|
|
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.dev7889; extra == 'cli'",
|
|
11
|
+
"flet-web==0.82.3.dev7889; 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.dev7889",
|
|
27
|
+
"flet-web==0.82.3.dev7889",
|
|
28
|
+
"flet-desktop==0.82.3.dev7889",
|
|
29
29
|
]
|
|
30
|
-
cli = ["flet-cli==0.82.3.
|
|
30
|
+
cli = ["flet-cli==0.82.3.dev7889"]
|
|
31
31
|
desktop = [
|
|
32
|
-
"flet-desktop==0.82.3.
|
|
32
|
+
"flet-desktop==0.82.3.dev7889",
|
|
33
33
|
]
|
|
34
|
-
web = ["flet-web==0.82.3.
|
|
34
|
+
web = ["flet-web==0.82.3.dev7889"]
|
|
35
35
|
|
|
36
36
|
[project.scripts]
|
|
37
37
|
flet = "flet.cli:main"
|
|
@@ -26,7 +26,7 @@ from flet.controls.animation import (
|
|
|
26
26
|
AnimationStyle,
|
|
27
27
|
AnimationValue,
|
|
28
28
|
)
|
|
29
|
-
from flet.controls.base_control import BaseControl, control
|
|
29
|
+
from flet.controls.base_control import BaseControl, Value, control, value
|
|
30
30
|
from flet.controls.base_page import BasePage, PageMediaData, PageResizeEvent
|
|
31
31
|
from flet.controls.blur import (
|
|
32
32
|
Blur,
|
|
@@ -304,7 +304,11 @@ from flet.controls.material.divider import Divider
|
|
|
304
304
|
from flet.controls.material.dropdown import Dropdown, DropdownOption
|
|
305
305
|
from flet.controls.material.dropdownm2 import DropdownM2
|
|
306
306
|
from flet.controls.material.elevated_button import ElevatedButton
|
|
307
|
-
from flet.controls.material.expansion_panel import
|
|
307
|
+
from flet.controls.material.expansion_panel import (
|
|
308
|
+
ExpansionPanel,
|
|
309
|
+
ExpansionPanelList,
|
|
310
|
+
ExpansionPanelListChangeEvent,
|
|
311
|
+
)
|
|
308
312
|
from flet.controls.material.expansion_tile import ExpansionTile, TileAffinity
|
|
309
313
|
from flet.controls.material.filled_button import FilledButton
|
|
310
314
|
from flet.controls.material.filled_tonal_button import FilledTonalButton
|
|
@@ -775,6 +779,7 @@ __all__ = [
|
|
|
775
779
|
"EventHandler",
|
|
776
780
|
"ExpansionPanel",
|
|
777
781
|
"ExpansionPanelList",
|
|
782
|
+
"ExpansionPanelListChangeEvent",
|
|
778
783
|
"ExpansionTile",
|
|
779
784
|
"ExpansionTileTheme",
|
|
780
785
|
"FilePicker",
|
|
@@ -1058,6 +1063,7 @@ __all__ = [
|
|
|
1058
1063
|
"UrlTarget",
|
|
1059
1064
|
"UserAccelerometer",
|
|
1060
1065
|
"UserAccelerometerReadingEvent",
|
|
1066
|
+
"Value",
|
|
1061
1067
|
"ValueKey",
|
|
1062
1068
|
"VerticalAlignment",
|
|
1063
1069
|
"VerticalDivider",
|
|
@@ -1106,6 +1112,7 @@ __all__ = [
|
|
|
1106
1112
|
"use_memo",
|
|
1107
1113
|
"use_ref",
|
|
1108
1114
|
"use_state",
|
|
1115
|
+
"value",
|
|
1109
1116
|
]
|
|
1110
1117
|
|
|
1111
1118
|
_THEME_EXPORTS = {
|
|
@@ -221,7 +221,7 @@ async def run_async(
|
|
|
221
221
|
if url_prefix is not None:
|
|
222
222
|
print(url_prefix, page_url)
|
|
223
223
|
else:
|
|
224
|
-
logger.info(
|
|
224
|
+
logger.info("App URL: %s", page_url)
|
|
225
225
|
|
|
226
226
|
if view == AppView.WEB_BROWSER and url_prefix is None and not force_web_server:
|
|
227
227
|
open_in_browser(page_url)
|
|
@@ -438,7 +438,7 @@ async def __run_web_server(
|
|
|
438
438
|
if port == 0:
|
|
439
439
|
port = get_free_tcp_port()
|
|
440
440
|
|
|
441
|
-
logger.info(
|
|
441
|
+
logger.info("Starting Flet web server on port %s...", port)
|
|
442
442
|
|
|
443
443
|
log_level = logging.getLogger("flet").getEffectiveLevel()
|
|
444
444
|
if log_level == logging.CRITICAL or log_level == logging.NOTSET:
|
|
@@ -520,7 +520,7 @@ def __get_assets_dir_path(assets_dir: Optional[str], relative_to_cwd=False):
|
|
|
520
520
|
.joinpath(assets_dir)
|
|
521
521
|
.resolve()
|
|
522
522
|
)
|
|
523
|
-
logger.info(
|
|
523
|
+
logger.info("Assets path configured: %s", assets_dir)
|
|
524
524
|
|
|
525
525
|
env_assets_dir = os.getenv("FLET_ASSETS_DIR")
|
|
526
526
|
if env_assets_dir:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
from dataclasses import dataclass
|
|
2
1
|
from enum import Enum
|
|
3
2
|
from typing import ClassVar, Optional
|
|
4
3
|
|
|
4
|
+
from flet.controls.base_control import value
|
|
5
5
|
from flet.controls.types import Number
|
|
6
6
|
|
|
7
7
|
__all__ = [
|
|
@@ -29,7 +29,7 @@ class Axis(Enum):
|
|
|
29
29
|
"""
|
|
30
30
|
|
|
31
31
|
|
|
32
|
-
@
|
|
32
|
+
@value
|
|
33
33
|
class Alignment:
|
|
34
34
|
"""
|
|
35
35
|
Defines an alignment relative to the center.
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
from dataclasses import
|
|
1
|
+
from dataclasses import field
|
|
2
2
|
from enum import Enum
|
|
3
3
|
from typing import Optional, Union
|
|
4
4
|
|
|
5
|
+
from flet.controls.base_control import value
|
|
5
6
|
from flet.controls.duration import Duration, DurationValue
|
|
6
7
|
|
|
7
8
|
__all__ = [
|
|
@@ -228,7 +229,7 @@ class AnimationCurve(Enum):
|
|
|
228
229
|
"""
|
|
229
230
|
|
|
230
231
|
|
|
231
|
-
@
|
|
232
|
+
@value
|
|
232
233
|
class Animation:
|
|
233
234
|
"""
|
|
234
235
|
Explicit animation configuration for animatable control properties.
|
|
@@ -267,7 +268,7 @@ class Animation:
|
|
|
267
268
|
)
|
|
268
269
|
|
|
269
270
|
|
|
270
|
-
@
|
|
271
|
+
@value
|
|
271
272
|
class AnimationStyle:
|
|
272
273
|
"""
|
|
273
274
|
Used to override the default parameters of an animation.
|
|
@@ -7,8 +7,8 @@ from typing import TYPE_CHECKING, Any, Callable, Optional, TypeVar, Union, overl
|
|
|
7
7
|
from flet.controls.context import _context_page, context
|
|
8
8
|
from flet.controls.control_event import ControlEvent, get_event_field_type
|
|
9
9
|
from flet.controls.id_counter import ControlId
|
|
10
|
-
from flet.controls.keys import KeyValue
|
|
11
10
|
from flet.controls.ref import Ref
|
|
11
|
+
from flet.controls.value_types import Prop, Value, _install_props, value
|
|
12
12
|
from flet.utils.from_dict import from_dict
|
|
13
13
|
from flet.utils.object_model import get_param_count
|
|
14
14
|
|
|
@@ -23,14 +23,26 @@ else:
|
|
|
23
23
|
|
|
24
24
|
if TYPE_CHECKING:
|
|
25
25
|
from .base_page import BasePage
|
|
26
|
+
from .keys import KeyValue
|
|
26
27
|
from .page import Page
|
|
27
28
|
|
|
28
29
|
__all__ = [
|
|
29
30
|
"BaseControl",
|
|
31
|
+
"Prop",
|
|
32
|
+
"Value",
|
|
30
33
|
"control",
|
|
31
34
|
"skip_field",
|
|
35
|
+
"value",
|
|
32
36
|
]
|
|
33
37
|
|
|
38
|
+
# ---------------------------------------------------------------------------
|
|
39
|
+
# Sparse property tracking is defined in value_types.py to avoid circular
|
|
40
|
+
# imports: value types (Duration, Alignment, etc.) need @value but are
|
|
41
|
+
# imported transitively by this module.
|
|
42
|
+
# Prop, Value, _install_props and value are re-exported from here
|
|
43
|
+
# for backwards compatibility.
|
|
44
|
+
# ---------------------------------------------------------------------------
|
|
45
|
+
|
|
34
46
|
|
|
35
47
|
def skip_field():
|
|
36
48
|
"""
|
|
@@ -123,6 +135,7 @@ def _apply_control(
|
|
|
123
135
|
) -> type[T]:
|
|
124
136
|
"""Applies @control logic, ensuring compatibility with @dataclass."""
|
|
125
137
|
cls = dataclass(**dataclass_kwargs)(cls) # Apply @dataclass first
|
|
138
|
+
_install_props(cls) # Install Prop descriptors for sparse tracking
|
|
126
139
|
|
|
127
140
|
orig_post_init = getattr(cls, "__post_init__", lambda self, *args: None)
|
|
128
141
|
|
|
@@ -147,6 +160,26 @@ class BaseControl:
|
|
|
147
160
|
Base class for all Flet controls and services.
|
|
148
161
|
"""
|
|
149
162
|
|
|
163
|
+
# ------------------------------------------------------------------
|
|
164
|
+
# Sparse property tracking — MUST be the first two init=False fields
|
|
165
|
+
# so the dataclass-generated __init__ initialises them before any
|
|
166
|
+
# Prop.__set__ call for init=True fields.
|
|
167
|
+
# ------------------------------------------------------------------
|
|
168
|
+
_values: dict = field(
|
|
169
|
+
default_factory=dict,
|
|
170
|
+
init=False,
|
|
171
|
+
repr=False,
|
|
172
|
+
compare=False,
|
|
173
|
+
metadata={"skip": True},
|
|
174
|
+
)
|
|
175
|
+
_dirty: dict = field(
|
|
176
|
+
default_factory=dict,
|
|
177
|
+
init=False,
|
|
178
|
+
repr=False,
|
|
179
|
+
compare=False,
|
|
180
|
+
metadata={"skip": True},
|
|
181
|
+
)
|
|
182
|
+
|
|
150
183
|
_i: int = field(init=False, compare=False)
|
|
151
184
|
"""
|
|
152
185
|
Runtime-generated internal control id used by the session protocol.
|
|
@@ -162,7 +195,7 @@ class BaseControl:
|
|
|
162
195
|
Arbitrary data of any type.
|
|
163
196
|
"""
|
|
164
197
|
|
|
165
|
-
key: Optional[KeyValue] = None
|
|
198
|
+
key: Optional["KeyValue"] = None
|
|
166
199
|
|
|
167
200
|
ref: InitVar[Optional[Ref["BaseControl"]]] = None
|
|
168
201
|
"""A reference to this control."""
|
|
@@ -195,6 +228,9 @@ class BaseControl:
|
|
|
195
228
|
ref.current = self
|
|
196
229
|
|
|
197
230
|
self.init()
|
|
231
|
+
# Construction is not a mutation: clear dirty tracking so only
|
|
232
|
+
# post-construction mutations are visible to the non-frozen diff.
|
|
233
|
+
self._dirty.clear()
|
|
198
234
|
|
|
199
235
|
# control_id = self._i
|
|
200
236
|
# object_id = id(self)
|
|
@@ -228,7 +264,7 @@ class BaseControl:
|
|
|
228
264
|
return parent_ref() if parent_ref else None
|
|
229
265
|
|
|
230
266
|
@property
|
|
231
|
-
def page(self) -> Union[
|
|
267
|
+
def page(self) -> "Union[Page, BasePage]":
|
|
232
268
|
"""
|
|
233
269
|
The page to which this control belongs to.
|
|
234
270
|
"""
|
|
@@ -311,7 +347,7 @@ class BaseControl:
|
|
|
311
347
|
Override to start resources that require an attached page, for example
|
|
312
348
|
subscriptions, timers, or service listeners.
|
|
313
349
|
"""
|
|
314
|
-
controls_log.debug(
|
|
350
|
+
controls_log.debug("%s.did_mount()", self)
|
|
315
351
|
pass
|
|
316
352
|
|
|
317
353
|
def will_unmount(self):
|
|
@@ -321,7 +357,7 @@ class BaseControl:
|
|
|
321
357
|
Override to dispose resources created in `did_mount()`, such as
|
|
322
358
|
subscriptions, timers, or external handles.
|
|
323
359
|
"""
|
|
324
|
-
controls_log.debug(
|
|
360
|
+
controls_log.debug("%s.will_unmount()", self)
|
|
325
361
|
pass
|
|
326
362
|
|
|
327
363
|
# public methods
|
|
@@ -398,7 +434,7 @@ class BaseControl:
|
|
|
398
434
|
_context_page.set(self.page)
|
|
399
435
|
context.reset_auto_update()
|
|
400
436
|
|
|
401
|
-
controls_log.debug(
|
|
437
|
+
controls_log.debug("Trigger event %s.%s %s", self, field_name, e)
|
|
402
438
|
|
|
403
439
|
if not self.page:
|
|
404
440
|
raise RuntimeError(
|
|
@@ -460,3 +496,8 @@ class BaseControl:
|
|
|
460
496
|
Return a debug-friendly control identifier string.
|
|
461
497
|
"""
|
|
462
498
|
return f"{self._c}({self._i} - {id(self)})"
|
|
499
|
+
|
|
500
|
+
|
|
501
|
+
# Install Prop descriptors for BaseControl's own public fields (key).
|
|
502
|
+
# Subclasses decorated with @control get this called via _apply_control.
|
|
503
|
+
_install_props(BaseControl)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
from dataclasses import dataclass
|
|
2
1
|
from enum import Enum
|
|
3
2
|
from typing import Optional, Union
|
|
4
3
|
|
|
4
|
+
from flet.controls.base_control import value
|
|
5
5
|
from flet.controls.types import Number
|
|
6
6
|
|
|
7
7
|
__all__ = [
|
|
@@ -37,7 +37,7 @@ class BlurTileMode(Enum):
|
|
|
37
37
|
"""
|
|
38
38
|
|
|
39
39
|
|
|
40
|
-
@
|
|
40
|
+
@value
|
|
41
41
|
class Blur:
|
|
42
42
|
"""
|
|
43
43
|
Gaussian blur configuration.
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
from dataclasses import
|
|
1
|
+
from dataclasses import field
|
|
2
2
|
from enum import Enum
|
|
3
3
|
from typing import Optional, Union
|
|
4
4
|
|
|
5
|
+
from flet.controls.base_control import value
|
|
5
6
|
from flet.controls.colors import Colors
|
|
6
7
|
from flet.controls.types import ColorValue, Number
|
|
7
8
|
from flet.utils import deprecated
|
|
@@ -52,7 +53,7 @@ class BorderStyle(Enum):
|
|
|
52
53
|
"""Draw the border as a solid line."""
|
|
53
54
|
|
|
54
55
|
|
|
55
|
-
@
|
|
56
|
+
@value
|
|
56
57
|
class BorderSide:
|
|
57
58
|
"""
|
|
58
59
|
Creates the side of a border.
|
|
@@ -172,7 +173,7 @@ class BorderSide:
|
|
|
172
173
|
return BorderSide(width=0.0, style=BorderStyle.NONE)
|
|
173
174
|
|
|
174
175
|
|
|
175
|
-
@
|
|
176
|
+
@value
|
|
176
177
|
class Border:
|
|
177
178
|
"""
|
|
178
179
|
A border comprised of four sides: `top`, `right`, `bottom`, `left`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import dataclasses
|
|
2
1
|
from typing import Optional, Union
|
|
3
2
|
|
|
3
|
+
from flet.controls.base_control import value
|
|
4
4
|
from flet.controls.types import Number
|
|
5
5
|
from flet.utils import deprecated
|
|
6
6
|
|
|
@@ -14,7 +14,7 @@ __all__ = [
|
|
|
14
14
|
]
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
@
|
|
17
|
+
@value
|
|
18
18
|
class BorderRadius:
|
|
19
19
|
"""
|
|
20
20
|
Corner radii for a rectangle, defined for all four corners.
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
from dataclasses import
|
|
1
|
+
from dataclasses import field
|
|
2
2
|
from enum import Enum
|
|
3
3
|
from typing import Optional, Union
|
|
4
4
|
|
|
5
5
|
from flet.controls.alignment import Alignment
|
|
6
|
+
from flet.controls.base_control import value
|
|
6
7
|
from flet.controls.border import Border
|
|
7
8
|
from flet.controls.border_radius import BorderRadiusValue
|
|
8
9
|
from flet.controls.colors import Colors
|
|
@@ -29,7 +30,7 @@ __all__ = [
|
|
|
29
30
|
]
|
|
30
31
|
|
|
31
32
|
|
|
32
|
-
@
|
|
33
|
+
@value
|
|
33
34
|
class ColorFilter:
|
|
34
35
|
"""
|
|
35
36
|
Defines a color filter.
|
|
@@ -122,7 +123,7 @@ class BlurStyle(Enum):
|
|
|
122
123
|
"""
|
|
123
124
|
|
|
124
125
|
|
|
125
|
-
@
|
|
126
|
+
@value
|
|
126
127
|
class BoxShadow:
|
|
127
128
|
"""
|
|
128
129
|
Configuration for a box's shadow.
|
|
@@ -276,7 +277,7 @@ class BoxFit(Enum):
|
|
|
276
277
|
""" # noqa: E501
|
|
277
278
|
|
|
278
279
|
|
|
279
|
-
@
|
|
280
|
+
@value
|
|
280
281
|
class DecorationImage:
|
|
281
282
|
"""
|
|
282
283
|
An image for a box decoration.
|
|
@@ -381,7 +382,7 @@ class DecorationImage:
|
|
|
381
382
|
)
|
|
382
383
|
|
|
383
384
|
|
|
384
|
-
@
|
|
385
|
+
@value
|
|
385
386
|
class BoxDecoration:
|
|
386
387
|
"""
|
|
387
388
|
BoxDecoration provides a description of how to paint a box.
|
|
@@ -470,7 +471,7 @@ class BoxDecoration:
|
|
|
470
471
|
)
|
|
471
472
|
|
|
472
473
|
|
|
473
|
-
@
|
|
474
|
+
@value
|
|
474
475
|
class BoxConstraints:
|
|
475
476
|
"""
|
|
476
477
|
Constraints that must be respected by a size of a box.
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
from dataclasses import
|
|
1
|
+
from dataclasses import field
|
|
2
2
|
from typing import Optional
|
|
3
3
|
|
|
4
4
|
from flet.controls.alignment import Alignment
|
|
5
|
+
from flet.controls.base_control import value
|
|
5
6
|
from flet.controls.border import BorderSide
|
|
6
7
|
from flet.controls.border_radius import BorderRadiusValue
|
|
7
8
|
from flet.controls.control_state import ControlStateValue
|
|
@@ -27,7 +28,7 @@ __all__ = [
|
|
|
27
28
|
]
|
|
28
29
|
|
|
29
30
|
|
|
30
|
-
@
|
|
31
|
+
@value
|
|
31
32
|
class ShapeBorder:
|
|
32
33
|
"""
|
|
33
34
|
Base class for shape outlines. Not intended to be used directly.
|
|
@@ -38,7 +39,7 @@ class ShapeBorder:
|
|
|
38
39
|
"""
|
|
39
40
|
|
|
40
41
|
|
|
41
|
-
@
|
|
42
|
+
@value
|
|
42
43
|
class OutlinedBorder(ShapeBorder):
|
|
43
44
|
"""
|
|
44
45
|
An abstract class that can be used to create custom borders.
|
|
@@ -60,7 +61,7 @@ class OutlinedBorder(ShapeBorder):
|
|
|
60
61
|
_type: Optional[str] = field(init=False, repr=False, compare=False, default=None)
|
|
61
62
|
|
|
62
63
|
|
|
63
|
-
@
|
|
64
|
+
@value
|
|
64
65
|
class StadiumBorder(OutlinedBorder):
|
|
65
66
|
"""
|
|
66
67
|
A border that looks like a stadium.
|
|
@@ -82,7 +83,7 @@ class StadiumBorder(OutlinedBorder):
|
|
|
82
83
|
)
|
|
83
84
|
|
|
84
85
|
|
|
85
|
-
@
|
|
86
|
+
@value
|
|
86
87
|
class RoundedRectangleBorder(OutlinedBorder):
|
|
87
88
|
"""
|
|
88
89
|
A border with rounded rectangle corners.
|
|
@@ -111,7 +112,7 @@ class RoundedRectangleBorder(OutlinedBorder):
|
|
|
111
112
|
)
|
|
112
113
|
|
|
113
114
|
|
|
114
|
-
@
|
|
115
|
+
@value
|
|
115
116
|
class CircleBorder(OutlinedBorder):
|
|
116
117
|
"""
|
|
117
118
|
A border with a circle shape.
|
|
@@ -139,7 +140,7 @@ class CircleBorder(OutlinedBorder):
|
|
|
139
140
|
)
|
|
140
141
|
|
|
141
142
|
|
|
142
|
-
@
|
|
143
|
+
@value
|
|
143
144
|
class BeveledRectangleBorder(RoundedRectangleBorder):
|
|
144
145
|
"""
|
|
145
146
|
A border with beveled rectangle corners.
|
|
@@ -163,7 +164,7 @@ class BeveledRectangleBorder(RoundedRectangleBorder):
|
|
|
163
164
|
)
|
|
164
165
|
|
|
165
166
|
|
|
166
|
-
@
|
|
167
|
+
@value
|
|
167
168
|
class ContinuousRectangleBorder(RoundedRectangleBorder):
|
|
168
169
|
"""
|
|
169
170
|
A border with continuous rectangle corners.
|
|
@@ -187,7 +188,7 @@ class ContinuousRectangleBorder(RoundedRectangleBorder):
|
|
|
187
188
|
)
|
|
188
189
|
|
|
189
190
|
|
|
190
|
-
@
|
|
191
|
+
@value
|
|
191
192
|
class ButtonStyle:
|
|
192
193
|
"""
|
|
193
194
|
Allows controlling all visual aspects of a button, such as shape, foreground, \
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
from dataclasses import
|
|
1
|
+
from dataclasses import field
|
|
2
2
|
from typing import Optional
|
|
3
3
|
|
|
4
|
-
from flet.controls.base_control import control
|
|
4
|
+
from flet.controls.base_control import control, value
|
|
5
5
|
from flet.controls.border_radius import BorderRadiusValue
|
|
6
6
|
from flet.controls.core.canvas.shape import Shape
|
|
7
7
|
from flet.controls.painting import Paint
|
|
@@ -20,7 +20,7 @@ class Path(Shape):
|
|
|
20
20
|
(see `Path.Close`).
|
|
21
21
|
"""
|
|
22
22
|
|
|
23
|
-
@
|
|
23
|
+
@value(kw_only=True)
|
|
24
24
|
class PathElement:
|
|
25
25
|
"""
|
|
26
26
|
Base type for elements stored in `Path.elements`.
|
|
@@ -47,7 +47,7 @@ class Path(Shape):
|
|
|
47
47
|
A style to draw a path with.
|
|
48
48
|
"""
|
|
49
49
|
|
|
50
|
-
@
|
|
50
|
+
@value
|
|
51
51
|
class MoveTo(PathElement):
|
|
52
52
|
"""
|
|
53
53
|
Starts a new sub-path at the given point (`x`,`y`).
|
|
@@ -59,7 +59,7 @@ class Path(Shape):
|
|
|
59
59
|
def __post_init__(self):
|
|
60
60
|
self._type = "MoveTo"
|
|
61
61
|
|
|
62
|
-
@
|
|
62
|
+
@value
|
|
63
63
|
class LineTo(PathElement):
|
|
64
64
|
"""
|
|
65
65
|
Adds a straight line segment from the current point to the given point \
|
|
@@ -72,7 +72,7 @@ class Path(Shape):
|
|
|
72
72
|
def __post_init__(self):
|
|
73
73
|
self._type = "LineTo"
|
|
74
74
|
|
|
75
|
-
@
|
|
75
|
+
@value
|
|
76
76
|
class QuadraticTo(PathElement):
|
|
77
77
|
"""
|
|
78
78
|
Adds a bezier segment that curves from the current point to the given point \
|
|
@@ -92,7 +92,7 @@ class Path(Shape):
|
|
|
92
92
|
def __post_init__(self):
|
|
93
93
|
self._type = "QuadraticTo"
|
|
94
94
|
|
|
95
|
-
@
|
|
95
|
+
@value
|
|
96
96
|
class CubicTo(PathElement):
|
|
97
97
|
"""
|
|
98
98
|
Adds a cubic bezier segment that curves from the current point to the given \
|
|
@@ -109,7 +109,7 @@ class Path(Shape):
|
|
|
109
109
|
def __post_init__(self):
|
|
110
110
|
self._type = "CubicTo"
|
|
111
111
|
|
|
112
|
-
@
|
|
112
|
+
@value
|
|
113
113
|
class SubPath(PathElement):
|
|
114
114
|
"""
|
|
115
115
|
Adds the sub-path described by `elements` to the given point (`x`,`y`).
|
|
@@ -122,7 +122,7 @@ class Path(Shape):
|
|
|
122
122
|
def __post_init__(self):
|
|
123
123
|
self._type = "SubPath"
|
|
124
124
|
|
|
125
|
-
@
|
|
125
|
+
@value
|
|
126
126
|
class Arc(PathElement):
|
|
127
127
|
"""
|
|
128
128
|
Adds a new sub-path with one arc segment that consists of the arc that follows \
|
|
@@ -167,7 +167,7 @@ class Path(Shape):
|
|
|
167
167
|
def __post_init__(self):
|
|
168
168
|
self._type = "Arc"
|
|
169
169
|
|
|
170
|
-
@
|
|
170
|
+
@value
|
|
171
171
|
class ArcTo(PathElement):
|
|
172
172
|
"""
|
|
173
173
|
Appends up to four conic curves weighted to describe an oval of `radius` and \
|
|
@@ -216,7 +216,7 @@ class Path(Shape):
|
|
|
216
216
|
def __post_init__(self):
|
|
217
217
|
self._type = "ArcTo"
|
|
218
218
|
|
|
219
|
-
@
|
|
219
|
+
@value
|
|
220
220
|
class Oval(PathElement):
|
|
221
221
|
"""
|
|
222
222
|
Adds a new sub-path that consists of a curve that forms the ellipse that fills \
|
|
@@ -246,7 +246,7 @@ class Path(Shape):
|
|
|
246
246
|
def __post_init__(self):
|
|
247
247
|
self._type = "Oval"
|
|
248
248
|
|
|
249
|
-
@
|
|
249
|
+
@value
|
|
250
250
|
class Rect(PathElement):
|
|
251
251
|
"""
|
|
252
252
|
Adds a rectangle as a new sub-path.
|
|
@@ -280,7 +280,7 @@ class Path(Shape):
|
|
|
280
280
|
def __post_init__(self):
|
|
281
281
|
self._type = "Rect"
|
|
282
282
|
|
|
283
|
-
@
|
|
283
|
+
@value
|
|
284
284
|
class Close(PathElement):
|
|
285
285
|
"""
|
|
286
286
|
Closes the last sub-path, as if a straight line had been drawn from the \
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
from dataclasses import dataclass
|
|
2
1
|
from enum import Enum
|
|
3
2
|
from typing import Optional, Union
|
|
4
3
|
|
|
5
|
-
from flet.controls.base_control import control
|
|
4
|
+
from flet.controls.base_control import control, value
|
|
6
5
|
from flet.controls.box import BoxDecoration
|
|
7
6
|
from flet.controls.control import Control
|
|
8
7
|
from flet.controls.control_event import ControlEventHandler, EventHandler
|
|
@@ -55,7 +54,7 @@ class MarkdownExtensionSet(Enum):
|
|
|
55
54
|
"""
|
|
56
55
|
|
|
57
56
|
|
|
58
|
-
@
|
|
57
|
+
@value
|
|
59
58
|
class MarkdownStyleSheet:
|
|
60
59
|
"""
|
|
61
60
|
Style overrides for markdown element rendering.
|
|
@@ -676,7 +675,7 @@ class MarkdownCodeTheme(Enum):
|
|
|
676
675
|
"""
|
|
677
676
|
|
|
678
677
|
|
|
679
|
-
@
|
|
678
|
+
@value
|
|
680
679
|
class MarkdownCustomCodeTheme:
|
|
681
680
|
"""
|
|
682
681
|
Custom text-style mapping for code token highlighting.
|