From d943cd37fd003e65a778ca65c7556b0457d7384f Mon Sep 17 00:00:00 2001 From: Malcolm Smith Date: Mon, 7 Nov 2022 15:07:14 +0000 Subject: [PATCH 01/16] Move contents of `src` into repository root --- {src/android => android}/CONTRIBUTING.md | 0 {src/android => android}/LICENSE | 0 {src/android => android}/MANIFEST.in | 0 {src/android => android}/README.rst | 0 {src/android => android}/pyproject.toml | 0 {src/android => android}/setup.cfg | 0 {src/android => android}/setup.py | 0 .../src/toga_android/__init__.py | 0 {src/android => android}/src/toga_android/app.py | 0 {src/android => android}/src/toga_android/colors.py | 0 .../android => android}/src/toga_android/command.py | 0 .../android => android}/src/toga_android/dialogs.py | 0 .../android => android}/src/toga_android/factory.py | 0 {src/android => android}/src/toga_android/fonts.py | 0 .../src/toga_android/hardware/__init__.py | 0 {src/android => android}/src/toga_android/icons.py | 0 {src/android => android}/src/toga_android/images.py | 0 .../src/toga_android/libs/__init__.py | 0 .../src/toga_android/libs/activity.py | 0 .../src/toga_android/libs/android/__init__.py | 0 .../src/toga_android/libs/android/app.py | 0 .../src/toga_android/libs/android/content.py | 0 .../src/toga_android/libs/android/graphics.py | 0 .../src/toga_android/libs/android/text.py | 0 .../src/toga_android/libs/android/util.py | 0 .../src/toga_android/libs/android/view.py | 0 .../src/toga_android/libs/android/webkit.py | 0 .../src/toga_android/libs/android/widget.py | 0 .../src/toga_android/libs/androidx/__init__.py | 0 .../libs/androidx/swiperefreshlayout.py | 0 {src/android => android}/src/toga_android/paths.py | 0 .../src/toga_android/widgets/__init__.py | 0 .../src/toga_android/widgets/base.py | 0 .../src/toga_android/widgets/box.py | 0 .../src/toga_android/widgets/button.py | 0 .../src/toga_android/widgets/canvas.py | 0 .../src/toga_android/widgets/datepicker.py | 0 .../src/toga_android/widgets/detailedlist.py | 0 .../src/toga_android/widgets/imageview.py | 0 .../src/toga_android/widgets/internal/__init__.py | 0 .../src/toga_android/widgets/internal/pickers.py | 0 .../src/toga_android/widgets/label.py | 0 .../src/toga_android/widgets/multilinetextinput.py | 0 .../src/toga_android/widgets/numberinput.py | 0 .../src/toga_android/widgets/passwordinput.py | 0 .../src/toga_android/widgets/progressbar.py | 0 .../src/toga_android/widgets/scrollcontainer.py | 0 .../src/toga_android/widgets/selection.py | 0 .../src/toga_android/widgets/slider.py | 0 .../src/toga_android/widgets/switch.py | 0 .../src/toga_android/widgets/table.py | 0 .../src/toga_android/widgets/textinput.py | 0 .../src/toga_android/widgets/timepicker.py | 0 .../src/toga_android/widgets/webview.py | 0 {src/android => android}/src/toga_android/window.py | 0 {src/android => android}/tests/__init__.py | 0 .../tests/test_implementation.py | 0 {src/android => android}/tox.ini | 0 {src/cocoa => cocoa}/CONTRIBUTING.md | 0 {src/cocoa => cocoa}/LICENSE | 0 {src/cocoa => cocoa}/MANIFEST.in | 0 {src/cocoa => cocoa}/README.rst | 0 {src/cocoa => cocoa}/pyproject.toml | 0 {src/cocoa => cocoa}/setup.cfg | 0 {src/cocoa => cocoa}/setup.py | 0 {src/cocoa => cocoa}/src/toga_cocoa/__init__.py | 0 {src/cocoa => cocoa}/src/toga_cocoa/app.py | 0 {src/cocoa => cocoa}/src/toga_cocoa/colors.py | 0 {src/cocoa => cocoa}/src/toga_cocoa/command.py | 0 {src/cocoa => cocoa}/src/toga_cocoa/constraints.py | 0 {src/cocoa => cocoa}/src/toga_cocoa/dialogs.py | 0 {src/cocoa => cocoa}/src/toga_cocoa/documents.py | 0 {src/cocoa => cocoa}/src/toga_cocoa/factory.py | 0 {src/cocoa => cocoa}/src/toga_cocoa/fonts.py | 0 .../src/toga_cocoa/hardware/__init__.py | 0 {src/cocoa => cocoa}/src/toga_cocoa/icons.py | 0 {src/cocoa => cocoa}/src/toga_cocoa/images.py | 0 {src/cocoa => cocoa}/src/toga_cocoa/keys.py | 0 .../cocoa => cocoa}/src/toga_cocoa/libs/__init__.py | 0 {src/cocoa => cocoa}/src/toga_cocoa/libs/appkit.py | 0 .../src/toga_cocoa/libs/core_graphics.py | 0 .../src/toga_cocoa/libs/core_text.py | 0 .../src/toga_cocoa/libs/foundation.py | 0 {src/cocoa => cocoa}/src/toga_cocoa/libs/webkit.py | 0 {src/cocoa => cocoa}/src/toga_cocoa/paths.py | 0 .../src/toga_cocoa/resources/__init__.py | 0 .../src/toga_cocoa/widgets/__init__.py | 0 .../src/toga_cocoa/widgets/activityindicator.py | 0 {src/cocoa => cocoa}/src/toga_cocoa/widgets/base.py | 0 {src/cocoa => cocoa}/src/toga_cocoa/widgets/box.py | 0 .../src/toga_cocoa/widgets/button.py | 0 .../src/toga_cocoa/widgets/canvas.py | 0 .../src/toga_cocoa/widgets/detailedlist.py | 0 .../src/toga_cocoa/widgets/divider.py | 0 .../src/toga_cocoa/widgets/imageview.py | 0 .../src/toga_cocoa/widgets/internal/__init__.py | 0 .../src/toga_cocoa/widgets/internal/cells.py | 0 .../src/toga_cocoa/widgets/internal/data.py | 0 .../src/toga_cocoa/widgets/internal/refresh.py | 0 .../cocoa => cocoa}/src/toga_cocoa/widgets/label.py | 0 .../src/toga_cocoa/widgets/multilinetextinput.py | 0 .../src/toga_cocoa/widgets/numberinput.py | 0 .../src/toga_cocoa/widgets/optioncontainer.py | 0 .../src/toga_cocoa/widgets/passwordinput.py | 0 .../src/toga_cocoa/widgets/progressbar.py | 0 .../src/toga_cocoa/widgets/scrollcontainer.py | 0 .../src/toga_cocoa/widgets/selection.py | 0 .../src/toga_cocoa/widgets/slider.py | 0 .../src/toga_cocoa/widgets/splitcontainer.py | 0 .../src/toga_cocoa/widgets/switch.py | 0 .../cocoa => cocoa}/src/toga_cocoa/widgets/table.py | 0 .../src/toga_cocoa/widgets/textinput.py | 0 {src/cocoa => cocoa}/src/toga_cocoa/widgets/tree.py | 0 .../src/toga_cocoa/widgets/webview.py | 0 {src/cocoa => cocoa}/src/toga_cocoa/window.py | 0 {src/cocoa => cocoa}/tests/__init__.py | 0 {src/cocoa => cocoa}/tests/test_implementation.py | 0 {src/cocoa => cocoa}/tests/test_paths.py | 0 {src/cocoa => cocoa}/tox.ini | 0 {src/core => core}/CONTRIBUTING.md | 0 {src/core => core}/LICENSE | 0 {src/core => core}/MANIFEST.in | 0 {src/core => core}/README.rst | 0 {src/core => core}/pyproject.toml | 0 {src/core => core}/setup.cfg | 0 {src/core => core}/setup.py | 0 {src/core => core}/src/toga/__init__.py | 0 {src/core => core}/src/toga/app.py | 0 {src/core => core}/src/toga/colors.py | 0 {src/core => core}/src/toga/command.py | 0 {src/core => core}/src/toga/constants/__init__.py | 0 {src/core => core}/src/toga/documents.py | 0 {src/core => core}/src/toga/fonts.py | 0 {src/core => core}/src/toga/handlers.py | 0 {src/core => core}/src/toga/hardware/__init__.py | 0 {src/core => core}/src/toga/icons.py | 0 {src/core => core}/src/toga/images.py | 0 {src/core => core}/src/toga/keys.py | 0 {src/core => core}/src/toga/platform.py | 0 {src/core => core}/src/toga/resources/__init__.py | 0 {src/core => core}/src/toga/resources/toga.icns | Bin {src/core => core}/src/toga/resources/toga.ico | Bin {src/core => core}/src/toga/resources/toga.png | Bin {src/core => core}/src/toga/sources/__init__.py | 0 {src/core => core}/src/toga/sources/accessors.py | 0 {src/core => core}/src/toga/sources/base.py | 0 {src/core => core}/src/toga/sources/list_source.py | 0 {src/core => core}/src/toga/sources/tree_source.py | 0 {src/core => core}/src/toga/sources/value_source.py | 0 {src/core => core}/src/toga/style/__init__.py | 0 {src/core => core}/src/toga/style/applicator.py | 0 {src/core => core}/src/toga/style/pack.py | 0 {src/core => core}/src/toga/validators.py | 0 {src/core => core}/src/toga/widgets/__init__.py | 0 .../src/toga/widgets/activityindicator.py | 0 {src/core => core}/src/toga/widgets/base.py | 0 {src/core => core}/src/toga/widgets/box.py | 0 {src/core => core}/src/toga/widgets/button.py | 0 {src/core => core}/src/toga/widgets/canvas.py | 0 {src/core => core}/src/toga/widgets/datepicker.py | 0 {src/core => core}/src/toga/widgets/detailedlist.py | 0 {src/core => core}/src/toga/widgets/divider.py | 0 {src/core => core}/src/toga/widgets/imageview.py | 0 {src/core => core}/src/toga/widgets/label.py | 0 .../src/toga/widgets/multilinetextinput.py | 0 .../src/toga/widgets/navigationview.py | 0 {src/core => core}/src/toga/widgets/numberinput.py | 0 .../src/toga/widgets/optioncontainer.py | 0 .../core => core}/src/toga/widgets/passwordinput.py | 0 {src/core => core}/src/toga/widgets/progressbar.py | 0 .../src/toga/widgets/scrollcontainer.py | 0 {src/core => core}/src/toga/widgets/selection.py | 0 {src/core => core}/src/toga/widgets/slider.py | 0 .../src/toga/widgets/splitcontainer.py | 0 {src/core => core}/src/toga/widgets/switch.py | 0 {src/core => core}/src/toga/widgets/table.py | 0 {src/core => core}/src/toga/widgets/textinput.py | 0 {src/core => core}/src/toga/widgets/timepicker.py | 0 {src/core => core}/src/toga/widgets/tree.py | 0 {src/core => core}/src/toga/widgets/webview.py | 0 {src/core => core}/src/toga/window.py | 0 {src/core => core}/tests/__init__.py | 0 {src/core => core}/tests/command/__init__.py | 0 {src/core => core}/tests/command/constants.py | 0 {src/core => core}/tests/command/test_command.py | 0 .../tests/command/test_commands_group.py | 0 .../tests/command/test_commands_set.py | 0 {src/core => core}/tests/sources/__init__.py | 0 {src/core => core}/tests/sources/test_accessors.py | 0 .../core => core}/tests/sources/test_list_source.py | 0 {src/core => core}/tests/sources/test_source.py | 0 .../core => core}/tests/sources/test_tree_source.py | 0 .../tests/sources/test_value_source.py | 0 {src/core => core}/tests/style/__init__.py | 0 {src/core => core}/tests/style/test_pack.py | 0 {src/core => core}/tests/test_app.py | 0 {src/core => core}/tests/test_deprecated_factory.py | 0 {src/core => core}/tests/test_documents.py | 0 {src/core => core}/tests/test_font.py | 0 {src/core => core}/tests/test_handler.py | 0 {src/core => core}/tests/test_icon.py | 0 {src/core => core}/tests/test_image.py | 0 {src/core => core}/tests/test_key.py | 0 {src/core => core}/tests/test_paths.py | 0 {src/core => core}/tests/test_platform.py | 0 {src/core => core}/tests/test_validators.py | 0 {src/core => core}/tests/test_widget_registry.py | 0 {src/core => core}/tests/test_window.py | 0 {src/core => core}/tests/testbed/bootstrap.py | 0 .../tests/testbed/installed.dist-info/INSTALLER | 0 .../tests/testbed/installed.dist-info/METADATA | 0 .../tests/testbed/installed/__init__.py | 0 .../tests/testbed/installed/__main__.py | 0 {src/core => core}/tests/testbed/installed/app.py | 0 {src/core => core}/tests/testbed/simple/__init__.py | 0 {src/core => core}/tests/testbed/simple/__main__.py | 0 {src/core => core}/tests/testbed/simple/app.py | 0 {src/core => core}/tests/testbed/standalone.py | 0 .../tests/testbed/subclassed/__init__.py | 0 .../tests/testbed/subclassed/__main__.py | 0 {src/core => core}/tests/testbed/subclassed/app.py | 0 {src/core => core}/tests/utils.py | 0 {src/core => core}/tests/widgets/__init__.py | 0 .../tests/widgets/test_activityindicator.py | 0 {src/core => core}/tests/widgets/test_base.py | 0 {src/core => core}/tests/widgets/test_box.py | 0 {src/core => core}/tests/widgets/test_button.py | 0 {src/core => core}/tests/widgets/test_canvas.py | 0 {src/core => core}/tests/widgets/test_datepicker.py | 0 .../tests/widgets/test_detailedlist.py | 0 {src/core => core}/tests/widgets/test_divider.py | 0 {src/core => core}/tests/widgets/test_imageview.py | 0 {src/core => core}/tests/widgets/test_label.py | 0 .../tests/widgets/test_multilinetextinput.py | 0 .../tests/widgets/test_navigationview.py | 0 .../core => core}/tests/widgets/test_numberinput.py | 0 .../tests/widgets/test_optioncontainer.py | 0 .../tests/widgets/test_passwordinput.py | 0 .../core => core}/tests/widgets/test_progressbar.py | 0 .../tests/widgets/test_scrollcontainer.py | 0 {src/core => core}/tests/widgets/test_selection.py | 0 {src/core => core}/tests/widgets/test_slider.py | 0 .../tests/widgets/test_splitcontainer.py | 0 {src/core => core}/tests/widgets/test_switch.py | 0 {src/core => core}/tests/widgets/test_table.py | 0 {src/core => core}/tests/widgets/test_textinput.py | 0 {src/core => core}/tests/widgets/test_timepicker.py | 0 {src/core => core}/tests/widgets/test_tree.py | 0 {src/core => core}/tests/widgets/test_webview.py | 0 {src/core => core}/tox.ini | 0 {src/dummy => dummy}/CONTRIBUTING.md | 0 {src/dummy => dummy}/LICENSE | 0 {src/dummy => dummy}/MANIFEST.in | 0 {src/dummy => dummy}/README.rst | 0 {src/dummy => dummy}/pyproject.toml | 0 {src/dummy => dummy}/setup.cfg | 0 {src/dummy => dummy}/setup.py | 0 {src/dummy => dummy}/src/toga_dummy/__init__.py | 0 {src/dummy => dummy}/src/toga_dummy/app.py | 0 {src/dummy => dummy}/src/toga_dummy/colors.py | 0 {src/dummy => dummy}/src/toga_dummy/command.py | 0 {src/dummy => dummy}/src/toga_dummy/container.py | 0 {src/dummy => dummy}/src/toga_dummy/dialogs.py | 0 {src/dummy => dummy}/src/toga_dummy/documents.py | 0 {src/dummy => dummy}/src/toga_dummy/factory.py | 0 {src/dummy => dummy}/src/toga_dummy/fonts.py | 0 {src/dummy => dummy}/src/toga_dummy/icons.py | 0 {src/dummy => dummy}/src/toga_dummy/images.py | 0 {src/dummy => dummy}/src/toga_dummy/paths.py | 0 .../src/toga_dummy/test_implementation.py | 0 {src/dummy => dummy}/src/toga_dummy/utils.py | 0 .../src/toga_dummy/widgets/__init__.py | 0 .../src/toga_dummy/widgets/activityindicator.py | 0 {src/dummy => dummy}/src/toga_dummy/widgets/base.py | 0 {src/dummy => dummy}/src/toga_dummy/widgets/box.py | 0 .../src/toga_dummy/widgets/button.py | 0 .../src/toga_dummy/widgets/canvas.py | 0 .../src/toga_dummy/widgets/datepicker.py | 0 .../src/toga_dummy/widgets/detailedlist.py | 0 .../src/toga_dummy/widgets/divider.py | 0 .../src/toga_dummy/widgets/imageview.py | 0 .../dummy => dummy}/src/toga_dummy/widgets/label.py | 0 .../src/toga_dummy/widgets/multilinetextinput.py | 0 .../src/toga_dummy/widgets/navigationview.py | 0 .../src/toga_dummy/widgets/numberinput.py | 0 .../src/toga_dummy/widgets/optioncontainer.py | 0 .../src/toga_dummy/widgets/passwordinput.py | 0 .../src/toga_dummy/widgets/progressbar.py | 0 .../src/toga_dummy/widgets/scrollcontainer.py | 0 .../src/toga_dummy/widgets/selection.py | 0 .../src/toga_dummy/widgets/slider.py | 0 .../src/toga_dummy/widgets/splitcontainer.py | 0 .../src/toga_dummy/widgets/switch.py | 0 .../dummy => dummy}/src/toga_dummy/widgets/table.py | 0 .../src/toga_dummy/widgets/textinput.py | 0 .../src/toga_dummy/widgets/timepicker.py | 0 {src/dummy => dummy}/src/toga_dummy/widgets/tree.py | 0 .../src/toga_dummy/widgets/webview.py | 0 {src/dummy => dummy}/src/toga_dummy/window.py | 0 {src/gtk => gtk}/CONTRIBUTING.md | 0 {src/gtk => gtk}/LICENSE | 0 {src/gtk => gtk}/MANIFEST.in | 0 {src/gtk => gtk}/README.rst | 0 {src/gtk => gtk}/pyproject.toml | 0 {src/gtk => gtk}/setup.cfg | 0 {src/gtk => gtk}/setup.py | 0 {src/gtk => gtk}/src/toga_gtk/__init__.py | 0 {src/gtk => gtk}/src/toga_gtk/app.py | 0 {src/gtk => gtk}/src/toga_gtk/colors.py | 0 {src/gtk => gtk}/src/toga_gtk/command.py | 0 {src/gtk => gtk}/src/toga_gtk/dialogs.py | 0 {src/gtk => gtk}/src/toga_gtk/documents.py | 0 {src/gtk => gtk}/src/toga_gtk/factory.py | 0 {src/gtk => gtk}/src/toga_gtk/fonts.py | 0 {src/gtk => gtk}/src/toga_gtk/hardware/__init__.py | 0 {src/gtk => gtk}/src/toga_gtk/icons.py | 0 {src/gtk => gtk}/src/toga_gtk/images.py | 0 {src/gtk => gtk}/src/toga_gtk/keys.py | 0 {src/gtk => gtk}/src/toga_gtk/libs/__init__.py | 0 {src/gtk => gtk}/src/toga_gtk/libs/gtk.py | 0 {src/gtk => gtk}/src/toga_gtk/libs/styles.py | 0 {src/gtk => gtk}/src/toga_gtk/libs/utils.py | 0 {src/gtk => gtk}/src/toga_gtk/paths.py | 0 {src/gtk => gtk}/src/toga_gtk/widgets/__init__.py | 0 .../src/toga_gtk/widgets/activityindicator.py | 0 {src/gtk => gtk}/src/toga_gtk/widgets/base.py | 0 {src/gtk => gtk}/src/toga_gtk/widgets/box.py | 0 {src/gtk => gtk}/src/toga_gtk/widgets/button.py | 0 {src/gtk => gtk}/src/toga_gtk/widgets/canvas.py | 0 .../src/toga_gtk/widgets/detailedlist.py | 0 {src/gtk => gtk}/src/toga_gtk/widgets/divider.py | 0 {src/gtk => gtk}/src/toga_gtk/widgets/imageview.py | 0 .../src/toga_gtk/widgets/internal/__init__.py | 0 .../toga_gtk/widgets/internal/buttons/__init__.py | 0 .../src/toga_gtk/widgets/internal/buttons/base.py | 0 .../toga_gtk/widgets/internal/buttons/refresh.py | 0 .../src/toga_gtk/widgets/internal/buttons/scroll.py | 0 .../src/toga_gtk/widgets/internal/rows/__init__.py | 0 .../src/toga_gtk/widgets/internal/rows/base.py | 0 .../toga_gtk/widgets/internal/rows/scrollable.py | 0 .../src/toga_gtk/widgets/internal/rows/texticon.py | 0 .../toga_gtk/widgets/internal/sourcetreemodel.py | 0 {src/gtk => gtk}/src/toga_gtk/widgets/label.py | 0 .../src/toga_gtk/widgets/multilinetextinput.py | 0 .../gtk => gtk}/src/toga_gtk/widgets/numberinput.py | 0 .../src/toga_gtk/widgets/optioncontainer.py | 0 .../src/toga_gtk/widgets/passwordinput.py | 0 .../gtk => gtk}/src/toga_gtk/widgets/progressbar.py | 0 .../src/toga_gtk/widgets/scrollcontainer.py | 0 {src/gtk => gtk}/src/toga_gtk/widgets/selection.py | 0 {src/gtk => gtk}/src/toga_gtk/widgets/slider.py | 0 .../src/toga_gtk/widgets/splitcontainer.py | 0 {src/gtk => gtk}/src/toga_gtk/widgets/switch.py | 0 {src/gtk => gtk}/src/toga_gtk/widgets/table.py | 0 {src/gtk => gtk}/src/toga_gtk/widgets/textinput.py | 0 {src/gtk => gtk}/src/toga_gtk/widgets/tree.py | 0 {src/gtk => gtk}/src/toga_gtk/widgets/webview.py | 0 {src/gtk => gtk}/src/toga_gtk/window.py | 0 {src/gtk => gtk}/tests/__init__.py | 0 {src/gtk => gtk}/tests/test_font.py | 0 {src/gtk => gtk}/tests/test_implementation.py | 0 {src/gtk => gtk}/tests/test_paths.py | 0 {src/gtk => gtk}/tests/widgets/__init__.py | 0 {src/gtk => gtk}/tests/widgets/test_detailedlist.py | 0 {src/gtk => gtk}/tests/widgets/test_imageview.py | 0 {src/gtk => gtk}/tests/widgets/test_switch.py | 0 {src/gtk => gtk}/tests/widgets/test_table.py | 0 {src/gtk => gtk}/tests/widgets/test_tree.py | 0 {src/gtk => gtk}/tests/widgets/utils.py | 0 {src/gtk => gtk}/tox.ini | 0 {src/iOS => iOS}/CONTRIBUTING.md | 0 {src/iOS => iOS}/LICENSE | 0 {src/iOS => iOS}/MANIFEST.in | 0 {src/iOS => iOS}/README.rst | 0 {src/iOS => iOS}/pyproject.toml | 0 {src/iOS => iOS}/setup.cfg | 0 {src/iOS => iOS}/setup.py | 0 {src/iOS => iOS}/src/toga_iOS/__init__.py | 0 {src/iOS => iOS}/src/toga_iOS/app.py | 0 {src/iOS => iOS}/src/toga_iOS/colors.py | 0 {src/iOS => iOS}/src/toga_iOS/constraints.py | 0 {src/iOS => iOS}/src/toga_iOS/dialogs.py | 0 {src/iOS => iOS}/src/toga_iOS/factory.py | 0 {src/iOS => iOS}/src/toga_iOS/fonts.py | 0 {src/iOS => iOS}/src/toga_iOS/hardware/__init__.py | 0 {src/iOS => iOS}/src/toga_iOS/icons.py | 0 {src/iOS => iOS}/src/toga_iOS/images.py | 0 {src/iOS => iOS}/src/toga_iOS/libs/__init__.py | 0 {src/iOS => iOS}/src/toga_iOS/libs/core_graphics.py | 0 {src/iOS => iOS}/src/toga_iOS/libs/foundation.py | 0 {src/iOS => iOS}/src/toga_iOS/libs/uikit.py | 0 {src/iOS => iOS}/src/toga_iOS/libs/webkit.py | 0 {src/iOS => iOS}/src/toga_iOS/paths.py | 0 {src/iOS => iOS}/src/toga_iOS/widgets/__init__.py | 0 {src/iOS => iOS}/src/toga_iOS/widgets/base.py | 0 {src/iOS => iOS}/src/toga_iOS/widgets/box.py | 0 {src/iOS => iOS}/src/toga_iOS/widgets/button.py | 0 {src/iOS => iOS}/src/toga_iOS/widgets/canvas.py | 0 .../src/toga_iOS/widgets/detailedlist.py | 0 {src/iOS => iOS}/src/toga_iOS/widgets/imageview.py | 0 {src/iOS => iOS}/src/toga_iOS/widgets/label.py | 0 .../src/toga_iOS/widgets/multilinetextinput.py | 0 .../src/toga_iOS/widgets/navigationview.py | 0 .../iOS => iOS}/src/toga_iOS/widgets/numberinput.py | 0 .../src/toga_iOS/widgets/passwordinput.py | 0 .../iOS => iOS}/src/toga_iOS/widgets/progressbar.py | 0 .../src/toga_iOS/widgets/scrollcontainer.py | 0 {src/iOS => iOS}/src/toga_iOS/widgets/selection.py | 0 {src/iOS => iOS}/src/toga_iOS/widgets/slider.py | 0 {src/iOS => iOS}/src/toga_iOS/widgets/switch.py | 0 {src/iOS => iOS}/src/toga_iOS/widgets/textinput.py | 0 {src/iOS => iOS}/src/toga_iOS/widgets/webview.py | 0 {src/iOS => iOS}/src/toga_iOS/window.py | 0 {src/iOS => iOS}/tests/__init__.py | 0 {src/iOS => iOS}/tests/test_implementation.py | 0 {src/iOS => iOS}/tox.ini | 0 {src/web => web}/CONTRIBUTING.md | 0 {src/web => web}/LICENSE | 0 {src/web => web}/MANIFEST.in | 0 {src/web => web}/README.rst | 0 {src/web => web}/pyproject.toml | 0 {src/web => web}/setup.cfg | 0 {src/web => web}/setup.py | 0 {src/web => web}/src/toga_web/__init__.py | 0 {src/web => web}/src/toga_web/app.py | 0 {src/web => web}/src/toga_web/command.py | 0 {src/web => web}/src/toga_web/dialogs.py | 0 {src/web => web}/src/toga_web/factory.py | 0 {src/web => web}/src/toga_web/icons.py | 0 {src/web => web}/src/toga_web/libs.py | 0 {src/web => web}/src/toga_web/paths.py | 0 {src/web => web}/src/toga_web/static/toga.css | 0 {src/web => web}/src/toga_web/widgets/__init__.py | 0 {src/web => web}/src/toga_web/widgets/base.py | 0 {src/web => web}/src/toga_web/widgets/box.py | 0 {src/web => web}/src/toga_web/widgets/button.py | 0 {src/web => web}/src/toga_web/widgets/label.py | 0 {src/web => web}/src/toga_web/widgets/textinput.py | 0 {src/web => web}/src/toga_web/window.py | 0 {src/web => web}/tests/__init__.py | 0 {src/web => web}/tests/test_implementation.py | 0 {src/web => web}/tox.ini | 0 {src/winforms => winforms}/CONTRIBUTING.md | 0 {src/winforms => winforms}/LICENSE | 0 {src/winforms => winforms}/MANIFEST.in | 0 {src/winforms => winforms}/README.rst | 0 {src/winforms => winforms}/pyproject.toml | 0 {src/winforms => winforms}/setup.cfg | 0 {src/winforms => winforms}/setup.py | 0 .../src/toga_winforms/__init__.py | 0 {src/winforms => winforms}/src/toga_winforms/app.py | 0 .../src/toga_winforms/colors.py | 0 .../src/toga_winforms/command.py | 0 .../src/toga_winforms/dialogs.py | 0 .../src/toga_winforms/factory.py | 0 .../src/toga_winforms/fonts.py | 0 .../src/toga_winforms/hardware/__init__.py | 0 .../src/toga_winforms/icons.py | 0 .../src/toga_winforms/images.py | 0 .../winforms => winforms}/src/toga_winforms/keys.py | 0 .../src/toga_winforms/libs/WebView2/LICENSE.md | 0 .../libs/WebView2/Microsoft.Web.WebView2.Core.dll | Bin .../WebView2/Microsoft.Web.WebView2.WinForms.dll | Bin .../src/toga_winforms/libs/WebView2/README.md | 0 .../libs/WebView2/arm64/WebView2Loader.dll | Bin .../libs/WebView2/x64/WebView2Loader.dll | Bin .../libs/WebView2/x86/WebView2Loader.dll | Bin .../src/toga_winforms/libs/__init__.py | 0 .../src/toga_winforms/libs/extensions.py | 0 .../src/toga_winforms/libs/fonts.py | 0 .../src/toga_winforms/libs/proactor.py | 0 .../src/toga_winforms/libs/winforms.py | 0 .../src/toga_winforms/paths.py | 0 .../src/toga_winforms/widgets/__init__.py | 0 .../src/toga_winforms/widgets/base.py | 0 .../src/toga_winforms/widgets/box.py | 0 .../src/toga_winforms/widgets/button.py | 0 .../src/toga_winforms/widgets/canvas.py | 0 .../src/toga_winforms/widgets/datepicker.py | 0 .../src/toga_winforms/widgets/detailedlist.py | 0 .../src/toga_winforms/widgets/divider.py | 0 .../src/toga_winforms/widgets/imageview.py | 0 .../src/toga_winforms/widgets/label.py | 0 .../src/toga_winforms/widgets/multilinetextinput.py | 0 .../src/toga_winforms/widgets/numberinput.py | 0 .../src/toga_winforms/widgets/optioncontainer.py | 0 .../src/toga_winforms/widgets/passwordinput.py | 0 .../src/toga_winforms/widgets/progressbar.py | 0 .../src/toga_winforms/widgets/scrollcontainer.py | 0 .../src/toga_winforms/widgets/selection.py | 0 .../src/toga_winforms/widgets/slider.py | 0 .../src/toga_winforms/widgets/splitcontainer.py | 0 .../src/toga_winforms/widgets/switch.py | 0 .../src/toga_winforms/widgets/table.py | 0 .../src/toga_winforms/widgets/textinput.py | 0 .../src/toga_winforms/widgets/timepicker.py | 0 .../src/toga_winforms/widgets/tree.py | 0 .../src/toga_winforms/widgets/webview.py | 0 .../src/toga_winforms/window.py | 0 {src/winforms => winforms}/tests/__init__.py | 0 .../tests/test_implementation.py | 0 {src/winforms => winforms}/tests/test_paths.py | 0 {src/winforms => winforms}/tox.ini | 0 503 files changed, 0 insertions(+), 0 deletions(-) rename {src/android => android}/CONTRIBUTING.md (100%) rename {src/android => android}/LICENSE (100%) rename {src/android => android}/MANIFEST.in (100%) rename {src/android => android}/README.rst (100%) rename {src/android => android}/pyproject.toml (100%) rename {src/android => android}/setup.cfg (100%) rename {src/android => android}/setup.py (100%) rename {src/android => android}/src/toga_android/__init__.py (100%) rename {src/android => android}/src/toga_android/app.py (100%) rename {src/android => android}/src/toga_android/colors.py (100%) rename {src/android => android}/src/toga_android/command.py (100%) rename {src/android => android}/src/toga_android/dialogs.py (100%) rename {src/android => android}/src/toga_android/factory.py (100%) rename {src/android => android}/src/toga_android/fonts.py (100%) rename {src/android => android}/src/toga_android/hardware/__init__.py (100%) rename {src/android => android}/src/toga_android/icons.py (100%) rename {src/android => android}/src/toga_android/images.py (100%) rename {src/android => android}/src/toga_android/libs/__init__.py (100%) rename {src/android => android}/src/toga_android/libs/activity.py (100%) rename {src/android => android}/src/toga_android/libs/android/__init__.py (100%) rename {src/android => android}/src/toga_android/libs/android/app.py (100%) rename {src/android => android}/src/toga_android/libs/android/content.py (100%) rename {src/android => android}/src/toga_android/libs/android/graphics.py (100%) rename {src/android => android}/src/toga_android/libs/android/text.py (100%) rename {src/android => android}/src/toga_android/libs/android/util.py (100%) rename {src/android => android}/src/toga_android/libs/android/view.py (100%) rename {src/android => android}/src/toga_android/libs/android/webkit.py (100%) rename {src/android => android}/src/toga_android/libs/android/widget.py (100%) rename {src/android => android}/src/toga_android/libs/androidx/__init__.py (100%) rename {src/android => android}/src/toga_android/libs/androidx/swiperefreshlayout.py (100%) rename {src/android => android}/src/toga_android/paths.py (100%) rename {src/android => android}/src/toga_android/widgets/__init__.py (100%) rename {src/android => android}/src/toga_android/widgets/base.py (100%) rename {src/android => android}/src/toga_android/widgets/box.py (100%) rename {src/android => android}/src/toga_android/widgets/button.py (100%) rename {src/android => android}/src/toga_android/widgets/canvas.py (100%) rename {src/android => android}/src/toga_android/widgets/datepicker.py (100%) rename {src/android => android}/src/toga_android/widgets/detailedlist.py (100%) rename {src/android => android}/src/toga_android/widgets/imageview.py (100%) rename {src/android => android}/src/toga_android/widgets/internal/__init__.py (100%) rename {src/android => android}/src/toga_android/widgets/internal/pickers.py (100%) rename {src/android => android}/src/toga_android/widgets/label.py (100%) rename {src/android => android}/src/toga_android/widgets/multilinetextinput.py (100%) rename {src/android => android}/src/toga_android/widgets/numberinput.py (100%) rename {src/android => android}/src/toga_android/widgets/passwordinput.py (100%) rename {src/android => android}/src/toga_android/widgets/progressbar.py (100%) rename {src/android => android}/src/toga_android/widgets/scrollcontainer.py (100%) rename {src/android => android}/src/toga_android/widgets/selection.py (100%) rename {src/android => android}/src/toga_android/widgets/slider.py (100%) rename {src/android => android}/src/toga_android/widgets/switch.py (100%) rename {src/android => android}/src/toga_android/widgets/table.py (100%) rename {src/android => android}/src/toga_android/widgets/textinput.py (100%) rename {src/android => android}/src/toga_android/widgets/timepicker.py (100%) rename {src/android => android}/src/toga_android/widgets/webview.py (100%) rename {src/android => android}/src/toga_android/window.py (100%) rename {src/android => android}/tests/__init__.py (100%) rename {src/android => android}/tests/test_implementation.py (100%) rename {src/android => android}/tox.ini (100%) rename {src/cocoa => cocoa}/CONTRIBUTING.md (100%) rename {src/cocoa => cocoa}/LICENSE (100%) rename {src/cocoa => cocoa}/MANIFEST.in (100%) rename {src/cocoa => cocoa}/README.rst (100%) rename {src/cocoa => cocoa}/pyproject.toml (100%) rename {src/cocoa => cocoa}/setup.cfg (100%) rename {src/cocoa => cocoa}/setup.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/__init__.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/app.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/colors.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/command.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/constraints.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/dialogs.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/documents.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/factory.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/fonts.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/hardware/__init__.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/icons.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/images.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/keys.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/libs/__init__.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/libs/appkit.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/libs/core_graphics.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/libs/core_text.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/libs/foundation.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/libs/webkit.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/paths.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/resources/__init__.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/widgets/__init__.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/widgets/activityindicator.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/widgets/base.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/widgets/box.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/widgets/button.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/widgets/canvas.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/widgets/detailedlist.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/widgets/divider.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/widgets/imageview.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/widgets/internal/__init__.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/widgets/internal/cells.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/widgets/internal/data.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/widgets/internal/refresh.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/widgets/label.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/widgets/multilinetextinput.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/widgets/numberinput.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/widgets/optioncontainer.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/widgets/passwordinput.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/widgets/progressbar.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/widgets/scrollcontainer.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/widgets/selection.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/widgets/slider.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/widgets/splitcontainer.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/widgets/switch.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/widgets/table.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/widgets/textinput.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/widgets/tree.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/widgets/webview.py (100%) rename {src/cocoa => cocoa}/src/toga_cocoa/window.py (100%) rename {src/cocoa => cocoa}/tests/__init__.py (100%) rename {src/cocoa => cocoa}/tests/test_implementation.py (100%) rename {src/cocoa => cocoa}/tests/test_paths.py (100%) rename {src/cocoa => cocoa}/tox.ini (100%) rename {src/core => core}/CONTRIBUTING.md (100%) rename {src/core => core}/LICENSE (100%) rename {src/core => core}/MANIFEST.in (100%) rename {src/core => core}/README.rst (100%) rename {src/core => core}/pyproject.toml (100%) rename {src/core => core}/setup.cfg (100%) rename {src/core => core}/setup.py (100%) rename {src/core => core}/src/toga/__init__.py (100%) rename {src/core => core}/src/toga/app.py (100%) rename {src/core => core}/src/toga/colors.py (100%) rename {src/core => core}/src/toga/command.py (100%) rename {src/core => core}/src/toga/constants/__init__.py (100%) rename {src/core => core}/src/toga/documents.py (100%) rename {src/core => core}/src/toga/fonts.py (100%) rename {src/core => core}/src/toga/handlers.py (100%) rename {src/core => core}/src/toga/hardware/__init__.py (100%) rename {src/core => core}/src/toga/icons.py (100%) rename {src/core => core}/src/toga/images.py (100%) rename {src/core => core}/src/toga/keys.py (100%) rename {src/core => core}/src/toga/platform.py (100%) rename {src/core => core}/src/toga/resources/__init__.py (100%) rename {src/core => core}/src/toga/resources/toga.icns (100%) rename {src/core => core}/src/toga/resources/toga.ico (100%) rename {src/core => core}/src/toga/resources/toga.png (100%) rename {src/core => core}/src/toga/sources/__init__.py (100%) rename {src/core => core}/src/toga/sources/accessors.py (100%) rename {src/core => core}/src/toga/sources/base.py (100%) rename {src/core => core}/src/toga/sources/list_source.py (100%) rename {src/core => core}/src/toga/sources/tree_source.py (100%) rename {src/core => core}/src/toga/sources/value_source.py (100%) rename {src/core => core}/src/toga/style/__init__.py (100%) rename {src/core => core}/src/toga/style/applicator.py (100%) rename {src/core => core}/src/toga/style/pack.py (100%) rename {src/core => core}/src/toga/validators.py (100%) rename {src/core => core}/src/toga/widgets/__init__.py (100%) rename {src/core => core}/src/toga/widgets/activityindicator.py (100%) rename {src/core => core}/src/toga/widgets/base.py (100%) rename {src/core => core}/src/toga/widgets/box.py (100%) rename {src/core => core}/src/toga/widgets/button.py (100%) rename {src/core => core}/src/toga/widgets/canvas.py (100%) rename {src/core => core}/src/toga/widgets/datepicker.py (100%) rename {src/core => core}/src/toga/widgets/detailedlist.py (100%) rename {src/core => core}/src/toga/widgets/divider.py (100%) rename {src/core => core}/src/toga/widgets/imageview.py (100%) rename {src/core => core}/src/toga/widgets/label.py (100%) rename {src/core => core}/src/toga/widgets/multilinetextinput.py (100%) rename {src/core => core}/src/toga/widgets/navigationview.py (100%) rename {src/core => core}/src/toga/widgets/numberinput.py (100%) rename {src/core => core}/src/toga/widgets/optioncontainer.py (100%) rename {src/core => core}/src/toga/widgets/passwordinput.py (100%) rename {src/core => core}/src/toga/widgets/progressbar.py (100%) rename {src/core => core}/src/toga/widgets/scrollcontainer.py (100%) rename {src/core => core}/src/toga/widgets/selection.py (100%) rename {src/core => core}/src/toga/widgets/slider.py (100%) rename {src/core => core}/src/toga/widgets/splitcontainer.py (100%) rename {src/core => core}/src/toga/widgets/switch.py (100%) rename {src/core => core}/src/toga/widgets/table.py (100%) rename {src/core => core}/src/toga/widgets/textinput.py (100%) rename {src/core => core}/src/toga/widgets/timepicker.py (100%) rename {src/core => core}/src/toga/widgets/tree.py (100%) rename {src/core => core}/src/toga/widgets/webview.py (100%) rename {src/core => core}/src/toga/window.py (100%) rename {src/core => core}/tests/__init__.py (100%) rename {src/core => core}/tests/command/__init__.py (100%) rename {src/core => core}/tests/command/constants.py (100%) rename {src/core => core}/tests/command/test_command.py (100%) rename {src/core => core}/tests/command/test_commands_group.py (100%) rename {src/core => core}/tests/command/test_commands_set.py (100%) rename {src/core => core}/tests/sources/__init__.py (100%) rename {src/core => core}/tests/sources/test_accessors.py (100%) rename {src/core => core}/tests/sources/test_list_source.py (100%) rename {src/core => core}/tests/sources/test_source.py (100%) rename {src/core => core}/tests/sources/test_tree_source.py (100%) rename {src/core => core}/tests/sources/test_value_source.py (100%) rename {src/core => core}/tests/style/__init__.py (100%) rename {src/core => core}/tests/style/test_pack.py (100%) rename {src/core => core}/tests/test_app.py (100%) rename {src/core => core}/tests/test_deprecated_factory.py (100%) rename {src/core => core}/tests/test_documents.py (100%) rename {src/core => core}/tests/test_font.py (100%) rename {src/core => core}/tests/test_handler.py (100%) rename {src/core => core}/tests/test_icon.py (100%) rename {src/core => core}/tests/test_image.py (100%) rename {src/core => core}/tests/test_key.py (100%) rename {src/core => core}/tests/test_paths.py (100%) rename {src/core => core}/tests/test_platform.py (100%) rename {src/core => core}/tests/test_validators.py (100%) rename {src/core => core}/tests/test_widget_registry.py (100%) rename {src/core => core}/tests/test_window.py (100%) rename {src/core => core}/tests/testbed/bootstrap.py (100%) rename {src/core => core}/tests/testbed/installed.dist-info/INSTALLER (100%) rename {src/core => core}/tests/testbed/installed.dist-info/METADATA (100%) rename {src/core => core}/tests/testbed/installed/__init__.py (100%) rename {src/core => core}/tests/testbed/installed/__main__.py (100%) rename {src/core => core}/tests/testbed/installed/app.py (100%) rename {src/core => core}/tests/testbed/simple/__init__.py (100%) rename {src/core => core}/tests/testbed/simple/__main__.py (100%) rename {src/core => core}/tests/testbed/simple/app.py (100%) rename {src/core => core}/tests/testbed/standalone.py (100%) rename {src/core => core}/tests/testbed/subclassed/__init__.py (100%) rename {src/core => core}/tests/testbed/subclassed/__main__.py (100%) rename {src/core => core}/tests/testbed/subclassed/app.py (100%) rename {src/core => core}/tests/utils.py (100%) rename {src/core => core}/tests/widgets/__init__.py (100%) rename {src/core => core}/tests/widgets/test_activityindicator.py (100%) rename {src/core => core}/tests/widgets/test_base.py (100%) rename {src/core => core}/tests/widgets/test_box.py (100%) rename {src/core => core}/tests/widgets/test_button.py (100%) rename {src/core => core}/tests/widgets/test_canvas.py (100%) rename {src/core => core}/tests/widgets/test_datepicker.py (100%) rename {src/core => core}/tests/widgets/test_detailedlist.py (100%) rename {src/core => core}/tests/widgets/test_divider.py (100%) rename {src/core => core}/tests/widgets/test_imageview.py (100%) rename {src/core => core}/tests/widgets/test_label.py (100%) rename {src/core => core}/tests/widgets/test_multilinetextinput.py (100%) rename {src/core => core}/tests/widgets/test_navigationview.py (100%) rename {src/core => core}/tests/widgets/test_numberinput.py (100%) rename {src/core => core}/tests/widgets/test_optioncontainer.py (100%) rename {src/core => core}/tests/widgets/test_passwordinput.py (100%) rename {src/core => core}/tests/widgets/test_progressbar.py (100%) rename {src/core => core}/tests/widgets/test_scrollcontainer.py (100%) rename {src/core => core}/tests/widgets/test_selection.py (100%) rename {src/core => core}/tests/widgets/test_slider.py (100%) rename {src/core => core}/tests/widgets/test_splitcontainer.py (100%) rename {src/core => core}/tests/widgets/test_switch.py (100%) rename {src/core => core}/tests/widgets/test_table.py (100%) rename {src/core => core}/tests/widgets/test_textinput.py (100%) rename {src/core => core}/tests/widgets/test_timepicker.py (100%) rename {src/core => core}/tests/widgets/test_tree.py (100%) rename {src/core => core}/tests/widgets/test_webview.py (100%) rename {src/core => core}/tox.ini (100%) rename {src/dummy => dummy}/CONTRIBUTING.md (100%) rename {src/dummy => dummy}/LICENSE (100%) rename {src/dummy => dummy}/MANIFEST.in (100%) rename {src/dummy => dummy}/README.rst (100%) rename {src/dummy => dummy}/pyproject.toml (100%) rename {src/dummy => dummy}/setup.cfg (100%) rename {src/dummy => dummy}/setup.py (100%) rename {src/dummy => dummy}/src/toga_dummy/__init__.py (100%) rename {src/dummy => dummy}/src/toga_dummy/app.py (100%) rename {src/dummy => dummy}/src/toga_dummy/colors.py (100%) rename {src/dummy => dummy}/src/toga_dummy/command.py (100%) rename {src/dummy => dummy}/src/toga_dummy/container.py (100%) rename {src/dummy => dummy}/src/toga_dummy/dialogs.py (100%) rename {src/dummy => dummy}/src/toga_dummy/documents.py (100%) rename {src/dummy => dummy}/src/toga_dummy/factory.py (100%) rename {src/dummy => dummy}/src/toga_dummy/fonts.py (100%) rename {src/dummy => dummy}/src/toga_dummy/icons.py (100%) rename {src/dummy => dummy}/src/toga_dummy/images.py (100%) rename {src/dummy => dummy}/src/toga_dummy/paths.py (100%) rename {src/dummy => dummy}/src/toga_dummy/test_implementation.py (100%) rename {src/dummy => dummy}/src/toga_dummy/utils.py (100%) rename {src/dummy => dummy}/src/toga_dummy/widgets/__init__.py (100%) rename {src/dummy => dummy}/src/toga_dummy/widgets/activityindicator.py (100%) rename {src/dummy => dummy}/src/toga_dummy/widgets/base.py (100%) rename {src/dummy => dummy}/src/toga_dummy/widgets/box.py (100%) rename {src/dummy => dummy}/src/toga_dummy/widgets/button.py (100%) rename {src/dummy => dummy}/src/toga_dummy/widgets/canvas.py (100%) rename {src/dummy => dummy}/src/toga_dummy/widgets/datepicker.py (100%) rename {src/dummy => dummy}/src/toga_dummy/widgets/detailedlist.py (100%) rename {src/dummy => dummy}/src/toga_dummy/widgets/divider.py (100%) rename {src/dummy => dummy}/src/toga_dummy/widgets/imageview.py (100%) rename {src/dummy => dummy}/src/toga_dummy/widgets/label.py (100%) rename {src/dummy => dummy}/src/toga_dummy/widgets/multilinetextinput.py (100%) rename {src/dummy => dummy}/src/toga_dummy/widgets/navigationview.py (100%) rename {src/dummy => dummy}/src/toga_dummy/widgets/numberinput.py (100%) rename {src/dummy => dummy}/src/toga_dummy/widgets/optioncontainer.py (100%) rename {src/dummy => dummy}/src/toga_dummy/widgets/passwordinput.py (100%) rename {src/dummy => dummy}/src/toga_dummy/widgets/progressbar.py (100%) rename {src/dummy => dummy}/src/toga_dummy/widgets/scrollcontainer.py (100%) rename {src/dummy => dummy}/src/toga_dummy/widgets/selection.py (100%) rename {src/dummy => dummy}/src/toga_dummy/widgets/slider.py (100%) rename {src/dummy => dummy}/src/toga_dummy/widgets/splitcontainer.py (100%) rename {src/dummy => dummy}/src/toga_dummy/widgets/switch.py (100%) rename {src/dummy => dummy}/src/toga_dummy/widgets/table.py (100%) rename {src/dummy => dummy}/src/toga_dummy/widgets/textinput.py (100%) rename {src/dummy => dummy}/src/toga_dummy/widgets/timepicker.py (100%) rename {src/dummy => dummy}/src/toga_dummy/widgets/tree.py (100%) rename {src/dummy => dummy}/src/toga_dummy/widgets/webview.py (100%) rename {src/dummy => dummy}/src/toga_dummy/window.py (100%) rename {src/gtk => gtk}/CONTRIBUTING.md (100%) rename {src/gtk => gtk}/LICENSE (100%) rename {src/gtk => gtk}/MANIFEST.in (100%) rename {src/gtk => gtk}/README.rst (100%) rename {src/gtk => gtk}/pyproject.toml (100%) rename {src/gtk => gtk}/setup.cfg (100%) rename {src/gtk => gtk}/setup.py (100%) rename {src/gtk => gtk}/src/toga_gtk/__init__.py (100%) rename {src/gtk => gtk}/src/toga_gtk/app.py (100%) rename {src/gtk => gtk}/src/toga_gtk/colors.py (100%) rename {src/gtk => gtk}/src/toga_gtk/command.py (100%) rename {src/gtk => gtk}/src/toga_gtk/dialogs.py (100%) rename {src/gtk => gtk}/src/toga_gtk/documents.py (100%) rename {src/gtk => gtk}/src/toga_gtk/factory.py (100%) rename {src/gtk => gtk}/src/toga_gtk/fonts.py (100%) rename {src/gtk => gtk}/src/toga_gtk/hardware/__init__.py (100%) rename {src/gtk => gtk}/src/toga_gtk/icons.py (100%) rename {src/gtk => gtk}/src/toga_gtk/images.py (100%) rename {src/gtk => gtk}/src/toga_gtk/keys.py (100%) rename {src/gtk => gtk}/src/toga_gtk/libs/__init__.py (100%) rename {src/gtk => gtk}/src/toga_gtk/libs/gtk.py (100%) rename {src/gtk => gtk}/src/toga_gtk/libs/styles.py (100%) rename {src/gtk => gtk}/src/toga_gtk/libs/utils.py (100%) rename {src/gtk => gtk}/src/toga_gtk/paths.py (100%) rename {src/gtk => gtk}/src/toga_gtk/widgets/__init__.py (100%) rename {src/gtk => gtk}/src/toga_gtk/widgets/activityindicator.py (100%) rename {src/gtk => gtk}/src/toga_gtk/widgets/base.py (100%) rename {src/gtk => gtk}/src/toga_gtk/widgets/box.py (100%) rename {src/gtk => gtk}/src/toga_gtk/widgets/button.py (100%) rename {src/gtk => gtk}/src/toga_gtk/widgets/canvas.py (100%) rename {src/gtk => gtk}/src/toga_gtk/widgets/detailedlist.py (100%) rename {src/gtk => gtk}/src/toga_gtk/widgets/divider.py (100%) rename {src/gtk => gtk}/src/toga_gtk/widgets/imageview.py (100%) rename {src/gtk => gtk}/src/toga_gtk/widgets/internal/__init__.py (100%) rename {src/gtk => gtk}/src/toga_gtk/widgets/internal/buttons/__init__.py (100%) rename {src/gtk => gtk}/src/toga_gtk/widgets/internal/buttons/base.py (100%) rename {src/gtk => gtk}/src/toga_gtk/widgets/internal/buttons/refresh.py (100%) rename {src/gtk => gtk}/src/toga_gtk/widgets/internal/buttons/scroll.py (100%) rename {src/gtk => gtk}/src/toga_gtk/widgets/internal/rows/__init__.py (100%) rename {src/gtk => gtk}/src/toga_gtk/widgets/internal/rows/base.py (100%) rename {src/gtk => gtk}/src/toga_gtk/widgets/internal/rows/scrollable.py (100%) rename {src/gtk => gtk}/src/toga_gtk/widgets/internal/rows/texticon.py (100%) rename {src/gtk => gtk}/src/toga_gtk/widgets/internal/sourcetreemodel.py (100%) rename {src/gtk => gtk}/src/toga_gtk/widgets/label.py (100%) rename {src/gtk => gtk}/src/toga_gtk/widgets/multilinetextinput.py (100%) rename {src/gtk => gtk}/src/toga_gtk/widgets/numberinput.py (100%) rename {src/gtk => gtk}/src/toga_gtk/widgets/optioncontainer.py (100%) rename {src/gtk => gtk}/src/toga_gtk/widgets/passwordinput.py (100%) rename {src/gtk => gtk}/src/toga_gtk/widgets/progressbar.py (100%) rename {src/gtk => gtk}/src/toga_gtk/widgets/scrollcontainer.py (100%) rename {src/gtk => gtk}/src/toga_gtk/widgets/selection.py (100%) rename {src/gtk => gtk}/src/toga_gtk/widgets/slider.py (100%) rename {src/gtk => gtk}/src/toga_gtk/widgets/splitcontainer.py (100%) rename {src/gtk => gtk}/src/toga_gtk/widgets/switch.py (100%) rename {src/gtk => gtk}/src/toga_gtk/widgets/table.py (100%) rename {src/gtk => gtk}/src/toga_gtk/widgets/textinput.py (100%) rename {src/gtk => gtk}/src/toga_gtk/widgets/tree.py (100%) rename {src/gtk => gtk}/src/toga_gtk/widgets/webview.py (100%) rename {src/gtk => gtk}/src/toga_gtk/window.py (100%) rename {src/gtk => gtk}/tests/__init__.py (100%) rename {src/gtk => gtk}/tests/test_font.py (100%) rename {src/gtk => gtk}/tests/test_implementation.py (100%) rename {src/gtk => gtk}/tests/test_paths.py (100%) rename {src/gtk => gtk}/tests/widgets/__init__.py (100%) rename {src/gtk => gtk}/tests/widgets/test_detailedlist.py (100%) rename {src/gtk => gtk}/tests/widgets/test_imageview.py (100%) rename {src/gtk => gtk}/tests/widgets/test_switch.py (100%) rename {src/gtk => gtk}/tests/widgets/test_table.py (100%) rename {src/gtk => gtk}/tests/widgets/test_tree.py (100%) rename {src/gtk => gtk}/tests/widgets/utils.py (100%) rename {src/gtk => gtk}/tox.ini (100%) rename {src/iOS => iOS}/CONTRIBUTING.md (100%) rename {src/iOS => iOS}/LICENSE (100%) rename {src/iOS => iOS}/MANIFEST.in (100%) rename {src/iOS => iOS}/README.rst (100%) rename {src/iOS => iOS}/pyproject.toml (100%) rename {src/iOS => iOS}/setup.cfg (100%) rename {src/iOS => iOS}/setup.py (100%) rename {src/iOS => iOS}/src/toga_iOS/__init__.py (100%) rename {src/iOS => iOS}/src/toga_iOS/app.py (100%) rename {src/iOS => iOS}/src/toga_iOS/colors.py (100%) rename {src/iOS => iOS}/src/toga_iOS/constraints.py (100%) rename {src/iOS => iOS}/src/toga_iOS/dialogs.py (100%) rename {src/iOS => iOS}/src/toga_iOS/factory.py (100%) rename {src/iOS => iOS}/src/toga_iOS/fonts.py (100%) rename {src/iOS => iOS}/src/toga_iOS/hardware/__init__.py (100%) rename {src/iOS => iOS}/src/toga_iOS/icons.py (100%) rename {src/iOS => iOS}/src/toga_iOS/images.py (100%) rename {src/iOS => iOS}/src/toga_iOS/libs/__init__.py (100%) rename {src/iOS => iOS}/src/toga_iOS/libs/core_graphics.py (100%) rename {src/iOS => iOS}/src/toga_iOS/libs/foundation.py (100%) rename {src/iOS => iOS}/src/toga_iOS/libs/uikit.py (100%) rename {src/iOS => iOS}/src/toga_iOS/libs/webkit.py (100%) rename {src/iOS => iOS}/src/toga_iOS/paths.py (100%) rename {src/iOS => iOS}/src/toga_iOS/widgets/__init__.py (100%) rename {src/iOS => iOS}/src/toga_iOS/widgets/base.py (100%) rename {src/iOS => iOS}/src/toga_iOS/widgets/box.py (100%) rename {src/iOS => iOS}/src/toga_iOS/widgets/button.py (100%) rename {src/iOS => iOS}/src/toga_iOS/widgets/canvas.py (100%) rename {src/iOS => iOS}/src/toga_iOS/widgets/detailedlist.py (100%) rename {src/iOS => iOS}/src/toga_iOS/widgets/imageview.py (100%) rename {src/iOS => iOS}/src/toga_iOS/widgets/label.py (100%) rename {src/iOS => iOS}/src/toga_iOS/widgets/multilinetextinput.py (100%) rename {src/iOS => iOS}/src/toga_iOS/widgets/navigationview.py (100%) rename {src/iOS => iOS}/src/toga_iOS/widgets/numberinput.py (100%) rename {src/iOS => iOS}/src/toga_iOS/widgets/passwordinput.py (100%) rename {src/iOS => iOS}/src/toga_iOS/widgets/progressbar.py (100%) rename {src/iOS => iOS}/src/toga_iOS/widgets/scrollcontainer.py (100%) rename {src/iOS => iOS}/src/toga_iOS/widgets/selection.py (100%) rename {src/iOS => iOS}/src/toga_iOS/widgets/slider.py (100%) rename {src/iOS => iOS}/src/toga_iOS/widgets/switch.py (100%) rename {src/iOS => iOS}/src/toga_iOS/widgets/textinput.py (100%) rename {src/iOS => iOS}/src/toga_iOS/widgets/webview.py (100%) rename {src/iOS => iOS}/src/toga_iOS/window.py (100%) rename {src/iOS => iOS}/tests/__init__.py (100%) rename {src/iOS => iOS}/tests/test_implementation.py (100%) rename {src/iOS => iOS}/tox.ini (100%) rename {src/web => web}/CONTRIBUTING.md (100%) rename {src/web => web}/LICENSE (100%) rename {src/web => web}/MANIFEST.in (100%) rename {src/web => web}/README.rst (100%) rename {src/web => web}/pyproject.toml (100%) rename {src/web => web}/setup.cfg (100%) rename {src/web => web}/setup.py (100%) rename {src/web => web}/src/toga_web/__init__.py (100%) rename {src/web => web}/src/toga_web/app.py (100%) rename {src/web => web}/src/toga_web/command.py (100%) rename {src/web => web}/src/toga_web/dialogs.py (100%) rename {src/web => web}/src/toga_web/factory.py (100%) rename {src/web => web}/src/toga_web/icons.py (100%) rename {src/web => web}/src/toga_web/libs.py (100%) rename {src/web => web}/src/toga_web/paths.py (100%) rename {src/web => web}/src/toga_web/static/toga.css (100%) rename {src/web => web}/src/toga_web/widgets/__init__.py (100%) rename {src/web => web}/src/toga_web/widgets/base.py (100%) rename {src/web => web}/src/toga_web/widgets/box.py (100%) rename {src/web => web}/src/toga_web/widgets/button.py (100%) rename {src/web => web}/src/toga_web/widgets/label.py (100%) rename {src/web => web}/src/toga_web/widgets/textinput.py (100%) rename {src/web => web}/src/toga_web/window.py (100%) rename {src/web => web}/tests/__init__.py (100%) rename {src/web => web}/tests/test_implementation.py (100%) rename {src/web => web}/tox.ini (100%) rename {src/winforms => winforms}/CONTRIBUTING.md (100%) rename {src/winforms => winforms}/LICENSE (100%) rename {src/winforms => winforms}/MANIFEST.in (100%) rename {src/winforms => winforms}/README.rst (100%) rename {src/winforms => winforms}/pyproject.toml (100%) rename {src/winforms => winforms}/setup.cfg (100%) rename {src/winforms => winforms}/setup.py (100%) rename {src/winforms => winforms}/src/toga_winforms/__init__.py (100%) rename {src/winforms => winforms}/src/toga_winforms/app.py (100%) rename {src/winforms => winforms}/src/toga_winforms/colors.py (100%) rename {src/winforms => winforms}/src/toga_winforms/command.py (100%) rename {src/winforms => winforms}/src/toga_winforms/dialogs.py (100%) rename {src/winforms => winforms}/src/toga_winforms/factory.py (100%) rename {src/winforms => winforms}/src/toga_winforms/fonts.py (100%) rename {src/winforms => winforms}/src/toga_winforms/hardware/__init__.py (100%) rename {src/winforms => winforms}/src/toga_winforms/icons.py (100%) rename {src/winforms => winforms}/src/toga_winforms/images.py (100%) rename {src/winforms => winforms}/src/toga_winforms/keys.py (100%) rename {src/winforms => winforms}/src/toga_winforms/libs/WebView2/LICENSE.md (100%) rename {src/winforms => winforms}/src/toga_winforms/libs/WebView2/Microsoft.Web.WebView2.Core.dll (100%) rename {src/winforms => winforms}/src/toga_winforms/libs/WebView2/Microsoft.Web.WebView2.WinForms.dll (100%) rename {src/winforms => winforms}/src/toga_winforms/libs/WebView2/README.md (100%) rename {src/winforms => winforms}/src/toga_winforms/libs/WebView2/arm64/WebView2Loader.dll (100%) rename {src/winforms => winforms}/src/toga_winforms/libs/WebView2/x64/WebView2Loader.dll (100%) rename {src/winforms => winforms}/src/toga_winforms/libs/WebView2/x86/WebView2Loader.dll (100%) rename {src/winforms => winforms}/src/toga_winforms/libs/__init__.py (100%) rename {src/winforms => winforms}/src/toga_winforms/libs/extensions.py (100%) rename {src/winforms => winforms}/src/toga_winforms/libs/fonts.py (100%) rename {src/winforms => winforms}/src/toga_winforms/libs/proactor.py (100%) rename {src/winforms => winforms}/src/toga_winforms/libs/winforms.py (100%) rename {src/winforms => winforms}/src/toga_winforms/paths.py (100%) rename {src/winforms => winforms}/src/toga_winforms/widgets/__init__.py (100%) rename {src/winforms => winforms}/src/toga_winforms/widgets/base.py (100%) rename {src/winforms => winforms}/src/toga_winforms/widgets/box.py (100%) rename {src/winforms => winforms}/src/toga_winforms/widgets/button.py (100%) rename {src/winforms => winforms}/src/toga_winforms/widgets/canvas.py (100%) rename {src/winforms => winforms}/src/toga_winforms/widgets/datepicker.py (100%) rename {src/winforms => winforms}/src/toga_winforms/widgets/detailedlist.py (100%) rename {src/winforms => winforms}/src/toga_winforms/widgets/divider.py (100%) rename {src/winforms => winforms}/src/toga_winforms/widgets/imageview.py (100%) rename {src/winforms => winforms}/src/toga_winforms/widgets/label.py (100%) rename {src/winforms => winforms}/src/toga_winforms/widgets/multilinetextinput.py (100%) rename {src/winforms => winforms}/src/toga_winforms/widgets/numberinput.py (100%) rename {src/winforms => winforms}/src/toga_winforms/widgets/optioncontainer.py (100%) rename {src/winforms => winforms}/src/toga_winforms/widgets/passwordinput.py (100%) rename {src/winforms => winforms}/src/toga_winforms/widgets/progressbar.py (100%) rename {src/winforms => winforms}/src/toga_winforms/widgets/scrollcontainer.py (100%) rename {src/winforms => winforms}/src/toga_winforms/widgets/selection.py (100%) rename {src/winforms => winforms}/src/toga_winforms/widgets/slider.py (100%) rename {src/winforms => winforms}/src/toga_winforms/widgets/splitcontainer.py (100%) rename {src/winforms => winforms}/src/toga_winforms/widgets/switch.py (100%) rename {src/winforms => winforms}/src/toga_winforms/widgets/table.py (100%) rename {src/winforms => winforms}/src/toga_winforms/widgets/textinput.py (100%) rename {src/winforms => winforms}/src/toga_winforms/widgets/timepicker.py (100%) rename {src/winforms => winforms}/src/toga_winforms/widgets/tree.py (100%) rename {src/winforms => winforms}/src/toga_winforms/widgets/webview.py (100%) rename {src/winforms => winforms}/src/toga_winforms/window.py (100%) rename {src/winforms => winforms}/tests/__init__.py (100%) rename {src/winforms => winforms}/tests/test_implementation.py (100%) rename {src/winforms => winforms}/tests/test_paths.py (100%) rename {src/winforms => winforms}/tox.ini (100%) diff --git a/src/android/CONTRIBUTING.md b/android/CONTRIBUTING.md similarity index 100% rename from src/android/CONTRIBUTING.md rename to android/CONTRIBUTING.md diff --git a/src/android/LICENSE b/android/LICENSE similarity index 100% rename from src/android/LICENSE rename to android/LICENSE diff --git a/src/android/MANIFEST.in b/android/MANIFEST.in similarity index 100% rename from src/android/MANIFEST.in rename to android/MANIFEST.in diff --git a/src/android/README.rst b/android/README.rst similarity index 100% rename from src/android/README.rst rename to android/README.rst diff --git a/src/android/pyproject.toml b/android/pyproject.toml similarity index 100% rename from src/android/pyproject.toml rename to android/pyproject.toml diff --git a/src/android/setup.cfg b/android/setup.cfg similarity index 100% rename from src/android/setup.cfg rename to android/setup.cfg diff --git a/src/android/setup.py b/android/setup.py similarity index 100% rename from src/android/setup.py rename to android/setup.py diff --git a/src/android/src/toga_android/__init__.py b/android/src/toga_android/__init__.py similarity index 100% rename from src/android/src/toga_android/__init__.py rename to android/src/toga_android/__init__.py diff --git a/src/android/src/toga_android/app.py b/android/src/toga_android/app.py similarity index 100% rename from src/android/src/toga_android/app.py rename to android/src/toga_android/app.py diff --git a/src/android/src/toga_android/colors.py b/android/src/toga_android/colors.py similarity index 100% rename from src/android/src/toga_android/colors.py rename to android/src/toga_android/colors.py diff --git a/src/android/src/toga_android/command.py b/android/src/toga_android/command.py similarity index 100% rename from src/android/src/toga_android/command.py rename to android/src/toga_android/command.py diff --git a/src/android/src/toga_android/dialogs.py b/android/src/toga_android/dialogs.py similarity index 100% rename from src/android/src/toga_android/dialogs.py rename to android/src/toga_android/dialogs.py diff --git a/src/android/src/toga_android/factory.py b/android/src/toga_android/factory.py similarity index 100% rename from src/android/src/toga_android/factory.py rename to android/src/toga_android/factory.py diff --git a/src/android/src/toga_android/fonts.py b/android/src/toga_android/fonts.py similarity index 100% rename from src/android/src/toga_android/fonts.py rename to android/src/toga_android/fonts.py diff --git a/src/android/src/toga_android/hardware/__init__.py b/android/src/toga_android/hardware/__init__.py similarity index 100% rename from src/android/src/toga_android/hardware/__init__.py rename to android/src/toga_android/hardware/__init__.py diff --git a/src/android/src/toga_android/icons.py b/android/src/toga_android/icons.py similarity index 100% rename from src/android/src/toga_android/icons.py rename to android/src/toga_android/icons.py diff --git a/src/android/src/toga_android/images.py b/android/src/toga_android/images.py similarity index 100% rename from src/android/src/toga_android/images.py rename to android/src/toga_android/images.py diff --git a/src/android/src/toga_android/libs/__init__.py b/android/src/toga_android/libs/__init__.py similarity index 100% rename from src/android/src/toga_android/libs/__init__.py rename to android/src/toga_android/libs/__init__.py diff --git a/src/android/src/toga_android/libs/activity.py b/android/src/toga_android/libs/activity.py similarity index 100% rename from src/android/src/toga_android/libs/activity.py rename to android/src/toga_android/libs/activity.py diff --git a/src/android/src/toga_android/libs/android/__init__.py b/android/src/toga_android/libs/android/__init__.py similarity index 100% rename from src/android/src/toga_android/libs/android/__init__.py rename to android/src/toga_android/libs/android/__init__.py diff --git a/src/android/src/toga_android/libs/android/app.py b/android/src/toga_android/libs/android/app.py similarity index 100% rename from src/android/src/toga_android/libs/android/app.py rename to android/src/toga_android/libs/android/app.py diff --git a/src/android/src/toga_android/libs/android/content.py b/android/src/toga_android/libs/android/content.py similarity index 100% rename from src/android/src/toga_android/libs/android/content.py rename to android/src/toga_android/libs/android/content.py diff --git a/src/android/src/toga_android/libs/android/graphics.py b/android/src/toga_android/libs/android/graphics.py similarity index 100% rename from src/android/src/toga_android/libs/android/graphics.py rename to android/src/toga_android/libs/android/graphics.py diff --git a/src/android/src/toga_android/libs/android/text.py b/android/src/toga_android/libs/android/text.py similarity index 100% rename from src/android/src/toga_android/libs/android/text.py rename to android/src/toga_android/libs/android/text.py diff --git a/src/android/src/toga_android/libs/android/util.py b/android/src/toga_android/libs/android/util.py similarity index 100% rename from src/android/src/toga_android/libs/android/util.py rename to android/src/toga_android/libs/android/util.py diff --git a/src/android/src/toga_android/libs/android/view.py b/android/src/toga_android/libs/android/view.py similarity index 100% rename from src/android/src/toga_android/libs/android/view.py rename to android/src/toga_android/libs/android/view.py diff --git a/src/android/src/toga_android/libs/android/webkit.py b/android/src/toga_android/libs/android/webkit.py similarity index 100% rename from src/android/src/toga_android/libs/android/webkit.py rename to android/src/toga_android/libs/android/webkit.py diff --git a/src/android/src/toga_android/libs/android/widget.py b/android/src/toga_android/libs/android/widget.py similarity index 100% rename from src/android/src/toga_android/libs/android/widget.py rename to android/src/toga_android/libs/android/widget.py diff --git a/src/android/src/toga_android/libs/androidx/__init__.py b/android/src/toga_android/libs/androidx/__init__.py similarity index 100% rename from src/android/src/toga_android/libs/androidx/__init__.py rename to android/src/toga_android/libs/androidx/__init__.py diff --git a/src/android/src/toga_android/libs/androidx/swiperefreshlayout.py b/android/src/toga_android/libs/androidx/swiperefreshlayout.py similarity index 100% rename from src/android/src/toga_android/libs/androidx/swiperefreshlayout.py rename to android/src/toga_android/libs/androidx/swiperefreshlayout.py diff --git a/src/android/src/toga_android/paths.py b/android/src/toga_android/paths.py similarity index 100% rename from src/android/src/toga_android/paths.py rename to android/src/toga_android/paths.py diff --git a/src/android/src/toga_android/widgets/__init__.py b/android/src/toga_android/widgets/__init__.py similarity index 100% rename from src/android/src/toga_android/widgets/__init__.py rename to android/src/toga_android/widgets/__init__.py diff --git a/src/android/src/toga_android/widgets/base.py b/android/src/toga_android/widgets/base.py similarity index 100% rename from src/android/src/toga_android/widgets/base.py rename to android/src/toga_android/widgets/base.py diff --git a/src/android/src/toga_android/widgets/box.py b/android/src/toga_android/widgets/box.py similarity index 100% rename from src/android/src/toga_android/widgets/box.py rename to android/src/toga_android/widgets/box.py diff --git a/src/android/src/toga_android/widgets/button.py b/android/src/toga_android/widgets/button.py similarity index 100% rename from src/android/src/toga_android/widgets/button.py rename to android/src/toga_android/widgets/button.py diff --git a/src/android/src/toga_android/widgets/canvas.py b/android/src/toga_android/widgets/canvas.py similarity index 100% rename from src/android/src/toga_android/widgets/canvas.py rename to android/src/toga_android/widgets/canvas.py diff --git a/src/android/src/toga_android/widgets/datepicker.py b/android/src/toga_android/widgets/datepicker.py similarity index 100% rename from src/android/src/toga_android/widgets/datepicker.py rename to android/src/toga_android/widgets/datepicker.py diff --git a/src/android/src/toga_android/widgets/detailedlist.py b/android/src/toga_android/widgets/detailedlist.py similarity index 100% rename from src/android/src/toga_android/widgets/detailedlist.py rename to android/src/toga_android/widgets/detailedlist.py diff --git a/src/android/src/toga_android/widgets/imageview.py b/android/src/toga_android/widgets/imageview.py similarity index 100% rename from src/android/src/toga_android/widgets/imageview.py rename to android/src/toga_android/widgets/imageview.py diff --git a/src/android/src/toga_android/widgets/internal/__init__.py b/android/src/toga_android/widgets/internal/__init__.py similarity index 100% rename from src/android/src/toga_android/widgets/internal/__init__.py rename to android/src/toga_android/widgets/internal/__init__.py diff --git a/src/android/src/toga_android/widgets/internal/pickers.py b/android/src/toga_android/widgets/internal/pickers.py similarity index 100% rename from src/android/src/toga_android/widgets/internal/pickers.py rename to android/src/toga_android/widgets/internal/pickers.py diff --git a/src/android/src/toga_android/widgets/label.py b/android/src/toga_android/widgets/label.py similarity index 100% rename from src/android/src/toga_android/widgets/label.py rename to android/src/toga_android/widgets/label.py diff --git a/src/android/src/toga_android/widgets/multilinetextinput.py b/android/src/toga_android/widgets/multilinetextinput.py similarity index 100% rename from src/android/src/toga_android/widgets/multilinetextinput.py rename to android/src/toga_android/widgets/multilinetextinput.py diff --git a/src/android/src/toga_android/widgets/numberinput.py b/android/src/toga_android/widgets/numberinput.py similarity index 100% rename from src/android/src/toga_android/widgets/numberinput.py rename to android/src/toga_android/widgets/numberinput.py diff --git a/src/android/src/toga_android/widgets/passwordinput.py b/android/src/toga_android/widgets/passwordinput.py similarity index 100% rename from src/android/src/toga_android/widgets/passwordinput.py rename to android/src/toga_android/widgets/passwordinput.py diff --git a/src/android/src/toga_android/widgets/progressbar.py b/android/src/toga_android/widgets/progressbar.py similarity index 100% rename from src/android/src/toga_android/widgets/progressbar.py rename to android/src/toga_android/widgets/progressbar.py diff --git a/src/android/src/toga_android/widgets/scrollcontainer.py b/android/src/toga_android/widgets/scrollcontainer.py similarity index 100% rename from src/android/src/toga_android/widgets/scrollcontainer.py rename to android/src/toga_android/widgets/scrollcontainer.py diff --git a/src/android/src/toga_android/widgets/selection.py b/android/src/toga_android/widgets/selection.py similarity index 100% rename from src/android/src/toga_android/widgets/selection.py rename to android/src/toga_android/widgets/selection.py diff --git a/src/android/src/toga_android/widgets/slider.py b/android/src/toga_android/widgets/slider.py similarity index 100% rename from src/android/src/toga_android/widgets/slider.py rename to android/src/toga_android/widgets/slider.py diff --git a/src/android/src/toga_android/widgets/switch.py b/android/src/toga_android/widgets/switch.py similarity index 100% rename from src/android/src/toga_android/widgets/switch.py rename to android/src/toga_android/widgets/switch.py diff --git a/src/android/src/toga_android/widgets/table.py b/android/src/toga_android/widgets/table.py similarity index 100% rename from src/android/src/toga_android/widgets/table.py rename to android/src/toga_android/widgets/table.py diff --git a/src/android/src/toga_android/widgets/textinput.py b/android/src/toga_android/widgets/textinput.py similarity index 100% rename from src/android/src/toga_android/widgets/textinput.py rename to android/src/toga_android/widgets/textinput.py diff --git a/src/android/src/toga_android/widgets/timepicker.py b/android/src/toga_android/widgets/timepicker.py similarity index 100% rename from src/android/src/toga_android/widgets/timepicker.py rename to android/src/toga_android/widgets/timepicker.py diff --git a/src/android/src/toga_android/widgets/webview.py b/android/src/toga_android/widgets/webview.py similarity index 100% rename from src/android/src/toga_android/widgets/webview.py rename to android/src/toga_android/widgets/webview.py diff --git a/src/android/src/toga_android/window.py b/android/src/toga_android/window.py similarity index 100% rename from src/android/src/toga_android/window.py rename to android/src/toga_android/window.py diff --git a/src/android/tests/__init__.py b/android/tests/__init__.py similarity index 100% rename from src/android/tests/__init__.py rename to android/tests/__init__.py diff --git a/src/android/tests/test_implementation.py b/android/tests/test_implementation.py similarity index 100% rename from src/android/tests/test_implementation.py rename to android/tests/test_implementation.py diff --git a/src/android/tox.ini b/android/tox.ini similarity index 100% rename from src/android/tox.ini rename to android/tox.ini diff --git a/src/cocoa/CONTRIBUTING.md b/cocoa/CONTRIBUTING.md similarity index 100% rename from src/cocoa/CONTRIBUTING.md rename to cocoa/CONTRIBUTING.md diff --git a/src/cocoa/LICENSE b/cocoa/LICENSE similarity index 100% rename from src/cocoa/LICENSE rename to cocoa/LICENSE diff --git a/src/cocoa/MANIFEST.in b/cocoa/MANIFEST.in similarity index 100% rename from src/cocoa/MANIFEST.in rename to cocoa/MANIFEST.in diff --git a/src/cocoa/README.rst b/cocoa/README.rst similarity index 100% rename from src/cocoa/README.rst rename to cocoa/README.rst diff --git a/src/cocoa/pyproject.toml b/cocoa/pyproject.toml similarity index 100% rename from src/cocoa/pyproject.toml rename to cocoa/pyproject.toml diff --git a/src/cocoa/setup.cfg b/cocoa/setup.cfg similarity index 100% rename from src/cocoa/setup.cfg rename to cocoa/setup.cfg diff --git a/src/cocoa/setup.py b/cocoa/setup.py similarity index 100% rename from src/cocoa/setup.py rename to cocoa/setup.py diff --git a/src/cocoa/src/toga_cocoa/__init__.py b/cocoa/src/toga_cocoa/__init__.py similarity index 100% rename from src/cocoa/src/toga_cocoa/__init__.py rename to cocoa/src/toga_cocoa/__init__.py diff --git a/src/cocoa/src/toga_cocoa/app.py b/cocoa/src/toga_cocoa/app.py similarity index 100% rename from src/cocoa/src/toga_cocoa/app.py rename to cocoa/src/toga_cocoa/app.py diff --git a/src/cocoa/src/toga_cocoa/colors.py b/cocoa/src/toga_cocoa/colors.py similarity index 100% rename from src/cocoa/src/toga_cocoa/colors.py rename to cocoa/src/toga_cocoa/colors.py diff --git a/src/cocoa/src/toga_cocoa/command.py b/cocoa/src/toga_cocoa/command.py similarity index 100% rename from src/cocoa/src/toga_cocoa/command.py rename to cocoa/src/toga_cocoa/command.py diff --git a/src/cocoa/src/toga_cocoa/constraints.py b/cocoa/src/toga_cocoa/constraints.py similarity index 100% rename from src/cocoa/src/toga_cocoa/constraints.py rename to cocoa/src/toga_cocoa/constraints.py diff --git a/src/cocoa/src/toga_cocoa/dialogs.py b/cocoa/src/toga_cocoa/dialogs.py similarity index 100% rename from src/cocoa/src/toga_cocoa/dialogs.py rename to cocoa/src/toga_cocoa/dialogs.py diff --git a/src/cocoa/src/toga_cocoa/documents.py b/cocoa/src/toga_cocoa/documents.py similarity index 100% rename from src/cocoa/src/toga_cocoa/documents.py rename to cocoa/src/toga_cocoa/documents.py diff --git a/src/cocoa/src/toga_cocoa/factory.py b/cocoa/src/toga_cocoa/factory.py similarity index 100% rename from src/cocoa/src/toga_cocoa/factory.py rename to cocoa/src/toga_cocoa/factory.py diff --git a/src/cocoa/src/toga_cocoa/fonts.py b/cocoa/src/toga_cocoa/fonts.py similarity index 100% rename from src/cocoa/src/toga_cocoa/fonts.py rename to cocoa/src/toga_cocoa/fonts.py diff --git a/src/cocoa/src/toga_cocoa/hardware/__init__.py b/cocoa/src/toga_cocoa/hardware/__init__.py similarity index 100% rename from src/cocoa/src/toga_cocoa/hardware/__init__.py rename to cocoa/src/toga_cocoa/hardware/__init__.py diff --git a/src/cocoa/src/toga_cocoa/icons.py b/cocoa/src/toga_cocoa/icons.py similarity index 100% rename from src/cocoa/src/toga_cocoa/icons.py rename to cocoa/src/toga_cocoa/icons.py diff --git a/src/cocoa/src/toga_cocoa/images.py b/cocoa/src/toga_cocoa/images.py similarity index 100% rename from src/cocoa/src/toga_cocoa/images.py rename to cocoa/src/toga_cocoa/images.py diff --git a/src/cocoa/src/toga_cocoa/keys.py b/cocoa/src/toga_cocoa/keys.py similarity index 100% rename from src/cocoa/src/toga_cocoa/keys.py rename to cocoa/src/toga_cocoa/keys.py diff --git a/src/cocoa/src/toga_cocoa/libs/__init__.py b/cocoa/src/toga_cocoa/libs/__init__.py similarity index 100% rename from src/cocoa/src/toga_cocoa/libs/__init__.py rename to cocoa/src/toga_cocoa/libs/__init__.py diff --git a/src/cocoa/src/toga_cocoa/libs/appkit.py b/cocoa/src/toga_cocoa/libs/appkit.py similarity index 100% rename from src/cocoa/src/toga_cocoa/libs/appkit.py rename to cocoa/src/toga_cocoa/libs/appkit.py diff --git a/src/cocoa/src/toga_cocoa/libs/core_graphics.py b/cocoa/src/toga_cocoa/libs/core_graphics.py similarity index 100% rename from src/cocoa/src/toga_cocoa/libs/core_graphics.py rename to cocoa/src/toga_cocoa/libs/core_graphics.py diff --git a/src/cocoa/src/toga_cocoa/libs/core_text.py b/cocoa/src/toga_cocoa/libs/core_text.py similarity index 100% rename from src/cocoa/src/toga_cocoa/libs/core_text.py rename to cocoa/src/toga_cocoa/libs/core_text.py diff --git a/src/cocoa/src/toga_cocoa/libs/foundation.py b/cocoa/src/toga_cocoa/libs/foundation.py similarity index 100% rename from src/cocoa/src/toga_cocoa/libs/foundation.py rename to cocoa/src/toga_cocoa/libs/foundation.py diff --git a/src/cocoa/src/toga_cocoa/libs/webkit.py b/cocoa/src/toga_cocoa/libs/webkit.py similarity index 100% rename from src/cocoa/src/toga_cocoa/libs/webkit.py rename to cocoa/src/toga_cocoa/libs/webkit.py diff --git a/src/cocoa/src/toga_cocoa/paths.py b/cocoa/src/toga_cocoa/paths.py similarity index 100% rename from src/cocoa/src/toga_cocoa/paths.py rename to cocoa/src/toga_cocoa/paths.py diff --git a/src/cocoa/src/toga_cocoa/resources/__init__.py b/cocoa/src/toga_cocoa/resources/__init__.py similarity index 100% rename from src/cocoa/src/toga_cocoa/resources/__init__.py rename to cocoa/src/toga_cocoa/resources/__init__.py diff --git a/src/cocoa/src/toga_cocoa/widgets/__init__.py b/cocoa/src/toga_cocoa/widgets/__init__.py similarity index 100% rename from src/cocoa/src/toga_cocoa/widgets/__init__.py rename to cocoa/src/toga_cocoa/widgets/__init__.py diff --git a/src/cocoa/src/toga_cocoa/widgets/activityindicator.py b/cocoa/src/toga_cocoa/widgets/activityindicator.py similarity index 100% rename from src/cocoa/src/toga_cocoa/widgets/activityindicator.py rename to cocoa/src/toga_cocoa/widgets/activityindicator.py diff --git a/src/cocoa/src/toga_cocoa/widgets/base.py b/cocoa/src/toga_cocoa/widgets/base.py similarity index 100% rename from src/cocoa/src/toga_cocoa/widgets/base.py rename to cocoa/src/toga_cocoa/widgets/base.py diff --git a/src/cocoa/src/toga_cocoa/widgets/box.py b/cocoa/src/toga_cocoa/widgets/box.py similarity index 100% rename from src/cocoa/src/toga_cocoa/widgets/box.py rename to cocoa/src/toga_cocoa/widgets/box.py diff --git a/src/cocoa/src/toga_cocoa/widgets/button.py b/cocoa/src/toga_cocoa/widgets/button.py similarity index 100% rename from src/cocoa/src/toga_cocoa/widgets/button.py rename to cocoa/src/toga_cocoa/widgets/button.py diff --git a/src/cocoa/src/toga_cocoa/widgets/canvas.py b/cocoa/src/toga_cocoa/widgets/canvas.py similarity index 100% rename from src/cocoa/src/toga_cocoa/widgets/canvas.py rename to cocoa/src/toga_cocoa/widgets/canvas.py diff --git a/src/cocoa/src/toga_cocoa/widgets/detailedlist.py b/cocoa/src/toga_cocoa/widgets/detailedlist.py similarity index 100% rename from src/cocoa/src/toga_cocoa/widgets/detailedlist.py rename to cocoa/src/toga_cocoa/widgets/detailedlist.py diff --git a/src/cocoa/src/toga_cocoa/widgets/divider.py b/cocoa/src/toga_cocoa/widgets/divider.py similarity index 100% rename from src/cocoa/src/toga_cocoa/widgets/divider.py rename to cocoa/src/toga_cocoa/widgets/divider.py diff --git a/src/cocoa/src/toga_cocoa/widgets/imageview.py b/cocoa/src/toga_cocoa/widgets/imageview.py similarity index 100% rename from src/cocoa/src/toga_cocoa/widgets/imageview.py rename to cocoa/src/toga_cocoa/widgets/imageview.py diff --git a/src/cocoa/src/toga_cocoa/widgets/internal/__init__.py b/cocoa/src/toga_cocoa/widgets/internal/__init__.py similarity index 100% rename from src/cocoa/src/toga_cocoa/widgets/internal/__init__.py rename to cocoa/src/toga_cocoa/widgets/internal/__init__.py diff --git a/src/cocoa/src/toga_cocoa/widgets/internal/cells.py b/cocoa/src/toga_cocoa/widgets/internal/cells.py similarity index 100% rename from src/cocoa/src/toga_cocoa/widgets/internal/cells.py rename to cocoa/src/toga_cocoa/widgets/internal/cells.py diff --git a/src/cocoa/src/toga_cocoa/widgets/internal/data.py b/cocoa/src/toga_cocoa/widgets/internal/data.py similarity index 100% rename from src/cocoa/src/toga_cocoa/widgets/internal/data.py rename to cocoa/src/toga_cocoa/widgets/internal/data.py diff --git a/src/cocoa/src/toga_cocoa/widgets/internal/refresh.py b/cocoa/src/toga_cocoa/widgets/internal/refresh.py similarity index 100% rename from src/cocoa/src/toga_cocoa/widgets/internal/refresh.py rename to cocoa/src/toga_cocoa/widgets/internal/refresh.py diff --git a/src/cocoa/src/toga_cocoa/widgets/label.py b/cocoa/src/toga_cocoa/widgets/label.py similarity index 100% rename from src/cocoa/src/toga_cocoa/widgets/label.py rename to cocoa/src/toga_cocoa/widgets/label.py diff --git a/src/cocoa/src/toga_cocoa/widgets/multilinetextinput.py b/cocoa/src/toga_cocoa/widgets/multilinetextinput.py similarity index 100% rename from src/cocoa/src/toga_cocoa/widgets/multilinetextinput.py rename to cocoa/src/toga_cocoa/widgets/multilinetextinput.py diff --git a/src/cocoa/src/toga_cocoa/widgets/numberinput.py b/cocoa/src/toga_cocoa/widgets/numberinput.py similarity index 100% rename from src/cocoa/src/toga_cocoa/widgets/numberinput.py rename to cocoa/src/toga_cocoa/widgets/numberinput.py diff --git a/src/cocoa/src/toga_cocoa/widgets/optioncontainer.py b/cocoa/src/toga_cocoa/widgets/optioncontainer.py similarity index 100% rename from src/cocoa/src/toga_cocoa/widgets/optioncontainer.py rename to cocoa/src/toga_cocoa/widgets/optioncontainer.py diff --git a/src/cocoa/src/toga_cocoa/widgets/passwordinput.py b/cocoa/src/toga_cocoa/widgets/passwordinput.py similarity index 100% rename from src/cocoa/src/toga_cocoa/widgets/passwordinput.py rename to cocoa/src/toga_cocoa/widgets/passwordinput.py diff --git a/src/cocoa/src/toga_cocoa/widgets/progressbar.py b/cocoa/src/toga_cocoa/widgets/progressbar.py similarity index 100% rename from src/cocoa/src/toga_cocoa/widgets/progressbar.py rename to cocoa/src/toga_cocoa/widgets/progressbar.py diff --git a/src/cocoa/src/toga_cocoa/widgets/scrollcontainer.py b/cocoa/src/toga_cocoa/widgets/scrollcontainer.py similarity index 100% rename from src/cocoa/src/toga_cocoa/widgets/scrollcontainer.py rename to cocoa/src/toga_cocoa/widgets/scrollcontainer.py diff --git a/src/cocoa/src/toga_cocoa/widgets/selection.py b/cocoa/src/toga_cocoa/widgets/selection.py similarity index 100% rename from src/cocoa/src/toga_cocoa/widgets/selection.py rename to cocoa/src/toga_cocoa/widgets/selection.py diff --git a/src/cocoa/src/toga_cocoa/widgets/slider.py b/cocoa/src/toga_cocoa/widgets/slider.py similarity index 100% rename from src/cocoa/src/toga_cocoa/widgets/slider.py rename to cocoa/src/toga_cocoa/widgets/slider.py diff --git a/src/cocoa/src/toga_cocoa/widgets/splitcontainer.py b/cocoa/src/toga_cocoa/widgets/splitcontainer.py similarity index 100% rename from src/cocoa/src/toga_cocoa/widgets/splitcontainer.py rename to cocoa/src/toga_cocoa/widgets/splitcontainer.py diff --git a/src/cocoa/src/toga_cocoa/widgets/switch.py b/cocoa/src/toga_cocoa/widgets/switch.py similarity index 100% rename from src/cocoa/src/toga_cocoa/widgets/switch.py rename to cocoa/src/toga_cocoa/widgets/switch.py diff --git a/src/cocoa/src/toga_cocoa/widgets/table.py b/cocoa/src/toga_cocoa/widgets/table.py similarity index 100% rename from src/cocoa/src/toga_cocoa/widgets/table.py rename to cocoa/src/toga_cocoa/widgets/table.py diff --git a/src/cocoa/src/toga_cocoa/widgets/textinput.py b/cocoa/src/toga_cocoa/widgets/textinput.py similarity index 100% rename from src/cocoa/src/toga_cocoa/widgets/textinput.py rename to cocoa/src/toga_cocoa/widgets/textinput.py diff --git a/src/cocoa/src/toga_cocoa/widgets/tree.py b/cocoa/src/toga_cocoa/widgets/tree.py similarity index 100% rename from src/cocoa/src/toga_cocoa/widgets/tree.py rename to cocoa/src/toga_cocoa/widgets/tree.py diff --git a/src/cocoa/src/toga_cocoa/widgets/webview.py b/cocoa/src/toga_cocoa/widgets/webview.py similarity index 100% rename from src/cocoa/src/toga_cocoa/widgets/webview.py rename to cocoa/src/toga_cocoa/widgets/webview.py diff --git a/src/cocoa/src/toga_cocoa/window.py b/cocoa/src/toga_cocoa/window.py similarity index 100% rename from src/cocoa/src/toga_cocoa/window.py rename to cocoa/src/toga_cocoa/window.py diff --git a/src/cocoa/tests/__init__.py b/cocoa/tests/__init__.py similarity index 100% rename from src/cocoa/tests/__init__.py rename to cocoa/tests/__init__.py diff --git a/src/cocoa/tests/test_implementation.py b/cocoa/tests/test_implementation.py similarity index 100% rename from src/cocoa/tests/test_implementation.py rename to cocoa/tests/test_implementation.py diff --git a/src/cocoa/tests/test_paths.py b/cocoa/tests/test_paths.py similarity index 100% rename from src/cocoa/tests/test_paths.py rename to cocoa/tests/test_paths.py diff --git a/src/cocoa/tox.ini b/cocoa/tox.ini similarity index 100% rename from src/cocoa/tox.ini rename to cocoa/tox.ini diff --git a/src/core/CONTRIBUTING.md b/core/CONTRIBUTING.md similarity index 100% rename from src/core/CONTRIBUTING.md rename to core/CONTRIBUTING.md diff --git a/src/core/LICENSE b/core/LICENSE similarity index 100% rename from src/core/LICENSE rename to core/LICENSE diff --git a/src/core/MANIFEST.in b/core/MANIFEST.in similarity index 100% rename from src/core/MANIFEST.in rename to core/MANIFEST.in diff --git a/src/core/README.rst b/core/README.rst similarity index 100% rename from src/core/README.rst rename to core/README.rst diff --git a/src/core/pyproject.toml b/core/pyproject.toml similarity index 100% rename from src/core/pyproject.toml rename to core/pyproject.toml diff --git a/src/core/setup.cfg b/core/setup.cfg similarity index 100% rename from src/core/setup.cfg rename to core/setup.cfg diff --git a/src/core/setup.py b/core/setup.py similarity index 100% rename from src/core/setup.py rename to core/setup.py diff --git a/src/core/src/toga/__init__.py b/core/src/toga/__init__.py similarity index 100% rename from src/core/src/toga/__init__.py rename to core/src/toga/__init__.py diff --git a/src/core/src/toga/app.py b/core/src/toga/app.py similarity index 100% rename from src/core/src/toga/app.py rename to core/src/toga/app.py diff --git a/src/core/src/toga/colors.py b/core/src/toga/colors.py similarity index 100% rename from src/core/src/toga/colors.py rename to core/src/toga/colors.py diff --git a/src/core/src/toga/command.py b/core/src/toga/command.py similarity index 100% rename from src/core/src/toga/command.py rename to core/src/toga/command.py diff --git a/src/core/src/toga/constants/__init__.py b/core/src/toga/constants/__init__.py similarity index 100% rename from src/core/src/toga/constants/__init__.py rename to core/src/toga/constants/__init__.py diff --git a/src/core/src/toga/documents.py b/core/src/toga/documents.py similarity index 100% rename from src/core/src/toga/documents.py rename to core/src/toga/documents.py diff --git a/src/core/src/toga/fonts.py b/core/src/toga/fonts.py similarity index 100% rename from src/core/src/toga/fonts.py rename to core/src/toga/fonts.py diff --git a/src/core/src/toga/handlers.py b/core/src/toga/handlers.py similarity index 100% rename from src/core/src/toga/handlers.py rename to core/src/toga/handlers.py diff --git a/src/core/src/toga/hardware/__init__.py b/core/src/toga/hardware/__init__.py similarity index 100% rename from src/core/src/toga/hardware/__init__.py rename to core/src/toga/hardware/__init__.py diff --git a/src/core/src/toga/icons.py b/core/src/toga/icons.py similarity index 100% rename from src/core/src/toga/icons.py rename to core/src/toga/icons.py diff --git a/src/core/src/toga/images.py b/core/src/toga/images.py similarity index 100% rename from src/core/src/toga/images.py rename to core/src/toga/images.py diff --git a/src/core/src/toga/keys.py b/core/src/toga/keys.py similarity index 100% rename from src/core/src/toga/keys.py rename to core/src/toga/keys.py diff --git a/src/core/src/toga/platform.py b/core/src/toga/platform.py similarity index 100% rename from src/core/src/toga/platform.py rename to core/src/toga/platform.py diff --git a/src/core/src/toga/resources/__init__.py b/core/src/toga/resources/__init__.py similarity index 100% rename from src/core/src/toga/resources/__init__.py rename to core/src/toga/resources/__init__.py diff --git a/src/core/src/toga/resources/toga.icns b/core/src/toga/resources/toga.icns similarity index 100% rename from src/core/src/toga/resources/toga.icns rename to core/src/toga/resources/toga.icns diff --git a/src/core/src/toga/resources/toga.ico b/core/src/toga/resources/toga.ico similarity index 100% rename from src/core/src/toga/resources/toga.ico rename to core/src/toga/resources/toga.ico diff --git a/src/core/src/toga/resources/toga.png b/core/src/toga/resources/toga.png similarity index 100% rename from src/core/src/toga/resources/toga.png rename to core/src/toga/resources/toga.png diff --git a/src/core/src/toga/sources/__init__.py b/core/src/toga/sources/__init__.py similarity index 100% rename from src/core/src/toga/sources/__init__.py rename to core/src/toga/sources/__init__.py diff --git a/src/core/src/toga/sources/accessors.py b/core/src/toga/sources/accessors.py similarity index 100% rename from src/core/src/toga/sources/accessors.py rename to core/src/toga/sources/accessors.py diff --git a/src/core/src/toga/sources/base.py b/core/src/toga/sources/base.py similarity index 100% rename from src/core/src/toga/sources/base.py rename to core/src/toga/sources/base.py diff --git a/src/core/src/toga/sources/list_source.py b/core/src/toga/sources/list_source.py similarity index 100% rename from src/core/src/toga/sources/list_source.py rename to core/src/toga/sources/list_source.py diff --git a/src/core/src/toga/sources/tree_source.py b/core/src/toga/sources/tree_source.py similarity index 100% rename from src/core/src/toga/sources/tree_source.py rename to core/src/toga/sources/tree_source.py diff --git a/src/core/src/toga/sources/value_source.py b/core/src/toga/sources/value_source.py similarity index 100% rename from src/core/src/toga/sources/value_source.py rename to core/src/toga/sources/value_source.py diff --git a/src/core/src/toga/style/__init__.py b/core/src/toga/style/__init__.py similarity index 100% rename from src/core/src/toga/style/__init__.py rename to core/src/toga/style/__init__.py diff --git a/src/core/src/toga/style/applicator.py b/core/src/toga/style/applicator.py similarity index 100% rename from src/core/src/toga/style/applicator.py rename to core/src/toga/style/applicator.py diff --git a/src/core/src/toga/style/pack.py b/core/src/toga/style/pack.py similarity index 100% rename from src/core/src/toga/style/pack.py rename to core/src/toga/style/pack.py diff --git a/src/core/src/toga/validators.py b/core/src/toga/validators.py similarity index 100% rename from src/core/src/toga/validators.py rename to core/src/toga/validators.py diff --git a/src/core/src/toga/widgets/__init__.py b/core/src/toga/widgets/__init__.py similarity index 100% rename from src/core/src/toga/widgets/__init__.py rename to core/src/toga/widgets/__init__.py diff --git a/src/core/src/toga/widgets/activityindicator.py b/core/src/toga/widgets/activityindicator.py similarity index 100% rename from src/core/src/toga/widgets/activityindicator.py rename to core/src/toga/widgets/activityindicator.py diff --git a/src/core/src/toga/widgets/base.py b/core/src/toga/widgets/base.py similarity index 100% rename from src/core/src/toga/widgets/base.py rename to core/src/toga/widgets/base.py diff --git a/src/core/src/toga/widgets/box.py b/core/src/toga/widgets/box.py similarity index 100% rename from src/core/src/toga/widgets/box.py rename to core/src/toga/widgets/box.py diff --git a/src/core/src/toga/widgets/button.py b/core/src/toga/widgets/button.py similarity index 100% rename from src/core/src/toga/widgets/button.py rename to core/src/toga/widgets/button.py diff --git a/src/core/src/toga/widgets/canvas.py b/core/src/toga/widgets/canvas.py similarity index 100% rename from src/core/src/toga/widgets/canvas.py rename to core/src/toga/widgets/canvas.py diff --git a/src/core/src/toga/widgets/datepicker.py b/core/src/toga/widgets/datepicker.py similarity index 100% rename from src/core/src/toga/widgets/datepicker.py rename to core/src/toga/widgets/datepicker.py diff --git a/src/core/src/toga/widgets/detailedlist.py b/core/src/toga/widgets/detailedlist.py similarity index 100% rename from src/core/src/toga/widgets/detailedlist.py rename to core/src/toga/widgets/detailedlist.py diff --git a/src/core/src/toga/widgets/divider.py b/core/src/toga/widgets/divider.py similarity index 100% rename from src/core/src/toga/widgets/divider.py rename to core/src/toga/widgets/divider.py diff --git a/src/core/src/toga/widgets/imageview.py b/core/src/toga/widgets/imageview.py similarity index 100% rename from src/core/src/toga/widgets/imageview.py rename to core/src/toga/widgets/imageview.py diff --git a/src/core/src/toga/widgets/label.py b/core/src/toga/widgets/label.py similarity index 100% rename from src/core/src/toga/widgets/label.py rename to core/src/toga/widgets/label.py diff --git a/src/core/src/toga/widgets/multilinetextinput.py b/core/src/toga/widgets/multilinetextinput.py similarity index 100% rename from src/core/src/toga/widgets/multilinetextinput.py rename to core/src/toga/widgets/multilinetextinput.py diff --git a/src/core/src/toga/widgets/navigationview.py b/core/src/toga/widgets/navigationview.py similarity index 100% rename from src/core/src/toga/widgets/navigationview.py rename to core/src/toga/widgets/navigationview.py diff --git a/src/core/src/toga/widgets/numberinput.py b/core/src/toga/widgets/numberinput.py similarity index 100% rename from src/core/src/toga/widgets/numberinput.py rename to core/src/toga/widgets/numberinput.py diff --git a/src/core/src/toga/widgets/optioncontainer.py b/core/src/toga/widgets/optioncontainer.py similarity index 100% rename from src/core/src/toga/widgets/optioncontainer.py rename to core/src/toga/widgets/optioncontainer.py diff --git a/src/core/src/toga/widgets/passwordinput.py b/core/src/toga/widgets/passwordinput.py similarity index 100% rename from src/core/src/toga/widgets/passwordinput.py rename to core/src/toga/widgets/passwordinput.py diff --git a/src/core/src/toga/widgets/progressbar.py b/core/src/toga/widgets/progressbar.py similarity index 100% rename from src/core/src/toga/widgets/progressbar.py rename to core/src/toga/widgets/progressbar.py diff --git a/src/core/src/toga/widgets/scrollcontainer.py b/core/src/toga/widgets/scrollcontainer.py similarity index 100% rename from src/core/src/toga/widgets/scrollcontainer.py rename to core/src/toga/widgets/scrollcontainer.py diff --git a/src/core/src/toga/widgets/selection.py b/core/src/toga/widgets/selection.py similarity index 100% rename from src/core/src/toga/widgets/selection.py rename to core/src/toga/widgets/selection.py diff --git a/src/core/src/toga/widgets/slider.py b/core/src/toga/widgets/slider.py similarity index 100% rename from src/core/src/toga/widgets/slider.py rename to core/src/toga/widgets/slider.py diff --git a/src/core/src/toga/widgets/splitcontainer.py b/core/src/toga/widgets/splitcontainer.py similarity index 100% rename from src/core/src/toga/widgets/splitcontainer.py rename to core/src/toga/widgets/splitcontainer.py diff --git a/src/core/src/toga/widgets/switch.py b/core/src/toga/widgets/switch.py similarity index 100% rename from src/core/src/toga/widgets/switch.py rename to core/src/toga/widgets/switch.py diff --git a/src/core/src/toga/widgets/table.py b/core/src/toga/widgets/table.py similarity index 100% rename from src/core/src/toga/widgets/table.py rename to core/src/toga/widgets/table.py diff --git a/src/core/src/toga/widgets/textinput.py b/core/src/toga/widgets/textinput.py similarity index 100% rename from src/core/src/toga/widgets/textinput.py rename to core/src/toga/widgets/textinput.py diff --git a/src/core/src/toga/widgets/timepicker.py b/core/src/toga/widgets/timepicker.py similarity index 100% rename from src/core/src/toga/widgets/timepicker.py rename to core/src/toga/widgets/timepicker.py diff --git a/src/core/src/toga/widgets/tree.py b/core/src/toga/widgets/tree.py similarity index 100% rename from src/core/src/toga/widgets/tree.py rename to core/src/toga/widgets/tree.py diff --git a/src/core/src/toga/widgets/webview.py b/core/src/toga/widgets/webview.py similarity index 100% rename from src/core/src/toga/widgets/webview.py rename to core/src/toga/widgets/webview.py diff --git a/src/core/src/toga/window.py b/core/src/toga/window.py similarity index 100% rename from src/core/src/toga/window.py rename to core/src/toga/window.py diff --git a/src/core/tests/__init__.py b/core/tests/__init__.py similarity index 100% rename from src/core/tests/__init__.py rename to core/tests/__init__.py diff --git a/src/core/tests/command/__init__.py b/core/tests/command/__init__.py similarity index 100% rename from src/core/tests/command/__init__.py rename to core/tests/command/__init__.py diff --git a/src/core/tests/command/constants.py b/core/tests/command/constants.py similarity index 100% rename from src/core/tests/command/constants.py rename to core/tests/command/constants.py diff --git a/src/core/tests/command/test_command.py b/core/tests/command/test_command.py similarity index 100% rename from src/core/tests/command/test_command.py rename to core/tests/command/test_command.py diff --git a/src/core/tests/command/test_commands_group.py b/core/tests/command/test_commands_group.py similarity index 100% rename from src/core/tests/command/test_commands_group.py rename to core/tests/command/test_commands_group.py diff --git a/src/core/tests/command/test_commands_set.py b/core/tests/command/test_commands_set.py similarity index 100% rename from src/core/tests/command/test_commands_set.py rename to core/tests/command/test_commands_set.py diff --git a/src/core/tests/sources/__init__.py b/core/tests/sources/__init__.py similarity index 100% rename from src/core/tests/sources/__init__.py rename to core/tests/sources/__init__.py diff --git a/src/core/tests/sources/test_accessors.py b/core/tests/sources/test_accessors.py similarity index 100% rename from src/core/tests/sources/test_accessors.py rename to core/tests/sources/test_accessors.py diff --git a/src/core/tests/sources/test_list_source.py b/core/tests/sources/test_list_source.py similarity index 100% rename from src/core/tests/sources/test_list_source.py rename to core/tests/sources/test_list_source.py diff --git a/src/core/tests/sources/test_source.py b/core/tests/sources/test_source.py similarity index 100% rename from src/core/tests/sources/test_source.py rename to core/tests/sources/test_source.py diff --git a/src/core/tests/sources/test_tree_source.py b/core/tests/sources/test_tree_source.py similarity index 100% rename from src/core/tests/sources/test_tree_source.py rename to core/tests/sources/test_tree_source.py diff --git a/src/core/tests/sources/test_value_source.py b/core/tests/sources/test_value_source.py similarity index 100% rename from src/core/tests/sources/test_value_source.py rename to core/tests/sources/test_value_source.py diff --git a/src/core/tests/style/__init__.py b/core/tests/style/__init__.py similarity index 100% rename from src/core/tests/style/__init__.py rename to core/tests/style/__init__.py diff --git a/src/core/tests/style/test_pack.py b/core/tests/style/test_pack.py similarity index 100% rename from src/core/tests/style/test_pack.py rename to core/tests/style/test_pack.py diff --git a/src/core/tests/test_app.py b/core/tests/test_app.py similarity index 100% rename from src/core/tests/test_app.py rename to core/tests/test_app.py diff --git a/src/core/tests/test_deprecated_factory.py b/core/tests/test_deprecated_factory.py similarity index 100% rename from src/core/tests/test_deprecated_factory.py rename to core/tests/test_deprecated_factory.py diff --git a/src/core/tests/test_documents.py b/core/tests/test_documents.py similarity index 100% rename from src/core/tests/test_documents.py rename to core/tests/test_documents.py diff --git a/src/core/tests/test_font.py b/core/tests/test_font.py similarity index 100% rename from src/core/tests/test_font.py rename to core/tests/test_font.py diff --git a/src/core/tests/test_handler.py b/core/tests/test_handler.py similarity index 100% rename from src/core/tests/test_handler.py rename to core/tests/test_handler.py diff --git a/src/core/tests/test_icon.py b/core/tests/test_icon.py similarity index 100% rename from src/core/tests/test_icon.py rename to core/tests/test_icon.py diff --git a/src/core/tests/test_image.py b/core/tests/test_image.py similarity index 100% rename from src/core/tests/test_image.py rename to core/tests/test_image.py diff --git a/src/core/tests/test_key.py b/core/tests/test_key.py similarity index 100% rename from src/core/tests/test_key.py rename to core/tests/test_key.py diff --git a/src/core/tests/test_paths.py b/core/tests/test_paths.py similarity index 100% rename from src/core/tests/test_paths.py rename to core/tests/test_paths.py diff --git a/src/core/tests/test_platform.py b/core/tests/test_platform.py similarity index 100% rename from src/core/tests/test_platform.py rename to core/tests/test_platform.py diff --git a/src/core/tests/test_validators.py b/core/tests/test_validators.py similarity index 100% rename from src/core/tests/test_validators.py rename to core/tests/test_validators.py diff --git a/src/core/tests/test_widget_registry.py b/core/tests/test_widget_registry.py similarity index 100% rename from src/core/tests/test_widget_registry.py rename to core/tests/test_widget_registry.py diff --git a/src/core/tests/test_window.py b/core/tests/test_window.py similarity index 100% rename from src/core/tests/test_window.py rename to core/tests/test_window.py diff --git a/src/core/tests/testbed/bootstrap.py b/core/tests/testbed/bootstrap.py similarity index 100% rename from src/core/tests/testbed/bootstrap.py rename to core/tests/testbed/bootstrap.py diff --git a/src/core/tests/testbed/installed.dist-info/INSTALLER b/core/tests/testbed/installed.dist-info/INSTALLER similarity index 100% rename from src/core/tests/testbed/installed.dist-info/INSTALLER rename to core/tests/testbed/installed.dist-info/INSTALLER diff --git a/src/core/tests/testbed/installed.dist-info/METADATA b/core/tests/testbed/installed.dist-info/METADATA similarity index 100% rename from src/core/tests/testbed/installed.dist-info/METADATA rename to core/tests/testbed/installed.dist-info/METADATA diff --git a/src/core/tests/testbed/installed/__init__.py b/core/tests/testbed/installed/__init__.py similarity index 100% rename from src/core/tests/testbed/installed/__init__.py rename to core/tests/testbed/installed/__init__.py diff --git a/src/core/tests/testbed/installed/__main__.py b/core/tests/testbed/installed/__main__.py similarity index 100% rename from src/core/tests/testbed/installed/__main__.py rename to core/tests/testbed/installed/__main__.py diff --git a/src/core/tests/testbed/installed/app.py b/core/tests/testbed/installed/app.py similarity index 100% rename from src/core/tests/testbed/installed/app.py rename to core/tests/testbed/installed/app.py diff --git a/src/core/tests/testbed/simple/__init__.py b/core/tests/testbed/simple/__init__.py similarity index 100% rename from src/core/tests/testbed/simple/__init__.py rename to core/tests/testbed/simple/__init__.py diff --git a/src/core/tests/testbed/simple/__main__.py b/core/tests/testbed/simple/__main__.py similarity index 100% rename from src/core/tests/testbed/simple/__main__.py rename to core/tests/testbed/simple/__main__.py diff --git a/src/core/tests/testbed/simple/app.py b/core/tests/testbed/simple/app.py similarity index 100% rename from src/core/tests/testbed/simple/app.py rename to core/tests/testbed/simple/app.py diff --git a/src/core/tests/testbed/standalone.py b/core/tests/testbed/standalone.py similarity index 100% rename from src/core/tests/testbed/standalone.py rename to core/tests/testbed/standalone.py diff --git a/src/core/tests/testbed/subclassed/__init__.py b/core/tests/testbed/subclassed/__init__.py similarity index 100% rename from src/core/tests/testbed/subclassed/__init__.py rename to core/tests/testbed/subclassed/__init__.py diff --git a/src/core/tests/testbed/subclassed/__main__.py b/core/tests/testbed/subclassed/__main__.py similarity index 100% rename from src/core/tests/testbed/subclassed/__main__.py rename to core/tests/testbed/subclassed/__main__.py diff --git a/src/core/tests/testbed/subclassed/app.py b/core/tests/testbed/subclassed/app.py similarity index 100% rename from src/core/tests/testbed/subclassed/app.py rename to core/tests/testbed/subclassed/app.py diff --git a/src/core/tests/utils.py b/core/tests/utils.py similarity index 100% rename from src/core/tests/utils.py rename to core/tests/utils.py diff --git a/src/core/tests/widgets/__init__.py b/core/tests/widgets/__init__.py similarity index 100% rename from src/core/tests/widgets/__init__.py rename to core/tests/widgets/__init__.py diff --git a/src/core/tests/widgets/test_activityindicator.py b/core/tests/widgets/test_activityindicator.py similarity index 100% rename from src/core/tests/widgets/test_activityindicator.py rename to core/tests/widgets/test_activityindicator.py diff --git a/src/core/tests/widgets/test_base.py b/core/tests/widgets/test_base.py similarity index 100% rename from src/core/tests/widgets/test_base.py rename to core/tests/widgets/test_base.py diff --git a/src/core/tests/widgets/test_box.py b/core/tests/widgets/test_box.py similarity index 100% rename from src/core/tests/widgets/test_box.py rename to core/tests/widgets/test_box.py diff --git a/src/core/tests/widgets/test_button.py b/core/tests/widgets/test_button.py similarity index 100% rename from src/core/tests/widgets/test_button.py rename to core/tests/widgets/test_button.py diff --git a/src/core/tests/widgets/test_canvas.py b/core/tests/widgets/test_canvas.py similarity index 100% rename from src/core/tests/widgets/test_canvas.py rename to core/tests/widgets/test_canvas.py diff --git a/src/core/tests/widgets/test_datepicker.py b/core/tests/widgets/test_datepicker.py similarity index 100% rename from src/core/tests/widgets/test_datepicker.py rename to core/tests/widgets/test_datepicker.py diff --git a/src/core/tests/widgets/test_detailedlist.py b/core/tests/widgets/test_detailedlist.py similarity index 100% rename from src/core/tests/widgets/test_detailedlist.py rename to core/tests/widgets/test_detailedlist.py diff --git a/src/core/tests/widgets/test_divider.py b/core/tests/widgets/test_divider.py similarity index 100% rename from src/core/tests/widgets/test_divider.py rename to core/tests/widgets/test_divider.py diff --git a/src/core/tests/widgets/test_imageview.py b/core/tests/widgets/test_imageview.py similarity index 100% rename from src/core/tests/widgets/test_imageview.py rename to core/tests/widgets/test_imageview.py diff --git a/src/core/tests/widgets/test_label.py b/core/tests/widgets/test_label.py similarity index 100% rename from src/core/tests/widgets/test_label.py rename to core/tests/widgets/test_label.py diff --git a/src/core/tests/widgets/test_multilinetextinput.py b/core/tests/widgets/test_multilinetextinput.py similarity index 100% rename from src/core/tests/widgets/test_multilinetextinput.py rename to core/tests/widgets/test_multilinetextinput.py diff --git a/src/core/tests/widgets/test_navigationview.py b/core/tests/widgets/test_navigationview.py similarity index 100% rename from src/core/tests/widgets/test_navigationview.py rename to core/tests/widgets/test_navigationview.py diff --git a/src/core/tests/widgets/test_numberinput.py b/core/tests/widgets/test_numberinput.py similarity index 100% rename from src/core/tests/widgets/test_numberinput.py rename to core/tests/widgets/test_numberinput.py diff --git a/src/core/tests/widgets/test_optioncontainer.py b/core/tests/widgets/test_optioncontainer.py similarity index 100% rename from src/core/tests/widgets/test_optioncontainer.py rename to core/tests/widgets/test_optioncontainer.py diff --git a/src/core/tests/widgets/test_passwordinput.py b/core/tests/widgets/test_passwordinput.py similarity index 100% rename from src/core/tests/widgets/test_passwordinput.py rename to core/tests/widgets/test_passwordinput.py diff --git a/src/core/tests/widgets/test_progressbar.py b/core/tests/widgets/test_progressbar.py similarity index 100% rename from src/core/tests/widgets/test_progressbar.py rename to core/tests/widgets/test_progressbar.py diff --git a/src/core/tests/widgets/test_scrollcontainer.py b/core/tests/widgets/test_scrollcontainer.py similarity index 100% rename from src/core/tests/widgets/test_scrollcontainer.py rename to core/tests/widgets/test_scrollcontainer.py diff --git a/src/core/tests/widgets/test_selection.py b/core/tests/widgets/test_selection.py similarity index 100% rename from src/core/tests/widgets/test_selection.py rename to core/tests/widgets/test_selection.py diff --git a/src/core/tests/widgets/test_slider.py b/core/tests/widgets/test_slider.py similarity index 100% rename from src/core/tests/widgets/test_slider.py rename to core/tests/widgets/test_slider.py diff --git a/src/core/tests/widgets/test_splitcontainer.py b/core/tests/widgets/test_splitcontainer.py similarity index 100% rename from src/core/tests/widgets/test_splitcontainer.py rename to core/tests/widgets/test_splitcontainer.py diff --git a/src/core/tests/widgets/test_switch.py b/core/tests/widgets/test_switch.py similarity index 100% rename from src/core/tests/widgets/test_switch.py rename to core/tests/widgets/test_switch.py diff --git a/src/core/tests/widgets/test_table.py b/core/tests/widgets/test_table.py similarity index 100% rename from src/core/tests/widgets/test_table.py rename to core/tests/widgets/test_table.py diff --git a/src/core/tests/widgets/test_textinput.py b/core/tests/widgets/test_textinput.py similarity index 100% rename from src/core/tests/widgets/test_textinput.py rename to core/tests/widgets/test_textinput.py diff --git a/src/core/tests/widgets/test_timepicker.py b/core/tests/widgets/test_timepicker.py similarity index 100% rename from src/core/tests/widgets/test_timepicker.py rename to core/tests/widgets/test_timepicker.py diff --git a/src/core/tests/widgets/test_tree.py b/core/tests/widgets/test_tree.py similarity index 100% rename from src/core/tests/widgets/test_tree.py rename to core/tests/widgets/test_tree.py diff --git a/src/core/tests/widgets/test_webview.py b/core/tests/widgets/test_webview.py similarity index 100% rename from src/core/tests/widgets/test_webview.py rename to core/tests/widgets/test_webview.py diff --git a/src/core/tox.ini b/core/tox.ini similarity index 100% rename from src/core/tox.ini rename to core/tox.ini diff --git a/src/dummy/CONTRIBUTING.md b/dummy/CONTRIBUTING.md similarity index 100% rename from src/dummy/CONTRIBUTING.md rename to dummy/CONTRIBUTING.md diff --git a/src/dummy/LICENSE b/dummy/LICENSE similarity index 100% rename from src/dummy/LICENSE rename to dummy/LICENSE diff --git a/src/dummy/MANIFEST.in b/dummy/MANIFEST.in similarity index 100% rename from src/dummy/MANIFEST.in rename to dummy/MANIFEST.in diff --git a/src/dummy/README.rst b/dummy/README.rst similarity index 100% rename from src/dummy/README.rst rename to dummy/README.rst diff --git a/src/dummy/pyproject.toml b/dummy/pyproject.toml similarity index 100% rename from src/dummy/pyproject.toml rename to dummy/pyproject.toml diff --git a/src/dummy/setup.cfg b/dummy/setup.cfg similarity index 100% rename from src/dummy/setup.cfg rename to dummy/setup.cfg diff --git a/src/dummy/setup.py b/dummy/setup.py similarity index 100% rename from src/dummy/setup.py rename to dummy/setup.py diff --git a/src/dummy/src/toga_dummy/__init__.py b/dummy/src/toga_dummy/__init__.py similarity index 100% rename from src/dummy/src/toga_dummy/__init__.py rename to dummy/src/toga_dummy/__init__.py diff --git a/src/dummy/src/toga_dummy/app.py b/dummy/src/toga_dummy/app.py similarity index 100% rename from src/dummy/src/toga_dummy/app.py rename to dummy/src/toga_dummy/app.py diff --git a/src/dummy/src/toga_dummy/colors.py b/dummy/src/toga_dummy/colors.py similarity index 100% rename from src/dummy/src/toga_dummy/colors.py rename to dummy/src/toga_dummy/colors.py diff --git a/src/dummy/src/toga_dummy/command.py b/dummy/src/toga_dummy/command.py similarity index 100% rename from src/dummy/src/toga_dummy/command.py rename to dummy/src/toga_dummy/command.py diff --git a/src/dummy/src/toga_dummy/container.py b/dummy/src/toga_dummy/container.py similarity index 100% rename from src/dummy/src/toga_dummy/container.py rename to dummy/src/toga_dummy/container.py diff --git a/src/dummy/src/toga_dummy/dialogs.py b/dummy/src/toga_dummy/dialogs.py similarity index 100% rename from src/dummy/src/toga_dummy/dialogs.py rename to dummy/src/toga_dummy/dialogs.py diff --git a/src/dummy/src/toga_dummy/documents.py b/dummy/src/toga_dummy/documents.py similarity index 100% rename from src/dummy/src/toga_dummy/documents.py rename to dummy/src/toga_dummy/documents.py diff --git a/src/dummy/src/toga_dummy/factory.py b/dummy/src/toga_dummy/factory.py similarity index 100% rename from src/dummy/src/toga_dummy/factory.py rename to dummy/src/toga_dummy/factory.py diff --git a/src/dummy/src/toga_dummy/fonts.py b/dummy/src/toga_dummy/fonts.py similarity index 100% rename from src/dummy/src/toga_dummy/fonts.py rename to dummy/src/toga_dummy/fonts.py diff --git a/src/dummy/src/toga_dummy/icons.py b/dummy/src/toga_dummy/icons.py similarity index 100% rename from src/dummy/src/toga_dummy/icons.py rename to dummy/src/toga_dummy/icons.py diff --git a/src/dummy/src/toga_dummy/images.py b/dummy/src/toga_dummy/images.py similarity index 100% rename from src/dummy/src/toga_dummy/images.py rename to dummy/src/toga_dummy/images.py diff --git a/src/dummy/src/toga_dummy/paths.py b/dummy/src/toga_dummy/paths.py similarity index 100% rename from src/dummy/src/toga_dummy/paths.py rename to dummy/src/toga_dummy/paths.py diff --git a/src/dummy/src/toga_dummy/test_implementation.py b/dummy/src/toga_dummy/test_implementation.py similarity index 100% rename from src/dummy/src/toga_dummy/test_implementation.py rename to dummy/src/toga_dummy/test_implementation.py diff --git a/src/dummy/src/toga_dummy/utils.py b/dummy/src/toga_dummy/utils.py similarity index 100% rename from src/dummy/src/toga_dummy/utils.py rename to dummy/src/toga_dummy/utils.py diff --git a/src/dummy/src/toga_dummy/widgets/__init__.py b/dummy/src/toga_dummy/widgets/__init__.py similarity index 100% rename from src/dummy/src/toga_dummy/widgets/__init__.py rename to dummy/src/toga_dummy/widgets/__init__.py diff --git a/src/dummy/src/toga_dummy/widgets/activityindicator.py b/dummy/src/toga_dummy/widgets/activityindicator.py similarity index 100% rename from src/dummy/src/toga_dummy/widgets/activityindicator.py rename to dummy/src/toga_dummy/widgets/activityindicator.py diff --git a/src/dummy/src/toga_dummy/widgets/base.py b/dummy/src/toga_dummy/widgets/base.py similarity index 100% rename from src/dummy/src/toga_dummy/widgets/base.py rename to dummy/src/toga_dummy/widgets/base.py diff --git a/src/dummy/src/toga_dummy/widgets/box.py b/dummy/src/toga_dummy/widgets/box.py similarity index 100% rename from src/dummy/src/toga_dummy/widgets/box.py rename to dummy/src/toga_dummy/widgets/box.py diff --git a/src/dummy/src/toga_dummy/widgets/button.py b/dummy/src/toga_dummy/widgets/button.py similarity index 100% rename from src/dummy/src/toga_dummy/widgets/button.py rename to dummy/src/toga_dummy/widgets/button.py diff --git a/src/dummy/src/toga_dummy/widgets/canvas.py b/dummy/src/toga_dummy/widgets/canvas.py similarity index 100% rename from src/dummy/src/toga_dummy/widgets/canvas.py rename to dummy/src/toga_dummy/widgets/canvas.py diff --git a/src/dummy/src/toga_dummy/widgets/datepicker.py b/dummy/src/toga_dummy/widgets/datepicker.py similarity index 100% rename from src/dummy/src/toga_dummy/widgets/datepicker.py rename to dummy/src/toga_dummy/widgets/datepicker.py diff --git a/src/dummy/src/toga_dummy/widgets/detailedlist.py b/dummy/src/toga_dummy/widgets/detailedlist.py similarity index 100% rename from src/dummy/src/toga_dummy/widgets/detailedlist.py rename to dummy/src/toga_dummy/widgets/detailedlist.py diff --git a/src/dummy/src/toga_dummy/widgets/divider.py b/dummy/src/toga_dummy/widgets/divider.py similarity index 100% rename from src/dummy/src/toga_dummy/widgets/divider.py rename to dummy/src/toga_dummy/widgets/divider.py diff --git a/src/dummy/src/toga_dummy/widgets/imageview.py b/dummy/src/toga_dummy/widgets/imageview.py similarity index 100% rename from src/dummy/src/toga_dummy/widgets/imageview.py rename to dummy/src/toga_dummy/widgets/imageview.py diff --git a/src/dummy/src/toga_dummy/widgets/label.py b/dummy/src/toga_dummy/widgets/label.py similarity index 100% rename from src/dummy/src/toga_dummy/widgets/label.py rename to dummy/src/toga_dummy/widgets/label.py diff --git a/src/dummy/src/toga_dummy/widgets/multilinetextinput.py b/dummy/src/toga_dummy/widgets/multilinetextinput.py similarity index 100% rename from src/dummy/src/toga_dummy/widgets/multilinetextinput.py rename to dummy/src/toga_dummy/widgets/multilinetextinput.py diff --git a/src/dummy/src/toga_dummy/widgets/navigationview.py b/dummy/src/toga_dummy/widgets/navigationview.py similarity index 100% rename from src/dummy/src/toga_dummy/widgets/navigationview.py rename to dummy/src/toga_dummy/widgets/navigationview.py diff --git a/src/dummy/src/toga_dummy/widgets/numberinput.py b/dummy/src/toga_dummy/widgets/numberinput.py similarity index 100% rename from src/dummy/src/toga_dummy/widgets/numberinput.py rename to dummy/src/toga_dummy/widgets/numberinput.py diff --git a/src/dummy/src/toga_dummy/widgets/optioncontainer.py b/dummy/src/toga_dummy/widgets/optioncontainer.py similarity index 100% rename from src/dummy/src/toga_dummy/widgets/optioncontainer.py rename to dummy/src/toga_dummy/widgets/optioncontainer.py diff --git a/src/dummy/src/toga_dummy/widgets/passwordinput.py b/dummy/src/toga_dummy/widgets/passwordinput.py similarity index 100% rename from src/dummy/src/toga_dummy/widgets/passwordinput.py rename to dummy/src/toga_dummy/widgets/passwordinput.py diff --git a/src/dummy/src/toga_dummy/widgets/progressbar.py b/dummy/src/toga_dummy/widgets/progressbar.py similarity index 100% rename from src/dummy/src/toga_dummy/widgets/progressbar.py rename to dummy/src/toga_dummy/widgets/progressbar.py diff --git a/src/dummy/src/toga_dummy/widgets/scrollcontainer.py b/dummy/src/toga_dummy/widgets/scrollcontainer.py similarity index 100% rename from src/dummy/src/toga_dummy/widgets/scrollcontainer.py rename to dummy/src/toga_dummy/widgets/scrollcontainer.py diff --git a/src/dummy/src/toga_dummy/widgets/selection.py b/dummy/src/toga_dummy/widgets/selection.py similarity index 100% rename from src/dummy/src/toga_dummy/widgets/selection.py rename to dummy/src/toga_dummy/widgets/selection.py diff --git a/src/dummy/src/toga_dummy/widgets/slider.py b/dummy/src/toga_dummy/widgets/slider.py similarity index 100% rename from src/dummy/src/toga_dummy/widgets/slider.py rename to dummy/src/toga_dummy/widgets/slider.py diff --git a/src/dummy/src/toga_dummy/widgets/splitcontainer.py b/dummy/src/toga_dummy/widgets/splitcontainer.py similarity index 100% rename from src/dummy/src/toga_dummy/widgets/splitcontainer.py rename to dummy/src/toga_dummy/widgets/splitcontainer.py diff --git a/src/dummy/src/toga_dummy/widgets/switch.py b/dummy/src/toga_dummy/widgets/switch.py similarity index 100% rename from src/dummy/src/toga_dummy/widgets/switch.py rename to dummy/src/toga_dummy/widgets/switch.py diff --git a/src/dummy/src/toga_dummy/widgets/table.py b/dummy/src/toga_dummy/widgets/table.py similarity index 100% rename from src/dummy/src/toga_dummy/widgets/table.py rename to dummy/src/toga_dummy/widgets/table.py diff --git a/src/dummy/src/toga_dummy/widgets/textinput.py b/dummy/src/toga_dummy/widgets/textinput.py similarity index 100% rename from src/dummy/src/toga_dummy/widgets/textinput.py rename to dummy/src/toga_dummy/widgets/textinput.py diff --git a/src/dummy/src/toga_dummy/widgets/timepicker.py b/dummy/src/toga_dummy/widgets/timepicker.py similarity index 100% rename from src/dummy/src/toga_dummy/widgets/timepicker.py rename to dummy/src/toga_dummy/widgets/timepicker.py diff --git a/src/dummy/src/toga_dummy/widgets/tree.py b/dummy/src/toga_dummy/widgets/tree.py similarity index 100% rename from src/dummy/src/toga_dummy/widgets/tree.py rename to dummy/src/toga_dummy/widgets/tree.py diff --git a/src/dummy/src/toga_dummy/widgets/webview.py b/dummy/src/toga_dummy/widgets/webview.py similarity index 100% rename from src/dummy/src/toga_dummy/widgets/webview.py rename to dummy/src/toga_dummy/widgets/webview.py diff --git a/src/dummy/src/toga_dummy/window.py b/dummy/src/toga_dummy/window.py similarity index 100% rename from src/dummy/src/toga_dummy/window.py rename to dummy/src/toga_dummy/window.py diff --git a/src/gtk/CONTRIBUTING.md b/gtk/CONTRIBUTING.md similarity index 100% rename from src/gtk/CONTRIBUTING.md rename to gtk/CONTRIBUTING.md diff --git a/src/gtk/LICENSE b/gtk/LICENSE similarity index 100% rename from src/gtk/LICENSE rename to gtk/LICENSE diff --git a/src/gtk/MANIFEST.in b/gtk/MANIFEST.in similarity index 100% rename from src/gtk/MANIFEST.in rename to gtk/MANIFEST.in diff --git a/src/gtk/README.rst b/gtk/README.rst similarity index 100% rename from src/gtk/README.rst rename to gtk/README.rst diff --git a/src/gtk/pyproject.toml b/gtk/pyproject.toml similarity index 100% rename from src/gtk/pyproject.toml rename to gtk/pyproject.toml diff --git a/src/gtk/setup.cfg b/gtk/setup.cfg similarity index 100% rename from src/gtk/setup.cfg rename to gtk/setup.cfg diff --git a/src/gtk/setup.py b/gtk/setup.py similarity index 100% rename from src/gtk/setup.py rename to gtk/setup.py diff --git a/src/gtk/src/toga_gtk/__init__.py b/gtk/src/toga_gtk/__init__.py similarity index 100% rename from src/gtk/src/toga_gtk/__init__.py rename to gtk/src/toga_gtk/__init__.py diff --git a/src/gtk/src/toga_gtk/app.py b/gtk/src/toga_gtk/app.py similarity index 100% rename from src/gtk/src/toga_gtk/app.py rename to gtk/src/toga_gtk/app.py diff --git a/src/gtk/src/toga_gtk/colors.py b/gtk/src/toga_gtk/colors.py similarity index 100% rename from src/gtk/src/toga_gtk/colors.py rename to gtk/src/toga_gtk/colors.py diff --git a/src/gtk/src/toga_gtk/command.py b/gtk/src/toga_gtk/command.py similarity index 100% rename from src/gtk/src/toga_gtk/command.py rename to gtk/src/toga_gtk/command.py diff --git a/src/gtk/src/toga_gtk/dialogs.py b/gtk/src/toga_gtk/dialogs.py similarity index 100% rename from src/gtk/src/toga_gtk/dialogs.py rename to gtk/src/toga_gtk/dialogs.py diff --git a/src/gtk/src/toga_gtk/documents.py b/gtk/src/toga_gtk/documents.py similarity index 100% rename from src/gtk/src/toga_gtk/documents.py rename to gtk/src/toga_gtk/documents.py diff --git a/src/gtk/src/toga_gtk/factory.py b/gtk/src/toga_gtk/factory.py similarity index 100% rename from src/gtk/src/toga_gtk/factory.py rename to gtk/src/toga_gtk/factory.py diff --git a/src/gtk/src/toga_gtk/fonts.py b/gtk/src/toga_gtk/fonts.py similarity index 100% rename from src/gtk/src/toga_gtk/fonts.py rename to gtk/src/toga_gtk/fonts.py diff --git a/src/gtk/src/toga_gtk/hardware/__init__.py b/gtk/src/toga_gtk/hardware/__init__.py similarity index 100% rename from src/gtk/src/toga_gtk/hardware/__init__.py rename to gtk/src/toga_gtk/hardware/__init__.py diff --git a/src/gtk/src/toga_gtk/icons.py b/gtk/src/toga_gtk/icons.py similarity index 100% rename from src/gtk/src/toga_gtk/icons.py rename to gtk/src/toga_gtk/icons.py diff --git a/src/gtk/src/toga_gtk/images.py b/gtk/src/toga_gtk/images.py similarity index 100% rename from src/gtk/src/toga_gtk/images.py rename to gtk/src/toga_gtk/images.py diff --git a/src/gtk/src/toga_gtk/keys.py b/gtk/src/toga_gtk/keys.py similarity index 100% rename from src/gtk/src/toga_gtk/keys.py rename to gtk/src/toga_gtk/keys.py diff --git a/src/gtk/src/toga_gtk/libs/__init__.py b/gtk/src/toga_gtk/libs/__init__.py similarity index 100% rename from src/gtk/src/toga_gtk/libs/__init__.py rename to gtk/src/toga_gtk/libs/__init__.py diff --git a/src/gtk/src/toga_gtk/libs/gtk.py b/gtk/src/toga_gtk/libs/gtk.py similarity index 100% rename from src/gtk/src/toga_gtk/libs/gtk.py rename to gtk/src/toga_gtk/libs/gtk.py diff --git a/src/gtk/src/toga_gtk/libs/styles.py b/gtk/src/toga_gtk/libs/styles.py similarity index 100% rename from src/gtk/src/toga_gtk/libs/styles.py rename to gtk/src/toga_gtk/libs/styles.py diff --git a/src/gtk/src/toga_gtk/libs/utils.py b/gtk/src/toga_gtk/libs/utils.py similarity index 100% rename from src/gtk/src/toga_gtk/libs/utils.py rename to gtk/src/toga_gtk/libs/utils.py diff --git a/src/gtk/src/toga_gtk/paths.py b/gtk/src/toga_gtk/paths.py similarity index 100% rename from src/gtk/src/toga_gtk/paths.py rename to gtk/src/toga_gtk/paths.py diff --git a/src/gtk/src/toga_gtk/widgets/__init__.py b/gtk/src/toga_gtk/widgets/__init__.py similarity index 100% rename from src/gtk/src/toga_gtk/widgets/__init__.py rename to gtk/src/toga_gtk/widgets/__init__.py diff --git a/src/gtk/src/toga_gtk/widgets/activityindicator.py b/gtk/src/toga_gtk/widgets/activityindicator.py similarity index 100% rename from src/gtk/src/toga_gtk/widgets/activityindicator.py rename to gtk/src/toga_gtk/widgets/activityindicator.py diff --git a/src/gtk/src/toga_gtk/widgets/base.py b/gtk/src/toga_gtk/widgets/base.py similarity index 100% rename from src/gtk/src/toga_gtk/widgets/base.py rename to gtk/src/toga_gtk/widgets/base.py diff --git a/src/gtk/src/toga_gtk/widgets/box.py b/gtk/src/toga_gtk/widgets/box.py similarity index 100% rename from src/gtk/src/toga_gtk/widgets/box.py rename to gtk/src/toga_gtk/widgets/box.py diff --git a/src/gtk/src/toga_gtk/widgets/button.py b/gtk/src/toga_gtk/widgets/button.py similarity index 100% rename from src/gtk/src/toga_gtk/widgets/button.py rename to gtk/src/toga_gtk/widgets/button.py diff --git a/src/gtk/src/toga_gtk/widgets/canvas.py b/gtk/src/toga_gtk/widgets/canvas.py similarity index 100% rename from src/gtk/src/toga_gtk/widgets/canvas.py rename to gtk/src/toga_gtk/widgets/canvas.py diff --git a/src/gtk/src/toga_gtk/widgets/detailedlist.py b/gtk/src/toga_gtk/widgets/detailedlist.py similarity index 100% rename from src/gtk/src/toga_gtk/widgets/detailedlist.py rename to gtk/src/toga_gtk/widgets/detailedlist.py diff --git a/src/gtk/src/toga_gtk/widgets/divider.py b/gtk/src/toga_gtk/widgets/divider.py similarity index 100% rename from src/gtk/src/toga_gtk/widgets/divider.py rename to gtk/src/toga_gtk/widgets/divider.py diff --git a/src/gtk/src/toga_gtk/widgets/imageview.py b/gtk/src/toga_gtk/widgets/imageview.py similarity index 100% rename from src/gtk/src/toga_gtk/widgets/imageview.py rename to gtk/src/toga_gtk/widgets/imageview.py diff --git a/src/gtk/src/toga_gtk/widgets/internal/__init__.py b/gtk/src/toga_gtk/widgets/internal/__init__.py similarity index 100% rename from src/gtk/src/toga_gtk/widgets/internal/__init__.py rename to gtk/src/toga_gtk/widgets/internal/__init__.py diff --git a/src/gtk/src/toga_gtk/widgets/internal/buttons/__init__.py b/gtk/src/toga_gtk/widgets/internal/buttons/__init__.py similarity index 100% rename from src/gtk/src/toga_gtk/widgets/internal/buttons/__init__.py rename to gtk/src/toga_gtk/widgets/internal/buttons/__init__.py diff --git a/src/gtk/src/toga_gtk/widgets/internal/buttons/base.py b/gtk/src/toga_gtk/widgets/internal/buttons/base.py similarity index 100% rename from src/gtk/src/toga_gtk/widgets/internal/buttons/base.py rename to gtk/src/toga_gtk/widgets/internal/buttons/base.py diff --git a/src/gtk/src/toga_gtk/widgets/internal/buttons/refresh.py b/gtk/src/toga_gtk/widgets/internal/buttons/refresh.py similarity index 100% rename from src/gtk/src/toga_gtk/widgets/internal/buttons/refresh.py rename to gtk/src/toga_gtk/widgets/internal/buttons/refresh.py diff --git a/src/gtk/src/toga_gtk/widgets/internal/buttons/scroll.py b/gtk/src/toga_gtk/widgets/internal/buttons/scroll.py similarity index 100% rename from src/gtk/src/toga_gtk/widgets/internal/buttons/scroll.py rename to gtk/src/toga_gtk/widgets/internal/buttons/scroll.py diff --git a/src/gtk/src/toga_gtk/widgets/internal/rows/__init__.py b/gtk/src/toga_gtk/widgets/internal/rows/__init__.py similarity index 100% rename from src/gtk/src/toga_gtk/widgets/internal/rows/__init__.py rename to gtk/src/toga_gtk/widgets/internal/rows/__init__.py diff --git a/src/gtk/src/toga_gtk/widgets/internal/rows/base.py b/gtk/src/toga_gtk/widgets/internal/rows/base.py similarity index 100% rename from src/gtk/src/toga_gtk/widgets/internal/rows/base.py rename to gtk/src/toga_gtk/widgets/internal/rows/base.py diff --git a/src/gtk/src/toga_gtk/widgets/internal/rows/scrollable.py b/gtk/src/toga_gtk/widgets/internal/rows/scrollable.py similarity index 100% rename from src/gtk/src/toga_gtk/widgets/internal/rows/scrollable.py rename to gtk/src/toga_gtk/widgets/internal/rows/scrollable.py diff --git a/src/gtk/src/toga_gtk/widgets/internal/rows/texticon.py b/gtk/src/toga_gtk/widgets/internal/rows/texticon.py similarity index 100% rename from src/gtk/src/toga_gtk/widgets/internal/rows/texticon.py rename to gtk/src/toga_gtk/widgets/internal/rows/texticon.py diff --git a/src/gtk/src/toga_gtk/widgets/internal/sourcetreemodel.py b/gtk/src/toga_gtk/widgets/internal/sourcetreemodel.py similarity index 100% rename from src/gtk/src/toga_gtk/widgets/internal/sourcetreemodel.py rename to gtk/src/toga_gtk/widgets/internal/sourcetreemodel.py diff --git a/src/gtk/src/toga_gtk/widgets/label.py b/gtk/src/toga_gtk/widgets/label.py similarity index 100% rename from src/gtk/src/toga_gtk/widgets/label.py rename to gtk/src/toga_gtk/widgets/label.py diff --git a/src/gtk/src/toga_gtk/widgets/multilinetextinput.py b/gtk/src/toga_gtk/widgets/multilinetextinput.py similarity index 100% rename from src/gtk/src/toga_gtk/widgets/multilinetextinput.py rename to gtk/src/toga_gtk/widgets/multilinetextinput.py diff --git a/src/gtk/src/toga_gtk/widgets/numberinput.py b/gtk/src/toga_gtk/widgets/numberinput.py similarity index 100% rename from src/gtk/src/toga_gtk/widgets/numberinput.py rename to gtk/src/toga_gtk/widgets/numberinput.py diff --git a/src/gtk/src/toga_gtk/widgets/optioncontainer.py b/gtk/src/toga_gtk/widgets/optioncontainer.py similarity index 100% rename from src/gtk/src/toga_gtk/widgets/optioncontainer.py rename to gtk/src/toga_gtk/widgets/optioncontainer.py diff --git a/src/gtk/src/toga_gtk/widgets/passwordinput.py b/gtk/src/toga_gtk/widgets/passwordinput.py similarity index 100% rename from src/gtk/src/toga_gtk/widgets/passwordinput.py rename to gtk/src/toga_gtk/widgets/passwordinput.py diff --git a/src/gtk/src/toga_gtk/widgets/progressbar.py b/gtk/src/toga_gtk/widgets/progressbar.py similarity index 100% rename from src/gtk/src/toga_gtk/widgets/progressbar.py rename to gtk/src/toga_gtk/widgets/progressbar.py diff --git a/src/gtk/src/toga_gtk/widgets/scrollcontainer.py b/gtk/src/toga_gtk/widgets/scrollcontainer.py similarity index 100% rename from src/gtk/src/toga_gtk/widgets/scrollcontainer.py rename to gtk/src/toga_gtk/widgets/scrollcontainer.py diff --git a/src/gtk/src/toga_gtk/widgets/selection.py b/gtk/src/toga_gtk/widgets/selection.py similarity index 100% rename from src/gtk/src/toga_gtk/widgets/selection.py rename to gtk/src/toga_gtk/widgets/selection.py diff --git a/src/gtk/src/toga_gtk/widgets/slider.py b/gtk/src/toga_gtk/widgets/slider.py similarity index 100% rename from src/gtk/src/toga_gtk/widgets/slider.py rename to gtk/src/toga_gtk/widgets/slider.py diff --git a/src/gtk/src/toga_gtk/widgets/splitcontainer.py b/gtk/src/toga_gtk/widgets/splitcontainer.py similarity index 100% rename from src/gtk/src/toga_gtk/widgets/splitcontainer.py rename to gtk/src/toga_gtk/widgets/splitcontainer.py diff --git a/src/gtk/src/toga_gtk/widgets/switch.py b/gtk/src/toga_gtk/widgets/switch.py similarity index 100% rename from src/gtk/src/toga_gtk/widgets/switch.py rename to gtk/src/toga_gtk/widgets/switch.py diff --git a/src/gtk/src/toga_gtk/widgets/table.py b/gtk/src/toga_gtk/widgets/table.py similarity index 100% rename from src/gtk/src/toga_gtk/widgets/table.py rename to gtk/src/toga_gtk/widgets/table.py diff --git a/src/gtk/src/toga_gtk/widgets/textinput.py b/gtk/src/toga_gtk/widgets/textinput.py similarity index 100% rename from src/gtk/src/toga_gtk/widgets/textinput.py rename to gtk/src/toga_gtk/widgets/textinput.py diff --git a/src/gtk/src/toga_gtk/widgets/tree.py b/gtk/src/toga_gtk/widgets/tree.py similarity index 100% rename from src/gtk/src/toga_gtk/widgets/tree.py rename to gtk/src/toga_gtk/widgets/tree.py diff --git a/src/gtk/src/toga_gtk/widgets/webview.py b/gtk/src/toga_gtk/widgets/webview.py similarity index 100% rename from src/gtk/src/toga_gtk/widgets/webview.py rename to gtk/src/toga_gtk/widgets/webview.py diff --git a/src/gtk/src/toga_gtk/window.py b/gtk/src/toga_gtk/window.py similarity index 100% rename from src/gtk/src/toga_gtk/window.py rename to gtk/src/toga_gtk/window.py diff --git a/src/gtk/tests/__init__.py b/gtk/tests/__init__.py similarity index 100% rename from src/gtk/tests/__init__.py rename to gtk/tests/__init__.py diff --git a/src/gtk/tests/test_font.py b/gtk/tests/test_font.py similarity index 100% rename from src/gtk/tests/test_font.py rename to gtk/tests/test_font.py diff --git a/src/gtk/tests/test_implementation.py b/gtk/tests/test_implementation.py similarity index 100% rename from src/gtk/tests/test_implementation.py rename to gtk/tests/test_implementation.py diff --git a/src/gtk/tests/test_paths.py b/gtk/tests/test_paths.py similarity index 100% rename from src/gtk/tests/test_paths.py rename to gtk/tests/test_paths.py diff --git a/src/gtk/tests/widgets/__init__.py b/gtk/tests/widgets/__init__.py similarity index 100% rename from src/gtk/tests/widgets/__init__.py rename to gtk/tests/widgets/__init__.py diff --git a/src/gtk/tests/widgets/test_detailedlist.py b/gtk/tests/widgets/test_detailedlist.py similarity index 100% rename from src/gtk/tests/widgets/test_detailedlist.py rename to gtk/tests/widgets/test_detailedlist.py diff --git a/src/gtk/tests/widgets/test_imageview.py b/gtk/tests/widgets/test_imageview.py similarity index 100% rename from src/gtk/tests/widgets/test_imageview.py rename to gtk/tests/widgets/test_imageview.py diff --git a/src/gtk/tests/widgets/test_switch.py b/gtk/tests/widgets/test_switch.py similarity index 100% rename from src/gtk/tests/widgets/test_switch.py rename to gtk/tests/widgets/test_switch.py diff --git a/src/gtk/tests/widgets/test_table.py b/gtk/tests/widgets/test_table.py similarity index 100% rename from src/gtk/tests/widgets/test_table.py rename to gtk/tests/widgets/test_table.py diff --git a/src/gtk/tests/widgets/test_tree.py b/gtk/tests/widgets/test_tree.py similarity index 100% rename from src/gtk/tests/widgets/test_tree.py rename to gtk/tests/widgets/test_tree.py diff --git a/src/gtk/tests/widgets/utils.py b/gtk/tests/widgets/utils.py similarity index 100% rename from src/gtk/tests/widgets/utils.py rename to gtk/tests/widgets/utils.py diff --git a/src/gtk/tox.ini b/gtk/tox.ini similarity index 100% rename from src/gtk/tox.ini rename to gtk/tox.ini diff --git a/src/iOS/CONTRIBUTING.md b/iOS/CONTRIBUTING.md similarity index 100% rename from src/iOS/CONTRIBUTING.md rename to iOS/CONTRIBUTING.md diff --git a/src/iOS/LICENSE b/iOS/LICENSE similarity index 100% rename from src/iOS/LICENSE rename to iOS/LICENSE diff --git a/src/iOS/MANIFEST.in b/iOS/MANIFEST.in similarity index 100% rename from src/iOS/MANIFEST.in rename to iOS/MANIFEST.in diff --git a/src/iOS/README.rst b/iOS/README.rst similarity index 100% rename from src/iOS/README.rst rename to iOS/README.rst diff --git a/src/iOS/pyproject.toml b/iOS/pyproject.toml similarity index 100% rename from src/iOS/pyproject.toml rename to iOS/pyproject.toml diff --git a/src/iOS/setup.cfg b/iOS/setup.cfg similarity index 100% rename from src/iOS/setup.cfg rename to iOS/setup.cfg diff --git a/src/iOS/setup.py b/iOS/setup.py similarity index 100% rename from src/iOS/setup.py rename to iOS/setup.py diff --git a/src/iOS/src/toga_iOS/__init__.py b/iOS/src/toga_iOS/__init__.py similarity index 100% rename from src/iOS/src/toga_iOS/__init__.py rename to iOS/src/toga_iOS/__init__.py diff --git a/src/iOS/src/toga_iOS/app.py b/iOS/src/toga_iOS/app.py similarity index 100% rename from src/iOS/src/toga_iOS/app.py rename to iOS/src/toga_iOS/app.py diff --git a/src/iOS/src/toga_iOS/colors.py b/iOS/src/toga_iOS/colors.py similarity index 100% rename from src/iOS/src/toga_iOS/colors.py rename to iOS/src/toga_iOS/colors.py diff --git a/src/iOS/src/toga_iOS/constraints.py b/iOS/src/toga_iOS/constraints.py similarity index 100% rename from src/iOS/src/toga_iOS/constraints.py rename to iOS/src/toga_iOS/constraints.py diff --git a/src/iOS/src/toga_iOS/dialogs.py b/iOS/src/toga_iOS/dialogs.py similarity index 100% rename from src/iOS/src/toga_iOS/dialogs.py rename to iOS/src/toga_iOS/dialogs.py diff --git a/src/iOS/src/toga_iOS/factory.py b/iOS/src/toga_iOS/factory.py similarity index 100% rename from src/iOS/src/toga_iOS/factory.py rename to iOS/src/toga_iOS/factory.py diff --git a/src/iOS/src/toga_iOS/fonts.py b/iOS/src/toga_iOS/fonts.py similarity index 100% rename from src/iOS/src/toga_iOS/fonts.py rename to iOS/src/toga_iOS/fonts.py diff --git a/src/iOS/src/toga_iOS/hardware/__init__.py b/iOS/src/toga_iOS/hardware/__init__.py similarity index 100% rename from src/iOS/src/toga_iOS/hardware/__init__.py rename to iOS/src/toga_iOS/hardware/__init__.py diff --git a/src/iOS/src/toga_iOS/icons.py b/iOS/src/toga_iOS/icons.py similarity index 100% rename from src/iOS/src/toga_iOS/icons.py rename to iOS/src/toga_iOS/icons.py diff --git a/src/iOS/src/toga_iOS/images.py b/iOS/src/toga_iOS/images.py similarity index 100% rename from src/iOS/src/toga_iOS/images.py rename to iOS/src/toga_iOS/images.py diff --git a/src/iOS/src/toga_iOS/libs/__init__.py b/iOS/src/toga_iOS/libs/__init__.py similarity index 100% rename from src/iOS/src/toga_iOS/libs/__init__.py rename to iOS/src/toga_iOS/libs/__init__.py diff --git a/src/iOS/src/toga_iOS/libs/core_graphics.py b/iOS/src/toga_iOS/libs/core_graphics.py similarity index 100% rename from src/iOS/src/toga_iOS/libs/core_graphics.py rename to iOS/src/toga_iOS/libs/core_graphics.py diff --git a/src/iOS/src/toga_iOS/libs/foundation.py b/iOS/src/toga_iOS/libs/foundation.py similarity index 100% rename from src/iOS/src/toga_iOS/libs/foundation.py rename to iOS/src/toga_iOS/libs/foundation.py diff --git a/src/iOS/src/toga_iOS/libs/uikit.py b/iOS/src/toga_iOS/libs/uikit.py similarity index 100% rename from src/iOS/src/toga_iOS/libs/uikit.py rename to iOS/src/toga_iOS/libs/uikit.py diff --git a/src/iOS/src/toga_iOS/libs/webkit.py b/iOS/src/toga_iOS/libs/webkit.py similarity index 100% rename from src/iOS/src/toga_iOS/libs/webkit.py rename to iOS/src/toga_iOS/libs/webkit.py diff --git a/src/iOS/src/toga_iOS/paths.py b/iOS/src/toga_iOS/paths.py similarity index 100% rename from src/iOS/src/toga_iOS/paths.py rename to iOS/src/toga_iOS/paths.py diff --git a/src/iOS/src/toga_iOS/widgets/__init__.py b/iOS/src/toga_iOS/widgets/__init__.py similarity index 100% rename from src/iOS/src/toga_iOS/widgets/__init__.py rename to iOS/src/toga_iOS/widgets/__init__.py diff --git a/src/iOS/src/toga_iOS/widgets/base.py b/iOS/src/toga_iOS/widgets/base.py similarity index 100% rename from src/iOS/src/toga_iOS/widgets/base.py rename to iOS/src/toga_iOS/widgets/base.py diff --git a/src/iOS/src/toga_iOS/widgets/box.py b/iOS/src/toga_iOS/widgets/box.py similarity index 100% rename from src/iOS/src/toga_iOS/widgets/box.py rename to iOS/src/toga_iOS/widgets/box.py diff --git a/src/iOS/src/toga_iOS/widgets/button.py b/iOS/src/toga_iOS/widgets/button.py similarity index 100% rename from src/iOS/src/toga_iOS/widgets/button.py rename to iOS/src/toga_iOS/widgets/button.py diff --git a/src/iOS/src/toga_iOS/widgets/canvas.py b/iOS/src/toga_iOS/widgets/canvas.py similarity index 100% rename from src/iOS/src/toga_iOS/widgets/canvas.py rename to iOS/src/toga_iOS/widgets/canvas.py diff --git a/src/iOS/src/toga_iOS/widgets/detailedlist.py b/iOS/src/toga_iOS/widgets/detailedlist.py similarity index 100% rename from src/iOS/src/toga_iOS/widgets/detailedlist.py rename to iOS/src/toga_iOS/widgets/detailedlist.py diff --git a/src/iOS/src/toga_iOS/widgets/imageview.py b/iOS/src/toga_iOS/widgets/imageview.py similarity index 100% rename from src/iOS/src/toga_iOS/widgets/imageview.py rename to iOS/src/toga_iOS/widgets/imageview.py diff --git a/src/iOS/src/toga_iOS/widgets/label.py b/iOS/src/toga_iOS/widgets/label.py similarity index 100% rename from src/iOS/src/toga_iOS/widgets/label.py rename to iOS/src/toga_iOS/widgets/label.py diff --git a/src/iOS/src/toga_iOS/widgets/multilinetextinput.py b/iOS/src/toga_iOS/widgets/multilinetextinput.py similarity index 100% rename from src/iOS/src/toga_iOS/widgets/multilinetextinput.py rename to iOS/src/toga_iOS/widgets/multilinetextinput.py diff --git a/src/iOS/src/toga_iOS/widgets/navigationview.py b/iOS/src/toga_iOS/widgets/navigationview.py similarity index 100% rename from src/iOS/src/toga_iOS/widgets/navigationview.py rename to iOS/src/toga_iOS/widgets/navigationview.py diff --git a/src/iOS/src/toga_iOS/widgets/numberinput.py b/iOS/src/toga_iOS/widgets/numberinput.py similarity index 100% rename from src/iOS/src/toga_iOS/widgets/numberinput.py rename to iOS/src/toga_iOS/widgets/numberinput.py diff --git a/src/iOS/src/toga_iOS/widgets/passwordinput.py b/iOS/src/toga_iOS/widgets/passwordinput.py similarity index 100% rename from src/iOS/src/toga_iOS/widgets/passwordinput.py rename to iOS/src/toga_iOS/widgets/passwordinput.py diff --git a/src/iOS/src/toga_iOS/widgets/progressbar.py b/iOS/src/toga_iOS/widgets/progressbar.py similarity index 100% rename from src/iOS/src/toga_iOS/widgets/progressbar.py rename to iOS/src/toga_iOS/widgets/progressbar.py diff --git a/src/iOS/src/toga_iOS/widgets/scrollcontainer.py b/iOS/src/toga_iOS/widgets/scrollcontainer.py similarity index 100% rename from src/iOS/src/toga_iOS/widgets/scrollcontainer.py rename to iOS/src/toga_iOS/widgets/scrollcontainer.py diff --git a/src/iOS/src/toga_iOS/widgets/selection.py b/iOS/src/toga_iOS/widgets/selection.py similarity index 100% rename from src/iOS/src/toga_iOS/widgets/selection.py rename to iOS/src/toga_iOS/widgets/selection.py diff --git a/src/iOS/src/toga_iOS/widgets/slider.py b/iOS/src/toga_iOS/widgets/slider.py similarity index 100% rename from src/iOS/src/toga_iOS/widgets/slider.py rename to iOS/src/toga_iOS/widgets/slider.py diff --git a/src/iOS/src/toga_iOS/widgets/switch.py b/iOS/src/toga_iOS/widgets/switch.py similarity index 100% rename from src/iOS/src/toga_iOS/widgets/switch.py rename to iOS/src/toga_iOS/widgets/switch.py diff --git a/src/iOS/src/toga_iOS/widgets/textinput.py b/iOS/src/toga_iOS/widgets/textinput.py similarity index 100% rename from src/iOS/src/toga_iOS/widgets/textinput.py rename to iOS/src/toga_iOS/widgets/textinput.py diff --git a/src/iOS/src/toga_iOS/widgets/webview.py b/iOS/src/toga_iOS/widgets/webview.py similarity index 100% rename from src/iOS/src/toga_iOS/widgets/webview.py rename to iOS/src/toga_iOS/widgets/webview.py diff --git a/src/iOS/src/toga_iOS/window.py b/iOS/src/toga_iOS/window.py similarity index 100% rename from src/iOS/src/toga_iOS/window.py rename to iOS/src/toga_iOS/window.py diff --git a/src/iOS/tests/__init__.py b/iOS/tests/__init__.py similarity index 100% rename from src/iOS/tests/__init__.py rename to iOS/tests/__init__.py diff --git a/src/iOS/tests/test_implementation.py b/iOS/tests/test_implementation.py similarity index 100% rename from src/iOS/tests/test_implementation.py rename to iOS/tests/test_implementation.py diff --git a/src/iOS/tox.ini b/iOS/tox.ini similarity index 100% rename from src/iOS/tox.ini rename to iOS/tox.ini diff --git a/src/web/CONTRIBUTING.md b/web/CONTRIBUTING.md similarity index 100% rename from src/web/CONTRIBUTING.md rename to web/CONTRIBUTING.md diff --git a/src/web/LICENSE b/web/LICENSE similarity index 100% rename from src/web/LICENSE rename to web/LICENSE diff --git a/src/web/MANIFEST.in b/web/MANIFEST.in similarity index 100% rename from src/web/MANIFEST.in rename to web/MANIFEST.in diff --git a/src/web/README.rst b/web/README.rst similarity index 100% rename from src/web/README.rst rename to web/README.rst diff --git a/src/web/pyproject.toml b/web/pyproject.toml similarity index 100% rename from src/web/pyproject.toml rename to web/pyproject.toml diff --git a/src/web/setup.cfg b/web/setup.cfg similarity index 100% rename from src/web/setup.cfg rename to web/setup.cfg diff --git a/src/web/setup.py b/web/setup.py similarity index 100% rename from src/web/setup.py rename to web/setup.py diff --git a/src/web/src/toga_web/__init__.py b/web/src/toga_web/__init__.py similarity index 100% rename from src/web/src/toga_web/__init__.py rename to web/src/toga_web/__init__.py diff --git a/src/web/src/toga_web/app.py b/web/src/toga_web/app.py similarity index 100% rename from src/web/src/toga_web/app.py rename to web/src/toga_web/app.py diff --git a/src/web/src/toga_web/command.py b/web/src/toga_web/command.py similarity index 100% rename from src/web/src/toga_web/command.py rename to web/src/toga_web/command.py diff --git a/src/web/src/toga_web/dialogs.py b/web/src/toga_web/dialogs.py similarity index 100% rename from src/web/src/toga_web/dialogs.py rename to web/src/toga_web/dialogs.py diff --git a/src/web/src/toga_web/factory.py b/web/src/toga_web/factory.py similarity index 100% rename from src/web/src/toga_web/factory.py rename to web/src/toga_web/factory.py diff --git a/src/web/src/toga_web/icons.py b/web/src/toga_web/icons.py similarity index 100% rename from src/web/src/toga_web/icons.py rename to web/src/toga_web/icons.py diff --git a/src/web/src/toga_web/libs.py b/web/src/toga_web/libs.py similarity index 100% rename from src/web/src/toga_web/libs.py rename to web/src/toga_web/libs.py diff --git a/src/web/src/toga_web/paths.py b/web/src/toga_web/paths.py similarity index 100% rename from src/web/src/toga_web/paths.py rename to web/src/toga_web/paths.py diff --git a/src/web/src/toga_web/static/toga.css b/web/src/toga_web/static/toga.css similarity index 100% rename from src/web/src/toga_web/static/toga.css rename to web/src/toga_web/static/toga.css diff --git a/src/web/src/toga_web/widgets/__init__.py b/web/src/toga_web/widgets/__init__.py similarity index 100% rename from src/web/src/toga_web/widgets/__init__.py rename to web/src/toga_web/widgets/__init__.py diff --git a/src/web/src/toga_web/widgets/base.py b/web/src/toga_web/widgets/base.py similarity index 100% rename from src/web/src/toga_web/widgets/base.py rename to web/src/toga_web/widgets/base.py diff --git a/src/web/src/toga_web/widgets/box.py b/web/src/toga_web/widgets/box.py similarity index 100% rename from src/web/src/toga_web/widgets/box.py rename to web/src/toga_web/widgets/box.py diff --git a/src/web/src/toga_web/widgets/button.py b/web/src/toga_web/widgets/button.py similarity index 100% rename from src/web/src/toga_web/widgets/button.py rename to web/src/toga_web/widgets/button.py diff --git a/src/web/src/toga_web/widgets/label.py b/web/src/toga_web/widgets/label.py similarity index 100% rename from src/web/src/toga_web/widgets/label.py rename to web/src/toga_web/widgets/label.py diff --git a/src/web/src/toga_web/widgets/textinput.py b/web/src/toga_web/widgets/textinput.py similarity index 100% rename from src/web/src/toga_web/widgets/textinput.py rename to web/src/toga_web/widgets/textinput.py diff --git a/src/web/src/toga_web/window.py b/web/src/toga_web/window.py similarity index 100% rename from src/web/src/toga_web/window.py rename to web/src/toga_web/window.py diff --git a/src/web/tests/__init__.py b/web/tests/__init__.py similarity index 100% rename from src/web/tests/__init__.py rename to web/tests/__init__.py diff --git a/src/web/tests/test_implementation.py b/web/tests/test_implementation.py similarity index 100% rename from src/web/tests/test_implementation.py rename to web/tests/test_implementation.py diff --git a/src/web/tox.ini b/web/tox.ini similarity index 100% rename from src/web/tox.ini rename to web/tox.ini diff --git a/src/winforms/CONTRIBUTING.md b/winforms/CONTRIBUTING.md similarity index 100% rename from src/winforms/CONTRIBUTING.md rename to winforms/CONTRIBUTING.md diff --git a/src/winforms/LICENSE b/winforms/LICENSE similarity index 100% rename from src/winforms/LICENSE rename to winforms/LICENSE diff --git a/src/winforms/MANIFEST.in b/winforms/MANIFEST.in similarity index 100% rename from src/winforms/MANIFEST.in rename to winforms/MANIFEST.in diff --git a/src/winforms/README.rst b/winforms/README.rst similarity index 100% rename from src/winforms/README.rst rename to winforms/README.rst diff --git a/src/winforms/pyproject.toml b/winforms/pyproject.toml similarity index 100% rename from src/winforms/pyproject.toml rename to winforms/pyproject.toml diff --git a/src/winforms/setup.cfg b/winforms/setup.cfg similarity index 100% rename from src/winforms/setup.cfg rename to winforms/setup.cfg diff --git a/src/winforms/setup.py b/winforms/setup.py similarity index 100% rename from src/winforms/setup.py rename to winforms/setup.py diff --git a/src/winforms/src/toga_winforms/__init__.py b/winforms/src/toga_winforms/__init__.py similarity index 100% rename from src/winforms/src/toga_winforms/__init__.py rename to winforms/src/toga_winforms/__init__.py diff --git a/src/winforms/src/toga_winforms/app.py b/winforms/src/toga_winforms/app.py similarity index 100% rename from src/winforms/src/toga_winforms/app.py rename to winforms/src/toga_winforms/app.py diff --git a/src/winforms/src/toga_winforms/colors.py b/winforms/src/toga_winforms/colors.py similarity index 100% rename from src/winforms/src/toga_winforms/colors.py rename to winforms/src/toga_winforms/colors.py diff --git a/src/winforms/src/toga_winforms/command.py b/winforms/src/toga_winforms/command.py similarity index 100% rename from src/winforms/src/toga_winforms/command.py rename to winforms/src/toga_winforms/command.py diff --git a/src/winforms/src/toga_winforms/dialogs.py b/winforms/src/toga_winforms/dialogs.py similarity index 100% rename from src/winforms/src/toga_winforms/dialogs.py rename to winforms/src/toga_winforms/dialogs.py diff --git a/src/winforms/src/toga_winforms/factory.py b/winforms/src/toga_winforms/factory.py similarity index 100% rename from src/winforms/src/toga_winforms/factory.py rename to winforms/src/toga_winforms/factory.py diff --git a/src/winforms/src/toga_winforms/fonts.py b/winforms/src/toga_winforms/fonts.py similarity index 100% rename from src/winforms/src/toga_winforms/fonts.py rename to winforms/src/toga_winforms/fonts.py diff --git a/src/winforms/src/toga_winforms/hardware/__init__.py b/winforms/src/toga_winforms/hardware/__init__.py similarity index 100% rename from src/winforms/src/toga_winforms/hardware/__init__.py rename to winforms/src/toga_winforms/hardware/__init__.py diff --git a/src/winforms/src/toga_winforms/icons.py b/winforms/src/toga_winforms/icons.py similarity index 100% rename from src/winforms/src/toga_winforms/icons.py rename to winforms/src/toga_winforms/icons.py diff --git a/src/winforms/src/toga_winforms/images.py b/winforms/src/toga_winforms/images.py similarity index 100% rename from src/winforms/src/toga_winforms/images.py rename to winforms/src/toga_winforms/images.py diff --git a/src/winforms/src/toga_winforms/keys.py b/winforms/src/toga_winforms/keys.py similarity index 100% rename from src/winforms/src/toga_winforms/keys.py rename to winforms/src/toga_winforms/keys.py diff --git a/src/winforms/src/toga_winforms/libs/WebView2/LICENSE.md b/winforms/src/toga_winforms/libs/WebView2/LICENSE.md similarity index 100% rename from src/winforms/src/toga_winforms/libs/WebView2/LICENSE.md rename to winforms/src/toga_winforms/libs/WebView2/LICENSE.md diff --git a/src/winforms/src/toga_winforms/libs/WebView2/Microsoft.Web.WebView2.Core.dll b/winforms/src/toga_winforms/libs/WebView2/Microsoft.Web.WebView2.Core.dll similarity index 100% rename from src/winforms/src/toga_winforms/libs/WebView2/Microsoft.Web.WebView2.Core.dll rename to winforms/src/toga_winforms/libs/WebView2/Microsoft.Web.WebView2.Core.dll diff --git a/src/winforms/src/toga_winforms/libs/WebView2/Microsoft.Web.WebView2.WinForms.dll b/winforms/src/toga_winforms/libs/WebView2/Microsoft.Web.WebView2.WinForms.dll similarity index 100% rename from src/winforms/src/toga_winforms/libs/WebView2/Microsoft.Web.WebView2.WinForms.dll rename to winforms/src/toga_winforms/libs/WebView2/Microsoft.Web.WebView2.WinForms.dll diff --git a/src/winforms/src/toga_winforms/libs/WebView2/README.md b/winforms/src/toga_winforms/libs/WebView2/README.md similarity index 100% rename from src/winforms/src/toga_winforms/libs/WebView2/README.md rename to winforms/src/toga_winforms/libs/WebView2/README.md diff --git a/src/winforms/src/toga_winforms/libs/WebView2/arm64/WebView2Loader.dll b/winforms/src/toga_winforms/libs/WebView2/arm64/WebView2Loader.dll similarity index 100% rename from src/winforms/src/toga_winforms/libs/WebView2/arm64/WebView2Loader.dll rename to winforms/src/toga_winforms/libs/WebView2/arm64/WebView2Loader.dll diff --git a/src/winforms/src/toga_winforms/libs/WebView2/x64/WebView2Loader.dll b/winforms/src/toga_winforms/libs/WebView2/x64/WebView2Loader.dll similarity index 100% rename from src/winforms/src/toga_winforms/libs/WebView2/x64/WebView2Loader.dll rename to winforms/src/toga_winforms/libs/WebView2/x64/WebView2Loader.dll diff --git a/src/winforms/src/toga_winforms/libs/WebView2/x86/WebView2Loader.dll b/winforms/src/toga_winforms/libs/WebView2/x86/WebView2Loader.dll similarity index 100% rename from src/winforms/src/toga_winforms/libs/WebView2/x86/WebView2Loader.dll rename to winforms/src/toga_winforms/libs/WebView2/x86/WebView2Loader.dll diff --git a/src/winforms/src/toga_winforms/libs/__init__.py b/winforms/src/toga_winforms/libs/__init__.py similarity index 100% rename from src/winforms/src/toga_winforms/libs/__init__.py rename to winforms/src/toga_winforms/libs/__init__.py diff --git a/src/winforms/src/toga_winforms/libs/extensions.py b/winforms/src/toga_winforms/libs/extensions.py similarity index 100% rename from src/winforms/src/toga_winforms/libs/extensions.py rename to winforms/src/toga_winforms/libs/extensions.py diff --git a/src/winforms/src/toga_winforms/libs/fonts.py b/winforms/src/toga_winforms/libs/fonts.py similarity index 100% rename from src/winforms/src/toga_winforms/libs/fonts.py rename to winforms/src/toga_winforms/libs/fonts.py diff --git a/src/winforms/src/toga_winforms/libs/proactor.py b/winforms/src/toga_winforms/libs/proactor.py similarity index 100% rename from src/winforms/src/toga_winforms/libs/proactor.py rename to winforms/src/toga_winforms/libs/proactor.py diff --git a/src/winforms/src/toga_winforms/libs/winforms.py b/winforms/src/toga_winforms/libs/winforms.py similarity index 100% rename from src/winforms/src/toga_winforms/libs/winforms.py rename to winforms/src/toga_winforms/libs/winforms.py diff --git a/src/winforms/src/toga_winforms/paths.py b/winforms/src/toga_winforms/paths.py similarity index 100% rename from src/winforms/src/toga_winforms/paths.py rename to winforms/src/toga_winforms/paths.py diff --git a/src/winforms/src/toga_winforms/widgets/__init__.py b/winforms/src/toga_winforms/widgets/__init__.py similarity index 100% rename from src/winforms/src/toga_winforms/widgets/__init__.py rename to winforms/src/toga_winforms/widgets/__init__.py diff --git a/src/winforms/src/toga_winforms/widgets/base.py b/winforms/src/toga_winforms/widgets/base.py similarity index 100% rename from src/winforms/src/toga_winforms/widgets/base.py rename to winforms/src/toga_winforms/widgets/base.py diff --git a/src/winforms/src/toga_winforms/widgets/box.py b/winforms/src/toga_winforms/widgets/box.py similarity index 100% rename from src/winforms/src/toga_winforms/widgets/box.py rename to winforms/src/toga_winforms/widgets/box.py diff --git a/src/winforms/src/toga_winforms/widgets/button.py b/winforms/src/toga_winforms/widgets/button.py similarity index 100% rename from src/winforms/src/toga_winforms/widgets/button.py rename to winforms/src/toga_winforms/widgets/button.py diff --git a/src/winforms/src/toga_winforms/widgets/canvas.py b/winforms/src/toga_winforms/widgets/canvas.py similarity index 100% rename from src/winforms/src/toga_winforms/widgets/canvas.py rename to winforms/src/toga_winforms/widgets/canvas.py diff --git a/src/winforms/src/toga_winforms/widgets/datepicker.py b/winforms/src/toga_winforms/widgets/datepicker.py similarity index 100% rename from src/winforms/src/toga_winforms/widgets/datepicker.py rename to winforms/src/toga_winforms/widgets/datepicker.py diff --git a/src/winforms/src/toga_winforms/widgets/detailedlist.py b/winforms/src/toga_winforms/widgets/detailedlist.py similarity index 100% rename from src/winforms/src/toga_winforms/widgets/detailedlist.py rename to winforms/src/toga_winforms/widgets/detailedlist.py diff --git a/src/winforms/src/toga_winforms/widgets/divider.py b/winforms/src/toga_winforms/widgets/divider.py similarity index 100% rename from src/winforms/src/toga_winforms/widgets/divider.py rename to winforms/src/toga_winforms/widgets/divider.py diff --git a/src/winforms/src/toga_winforms/widgets/imageview.py b/winforms/src/toga_winforms/widgets/imageview.py similarity index 100% rename from src/winforms/src/toga_winforms/widgets/imageview.py rename to winforms/src/toga_winforms/widgets/imageview.py diff --git a/src/winforms/src/toga_winforms/widgets/label.py b/winforms/src/toga_winforms/widgets/label.py similarity index 100% rename from src/winforms/src/toga_winforms/widgets/label.py rename to winforms/src/toga_winforms/widgets/label.py diff --git a/src/winforms/src/toga_winforms/widgets/multilinetextinput.py b/winforms/src/toga_winforms/widgets/multilinetextinput.py similarity index 100% rename from src/winforms/src/toga_winforms/widgets/multilinetextinput.py rename to winforms/src/toga_winforms/widgets/multilinetextinput.py diff --git a/src/winforms/src/toga_winforms/widgets/numberinput.py b/winforms/src/toga_winforms/widgets/numberinput.py similarity index 100% rename from src/winforms/src/toga_winforms/widgets/numberinput.py rename to winforms/src/toga_winforms/widgets/numberinput.py diff --git a/src/winforms/src/toga_winforms/widgets/optioncontainer.py b/winforms/src/toga_winforms/widgets/optioncontainer.py similarity index 100% rename from src/winforms/src/toga_winforms/widgets/optioncontainer.py rename to winforms/src/toga_winforms/widgets/optioncontainer.py diff --git a/src/winforms/src/toga_winforms/widgets/passwordinput.py b/winforms/src/toga_winforms/widgets/passwordinput.py similarity index 100% rename from src/winforms/src/toga_winforms/widgets/passwordinput.py rename to winforms/src/toga_winforms/widgets/passwordinput.py diff --git a/src/winforms/src/toga_winforms/widgets/progressbar.py b/winforms/src/toga_winforms/widgets/progressbar.py similarity index 100% rename from src/winforms/src/toga_winforms/widgets/progressbar.py rename to winforms/src/toga_winforms/widgets/progressbar.py diff --git a/src/winforms/src/toga_winforms/widgets/scrollcontainer.py b/winforms/src/toga_winforms/widgets/scrollcontainer.py similarity index 100% rename from src/winforms/src/toga_winforms/widgets/scrollcontainer.py rename to winforms/src/toga_winforms/widgets/scrollcontainer.py diff --git a/src/winforms/src/toga_winforms/widgets/selection.py b/winforms/src/toga_winforms/widgets/selection.py similarity index 100% rename from src/winforms/src/toga_winforms/widgets/selection.py rename to winforms/src/toga_winforms/widgets/selection.py diff --git a/src/winforms/src/toga_winforms/widgets/slider.py b/winforms/src/toga_winforms/widgets/slider.py similarity index 100% rename from src/winforms/src/toga_winforms/widgets/slider.py rename to winforms/src/toga_winforms/widgets/slider.py diff --git a/src/winforms/src/toga_winforms/widgets/splitcontainer.py b/winforms/src/toga_winforms/widgets/splitcontainer.py similarity index 100% rename from src/winforms/src/toga_winforms/widgets/splitcontainer.py rename to winforms/src/toga_winforms/widgets/splitcontainer.py diff --git a/src/winforms/src/toga_winforms/widgets/switch.py b/winforms/src/toga_winforms/widgets/switch.py similarity index 100% rename from src/winforms/src/toga_winforms/widgets/switch.py rename to winforms/src/toga_winforms/widgets/switch.py diff --git a/src/winforms/src/toga_winforms/widgets/table.py b/winforms/src/toga_winforms/widgets/table.py similarity index 100% rename from src/winforms/src/toga_winforms/widgets/table.py rename to winforms/src/toga_winforms/widgets/table.py diff --git a/src/winforms/src/toga_winforms/widgets/textinput.py b/winforms/src/toga_winforms/widgets/textinput.py similarity index 100% rename from src/winforms/src/toga_winforms/widgets/textinput.py rename to winforms/src/toga_winforms/widgets/textinput.py diff --git a/src/winforms/src/toga_winforms/widgets/timepicker.py b/winforms/src/toga_winforms/widgets/timepicker.py similarity index 100% rename from src/winforms/src/toga_winforms/widgets/timepicker.py rename to winforms/src/toga_winforms/widgets/timepicker.py diff --git a/src/winforms/src/toga_winforms/widgets/tree.py b/winforms/src/toga_winforms/widgets/tree.py similarity index 100% rename from src/winforms/src/toga_winforms/widgets/tree.py rename to winforms/src/toga_winforms/widgets/tree.py diff --git a/src/winforms/src/toga_winforms/widgets/webview.py b/winforms/src/toga_winforms/widgets/webview.py similarity index 100% rename from src/winforms/src/toga_winforms/widgets/webview.py rename to winforms/src/toga_winforms/widgets/webview.py diff --git a/src/winforms/src/toga_winforms/window.py b/winforms/src/toga_winforms/window.py similarity index 100% rename from src/winforms/src/toga_winforms/window.py rename to winforms/src/toga_winforms/window.py diff --git a/src/winforms/tests/__init__.py b/winforms/tests/__init__.py similarity index 100% rename from src/winforms/tests/__init__.py rename to winforms/tests/__init__.py diff --git a/src/winforms/tests/test_implementation.py b/winforms/tests/test_implementation.py similarity index 100% rename from src/winforms/tests/test_implementation.py rename to winforms/tests/test_implementation.py diff --git a/src/winforms/tests/test_paths.py b/winforms/tests/test_paths.py similarity index 100% rename from src/winforms/tests/test_paths.py rename to winforms/tests/test_paths.py diff --git a/src/winforms/tox.ini b/winforms/tox.ini similarity index 100% rename from src/winforms/tox.ini rename to winforms/tox.ini From 19f4eaac83a1ae6ea9d34d9fa3d48ceb331b3021 Mon Sep 17 00:00:00 2001 From: Malcolm Smith Date: Mon, 7 Nov 2022 16:35:29 +0000 Subject: [PATCH 02/16] Update paths in example projects --- .../{{ cookiecutter.name }}/pyproject.toml | 12 ++++++------ examples/activityindicator/pyproject.toml | 14 +++++++------- examples/beeliza/pyproject.toml | 14 +++++++------- examples/box/pyproject.toml | 14 +++++++------- examples/button/pyproject.toml | 14 +++++++------- examples/canvas/pyproject.toml | 14 +++++++------- examples/colors/pyproject.toml | 14 +++++++------- examples/command/pyproject.toml | 12 ++++++------ examples/date_and_time/pyproject.toml | 14 +++++++------- examples/detailedlist/pyproject.toml | 14 +++++++------- examples/dialogs/pyproject.toml | 14 +++++++------- examples/divider/pyproject.toml | 14 +++++++------- examples/examples_overview/pyproject.toml | 14 +++++++------- examples/focus/pyproject.toml | 14 +++++++------- examples/font/pyproject.toml | 14 +++++++------- examples/handlers/pyproject.toml | 14 +++++++------- examples/imageview/pyproject.toml | 14 +++++++------- examples/layout/pyproject.toml | 14 +++++++------- examples/multilinetextinput/pyproject.toml | 14 +++++++------- examples/numberinput/pyproject.toml | 14 +++++++------- examples/optioncontainer/pyproject.toml | 14 +++++++------- examples/positron-django/pyproject.toml | 14 +++++++------- examples/positron-static/pyproject.toml | 14 +++++++------- examples/progressbar/pyproject.toml | 14 +++++++------- examples/scrollcontainer/pyproject.toml | 14 +++++++------- examples/selection/pyproject.toml | 14 +++++++------- examples/slider/pyproject.toml | 14 +++++++------- examples/switch_demo/pyproject.toml | 14 +++++++------- examples/table/pyproject.toml | 14 +++++++------- examples/table_source/pyproject.toml | 14 +++++++------- examples/textinput/pyproject.toml | 14 +++++++------- examples/tree/pyproject.toml | 14 +++++++------- examples/tree_source/pyproject.toml | 14 +++++++------- examples/tutorial0/pyproject.toml | 14 +++++++------- examples/tutorial1/pyproject.toml | 14 +++++++------- examples/tutorial2/pyproject.toml | 14 +++++++------- examples/tutorial3/pyproject.toml | 14 +++++++------- examples/tutorial4/pyproject.toml | 14 +++++++------- examples/webview/pyproject.toml | 14 +++++++------- examples/window/pyproject.toml | 14 +++++++------- 40 files changed, 278 insertions(+), 278 deletions(-) diff --git a/examples/.template/{{ cookiecutter.name }}/pyproject.toml b/examples/.template/{{ cookiecutter.name }}/pyproject.toml index ec6e516d19..ea0cb5fa4c 100644 --- a/examples/.template/{{ cookiecutter.name }}/pyproject.toml +++ b/examples/.template/{{ cookiecutter.name }}/pyproject.toml @@ -15,34 +15,34 @@ formal_name = "{{ cookiecutter.formal_name }}" description = "A testing app" sources = ['{{ cookiecutter.name }}'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.{{ cookiecutter.name }}.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.{{ cookiecutter.name }}.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.{{ cookiecutter.name }}.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.{{ cookiecutter.name }}.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.{{ cookiecutter.name }}.android] requires = [ - '../../src/android', + '../../android', ] diff --git a/examples/activityindicator/pyproject.toml b/examples/activityindicator/pyproject.toml index 9d2b5bc2b5..61f7da9c1e 100644 --- a/examples/activityindicator/pyproject.toml +++ b/examples/activityindicator/pyproject.toml @@ -15,41 +15,41 @@ formal_name = "Activity Indicator" description = "A testing app" sources = ['activityindicator'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.activityindicator.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.activityindicator.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.activityindicator.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.activityindicator.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.activityindicator.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.activityindicator.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/beeliza/pyproject.toml b/examples/beeliza/pyproject.toml index 4cd338c926..d04a7a17c8 100644 --- a/examples/beeliza/pyproject.toml +++ b/examples/beeliza/pyproject.toml @@ -15,41 +15,41 @@ formal_name = "Beeliza" description = "A testing app" sources = ['beeliza'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.beeliza.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.beeliza.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.beeliza.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.beeliza.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.beeliza.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.beeliza.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/box/pyproject.toml b/examples/box/pyproject.toml index 542b05b9ee..bb563f2274 100644 --- a/examples/box/pyproject.toml +++ b/examples/box/pyproject.toml @@ -15,41 +15,41 @@ formal_name = "Box Demo" description = "A testing app" sources = ['box'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.box.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.box.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.box.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.box.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.box.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.box.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/button/pyproject.toml b/examples/button/pyproject.toml index f31644e598..7edbb5126a 100644 --- a/examples/button/pyproject.toml +++ b/examples/button/pyproject.toml @@ -15,41 +15,41 @@ formal_name = "Button Demo" description = "A testing app" sources = ['button'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.button.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.button.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.button.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.button.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.button.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.button.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/canvas/pyproject.toml b/examples/canvas/pyproject.toml index 0715f0a08b..25acac2c8b 100644 --- a/examples/canvas/pyproject.toml +++ b/examples/canvas/pyproject.toml @@ -15,41 +15,41 @@ formal_name = "Canvas Demo" description = "A testing app" sources = ['canvas'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.canvas.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.canvas.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.canvas.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.canvas.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.canvas.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.canvas.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/colors/pyproject.toml b/examples/colors/pyproject.toml index 1e1aa613c9..9250ccdbd2 100644 --- a/examples/colors/pyproject.toml +++ b/examples/colors/pyproject.toml @@ -15,41 +15,41 @@ formal_name = "colors" description = "A testing app" sources = ['colors'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.colors.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.colors.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.colors.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.colors.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.colors.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.colors.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/command/pyproject.toml b/examples/command/pyproject.toml index 905ddf2ce5..8fa7a09f50 100644 --- a/examples/command/pyproject.toml +++ b/examples/command/pyproject.toml @@ -15,19 +15,19 @@ formal_name = "Command Example" description = "A testing app" sources = ['command'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.command.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.command.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.command.windows] @@ -38,18 +38,18 @@ requires = [ # Mobile deployments [tool.briefcase.app.command.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.command.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.command.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/date_and_time/pyproject.toml b/examples/date_and_time/pyproject.toml index 92a56ee6a8..62e4b06fd3 100644 --- a/examples/date_and_time/pyproject.toml +++ b/examples/date_and_time/pyproject.toml @@ -15,41 +15,41 @@ formal_name = "Date And Time" description = "A testing app" sources = ['date_and_time'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.date_and_time.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.date_and_time.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.date_and_time.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.date_and_time.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.date_and_time.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.date_and_time.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/detailedlist/pyproject.toml b/examples/detailedlist/pyproject.toml index 29a36a6c63..f61d0e3713 100644 --- a/examples/detailedlist/pyproject.toml +++ b/examples/detailedlist/pyproject.toml @@ -15,41 +15,41 @@ formal_name = "DetailedList Demo" description = "A testing app" sources = ['detailedlist'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.detailedlist.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.detailedlist.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.detailedlist.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.detailedlist.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.detailedlist.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.detailedlist.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/dialogs/pyproject.toml b/examples/dialogs/pyproject.toml index bc2f183665..108a9d224e 100644 --- a/examples/dialogs/pyproject.toml +++ b/examples/dialogs/pyproject.toml @@ -15,41 +15,41 @@ formal_name = "Dialog Demo" description = "A testing app" sources = ['dialogs'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.dialogs.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.dialogs.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.dialogs.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.dialogs.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.dialogs.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.dialogs.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/divider/pyproject.toml b/examples/divider/pyproject.toml index 17cbcb20a1..e65ba4f43f 100644 --- a/examples/divider/pyproject.toml +++ b/examples/divider/pyproject.toml @@ -15,41 +15,41 @@ formal_name = "Divider Demo" description = "A testing app" sources = ['divider'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.divider.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.divider.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.divider.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.divider.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.divider.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.divider.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/examples_overview/pyproject.toml b/examples/examples_overview/pyproject.toml index 0b7e060cc6..241bfb5e20 100644 --- a/examples/examples_overview/pyproject.toml +++ b/examples/examples_overview/pyproject.toml @@ -15,41 +15,41 @@ formal_name = "Examples Overview" description = "A testing app" sources = ['examples_overview'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.examples_overview.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.examples_overview.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.examples_overview.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.examples_overview.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.examples_overview.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.examples_overview.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/focus/pyproject.toml b/examples/focus/pyproject.toml index 44a4d828d7..29e7f4d4ab 100644 --- a/examples/focus/pyproject.toml +++ b/examples/focus/pyproject.toml @@ -15,41 +15,41 @@ formal_name = "Focus Demo" description = "A testing app" sources = ['focus'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.focus.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.focus.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.focus.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.focus.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.focus.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.examples_overview.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/font/pyproject.toml b/examples/font/pyproject.toml index cdb0e84ea7..079d531c25 100644 --- a/examples/font/pyproject.toml +++ b/examples/font/pyproject.toml @@ -15,41 +15,41 @@ formal_name = "Font Example" description = "A testing app" sources = ['font'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.font.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.font.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.font.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.font.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.font.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.font.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/handlers/pyproject.toml b/examples/handlers/pyproject.toml index 12b0ee41e5..ee439253f0 100644 --- a/examples/handlers/pyproject.toml +++ b/examples/handlers/pyproject.toml @@ -15,41 +15,41 @@ formal_name = "Handler Demo" description = "A testing app" sources = ['handlers'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.handlers.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.handlers.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.handlers.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.handlers.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.handlers.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.handlers.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/imageview/pyproject.toml b/examples/imageview/pyproject.toml index dd75f1bec3..93852be40f 100644 --- a/examples/imageview/pyproject.toml +++ b/examples/imageview/pyproject.toml @@ -15,42 +15,42 @@ formal_name = "ImageView Demo" description = "A testing app" sources = ['imageview'] requires = [ - '../../src/core', + '../../core', "Pillow", ] [tool.briefcase.app.imageview.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.imageview.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.imageview.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.imageview.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.imageview.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.imageview.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/layout/pyproject.toml b/examples/layout/pyproject.toml index a05c152c37..b6298b4b18 100644 --- a/examples/layout/pyproject.toml +++ b/examples/layout/pyproject.toml @@ -15,41 +15,41 @@ formal_name = "Layout Test" description = "A testing app" sources = ['layout'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.layout.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.layout.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.layout.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.layout.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.layout.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.layout.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/multilinetextinput/pyproject.toml b/examples/multilinetextinput/pyproject.toml index 34e6efaa49..26de067870 100644 --- a/examples/multilinetextinput/pyproject.toml +++ b/examples/multilinetextinput/pyproject.toml @@ -15,41 +15,41 @@ formal_name = "MultilineTextInput Demo" description = "A testing app" sources = ['multilinetextinput'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.multilinetextinput.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.multilinetextinput.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.multilinetextinput.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.multilinetextinput.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.multilinetextinput.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.multilinetextinput.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/numberinput/pyproject.toml b/examples/numberinput/pyproject.toml index 739c4159d9..63d5586f63 100644 --- a/examples/numberinput/pyproject.toml +++ b/examples/numberinput/pyproject.toml @@ -15,41 +15,41 @@ formal_name = "Demo NumberInput" description = "A testing app" sources = ['numberinput'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.numberinput.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.numberinput.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.numberinput.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.numberinput.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.numberinput.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.numberinput.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/optioncontainer/pyproject.toml b/examples/optioncontainer/pyproject.toml index b5d1f809c5..7eeb91d8c5 100644 --- a/examples/optioncontainer/pyproject.toml +++ b/examples/optioncontainer/pyproject.toml @@ -15,41 +15,41 @@ formal_name = "Option Container Example" description = "A testing app" sources = ['optioncontainer'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.optioncontainer.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.optioncontainer.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.optioncontainer.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.optioncontainer.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.optioncontainer.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.optioncontainer.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/positron-django/pyproject.toml b/examples/positron-django/pyproject.toml index fb6318bdcb..ad9acb044b 100644 --- a/examples/positron-django/pyproject.toml +++ b/examples/positron-django/pyproject.toml @@ -16,42 +16,42 @@ description = "Electron, but in Python" icon = "src/positron/resources/positron" sources = ['src/positron', 'src/webapp'] requires = [ - '../../src/core', + '../../core', 'django~=4.1', ] [tool.briefcase.app.positron.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.positron.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.positron.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.positron.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.positron.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.positron.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/positron-static/pyproject.toml b/examples/positron-static/pyproject.toml index 5ee0388fd5..397d79ce37 100644 --- a/examples/positron-static/pyproject.toml +++ b/examples/positron-static/pyproject.toml @@ -16,41 +16,41 @@ description = "Electron, but in Python" icon = "src/positron/resources/positron" sources = ['src/positron'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.positron.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.positron.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.positron.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.positron.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.positron.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.positron.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/progressbar/pyproject.toml b/examples/progressbar/pyproject.toml index 3b321c1dd8..6bd0e863c3 100644 --- a/examples/progressbar/pyproject.toml +++ b/examples/progressbar/pyproject.toml @@ -15,41 +15,41 @@ formal_name = "ProgressBar demo" description = "A testing app" sources = ['progressbar'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.progressbar.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.progressbar.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.progressbar.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.progressbar.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.progressbar.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.progressbar.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/scrollcontainer/pyproject.toml b/examples/scrollcontainer/pyproject.toml index 0ab52b3373..0e01a5ac18 100644 --- a/examples/scrollcontainer/pyproject.toml +++ b/examples/scrollcontainer/pyproject.toml @@ -15,41 +15,41 @@ formal_name = "ScrollContainer Demo" description = "A testing app" sources = ['scrollcontainer'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.scrollcontainer.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.scrollcontainer.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.scrollcontainer.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.scrollcontainer.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.scrollcontainer.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.scrollcontainer.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/selection/pyproject.toml b/examples/selection/pyproject.toml index 2b9417afe5..374bc80c94 100644 --- a/examples/selection/pyproject.toml +++ b/examples/selection/pyproject.toml @@ -15,41 +15,41 @@ formal_name = "Selection Demo" description = "A testing app" sources = ['selection'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.selection.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.selection.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.selection.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.selection.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.selection.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.selection.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/slider/pyproject.toml b/examples/slider/pyproject.toml index 73bd6c1185..86bc059918 100644 --- a/examples/slider/pyproject.toml +++ b/examples/slider/pyproject.toml @@ -15,41 +15,41 @@ formal_name = "Slider Demo" description = "A testing app" sources = ['slider'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.slider.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.slider.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.slider.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.slider.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.slider.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.slider.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/switch_demo/pyproject.toml b/examples/switch_demo/pyproject.toml index 4865c6839a..ce595407eb 100644 --- a/examples/switch_demo/pyproject.toml +++ b/examples/switch_demo/pyproject.toml @@ -15,41 +15,41 @@ formal_name = "Switch Demo" description = "A testing app" sources = ['switch_demo'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.switch_demo.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.switch_demo.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.switch_demo.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.switch_demo.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.switch_demo.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.switch_demo.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/table/pyproject.toml b/examples/table/pyproject.toml index 9a36c732b5..6642083ac4 100644 --- a/examples/table/pyproject.toml +++ b/examples/table/pyproject.toml @@ -15,40 +15,40 @@ formal_name = "Table Demo" description = "A testing app" sources = ['table'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.table.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.table.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.table.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.table.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.table.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.table.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/table_source/pyproject.toml b/examples/table_source/pyproject.toml index ad385e396b..48ecb96941 100644 --- a/examples/table_source/pyproject.toml +++ b/examples/table_source/pyproject.toml @@ -15,41 +15,41 @@ formal_name = "TableSource Demo" description = "A testing app" sources = ['table_source'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.table_source.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.table_source.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.table_source.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.table_source.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.table_source.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.table_source.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/textinput/pyproject.toml b/examples/textinput/pyproject.toml index f2ba08464f..1ac6ad8481 100644 --- a/examples/textinput/pyproject.toml +++ b/examples/textinput/pyproject.toml @@ -15,41 +15,41 @@ formal_name = "Text Input Demo" description = "A testing app" sources = ['textinput'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.textinput.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.textinput.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.textinput.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.textinput.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.textinput.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.textinput.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/tree/pyproject.toml b/examples/tree/pyproject.toml index e362bb5d2b..2f971589fa 100644 --- a/examples/tree/pyproject.toml +++ b/examples/tree/pyproject.toml @@ -15,41 +15,41 @@ formal_name = "Tree Demo" description = "A testing app" sources = ['tree'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.tree.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.tree.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.tree.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.tree.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.tree.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.tree.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/tree_source/pyproject.toml b/examples/tree_source/pyproject.toml index c5ac305819..082e5f5656 100644 --- a/examples/tree_source/pyproject.toml +++ b/examples/tree_source/pyproject.toml @@ -15,41 +15,41 @@ formal_name = "TreeSource Demo" description = "A testing app" sources = ['tree_source'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.tree_source.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.tree_source.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.tree_source.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.tree_source.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.tree_source.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.tree_source.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/tutorial0/pyproject.toml b/examples/tutorial0/pyproject.toml index c9fa066741..b75a2089ca 100644 --- a/examples/tutorial0/pyproject.toml +++ b/examples/tutorial0/pyproject.toml @@ -15,41 +15,41 @@ formal_name = "Tutorial 0" description = "A testing app" sources = ['tutorial'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.tutorial.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.tutorial.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.tutorial.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.tutorial.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.tutorial.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.tutorial.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/tutorial1/pyproject.toml b/examples/tutorial1/pyproject.toml index d7d99a6186..3b5c6ccf38 100644 --- a/examples/tutorial1/pyproject.toml +++ b/examples/tutorial1/pyproject.toml @@ -15,41 +15,41 @@ formal_name = "Tutorial 1" description = "A testing app" sources = ['tutorial'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.tutorial.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.tutorial.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.tutorial.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.tutorial.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.tutorial.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.tutorial.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/tutorial2/pyproject.toml b/examples/tutorial2/pyproject.toml index e160de7821..b699d690a2 100644 --- a/examples/tutorial2/pyproject.toml +++ b/examples/tutorial2/pyproject.toml @@ -15,41 +15,41 @@ formal_name = "Tutorial 2" description = "A testing app" sources = ['tutorial'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.tutorial.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.tutorial.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.tutorial.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.tutorial.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.tutorial.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.tutorial.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/tutorial3/pyproject.toml b/examples/tutorial3/pyproject.toml index 57a34f933d..aeb58eb66e 100644 --- a/examples/tutorial3/pyproject.toml +++ b/examples/tutorial3/pyproject.toml @@ -15,41 +15,41 @@ formal_name = "Tutorial 3" description = "A testing app" sources = ['tutorial'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.tutorial.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.tutorial.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.tutorial.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.tutorial.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.tutorial.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.tutorial.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/tutorial4/pyproject.toml b/examples/tutorial4/pyproject.toml index 308f8d7f87..a6c978c4ef 100644 --- a/examples/tutorial4/pyproject.toml +++ b/examples/tutorial4/pyproject.toml @@ -15,41 +15,41 @@ formal_name = "Tutorial 4" description = "A testing app" sources = ['tutorial'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.tutorial.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.tutorial.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.tutorial.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.tutorial.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.tutorial.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.tutorial.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/webview/pyproject.toml b/examples/webview/pyproject.toml index b00e4221c5..fdb5b75124 100644 --- a/examples/webview/pyproject.toml +++ b/examples/webview/pyproject.toml @@ -15,40 +15,40 @@ formal_name = "WebView Demo" description = "A demo app using all WebView features" sources = ['webview'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.webview.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.webview.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.webview.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.webview.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.webview.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.webview.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" diff --git a/examples/window/pyproject.toml b/examples/window/pyproject.toml index 4c25312d3b..b0b5b9eeea 100644 --- a/examples/window/pyproject.toml +++ b/examples/window/pyproject.toml @@ -15,41 +15,41 @@ formal_name = "Window Demo" description = "A testing app" sources = ['window'] requires = [ - '../../src/core', + '../../core', ] [tool.briefcase.app.window.macOS] requires = [ - '../../src/cocoa', + '../../cocoa', 'std-nslog>=1.0.0', ] [tool.briefcase.app.window.linux] requires = [ - '../../src/gtk', + '../../gtk', ] [tool.briefcase.app.window.windows] requires = [ - '../../src/winforms', + '../../winforms', ] # Mobile deployments [tool.briefcase.app.window.iOS] requires = [ - '../../src/iOS', + '../../iOS', 'std-nslog>=1.0.0', ] [tool.briefcase.app.window.android] requires = [ - '../../src/android', + '../../android', ] # Web deployment [tool.briefcase.app.window.web] requires = [ - '../../src/web', + '../../web', ] style_framework = "Bootstrap v4.6" From 627a7894e83e8e7275dbe1471515439d77e7e853 Mon Sep 17 00:00:00 2001 From: Malcolm Smith Date: Mon, 7 Nov 2022 16:11:28 +0000 Subject: [PATCH 03/16] Move meta-package into `toga` subdirectory --- MANIFEST.in | 88 --------------------------------------------- pyproject.toml | 4 --- setup.cfg | 54 ---------------------------- setup.py | 26 -------------- toga/LICENSE | 27 ++++++++++++++ toga/MANIFEST.in | 1 + toga/README.rst | 37 +++++++++++++++++++ toga/pyproject.toml | 3 ++ toga/setup.cfg | 53 +++++++++++++++++++++++++++ toga/setup.py | 14 ++++++++ tox.ini | 33 ++--------------- 11 files changed, 138 insertions(+), 202 deletions(-) delete mode 100644 MANIFEST.in delete mode 100644 setup.py create mode 100644 toga/LICENSE create mode 100644 toga/MANIFEST.in create mode 100644 toga/README.rst create mode 100644 toga/pyproject.toml create mode 100644 toga/setup.cfg create mode 100644 toga/setup.py diff --git a/MANIFEST.in b/MANIFEST.in deleted file mode 100644 index 348a4c696a..0000000000 --- a/MANIFEST.in +++ /dev/null @@ -1,88 +0,0 @@ -include .git-blame-ignore-revs -include .pre-commit-config.yaml -include CONTRIBUTING.md -include LICENSE -include README.rst -include release.sh -include tox.ini -include pyproject.toml - -prune attic - -recursive-include changes *.rst - -include demo/AUTHORS -include demo/CONTRIBUTING.md -include demo/LICENSE -include demo/MANIFEST.in -include demo/README.rst -include demo/pyproject.toml -include demo/setup.cfg -include demo/setup.py -recursive-include demo *.icns -recursive-include demo *.ico -recursive-include demo *.png -recursive-include demo *.py -prune demo/build -prune demo/dist - -include docs/make.bat -include docs/Makefile -include docs/requirements_rtd.txt -include docs/requirements.txt -include docs/spelling_wordlist -recursive-include docs *.css -recursive-include docs *.csv -recursive-include docs *.jpeg -recursive-include docs *.png -recursive-include docs *.png -recursive-include docs *.py -recursive-include docs *.rst -recursive-include docs *.zip -prune docs/_build - -recursive-include examples *.icns -recursive-include examples *.ico -recursive-include examples *.json -recursive-include examples *.png -recursive-include examples *.py -recursive-include examples *.rst -recursive-include examples *.toml -recursive-include examples *.otf -recursive-include examples *.ttf -recursive-include examples *.css -recursive-include examples *.html -recursive-include examples README -prune examples/*/.vscode -prune examples/*/android -prune examples/*/linux -prune examples/*/iOS -prune examples/*/macOS -prune examples/*/web -prune examples/*/windows - -prune nursery - -include src/winforms/src/toga_winforms/libs/WebView2/LICENSE.md -include src/winforms/src/toga_winforms/libs/WebView2/README.md -recursive-include src *.css -recursive-include src *.html -recursive-include src *.icns -recursive-include src *.ico -recursive-include src *.js -recursive-include src *.png -recursive-include src *.py -recursive-include src *.rst -recursive-include src CONTRIBUTING.md -recursive-include src LICENSE -recursive-include src MANIFEST.in -recursive-include src pyproject.toml -recursive-include src tox.ini -recursive-include src/winforms/src/toga_winforms/libs/WebView2 *.dll -prune src/*/build -prune src/*/dist -prune src/*/.eggs -prune src/*/.tox - -include src/core/tests/testbed/installed.dist-info/INSTALLER -include src/core/tests/testbed/installed.dist-info/METADATA diff --git a/pyproject.toml b/pyproject.toml index 2cdeb539ee..55db531cd7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,3 @@ -[build-system] -requires = ["setuptools>=60"] -build-backend = "setuptools.build_meta" - [tool.coverage.run] parallel = true branch = true diff --git a/setup.cfg b/setup.cfg index 6ffd37ebd8..1198e54989 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,57 +1,3 @@ -[metadata] -name = toga -description = A Python native, OS native GUI toolkit. -url = https://beeware.org/project/projects/libraries/toga/ -project_urls = - Funding = https://beeware.org/contributing/membership/ - Documentation = http://toga.readthedocs.io/en/latest/ - Tracker = https://github.com/beeware/toga/issues - Source = https://github.com/beeware/toga -author = Russell Keith-Magee -author_email = russell@keith-magee.com -maintainer = BeeWare Team -maintainer_email = team@beeware.org -classifiers = - Development Status :: 3 - Alpha - Intended Audience :: Developers - License :: OSI Approved :: BSD License - Operating System :: OS Independent - Programming Language :: Python :: 3 - Programming Language :: Python :: 3.7 - Programming Language :: Python :: 3.8 - Programming Language :: Python :: 3.9 - Programming Language :: Python :: 3.10 - Programming Language :: Python :: 3.11 - Programming Language :: Python :: 3 :: Only - Topic :: Software Development - Topic :: Software Development :: User Interfaces - Topic :: Software Development :: Widget Sets -license = New BSD -license_files = - = LICENSE -long_description = file: README.rst -long_description_content_type = text/x-rst; charset=UTF-8 -keywords = - gui - widget - cross-platform - desktop - mobile - web - macOS - cocoa - iOS - android - windows - winforms - linux - gtk - -[options] -zip_safe = False -python_requires = >= 3.7 -packages = - [flake8] max-complexity = 25 max-line-length = 119 diff --git a/setup.py b/setup.py deleted file mode 100644 index 405fcfbc75..0000000000 --- a/setup.py +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env python -import re - -from setuptools import setup - -# Version handline needs to be programatic because -# we can't import toga to compute the version; -# and to support versioned extra dependencies -with open("src/core/src/toga/__init__.py", encoding="utf8") as version_file: - version_match = re.search( - r"^__version__ = ['\"]([^'\"]*)['\"]", version_file.read(), re.M - ) - if version_match: - version = version_match.group(1) - else: - raise RuntimeError("Unable to find version string.") - -setup( - version=version, - extras_require={ - # Automatically installed platform backends - ':sys_platform=="win32"': ["toga-winforms==%s" % version], - ':sys_platform=="linux"': ["toga-gtk==%s" % version], - ':sys_platform=="darwin"': ["toga-cocoa==%s" % version], - }, -) diff --git a/toga/LICENSE b/toga/LICENSE new file mode 100644 index 0000000000..dc34c2a43f --- /dev/null +++ b/toga/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2014 Russell Keith-Magee. +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. Neither the name of Toga nor the names of its contributors may + be used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/toga/MANIFEST.in b/toga/MANIFEST.in new file mode 100644 index 0000000000..1aba38f67a --- /dev/null +++ b/toga/MANIFEST.in @@ -0,0 +1 @@ +include LICENSE diff --git a/toga/README.rst b/toga/README.rst new file mode 100644 index 0000000000..8407692eea --- /dev/null +++ b/toga/README.rst @@ -0,0 +1,37 @@ +toga +==== + +A meta-package for the `Toga widget toolkit`_. + +This package depends on a different Toga backend depending on which platform it's +installed on: + +* ``toga-cocoa``: for macOS +* ``toga-gtk``: for Linux +* ``toga-winforms``: for Windows + +For more details, see the `Toga project on Github`_. + +Community +--------- + +Toga is part of the `BeeWare suite`_. You can talk to the community through: + +* `@pybeeware on Twitter `__ + +* `Discord `__ + +* The Toga `Github Discussions forum `__ + +Contributing +------------ + +If you experience problems with this package, `log them on GitHub`_. If you +want to contribute code, please `fork the code`_ and `submit a pull request`_. + +.. _Toga widget toolkit: http://beeware.org/toga +.. _Toga project on Github: https://github.com/beeware/toga +.. _BeeWare suite: http://beeware.org +.. _log them on Github: https://github.com/beeware/toga/issues +.. _fork the code: https://github.com/beeware/toga +.. _submit a pull request: https://github.com/beeware/toga/pulls diff --git a/toga/pyproject.toml b/toga/pyproject.toml new file mode 100644 index 0000000000..7badb6e728 --- /dev/null +++ b/toga/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["setuptools>=60"] +build-backend = "setuptools.build_meta" diff --git a/toga/setup.cfg b/toga/setup.cfg new file mode 100644 index 0000000000..33d148adca --- /dev/null +++ b/toga/setup.cfg @@ -0,0 +1,53 @@ +[metadata] +name = toga +description = A Python native, OS native GUI toolkit. +url = https://beeware.org/project/projects/libraries/toga/ +project_urls = + Funding = https://beeware.org/contributing/membership/ + Documentation = http://toga.readthedocs.io/en/latest/ + Tracker = https://github.com/beeware/toga/issues + Source = https://github.com/beeware/toga +author = Russell Keith-Magee +author_email = russell@keith-magee.com +maintainer = BeeWare Team +maintainer_email = team@beeware.org +classifiers = + Development Status :: 3 - Alpha + Intended Audience :: Developers + License :: OSI Approved :: BSD License + Operating System :: OS Independent + Programming Language :: Python :: 3 + Programming Language :: Python :: 3.7 + Programming Language :: Python :: 3.8 + Programming Language :: Python :: 3.9 + Programming Language :: Python :: 3.10 + Programming Language :: Python :: 3.11 + Programming Language :: Python :: 3 :: Only + Topic :: Software Development + Topic :: Software Development :: User Interfaces + Topic :: Software Development :: Widget Sets +license = New BSD +license_files = + = LICENSE +long_description = file: README.rst +long_description_content_type = text/x-rst; charset=UTF-8 +keywords = + gui + widget + cross-platform + desktop + mobile + web + macOS + cocoa + iOS + android + windows + winforms + linux + gtk + +[options] +zip_safe = False +python_requires = >= 3.7 +packages = diff --git a/toga/setup.py b/toga/setup.py new file mode 100644 index 0000000000..1c6c8414b3 --- /dev/null +++ b/toga/setup.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python +from setuptools import setup + +version = "0.3.0.dev39" + +setup( + version=version, + extras_require={ + # Automatically installed platform backends + ':sys_platform=="win32"': ["toga-winforms==%s" % version], + ':sys_platform=="linux"': ["toga-gtk==%s" % version], + ':sys_platform=="darwin"': ["toga-cocoa==%s" % version], + }, +) diff --git a/tox.ini b/tox.ini index bfa354c9e7..06b01038b0 100644 --- a/tox.ini +++ b/tox.ini @@ -36,33 +36,6 @@ deps = build twine commands = - # Build the meta-installer wheels. - check-manifest -v . - python -m build --sdist --wheel --outdir dist/ . - - # Build the core wheels - check-manifest -v src/core - python -m build --sdist --wheel --outdir dist/ src/core - - # Build the backend wheels - check-manifest -v src/android - python -m build --sdist --wheel --outdir dist/ src/android - check-manifest -v src/cocoa - python -m build --sdist --wheel --outdir dist/ src/cocoa - check-manifest -v src/dummy - python -m build --sdist --wheel --outdir dist/ src/dummy - check-manifest -v src/gtk - python -m build --sdist --wheel --outdir dist/ src/gtk - check-manifest -v src/iOS - python -m build --sdist --wheel --outdir dist/ src/iOS - check-manifest -v src/web - python -m build --sdist --wheel --outdir dist/ src/web - check-manifest -v src/winforms - python -m build --sdist --wheel --outdir dist/ src/winforms - - # Build the toga-demo wheels - check-manifest -v demo - python -m build --sdist --wheel --outdir dist/ demo - - # Check the built packages are all valid. - python -m twine check dist/* + check-manifest -v {posargs} + python -m build {posargs} + python -m twine check {posargs}/dist/* From 3025e64b928a443d310a42328218617da9b8de2f Mon Sep 17 00:00:00 2001 From: Malcolm Smith Date: Mon, 7 Nov 2022 18:01:22 +0000 Subject: [PATCH 04/16] Update paths in all other locations --- .github/workflows/ci.yml | 4 ++-- .gitignore | 10 +++------- demo/README.rst | 10 +++++----- docs/background/architecture.rst | 4 ++-- docs/conf.py | 4 ++-- docs/how-to/contribute-code.rst | 26 +++++++++++++------------- docs/reference/platforms.rst | 12 ++++++------ docs/requirements_rtd.txt | 2 +- pyproject.toml | 32 ++++++++++++++++---------------- tox.ini | 2 +- 10 files changed, 51 insertions(+), 55 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b8be4a4365..12835f8205 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -81,7 +81,7 @@ jobs: env: TOGA_INSTALL_COMMAND: 'bash -c "pip install ../../dist/toga_{core,dummy}*.whl"' run: | - cd src/core + cd core tox -e py mv .coverage.* ../.. - name: Store coverage data @@ -187,7 +187,7 @@ jobs: env: TOGA_INSTALL_COMMAND: 'bash -c "pip install ../../dist/toga_{core,dummy,${{ matrix.backend }}}*.whl"' run: | - cd src/${{ matrix.backend }} + cd ${{ matrix.backend }} tox -e py mv .coverage.* ../../ - name: Store coverage data diff --git a/.gitignore b/.gitignore index b6f43f08eb..822fd730c6 100644 --- a/.gitignore +++ b/.gitignore @@ -18,9 +18,9 @@ local Pipfile* .tox node_modules -src/gtk/gi -src/gtk/pygtkcompat -src/gtk/cairo +gtk/gi +gtk/pygtkcompat +gtk/cairo .DS_Store pip-selfcheck.json pyvenv.cfg @@ -38,10 +38,6 @@ examples/*/django/ examples/*/windows/ examples/*/web/ -src/*/.tox -src/*/.coverage -src/*/.coverage.* - # Memory Profiler mprofile_*.dat diff --git a/demo/README.rst b/demo/README.rst index f518d108c0..7db0802ab9 100755 --- a/demo/README.rst +++ b/demo/README.rst @@ -21,14 +21,14 @@ This will pop up a GUI window. If you have cloned the toga repository, install the dependent packages in your virtualenv:: $ cd toga - $ pip install -e src/core - $ pip install -e src/dummy + $ pip install -e ./core + $ pip install -e ./dummy Then install the platform specific code:: - $ pip install -e src/cocoa # macOS - $ pip install -e src/gtk # Linux - $ pip install -e src/winforms # Windows + $ pip install -e ./cocoa # macOS + $ pip install -e ./gtk # Linux + $ pip install -e ./winforms # Windows Finally navigate to the demo directory and run the application:: diff --git a/docs/background/architecture.rst b/docs/background/architecture.rst index 208ef27bb7..427b902dcb 100644 --- a/docs/background/architecture.rst +++ b/docs/background/architecture.rst @@ -91,14 +91,14 @@ An example Here's how Toga's three-layer API works on the Button widget. -* ``toga.Button`` is defined in ``src/core/src/toga/widgets/button.py``. This +* ``toga.Button`` is defined in ``core/src/toga/widgets/button.py``. This defines the public interface for the Button widget, describing (amongst other things) that there is an ``on_click`` event handler on a Button. It expects that there will be *an* implementation, but doesn't care which implementation is provided. * ``toga-gtk.widgets.Button`` is defined in - ``src/gtk/toga-gtk/widgets/button.py``. This defines the Button at the + ``gtk/src/toga-gtk/widgets/button.py``. This defines the Button at the implementation layer. It describes how to create a button on GTK, and how to connect the GTK ``clicked`` signal to the ``on_click`` Toga handler. diff --git a/docs/conf.py b/docs/conf.py index 07cd48bf9c..9fc69cbab2 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -17,7 +17,7 @@ # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. -sys.path.insert(0, os.path.abspath("../src/core/src")) +sys.path.insert(0, os.path.abspath("../core/src")) # -- General configuration ----------------------------------------------------- @@ -54,7 +54,7 @@ # built documents. # # The full version, including alpha/beta/rc tags. -with open("../src/core/src/toga/__init__.py", encoding="utf8") as version_file: +with open("../core/src/toga/__init__.py", encoding="utf8") as version_file: version_match = re.search( r"^__version__ = ['\"]([^'\"]*)['\"]", version_file.read(), re.M ) diff --git a/docs/how-to/contribute-code.rst b/docs/how-to/contribute-code.rst index 0f99c6a92a..cbb429ed64 100644 --- a/docs/how-to/contribute-code.rst +++ b/docs/how-to/contribute-code.rst @@ -149,27 +149,27 @@ specific order: .. code-block:: bash (venv) $ cd toga - (venv) $ pip install -e src/core - (venv) $ pip install -e src/dummy - (venv) $ pip install -e src/cocoa + (venv) $ pip install -e ./core + (venv) $ pip install -e ./dummy + (venv) $ pip install -e ./cocoa .. group-tab:: Linux .. code-block:: bash (venv) $ cd toga - (venv) $ pip install -e src/core - (venv) $ pip install -e src/dummy - (venv) $ pip install -e src/gtk + (venv) $ pip install -e ./core + (venv) $ pip install -e ./dummy + (venv) $ pip install -e ./gtk .. group-tab:: Windows .. code-block:: doscon (venv) C:\...>cd toga - (venv) C:\...>pip install -e src/core - (venv) C:\...>pip install -e src/dummy - (venv) C:\...>pip install -e src/winforms + (venv) C:\...>pip install -e ./core + (venv) C:\...>pip install -e ./dummy + (venv) C:\...>pip install -e ./winforms This project uses a tool called `Pre-Commit `__ to identify simple issues and standardize code formatting. It does this by installing a git @@ -362,7 +362,7 @@ Start by running the core test suite: .. code-block:: bash - (venv) $ cd src/core + (venv) $ cd core (venv) $ TOGA_BACKEND=toga_dummy python setup.py test ... ---------------------------------------------------------------------- @@ -374,7 +374,7 @@ Start by running the core test suite: .. code-block:: bash - (venv) $ cd src/core + (venv) $ cd core (venv) $ TOGA_BACKEND=toga_dummy python setup.py test ... ---------------------------------------------------------------------- @@ -386,7 +386,7 @@ Start by running the core test suite: .. code-block:: doscon - (venv) C:\...>cd src/core + (venv) C:\...>cd core (venv) C:\...>set TOGA_BACKEND=toga_dummy (venv) C:\...>python setup.py test (venv) C:\...>set TOGA_BACKEND= @@ -482,7 +482,7 @@ line of ``toga/app.py`` was executed; but only 77% of lines in the next column: lines 58, 75, 87, and so on weren't executed. That's what you have to fix - ideally, every single line in every single file -will have 100% coverage. If you look in `src/core/tests`, you should find a +will have 100% coverage. If you look in `core/tests`, you should find a test file that matches the name of the file that has insufficient coverage. If you don't, it's possible the entire test file is missing - so you'll have to create it! diff --git a/docs/reference/platforms.rst b/docs/reference/platforms.rst index 7d2eebad8f..6937705db2 100644 --- a/docs/reference/platforms.rst +++ b/docs/reference/platforms.rst @@ -22,7 +22,7 @@ report ``sys.platform == 'darwin'``), or can be manually installed by invoking:: The macOS backend has seen the most development to date. It uses `Rubicon`_ to provide a bridge to native macOS libraries. -.. _toga-cocoa: https://github.com/beeware/toga/tree/master/src/cocoa +.. _toga-cocoa: https://github.com/beeware/toga/tree/master/cocoa .. _Rubicon: https://github.com/beeware/rubicon-objc Linux @@ -40,7 +40,7 @@ invoking:: The GTK+ backend is reasonably well developed, but currently has some known issues with widget layout. It uses the native GObject Python bindings. -.. _toga-gtk: https://github.com/beeware/toga/tree/master/src/gtk +.. _toga-gtk: https://github.com/beeware/toga/tree/master/gtk Windows ~~~~~~~~ @@ -57,7 +57,7 @@ installed by invoking:: It uses `Python.net`_. Unfortunately, python.net has not been packaged for Python 3.9 or higher, so you'll need to use Python 3.8 or earlier in your app. -.. _toga-winforms: https://github.com/beeware/toga/tree/master/src/winforms +.. _toga-winforms: https://github.com/beeware/toga/tree/master/winforms .. _Python.net: https://pythonnet.github.io Mobile platforms @@ -77,7 +77,7 @@ The iOS backend is currently proof-of-concept only. Most widgets have not been implemented. It uses `Rubicon`_ to provide a bridge to native macOS libraries. .. _Python-iOS-template cookiecutter: http://github.com/beeware/Python-iOS-template -.. _toga-iOS: http://github.com/beeware/toga/tree/master/src/iOS +.. _toga-iOS: http://github.com/beeware/toga/tree/master/iOS Android ~~~~~~~ @@ -91,7 +91,7 @@ The android backend is currently proof-of-concept only. Most widgets have not been implemented. It uses `VOC`_ to compile Python code to Java class files for execution on Android devices. -.. _toga-android: http://github.com/beeware/toga/tree/master/src/android +.. _toga-android: http://github.com/beeware/toga/tree/master/android .. _VOC: http://github.com/beeware/voc Web platforms @@ -108,7 +108,7 @@ by invoking:: The Django backend is currently proof-of-concept only. Most widgets have not been implemented. It uses `Batavia`_ to run Python code in the browser. -.. _toga-django: http://github.com/beeware/toga/tree/master/src/django +.. _toga-django: http://github.com/beeware/toga/tree/master/django .. _Batavia: https://github.com/beeware/batavia The Dummy platform diff --git a/docs/requirements_rtd.txt b/docs/requirements_rtd.txt index b9cd1ce844..a8f6b58ac1 100644 --- a/docs/requirements_rtd.txt +++ b/docs/requirements_rtd.txt @@ -1,3 +1,3 @@ -r requirements.txt -src/core +./core docs/mock_gtk diff --git a/pyproject.toml b/pyproject.toml index 55db531cd7..20990d16aa 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,54 +3,54 @@ parallel = true branch = true relative_files = true source = [ - "src/android", - "src/cocoa", - "src/core", - "src/dummy", - "src/gtk", - "src/iOS", - "src/web", - "src/winforms", + "android", + "cocoa", + "core", + "dummy", + "gtk", + "iOS", + "web", + "winforms", ] [tool.coverage.paths] android = [ - "src/android/src/toga_android", + "android/src/toga_android", "src/toga_android", "**/site-packages/toga_android", ] cocoa = [ - "src/cocoa/src/toga_cocoa", + "cocoa/src/toga_cocoa", "src/toga_cocoa", "**/site-packages/toga_cocoa", ] core = [ - "src/core/src/toga", + "core/src/toga", "src/toga", "**/site-packages/toga", ] dummy = [ - "src/dummy/src/toga_dummy", + "dummy/src/toga_dummy", "src/toga_dummy", "**/site-packages/toga_dummy", ] gtk = [ - "src/gtk/src/toga_gtk", + "gtk/src/toga_gtk", "src/toga_gtk", "**/site-packages/toga_gtk", ] iOS = [ - "src/iOS/src/toga_iOS", + "iOS/src/toga_iOS", "src/toga_iOS", "**/site-packages/toga_iOS", ] web = [ - "src/web/src/toga_web", + "web/src/toga_web", "src/toga_web", "**/site-packages/toga_web", ] winforms = [ - "src/winforms/src/toga_winforms", + "winforms/src/toga_winforms", "src/toga_winforms", "**/site-packages/toga_winforms", ] diff --git a/tox.ini b/tox.ini index 06b01038b0..75ac9e33ff 100644 --- a/tox.ini +++ b/tox.ini @@ -25,7 +25,7 @@ commands = skip_install = True deps = -r{toxinidir}/docs/requirements.txt - src/core + ./core commands = python setup.py build_sphinx -W From 7c4ab459ebada9e4f63b8961136a35d27ce4d16e Mon Sep 17 00:00:00 2001 From: Malcolm Smith Date: Mon, 7 Nov 2022 18:05:50 +0000 Subject: [PATCH 05/16] Build packages in parallel --- .github/workflows/ci.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 12835f8205..dc361df2a6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -42,6 +42,10 @@ jobs: - run: tox -e towncrier-check package: + strategy: + matrix: + subdir: ["android", "cocoa", "core", "demo", "dummy", "gtk", "iOS", "toga", + "web", "winforms"] runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -49,11 +53,11 @@ jobs: with: python-version: ${{ env.min_python_version }} - run: pip install tox - - run: tox -e package + - run: tox -e package -- ${{ matrix.subdir }} - uses: actions/upload-artifact@v3 with: name: packages - path: dist + path: ${{ matrix.subdir }}/dist/* if-no-files-found: error core: From 1c186942286d4a9d2fb3af6b90b94a99b70b8ee6 Mon Sep 17 00:00:00 2001 From: Malcolm Smith Date: Mon, 7 Nov 2022 18:26:37 +0000 Subject: [PATCH 06/16] Fix tox -e docs --- changes/1669.misc.rst | 1 + docs/conf.py | 2 +- tox.ini | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 changes/1669.misc.rst diff --git a/changes/1669.misc.rst b/changes/1669.misc.rst new file mode 100644 index 0000000000..280edc1515 --- /dev/null +++ b/changes/1669.misc.rst @@ -0,0 +1 @@ +Moved all packages to be top-level directories in the repository. diff --git a/docs/conf.py b/docs/conf.py index 9fc69cbab2..57ac44df90 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -17,7 +17,7 @@ # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. -sys.path.insert(0, os.path.abspath("../core/src")) +# sys.path.insert(0, os.path.abspath(".")) # -- General configuration ----------------------------------------------------- diff --git a/tox.ini b/tox.ini index 75ac9e33ff..ca97c09a6d 100644 --- a/tox.ini +++ b/tox.ini @@ -27,7 +27,7 @@ deps = -r{toxinidir}/docs/requirements.txt ./core commands = - python setup.py build_sphinx -W + python -m sphinx -W docs build/sphinx [testenv:package] skip_install = True From 58fd719f1f68d04e23d1d2308ca81f69f6c2f935 Mon Sep 17 00:00:00 2001 From: Malcolm Smith Date: Mon, 7 Nov 2022 18:42:25 +0000 Subject: [PATCH 07/16] Update more paths --- .github/workflows/ci.yml | 8 ++++---- gtk/tests/widgets/test_detailedlist.py | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dc361df2a6..9e3bd1285d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -83,11 +83,11 @@ jobs: path: dist - name: Test env: - TOGA_INSTALL_COMMAND: 'bash -c "pip install ../../dist/toga_{core,dummy}*.whl"' + TOGA_INSTALL_COMMAND: 'bash -c "pip install ../dist/toga_{core,dummy}*.whl"' run: | cd core tox -e py - mv .coverage.* ../.. + mv .coverage.* .. - name: Store coverage data uses: actions/upload-artifact@v3 with: @@ -189,11 +189,11 @@ jobs: python -m pip install tox coverage[toml] - name: Test env: - TOGA_INSTALL_COMMAND: 'bash -c "pip install ../../dist/toga_{core,dummy,${{ matrix.backend }}}*.whl"' + TOGA_INSTALL_COMMAND: 'bash -c "pip install ../dist/toga_{core,dummy,${{ matrix.backend }}}*.whl"' run: | cd ${{ matrix.backend }} tox -e py - mv .coverage.* ../../ + mv .coverage.* .. - name: Store coverage data uses: actions/upload-artifact@v3 with: diff --git a/gtk/tests/widgets/test_detailedlist.py b/gtk/tests/widgets/test_detailedlist.py index 63f3557f17..003afbc077 100644 --- a/gtk/tests/widgets/test_detailedlist.py +++ b/gtk/tests/widgets/test_detailedlist.py @@ -33,7 +33,7 @@ def setUp(self): icon = toga.Icon( os.path.join( os.path.dirname(__file__), - "../../../../demo/toga_demo/resources/brutus-32.png", + "../../../demo/toga_demo/resources/brutus-32.png", ) ) self.dl = toga.DetailedList( From 43b9176b6430e188d33d84e22faa4d7eb8efe57e Mon Sep 17 00:00:00 2001 From: Malcolm Smith Date: Mon, 7 Nov 2022 19:04:57 +0000 Subject: [PATCH 08/16] Add readthedocs configuration file --- .readthedocs.yaml | 24 ++++++++++++++++++++++++ docs/mock_gtk/setup.py | 16 ---------------- docs/requirements_rtd.txt | 3 --- 3 files changed, 24 insertions(+), 19 deletions(-) create mode 100644 .readthedocs.yaml delete mode 100644 docs/mock_gtk/setup.py delete mode 100644 docs/requirements_rtd.txt diff --git a/.readthedocs.yaml b/.readthedocs.yaml new file mode 100644 index 0000000000..246e6509ac --- /dev/null +++ b/.readthedocs.yaml @@ -0,0 +1,24 @@ +# .readthedocs.yaml +# Read the Docs configuration file +# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details + +# Required +version: 2 + +# Set the version of Python and other tools you might need +build: + os: ubuntu-20.04 + tools: + python: "3.9" + +# Build documentation in the docs/ directory with Sphinx +sphinx: + builder: html + configuration: docs/conf.py + +# Optionally declare the Python requirements required to build your docs +python: + install: + - requirements: docs/requirements.txt + - method: pip + path: core diff --git a/docs/mock_gtk/setup.py b/docs/mock_gtk/setup.py deleted file mode 100644 index f43ffa26d5..0000000000 --- a/docs/mock_gtk/setup.py +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env python -from setuptools import setup - -# This is a mock version of the GTK+ backend. It is required because RTD -# will try to `pip install toga`, which will in turn try to -# `pip install toga-gtk`. However, RTD doesn't include GTK in it's install -# image (nor should it!), so installing toga-gtk will fail. -# -# This package fulfills the pip requirement of `toga-gtk`, without -# *actually* doing anything. - -setup( - name="toga-gtk", - version="0.3.0.dev39", - description="A mock of the GTK+ backend for the Toga widget toolkit.", -) diff --git a/docs/requirements_rtd.txt b/docs/requirements_rtd.txt deleted file mode 100644 index a8f6b58ac1..0000000000 --- a/docs/requirements_rtd.txt +++ /dev/null @@ -1,3 +0,0 @@ --r requirements.txt -./core -docs/mock_gtk From e7f4bcd2aa32fa58cc8fabb303d45fb1121348a3 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Tue, 8 Nov 2022 10:01:33 +0800 Subject: [PATCH 09/16] Minor doc updates. --- demo/README.rst | 1 - docs/reference/platforms.rst | 31 ++++++++++++++----------------- toga/README.rst | 12 ++++++------ 3 files changed, 20 insertions(+), 24 deletions(-) diff --git a/demo/README.rst b/demo/README.rst index 7db0802ab9..d17420a6ae 100755 --- a/demo/README.rst +++ b/demo/README.rst @@ -22,7 +22,6 @@ If you have cloned the toga repository, install the dependent packages in your v $ cd toga $ pip install -e ./core - $ pip install -e ./dummy Then install the platform specific code:: diff --git a/docs/reference/platforms.rst b/docs/reference/platforms.rst index 6937705db2..bf1e6acfe8 100644 --- a/docs/reference/platforms.rst +++ b/docs/reference/platforms.rst @@ -76,8 +76,8 @@ manually installed by invoking:: The iOS backend is currently proof-of-concept only. Most widgets have not been implemented. It uses `Rubicon`_ to provide a bridge to native macOS libraries. -.. _Python-iOS-template cookiecutter: http://github.com/beeware/Python-iOS-template -.. _toga-iOS: http://github.com/beeware/toga/tree/master/iOS +.. _Python-iOS-template cookiecutter: https://github.com/beeware/Python-iOS-template +.. _toga-iOS: https://github.com/beeware/toga/tree/master/iOS Android ~~~~~~~ @@ -88,28 +88,25 @@ by invoking:: $ pip install toga-android The android backend is currently proof-of-concept only. Most widgets have not -been implemented. It uses `VOC`_ to compile Python code to Java class files -for execution on Android devices. +been implemented. It uses `Chaquopy`_ to provide a way to access the Android +Java libraries and implement Java interfaces in Python. -.. _toga-android: http://github.com/beeware/toga/tree/master/android -.. _VOC: http://github.com/beeware/voc +.. _toga-android: https://github.com/beeware/toga/tree/master/android +.. _Chaquopy: https://chaquo.com/chaquopy/ -Web platforms -------------- +Web +--- -Django -~~~~~~ - -The backend for Django is named `toga-django`_. It can be manually installed +The Web backend is named `toga-web`_. It can be manually installed by invoking:: - $ pip install toga-django + $ pip install toga-web -The Django backend is currently proof-of-concept only. Most widgets have not been -implemented. It uses `Batavia`_ to run Python code in the browser. +The Web backend is currently proof-of-concept only. Most widgets have not been +implemented. It uses `PyScript`_ to run Python code in the browser. -.. _toga-django: http://github.com/beeware/toga/tree/master/django -.. _Batavia: https://github.com/beeware/batavia +.. _toga-web: https://github.com/beeware/toga/tree/master/web +.. _PyScript: https://pyscript.net The Dummy platform ------------------ diff --git a/toga/README.rst b/toga/README.rst index 8407692eea..d2b46094d7 100644 --- a/toga/README.rst +++ b/toga/README.rst @@ -1,14 +1,14 @@ toga ==== -A meta-package for the `Toga widget toolkit`_. +A meta-package for installing the `Toga widget toolkit`_. -This package depends on a different Toga backend depending on which platform it's -installed on: +This package installs the ``toga-core`` library, plus a different Toga backend +depending the platform where it's installed: -* ``toga-cocoa``: for macOS -* ``toga-gtk``: for Linux -* ``toga-winforms``: for Windows +* ``toga-cocoa`` on macOS +* ``toga-gtk`` on Linux +* ``toga-winforms`` on Windows For more details, see the `Toga project on Github`_. From ab01e7c4d34f8b03126f3843005bf8dea35a0892 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Tue, 8 Nov 2022 10:10:56 +0800 Subject: [PATCH 10/16] Add CONTRIBUTING.md file to meta package. --- toga/CONTRIBUTING.md | 7 +++++++ toga/MANIFEST.in | 1 + 2 files changed, 8 insertions(+) create mode 100644 toga/CONTRIBUTING.md diff --git a/toga/CONTRIBUTING.md b/toga/CONTRIBUTING.md new file mode 100644 index 0000000000..d7f59d1519 --- /dev/null +++ b/toga/CONTRIBUTING.md @@ -0,0 +1,7 @@ +# Contributing + +BeeWare <3's contributions! + +Please be aware, BeeWare operates under a Code of Conduct. + +See [CONTRIBUTING to BeeWare](https://beeware.org/contributing/) for details. diff --git a/toga/MANIFEST.in b/toga/MANIFEST.in index 1aba38f67a..5bf14bab30 100644 --- a/toga/MANIFEST.in +++ b/toga/MANIFEST.in @@ -1 +1,2 @@ +include CONTRIBUTING.md include LICENSE From 594d2d42cb50385ef59e8e5ca877db47e47a73fb Mon Sep 17 00:00:00 2001 From: Malcolm Smith Date: Tue, 8 Nov 2022 13:37:34 +0000 Subject: [PATCH 11/16] Keep packages at the same paths throughout test and release workflows --- .github/workflows/ci.yml | 10 +++++----- .github/workflows/release.yml | 3 +-- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9e3bd1285d..6c2b3029c1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -57,7 +57,9 @@ jobs: - uses: actions/upload-artifact@v3 with: name: packages - path: ${{ matrix.subdir }}/dist/* + # There will only be one dist directory for each matrix sub-job, but using a + # leading wildcard preserves the directory structure. + path: "*/dist/*" if-no-files-found: error core: @@ -80,10 +82,9 @@ jobs: uses: actions/download-artifact@v3 with: name: packages - path: dist - name: Test env: - TOGA_INSTALL_COMMAND: 'bash -c "pip install ../dist/toga_{core,dummy}*.whl"' + TOGA_INSTALL_COMMAND: 'bash -c "pip install ../{core,dummy}/dist/*.whl"' run: | cd core tox -e py @@ -182,14 +183,13 @@ jobs: uses: actions/download-artifact@v3 with: name: packages - path: dist - name: Install dependencies run: | ${{ matrix.pre-command }} python -m pip install tox coverage[toml] - name: Test env: - TOGA_INSTALL_COMMAND: 'bash -c "pip install ../dist/toga_{core,dummy,${{ matrix.backend }}}*.whl"' + TOGA_INSTALL_COMMAND: 'bash -c "pip install ../{core,dummy,${{ matrix.backend }}}/dist/*.whl"' run: | cd ${{ matrix.backend }} tox -e py diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b6a92cb3a0..20d6b982b4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -23,12 +23,11 @@ jobs: uses: actions/download-artifact@v3 with: name: packages - path: packages - uses: ncipollo/release-action@v1.11.1 with: name: ${{ env.VERSION }} draft: true - artifacts: "packages/*" + artifacts: "*/dist/*" artifactErrorsFailBuild: true deploy-test: From a332cb49ac8e7979b82e3201f87eef50e15f7ad0 Mon Sep 17 00:00:00 2001 From: Malcolm Smith Date: Tue, 8 Nov 2022 14:18:56 +0000 Subject: [PATCH 12/16] Temporarily disable tests --- .github/workflows/ci.yml | 350 +++++++++++++++++++-------------------- 1 file changed, 175 insertions(+), 175 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6c2b3029c1..71dae18f15 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -62,185 +62,185 @@ jobs: path: "*/dist/*" if-no-files-found: error - core: - needs: [pre-commit, towncrier, package] - strategy: - matrix: - platform: ['macos', 'ubuntu', 'windows'] - python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"] #, "3.12.0-alpha - 3.12.0"] - runs-on: ${{ matrix.platform }}-latest - steps: - - uses: actions/checkout@v3 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4.3.0 - with: - python-version: ${{ matrix.python-version }} - - name: Install dependencies - run: | - python -m pip install tox coverage[toml] - - name: Get packages - uses: actions/download-artifact@v3 - with: - name: packages - - name: Test - env: - TOGA_INSTALL_COMMAND: 'bash -c "pip install ../{core,dummy}/dist/*.whl"' - run: | - cd core - tox -e py - mv .coverage.* .. - - name: Store coverage data - uses: actions/upload-artifact@v3 - with: - name: core-coverage-data - path: ".coverage.*" - if-no-files-found: ignore - - name: Report platform coverage - run: | - python -m coverage combine - python -m coverage report - # Generate XML report for CodeCov - python -m coverage xml - - name: Upload coverage data to CodeCov - uses: codecov/codecov-action@v3 - with: - token: ${{ secrets.CODECOV_TOKEN }} - file: ./coverage.xml - flags: unittests - fail_ci_if_error: true + # core: + # needs: [pre-commit, towncrier, package] + # strategy: + # matrix: + # platform: ['macos', 'ubuntu', 'windows'] + # python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"] #, "3.12.0-alpha - 3.12.0"] + # runs-on: ${{ matrix.platform }}-latest + # steps: + # - uses: actions/checkout@v3 + # - name: Set up Python ${{ matrix.python-version }} + # uses: actions/setup-python@v4.3.0 + # with: + # python-version: ${{ matrix.python-version }} + # - name: Install dependencies + # run: | + # python -m pip install tox coverage[toml] + # - name: Get packages + # uses: actions/download-artifact@v3 + # with: + # name: packages + # - name: Test + # env: + # TOGA_INSTALL_COMMAND: 'bash -c "pip install ../{core,dummy}/dist/*.whl"' + # run: | + # cd core + # tox -e py + # mv .coverage.* .. + # - name: Store coverage data + # uses: actions/upload-artifact@v3 + # with: + # name: core-coverage-data + # path: ".coverage.*" + # if-no-files-found: ignore + # - name: Report platform coverage + # run: | + # python -m coverage combine + # python -m coverage report + # # Generate XML report for CodeCov + # python -m coverage xml + # - name: Upload coverage data to CodeCov + # uses: codecov/codecov-action@v3 + # with: + # token: ${{ secrets.CODECOV_TOKEN }} + # file: ./coverage.xml + # flags: unittests + # fail_ci_if_error: true - core-coverage: - name: Combine & check core coverage. - runs-on: ubuntu-latest - needs: core - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - uses: actions/setup-python@v4.3.0 - with: - # Use latest, so it understands all syntax. - python-version: ${{ env.max_python_version }} - - name: Install dependencies - run: | - python -m pip install coverage[toml] - - name: Retrieve coverage data - uses: actions/download-artifact@v3 - with: - name: core-coverage-data - - name: Normalize paths in coverage data - run: | - # See https://github.com/nedbat/coveragepy/issues/991 - for coverage in `ls .coverage.*`; do - sqlite3 $coverage "update file set path = replace(path, '\\', '/')" - done - - name: Combine coverage - run: | - python -m coverage combine - - name: Generate coverage report - run: | - python -m coverage html --skip-covered --skip-empty - python -m coverage report # --fail-under=100 - - name: Upload HTML report if check failed. - uses: actions/upload-artifact@v3 - with: - name: html-coverage-report - path: htmlcov - if: ${{ failure() }} + # core-coverage: + # name: Combine & check core coverage. + # runs-on: ubuntu-latest + # needs: core + # steps: + # - uses: actions/checkout@v3 + # with: + # fetch-depth: 0 + # - uses: actions/setup-python@v4.3.0 + # with: + # # Use latest, so it understands all syntax. + # python-version: ${{ env.max_python_version }} + # - name: Install dependencies + # run: | + # python -m pip install coverage[toml] + # - name: Retrieve coverage data + # uses: actions/download-artifact@v3 + # with: + # name: core-coverage-data + # - name: Normalize paths in coverage data + # run: | + # # See https://github.com/nedbat/coveragepy/issues/991 + # for coverage in `ls .coverage.*`; do + # sqlite3 $coverage "update file set path = replace(path, '\\', '/')" + # done + # - name: Combine coverage + # run: | + # python -m coverage combine + # - name: Generate coverage report + # run: | + # python -m coverage html --skip-covered --skip-empty + # python -m coverage report # --fail-under=100 + # - name: Upload HTML report if check failed. + # uses: actions/upload-artifact@v3 + # with: + # name: html-coverage-report + # path: htmlcov + # if: ${{ failure() }} - backend: - needs: core - strategy: - matrix: - backend: [android, cocoa, gtk, iOS, web, winforms] - include: - - runs-on: ubuntu-latest - - python-version: "3.7" # Should be env.min_python_version (https://github.com/actions/runner/issues/480) - - pre-command: + # backend: + # needs: core + # strategy: + # matrix: + # backend: [android, cocoa, gtk, iOS, web, winforms] + # include: + # - runs-on: ubuntu-latest + # - python-version: "3.7" # Should be env.min_python_version (https://github.com/actions/runner/issues/480) + # - pre-command: - - backend: cocoa - runs-on: macos-latest + # - backend: cocoa + # runs-on: macos-latest - - backend: gtk - pre-command: "sudo apt-get update -y && sudo apt-get install -y python3-gi python3-gi-cairo gir1.2-gtk-3.0 python3-dev libgirepository1.0-dev libcairo2-dev pkg-config" + # - backend: gtk + # pre-command: "sudo apt-get update -y && sudo apt-get install -y python3-gi python3-gi-cairo gir1.2-gtk-3.0 python3-dev libgirepository1.0-dev libcairo2-dev pkg-config" - - backend: iOS - runs-on: macos-latest + # - backend: iOS + # runs-on: macos-latest - - backend: winforms - runs-on: windows-latest - # Py3.9 is the first Python version for which - # a wheel of pythonnet isn't available on PyPI. - python-version: "3.9" - runs-on: ${{ matrix.runs-on }} - steps: - - uses: actions/checkout@v3 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4.3.0 - with: - python-version: ${{ matrix.python-version }} - - name: Get packages - uses: actions/download-artifact@v3 - with: - name: packages - - name: Install dependencies - run: | - ${{ matrix.pre-command }} - python -m pip install tox coverage[toml] - - name: Test - env: - TOGA_INSTALL_COMMAND: 'bash -c "pip install ../{core,dummy,${{ matrix.backend }}}/dist/*.whl"' - run: | - cd ${{ matrix.backend }} - tox -e py - mv .coverage.* .. - - name: Store coverage data - uses: actions/upload-artifact@v3 - with: - name: backend-coverage-data - path: ".coverage.*" - if-no-files-found: ignore - - name: Report platform coverage - run: | - python -m coverage combine - python -m coverage report + # - backend: winforms + # runs-on: windows-latest + # # Py3.9 is the first Python version for which + # # a wheel of pythonnet isn't available on PyPI. + # python-version: "3.9" + # runs-on: ${{ matrix.runs-on }} + # steps: + # - uses: actions/checkout@v3 + # - name: Set up Python ${{ matrix.python-version }} + # uses: actions/setup-python@v4.3.0 + # with: + # python-version: ${{ matrix.python-version }} + # - name: Get packages + # uses: actions/download-artifact@v3 + # with: + # name: packages + # - name: Install dependencies + # run: | + # ${{ matrix.pre-command }} + # python -m pip install tox coverage[toml] + # - name: Test + # env: + # TOGA_INSTALL_COMMAND: 'bash -c "pip install ../{core,dummy,${{ matrix.backend }}}/dist/*.whl"' + # run: | + # cd ${{ matrix.backend }} + # tox -e py + # mv .coverage.* .. + # - name: Store coverage data + # uses: actions/upload-artifact@v3 + # with: + # name: backend-coverage-data + # path: ".coverage.*" + # if-no-files-found: ignore + # - name: Report platform coverage + # run: | + # python -m coverage combine + # python -m coverage report - backend-coverage: - name: Combine & check backend coverage. - runs-on: ubuntu-latest - needs: - - backend - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - uses: actions/setup-python@v4.3.0 - with: - # Use latest, so it understands all syntax. - python-version: ${{ env.max_python_version }} - - name: Install dependencies - run: | - python -m pip install coverage[toml] - - name: Retrieve coverage data - uses: actions/download-artifact@v3 - with: - name: backend-coverage-data - - name: Normalize paths in coverage data - run: | - # See https://github.com/nedbat/coveragepy/issues/991 - for coverage in `ls .coverage.*`; do - sqlite3 $coverage "update file set path = replace(path, '\\', '/')" - done - - name: Combine coverage - run: | - python -m coverage combine - - name: Generate coverage report - run: | - python -m coverage html --skip-covered --skip-empty - python -m coverage report # --fail-under=100 - - name: Upload HTML report if check failed. - uses: actions/upload-artifact@v3 - with: - name: html-coverage-report - path: htmlcov - if: ${{ failure() }} + # backend-coverage: + # name: Combine & check backend coverage. + # runs-on: ubuntu-latest + # needs: + # - backend + # steps: + # - uses: actions/checkout@v3 + # with: + # fetch-depth: 0 + # - uses: actions/setup-python@v4.3.0 + # with: + # # Use latest, so it understands all syntax. + # python-version: ${{ env.max_python_version }} + # - name: Install dependencies + # run: | + # python -m pip install coverage[toml] + # - name: Retrieve coverage data + # uses: actions/download-artifact@v3 + # with: + # name: backend-coverage-data + # - name: Normalize paths in coverage data + # run: | + # # See https://github.com/nedbat/coveragepy/issues/991 + # for coverage in `ls .coverage.*`; do + # sqlite3 $coverage "update file set path = replace(path, '\\', '/')" + # done + # - name: Combine coverage + # run: | + # python -m coverage combine + # - name: Generate coverage report + # run: | + # python -m coverage html --skip-covered --skip-empty + # python -m coverage report # --fail-under=100 + # - name: Upload HTML report if check failed. + # uses: actions/upload-artifact@v3 + # with: + # name: html-coverage-report + # path: htmlcov + # if: ${{ failure() }} From f686808af5f0af71148aaa63ab04c1855b646064 Mon Sep 17 00:00:00 2001 From: Malcolm Smith Date: Tue, 8 Nov 2022 14:30:48 +0000 Subject: [PATCH 13/16] Fix TestPyPI release --- .github/workflows/release.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 20d6b982b4..1c3f7add6b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -42,11 +42,10 @@ jobs: uses: actions/download-artifact@v3 with: name: packages - path: packages - name: Extract ${{ matrix.package }} run: | mkdir dist - mv packages/$(echo ${{ matrix.package }} | sed 's/_/?/')-[0-9]* dist + mv */dist/$(echo ${{ matrix.package }} | sed 's/_/?/')-[0-9]* dist - name: Publish to TestPyPI uses: pypa/gh-action-pypi-publish@release/v1 with: From 857587717870b2f3c1662b5483b3bf2fdfbf5e58 Mon Sep 17 00:00:00 2001 From: Malcolm Smith Date: Tue, 8 Nov 2022 17:54:35 +0000 Subject: [PATCH 14/16] Bumped version number for v0.0.1rc10 release. --- android/src/toga_android/__init__.py | 2 +- cocoa/src/toga_cocoa/__init__.py | 2 +- core/src/toga/__init__.py | 2 +- demo/pyproject.toml | 12 ++++++------ demo/setup.cfg | 4 ++-- dummy/src/toga_dummy/__init__.py | 2 +- .../.template/{{ cookiecutter.name }}/pyproject.toml | 2 +- examples/activityindicator/pyproject.toml | 2 +- examples/beeliza/pyproject.toml | 2 +- examples/box/pyproject.toml | 2 +- examples/button/pyproject.toml | 2 +- examples/canvas/pyproject.toml | 2 +- examples/colors/pyproject.toml | 2 +- examples/command/pyproject.toml | 2 +- examples/date_and_time/pyproject.toml | 2 +- examples/detailedlist/pyproject.toml | 2 +- examples/dialogs/pyproject.toml | 2 +- examples/divider/pyproject.toml | 2 +- examples/examples_overview/pyproject.toml | 2 +- examples/focus/pyproject.toml | 2 +- examples/font/pyproject.toml | 2 +- examples/handlers/pyproject.toml | 2 +- examples/imageview/pyproject.toml | 2 +- examples/layout/pyproject.toml | 2 +- examples/multilinetextinput/pyproject.toml | 2 +- examples/numberinput/pyproject.toml | 2 +- examples/optioncontainer/pyproject.toml | 2 +- examples/positron-django/pyproject.toml | 2 +- examples/positron-static/pyproject.toml | 2 +- examples/progressbar/pyproject.toml | 2 +- examples/scrollcontainer/pyproject.toml | 2 +- examples/selection/pyproject.toml | 2 +- examples/slider/pyproject.toml | 2 +- examples/switch_demo/pyproject.toml | 2 +- examples/table/pyproject.toml | 2 +- examples/table_source/pyproject.toml | 2 +- examples/textinput/pyproject.toml | 2 +- examples/tree/pyproject.toml | 2 +- examples/tree_source/pyproject.toml | 2 +- examples/tutorial0/pyproject.toml | 2 +- examples/tutorial1/pyproject.toml | 2 +- examples/tutorial2/pyproject.toml | 2 +- examples/tutorial3/pyproject.toml | 2 +- examples/tutorial4/pyproject.toml | 2 +- examples/webview/pyproject.toml | 2 +- examples/window/pyproject.toml | 2 +- gtk/src/toga_gtk/__init__.py | 2 +- iOS/src/toga_iOS/__init__.py | 2 +- toga/setup.py | 2 +- web/src/toga_web/__init__.py | 2 +- winforms/src/toga_winforms/__init__.py | 2 +- 51 files changed, 57 insertions(+), 57 deletions(-) diff --git a/android/src/toga_android/__init__.py b/android/src/toga_android/__init__.py index 073875c8f9..97ef93502b 100644 --- a/android/src/toga_android/__init__.py +++ b/android/src/toga_android/__init__.py @@ -6,4 +6,4 @@ # __version__ = '1.2.3' # Final Release # __version__ = '1.2.3.post1' # Post Release 1 -__version__ = "0.3.0.dev39" +__version__ = "0.0.1rc10" diff --git a/cocoa/src/toga_cocoa/__init__.py b/cocoa/src/toga_cocoa/__init__.py index 073875c8f9..97ef93502b 100644 --- a/cocoa/src/toga_cocoa/__init__.py +++ b/cocoa/src/toga_cocoa/__init__.py @@ -6,4 +6,4 @@ # __version__ = '1.2.3' # Final Release # __version__ = '1.2.3.post1' # Post Release 1 -__version__ = "0.3.0.dev39" +__version__ = "0.0.1rc10" diff --git a/core/src/toga/__init__.py b/core/src/toga/__init__.py index 07e2e970ab..1da98ad363 100644 --- a/core/src/toga/__init__.py +++ b/core/src/toga/__init__.py @@ -97,4 +97,4 @@ # __version__ = '1.2.3' # Final Release # __version__ = '1.2.3.post1' # Post Release 1 -__version__ = "0.3.0.dev39" +__version__ = "0.0.1rc10" diff --git a/demo/pyproject.toml b/demo/pyproject.toml index 31f18bd50a..eacc4bc6a5 100644 --- a/demo/pyproject.toml +++ b/demo/pyproject.toml @@ -2,7 +2,7 @@ [tool.briefcase] project_name = "Toga Demo" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = "Tiberius Yak" @@ -16,26 +16,26 @@ requires = [] [tool.briefcase.app.toga-demo.macOS] requires = [ - "toga-cocoa==0.3.0.dev39", + "toga-cocoa==0.0.1rc10", ] [tool.briefcase.app.toga-demo.linux] requires = [ - "toga-gtk==0.3.0.dev39", + "toga-gtk==0.0.1rc10", ] [tool.briefcase.app.toga-demo.windows] requires = [ - "toga-winforms==0.3.0.dev39", + "toga-winforms==0.0.1rc10", ] # Mobile deployments [tool.briefcase.app.toga-demo.iOS] requires = [ - "toga-iOS==0.3.0.dev39", + "toga-iOS==0.0.1rc10", ] [tool.briefcase.app.toga-demo.android] requires = [ - "toga-android==0.3.0.dev39", + "toga-android==0.0.1rc10", ] diff --git a/demo/setup.cfg b/demo/setup.cfg index 8e437a52a4..022b592425 100644 --- a/demo/setup.cfg +++ b/demo/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = toga-demo -version = 0.3.0.dev39 +version = 0.0.1rc10 description = A demonstration of the capabilities of the Toga widget toolkit. url = https://beeware.org/project/projects/libraries/toga/ project_urls = @@ -48,7 +48,7 @@ keywords = [options] install_requires = - toga==0.3.0.dev39 + toga==0.0.1rc10 packages = find: python_requires = >= 3.5 diff --git a/dummy/src/toga_dummy/__init__.py b/dummy/src/toga_dummy/__init__.py index 72e1185336..b5e0effd02 100644 --- a/dummy/src/toga_dummy/__init__.py +++ b/dummy/src/toga_dummy/__init__.py @@ -8,4 +8,4 @@ # __version__ = '1.2.3' # Final Release # __version__ = '1.2.3.post1' # Post Release 1 -__version__ = "0.3.0.dev39" +__version__ = "0.0.1rc10" diff --git a/examples/.template/{{ cookiecutter.name }}/pyproject.toml b/examples/.template/{{ cookiecutter.name }}/pyproject.toml index ea0cb5fa4c..80dc0341fe 100644 --- a/examples/.template/{{ cookiecutter.name }}/pyproject.toml +++ b/examples/.template/{{ cookiecutter.name }}/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "{{ cookiecutter.formal_name }}" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/activityindicator/pyproject.toml b/examples/activityindicator/pyproject.toml index 61f7da9c1e..dcec437793 100644 --- a/examples/activityindicator/pyproject.toml +++ b/examples/activityindicator/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Activity Indicator" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/beeliza/pyproject.toml b/examples/beeliza/pyproject.toml index d04a7a17c8..982df8f75d 100644 --- a/examples/beeliza/pyproject.toml +++ b/examples/beeliza/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Beeliza" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/box/pyproject.toml b/examples/box/pyproject.toml index bb563f2274..a991987c58 100644 --- a/examples/box/pyproject.toml +++ b/examples/box/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Box Demo" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/button/pyproject.toml b/examples/button/pyproject.toml index 7edbb5126a..913fa54581 100644 --- a/examples/button/pyproject.toml +++ b/examples/button/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Button Demo" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/canvas/pyproject.toml b/examples/canvas/pyproject.toml index 25acac2c8b..d9186d8d9f 100644 --- a/examples/canvas/pyproject.toml +++ b/examples/canvas/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Canvas Demo" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/colors/pyproject.toml b/examples/colors/pyproject.toml index 9250ccdbd2..a86b9b0396 100644 --- a/examples/colors/pyproject.toml +++ b/examples/colors/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "colors" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/command/pyproject.toml b/examples/command/pyproject.toml index 8fa7a09f50..b30ae4edfe 100644 --- a/examples/command/pyproject.toml +++ b/examples/command/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Command Example" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/date_and_time/pyproject.toml b/examples/date_and_time/pyproject.toml index 62e4b06fd3..c16d2e4a72 100644 --- a/examples/date_and_time/pyproject.toml +++ b/examples/date_and_time/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Date And Time" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/detailedlist/pyproject.toml b/examples/detailedlist/pyproject.toml index f61d0e3713..5c8dbdafca 100644 --- a/examples/detailedlist/pyproject.toml +++ b/examples/detailedlist/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "DetailedList Demo" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/dialogs/pyproject.toml b/examples/dialogs/pyproject.toml index 108a9d224e..2d4f851327 100644 --- a/examples/dialogs/pyproject.toml +++ b/examples/dialogs/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Dialog Demo" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/divider/pyproject.toml b/examples/divider/pyproject.toml index e65ba4f43f..00837f6d08 100644 --- a/examples/divider/pyproject.toml +++ b/examples/divider/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Divider Demo" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/examples_overview/pyproject.toml b/examples/examples_overview/pyproject.toml index 241bfb5e20..46c22125bf 100644 --- a/examples/examples_overview/pyproject.toml +++ b/examples/examples_overview/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Examples Overview" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/focus/pyproject.toml b/examples/focus/pyproject.toml index 29e7f4d4ab..309d5712b6 100644 --- a/examples/focus/pyproject.toml +++ b/examples/focus/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Focus Demo" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/font/pyproject.toml b/examples/font/pyproject.toml index 079d531c25..904228f044 100644 --- a/examples/font/pyproject.toml +++ b/examples/font/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Font Example" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/handlers/pyproject.toml b/examples/handlers/pyproject.toml index ee439253f0..31e99c8f88 100644 --- a/examples/handlers/pyproject.toml +++ b/examples/handlers/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Handler Demo" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/imageview/pyproject.toml b/examples/imageview/pyproject.toml index 93852be40f..09184aae7c 100644 --- a/examples/imageview/pyproject.toml +++ b/examples/imageview/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "ImageView Demo" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/layout/pyproject.toml b/examples/layout/pyproject.toml index b6298b4b18..1e487375d5 100644 --- a/examples/layout/pyproject.toml +++ b/examples/layout/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Layout Test" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/multilinetextinput/pyproject.toml b/examples/multilinetextinput/pyproject.toml index 26de067870..351af2c778 100644 --- a/examples/multilinetextinput/pyproject.toml +++ b/examples/multilinetextinput/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "MultilineTextInput Demo" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/numberinput/pyproject.toml b/examples/numberinput/pyproject.toml index 63d5586f63..0cb871c07a 100644 --- a/examples/numberinput/pyproject.toml +++ b/examples/numberinput/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Demo NumberInput" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/optioncontainer/pyproject.toml b/examples/optioncontainer/pyproject.toml index 7eeb91d8c5..780cecb4e5 100644 --- a/examples/optioncontainer/pyproject.toml +++ b/examples/optioncontainer/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Option Container Example" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/positron-django/pyproject.toml b/examples/positron-django/pyproject.toml index ad9acb044b..5f8e605d7f 100644 --- a/examples/positron-django/pyproject.toml +++ b/examples/positron-django/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Positron" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/positron-static/pyproject.toml b/examples/positron-static/pyproject.toml index 397d79ce37..a0672ab697 100644 --- a/examples/positron-static/pyproject.toml +++ b/examples/positron-static/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Positron" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/progressbar/pyproject.toml b/examples/progressbar/pyproject.toml index 6bd0e863c3..ef3feb7b90 100644 --- a/examples/progressbar/pyproject.toml +++ b/examples/progressbar/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "ProgressBar demo" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/scrollcontainer/pyproject.toml b/examples/scrollcontainer/pyproject.toml index 0e01a5ac18..e6ed3fb418 100644 --- a/examples/scrollcontainer/pyproject.toml +++ b/examples/scrollcontainer/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "ScrollContainer Demo" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/selection/pyproject.toml b/examples/selection/pyproject.toml index 374bc80c94..20c9f05226 100644 --- a/examples/selection/pyproject.toml +++ b/examples/selection/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Selection Demo" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/slider/pyproject.toml b/examples/slider/pyproject.toml index 86bc059918..ef604468da 100644 --- a/examples/slider/pyproject.toml +++ b/examples/slider/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Slider Demo" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/switch_demo/pyproject.toml b/examples/switch_demo/pyproject.toml index ce595407eb..1177ef543a 100644 --- a/examples/switch_demo/pyproject.toml +++ b/examples/switch_demo/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Switch Demo" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/table/pyproject.toml b/examples/table/pyproject.toml index 6642083ac4..70dfc042da 100644 --- a/examples/table/pyproject.toml +++ b/examples/table/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Table Demo" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/table_source/pyproject.toml b/examples/table_source/pyproject.toml index 48ecb96941..6fc29cb394 100644 --- a/examples/table_source/pyproject.toml +++ b/examples/table_source/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "TableSource Demo" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/textinput/pyproject.toml b/examples/textinput/pyproject.toml index 1ac6ad8481..0d60ee5fc4 100644 --- a/examples/textinput/pyproject.toml +++ b/examples/textinput/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Text Input Demo" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/tree/pyproject.toml b/examples/tree/pyproject.toml index 2f971589fa..9cb64f4dd6 100644 --- a/examples/tree/pyproject.toml +++ b/examples/tree/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Tree Demo" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/tree_source/pyproject.toml b/examples/tree_source/pyproject.toml index 082e5f5656..50cdaff9f6 100644 --- a/examples/tree_source/pyproject.toml +++ b/examples/tree_source/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "TreeSource Demo" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/tutorial0/pyproject.toml b/examples/tutorial0/pyproject.toml index b75a2089ca..aaa1148ed5 100644 --- a/examples/tutorial0/pyproject.toml +++ b/examples/tutorial0/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Tutorial 0" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/tutorial1/pyproject.toml b/examples/tutorial1/pyproject.toml index 3b5c6ccf38..1b357458b8 100644 --- a/examples/tutorial1/pyproject.toml +++ b/examples/tutorial1/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Tutorial 1" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/tutorial2/pyproject.toml b/examples/tutorial2/pyproject.toml index b699d690a2..fd74f52a95 100644 --- a/examples/tutorial2/pyproject.toml +++ b/examples/tutorial2/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Tutorial 2" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/tutorial3/pyproject.toml b/examples/tutorial3/pyproject.toml index aeb58eb66e..5e448c51f0 100644 --- a/examples/tutorial3/pyproject.toml +++ b/examples/tutorial3/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Tutorial 3" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/tutorial4/pyproject.toml b/examples/tutorial4/pyproject.toml index a6c978c4ef..b5b16f0630 100644 --- a/examples/tutorial4/pyproject.toml +++ b/examples/tutorial4/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Tutorial 4" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/webview/pyproject.toml b/examples/webview/pyproject.toml index fdb5b75124..c51fd74f2e 100644 --- a/examples/webview/pyproject.toml +++ b/examples/webview/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "WebView Demo" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/window/pyproject.toml b/examples/window/pyproject.toml index b0b5b9eeea..5d89221604 100644 --- a/examples/window/pyproject.toml +++ b/examples/window/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Window Demo" bundle = "org.beeware" -version = "0.3.0.dev39" +version = "0.0.1rc10" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/gtk/src/toga_gtk/__init__.py b/gtk/src/toga_gtk/__init__.py index 073875c8f9..97ef93502b 100644 --- a/gtk/src/toga_gtk/__init__.py +++ b/gtk/src/toga_gtk/__init__.py @@ -6,4 +6,4 @@ # __version__ = '1.2.3' # Final Release # __version__ = '1.2.3.post1' # Post Release 1 -__version__ = "0.3.0.dev39" +__version__ = "0.0.1rc10" diff --git a/iOS/src/toga_iOS/__init__.py b/iOS/src/toga_iOS/__init__.py index 073875c8f9..97ef93502b 100644 --- a/iOS/src/toga_iOS/__init__.py +++ b/iOS/src/toga_iOS/__init__.py @@ -6,4 +6,4 @@ # __version__ = '1.2.3' # Final Release # __version__ = '1.2.3.post1' # Post Release 1 -__version__ = "0.3.0.dev39" +__version__ = "0.0.1rc10" diff --git a/toga/setup.py b/toga/setup.py index 1c6c8414b3..b558fc60ba 100644 --- a/toga/setup.py +++ b/toga/setup.py @@ -1,7 +1,7 @@ #!/usr/bin/env python from setuptools import setup -version = "0.3.0.dev39" +version = "0.0.1rc10" setup( version=version, diff --git a/web/src/toga_web/__init__.py b/web/src/toga_web/__init__.py index 073875c8f9..97ef93502b 100644 --- a/web/src/toga_web/__init__.py +++ b/web/src/toga_web/__init__.py @@ -6,4 +6,4 @@ # __version__ = '1.2.3' # Final Release # __version__ = '1.2.3.post1' # Post Release 1 -__version__ = "0.3.0.dev39" +__version__ = "0.0.1rc10" diff --git a/winforms/src/toga_winforms/__init__.py b/winforms/src/toga_winforms/__init__.py index 073875c8f9..97ef93502b 100644 --- a/winforms/src/toga_winforms/__init__.py +++ b/winforms/src/toga_winforms/__init__.py @@ -6,4 +6,4 @@ # __version__ = '1.2.3' # Final Release # __version__ = '1.2.3.post1' # Post Release 1 -__version__ = "0.3.0.dev39" +__version__ = "0.0.1rc10" From 696aaa543edbd025c689a18e74662cde0cbf1135 Mon Sep 17 00:00:00 2001 From: Malcolm Smith Date: Tue, 8 Nov 2022 18:05:32 +0000 Subject: [PATCH 15/16] Bumped version number for v0.3.0.dev39 release. --- android/src/toga_android/__init__.py | 2 +- cocoa/src/toga_cocoa/__init__.py | 2 +- core/src/toga/__init__.py | 2 +- demo/pyproject.toml | 12 ++++++------ demo/setup.cfg | 4 ++-- dummy/src/toga_dummy/__init__.py | 2 +- .../.template/{{ cookiecutter.name }}/pyproject.toml | 2 +- examples/activityindicator/pyproject.toml | 2 +- examples/beeliza/pyproject.toml | 2 +- examples/box/pyproject.toml | 2 +- examples/button/pyproject.toml | 2 +- examples/canvas/pyproject.toml | 2 +- examples/colors/pyproject.toml | 2 +- examples/command/pyproject.toml | 2 +- examples/date_and_time/pyproject.toml | 2 +- examples/detailedlist/pyproject.toml | 2 +- examples/dialogs/pyproject.toml | 2 +- examples/divider/pyproject.toml | 2 +- examples/examples_overview/pyproject.toml | 2 +- examples/focus/pyproject.toml | 2 +- examples/font/pyproject.toml | 2 +- examples/handlers/pyproject.toml | 2 +- examples/imageview/pyproject.toml | 2 +- examples/layout/pyproject.toml | 2 +- examples/multilinetextinput/pyproject.toml | 2 +- examples/numberinput/pyproject.toml | 2 +- examples/optioncontainer/pyproject.toml | 2 +- examples/positron-django/pyproject.toml | 2 +- examples/positron-static/pyproject.toml | 2 +- examples/progressbar/pyproject.toml | 2 +- examples/scrollcontainer/pyproject.toml | 2 +- examples/selection/pyproject.toml | 2 +- examples/slider/pyproject.toml | 2 +- examples/switch_demo/pyproject.toml | 2 +- examples/table/pyproject.toml | 2 +- examples/table_source/pyproject.toml | 2 +- examples/textinput/pyproject.toml | 2 +- examples/tree/pyproject.toml | 2 +- examples/tree_source/pyproject.toml | 2 +- examples/tutorial0/pyproject.toml | 2 +- examples/tutorial1/pyproject.toml | 2 +- examples/tutorial2/pyproject.toml | 2 +- examples/tutorial3/pyproject.toml | 2 +- examples/tutorial4/pyproject.toml | 2 +- examples/webview/pyproject.toml | 2 +- examples/window/pyproject.toml | 2 +- gtk/src/toga_gtk/__init__.py | 2 +- iOS/src/toga_iOS/__init__.py | 2 +- toga/setup.py | 2 +- web/src/toga_web/__init__.py | 2 +- winforms/src/toga_winforms/__init__.py | 2 +- 51 files changed, 57 insertions(+), 57 deletions(-) diff --git a/android/src/toga_android/__init__.py b/android/src/toga_android/__init__.py index 97ef93502b..073875c8f9 100644 --- a/android/src/toga_android/__init__.py +++ b/android/src/toga_android/__init__.py @@ -6,4 +6,4 @@ # __version__ = '1.2.3' # Final Release # __version__ = '1.2.3.post1' # Post Release 1 -__version__ = "0.0.1rc10" +__version__ = "0.3.0.dev39" diff --git a/cocoa/src/toga_cocoa/__init__.py b/cocoa/src/toga_cocoa/__init__.py index 97ef93502b..073875c8f9 100644 --- a/cocoa/src/toga_cocoa/__init__.py +++ b/cocoa/src/toga_cocoa/__init__.py @@ -6,4 +6,4 @@ # __version__ = '1.2.3' # Final Release # __version__ = '1.2.3.post1' # Post Release 1 -__version__ = "0.0.1rc10" +__version__ = "0.3.0.dev39" diff --git a/core/src/toga/__init__.py b/core/src/toga/__init__.py index 1da98ad363..07e2e970ab 100644 --- a/core/src/toga/__init__.py +++ b/core/src/toga/__init__.py @@ -97,4 +97,4 @@ # __version__ = '1.2.3' # Final Release # __version__ = '1.2.3.post1' # Post Release 1 -__version__ = "0.0.1rc10" +__version__ = "0.3.0.dev39" diff --git a/demo/pyproject.toml b/demo/pyproject.toml index eacc4bc6a5..31f18bd50a 100644 --- a/demo/pyproject.toml +++ b/demo/pyproject.toml @@ -2,7 +2,7 @@ [tool.briefcase] project_name = "Toga Demo" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = "Tiberius Yak" @@ -16,26 +16,26 @@ requires = [] [tool.briefcase.app.toga-demo.macOS] requires = [ - "toga-cocoa==0.0.1rc10", + "toga-cocoa==0.3.0.dev39", ] [tool.briefcase.app.toga-demo.linux] requires = [ - "toga-gtk==0.0.1rc10", + "toga-gtk==0.3.0.dev39", ] [tool.briefcase.app.toga-demo.windows] requires = [ - "toga-winforms==0.0.1rc10", + "toga-winforms==0.3.0.dev39", ] # Mobile deployments [tool.briefcase.app.toga-demo.iOS] requires = [ - "toga-iOS==0.0.1rc10", + "toga-iOS==0.3.0.dev39", ] [tool.briefcase.app.toga-demo.android] requires = [ - "toga-android==0.0.1rc10", + "toga-android==0.3.0.dev39", ] diff --git a/demo/setup.cfg b/demo/setup.cfg index 022b592425..8e437a52a4 100644 --- a/demo/setup.cfg +++ b/demo/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = toga-demo -version = 0.0.1rc10 +version = 0.3.0.dev39 description = A demonstration of the capabilities of the Toga widget toolkit. url = https://beeware.org/project/projects/libraries/toga/ project_urls = @@ -48,7 +48,7 @@ keywords = [options] install_requires = - toga==0.0.1rc10 + toga==0.3.0.dev39 packages = find: python_requires = >= 3.5 diff --git a/dummy/src/toga_dummy/__init__.py b/dummy/src/toga_dummy/__init__.py index b5e0effd02..72e1185336 100644 --- a/dummy/src/toga_dummy/__init__.py +++ b/dummy/src/toga_dummy/__init__.py @@ -8,4 +8,4 @@ # __version__ = '1.2.3' # Final Release # __version__ = '1.2.3.post1' # Post Release 1 -__version__ = "0.0.1rc10" +__version__ = "0.3.0.dev39" diff --git a/examples/.template/{{ cookiecutter.name }}/pyproject.toml b/examples/.template/{{ cookiecutter.name }}/pyproject.toml index 80dc0341fe..ea0cb5fa4c 100644 --- a/examples/.template/{{ cookiecutter.name }}/pyproject.toml +++ b/examples/.template/{{ cookiecutter.name }}/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "{{ cookiecutter.formal_name }}" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/activityindicator/pyproject.toml b/examples/activityindicator/pyproject.toml index dcec437793..61f7da9c1e 100644 --- a/examples/activityindicator/pyproject.toml +++ b/examples/activityindicator/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Activity Indicator" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/beeliza/pyproject.toml b/examples/beeliza/pyproject.toml index 982df8f75d..d04a7a17c8 100644 --- a/examples/beeliza/pyproject.toml +++ b/examples/beeliza/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Beeliza" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/box/pyproject.toml b/examples/box/pyproject.toml index a991987c58..bb563f2274 100644 --- a/examples/box/pyproject.toml +++ b/examples/box/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Box Demo" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/button/pyproject.toml b/examples/button/pyproject.toml index 913fa54581..7edbb5126a 100644 --- a/examples/button/pyproject.toml +++ b/examples/button/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Button Demo" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/canvas/pyproject.toml b/examples/canvas/pyproject.toml index d9186d8d9f..25acac2c8b 100644 --- a/examples/canvas/pyproject.toml +++ b/examples/canvas/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Canvas Demo" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/colors/pyproject.toml b/examples/colors/pyproject.toml index a86b9b0396..9250ccdbd2 100644 --- a/examples/colors/pyproject.toml +++ b/examples/colors/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "colors" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/command/pyproject.toml b/examples/command/pyproject.toml index b30ae4edfe..8fa7a09f50 100644 --- a/examples/command/pyproject.toml +++ b/examples/command/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Command Example" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/date_and_time/pyproject.toml b/examples/date_and_time/pyproject.toml index c16d2e4a72..62e4b06fd3 100644 --- a/examples/date_and_time/pyproject.toml +++ b/examples/date_and_time/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Date And Time" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/detailedlist/pyproject.toml b/examples/detailedlist/pyproject.toml index 5c8dbdafca..f61d0e3713 100644 --- a/examples/detailedlist/pyproject.toml +++ b/examples/detailedlist/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "DetailedList Demo" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/dialogs/pyproject.toml b/examples/dialogs/pyproject.toml index 2d4f851327..108a9d224e 100644 --- a/examples/dialogs/pyproject.toml +++ b/examples/dialogs/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Dialog Demo" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/divider/pyproject.toml b/examples/divider/pyproject.toml index 00837f6d08..e65ba4f43f 100644 --- a/examples/divider/pyproject.toml +++ b/examples/divider/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Divider Demo" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/examples_overview/pyproject.toml b/examples/examples_overview/pyproject.toml index 46c22125bf..241bfb5e20 100644 --- a/examples/examples_overview/pyproject.toml +++ b/examples/examples_overview/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Examples Overview" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/focus/pyproject.toml b/examples/focus/pyproject.toml index 309d5712b6..29e7f4d4ab 100644 --- a/examples/focus/pyproject.toml +++ b/examples/focus/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Focus Demo" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/font/pyproject.toml b/examples/font/pyproject.toml index 904228f044..079d531c25 100644 --- a/examples/font/pyproject.toml +++ b/examples/font/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Font Example" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/handlers/pyproject.toml b/examples/handlers/pyproject.toml index 31e99c8f88..ee439253f0 100644 --- a/examples/handlers/pyproject.toml +++ b/examples/handlers/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Handler Demo" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/imageview/pyproject.toml b/examples/imageview/pyproject.toml index 09184aae7c..93852be40f 100644 --- a/examples/imageview/pyproject.toml +++ b/examples/imageview/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "ImageView Demo" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/layout/pyproject.toml b/examples/layout/pyproject.toml index 1e487375d5..b6298b4b18 100644 --- a/examples/layout/pyproject.toml +++ b/examples/layout/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Layout Test" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/multilinetextinput/pyproject.toml b/examples/multilinetextinput/pyproject.toml index 351af2c778..26de067870 100644 --- a/examples/multilinetextinput/pyproject.toml +++ b/examples/multilinetextinput/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "MultilineTextInput Demo" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/numberinput/pyproject.toml b/examples/numberinput/pyproject.toml index 0cb871c07a..63d5586f63 100644 --- a/examples/numberinput/pyproject.toml +++ b/examples/numberinput/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Demo NumberInput" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/optioncontainer/pyproject.toml b/examples/optioncontainer/pyproject.toml index 780cecb4e5..7eeb91d8c5 100644 --- a/examples/optioncontainer/pyproject.toml +++ b/examples/optioncontainer/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Option Container Example" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/positron-django/pyproject.toml b/examples/positron-django/pyproject.toml index 5f8e605d7f..ad9acb044b 100644 --- a/examples/positron-django/pyproject.toml +++ b/examples/positron-django/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Positron" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/positron-static/pyproject.toml b/examples/positron-static/pyproject.toml index a0672ab697..397d79ce37 100644 --- a/examples/positron-static/pyproject.toml +++ b/examples/positron-static/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Positron" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/progressbar/pyproject.toml b/examples/progressbar/pyproject.toml index ef3feb7b90..6bd0e863c3 100644 --- a/examples/progressbar/pyproject.toml +++ b/examples/progressbar/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "ProgressBar demo" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/scrollcontainer/pyproject.toml b/examples/scrollcontainer/pyproject.toml index e6ed3fb418..0e01a5ac18 100644 --- a/examples/scrollcontainer/pyproject.toml +++ b/examples/scrollcontainer/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "ScrollContainer Demo" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/selection/pyproject.toml b/examples/selection/pyproject.toml index 20c9f05226..374bc80c94 100644 --- a/examples/selection/pyproject.toml +++ b/examples/selection/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Selection Demo" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/slider/pyproject.toml b/examples/slider/pyproject.toml index ef604468da..86bc059918 100644 --- a/examples/slider/pyproject.toml +++ b/examples/slider/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Slider Demo" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/switch_demo/pyproject.toml b/examples/switch_demo/pyproject.toml index 1177ef543a..ce595407eb 100644 --- a/examples/switch_demo/pyproject.toml +++ b/examples/switch_demo/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Switch Demo" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/table/pyproject.toml b/examples/table/pyproject.toml index 70dfc042da..6642083ac4 100644 --- a/examples/table/pyproject.toml +++ b/examples/table/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Table Demo" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/table_source/pyproject.toml b/examples/table_source/pyproject.toml index 6fc29cb394..48ecb96941 100644 --- a/examples/table_source/pyproject.toml +++ b/examples/table_source/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "TableSource Demo" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/textinput/pyproject.toml b/examples/textinput/pyproject.toml index 0d60ee5fc4..1ac6ad8481 100644 --- a/examples/textinput/pyproject.toml +++ b/examples/textinput/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Text Input Demo" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/tree/pyproject.toml b/examples/tree/pyproject.toml index 9cb64f4dd6..2f971589fa 100644 --- a/examples/tree/pyproject.toml +++ b/examples/tree/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Tree Demo" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/tree_source/pyproject.toml b/examples/tree_source/pyproject.toml index 50cdaff9f6..082e5f5656 100644 --- a/examples/tree_source/pyproject.toml +++ b/examples/tree_source/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "TreeSource Demo" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/tutorial0/pyproject.toml b/examples/tutorial0/pyproject.toml index aaa1148ed5..b75a2089ca 100644 --- a/examples/tutorial0/pyproject.toml +++ b/examples/tutorial0/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Tutorial 0" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/tutorial1/pyproject.toml b/examples/tutorial1/pyproject.toml index 1b357458b8..3b5c6ccf38 100644 --- a/examples/tutorial1/pyproject.toml +++ b/examples/tutorial1/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Tutorial 1" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/tutorial2/pyproject.toml b/examples/tutorial2/pyproject.toml index fd74f52a95..b699d690a2 100644 --- a/examples/tutorial2/pyproject.toml +++ b/examples/tutorial2/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Tutorial 2" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/tutorial3/pyproject.toml b/examples/tutorial3/pyproject.toml index 5e448c51f0..aeb58eb66e 100644 --- a/examples/tutorial3/pyproject.toml +++ b/examples/tutorial3/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Tutorial 3" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/tutorial4/pyproject.toml b/examples/tutorial4/pyproject.toml index b5b16f0630..a6c978c4ef 100644 --- a/examples/tutorial4/pyproject.toml +++ b/examples/tutorial4/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Tutorial 4" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/webview/pyproject.toml b/examples/webview/pyproject.toml index c51fd74f2e..fdb5b75124 100644 --- a/examples/webview/pyproject.toml +++ b/examples/webview/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "WebView Demo" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/examples/window/pyproject.toml b/examples/window/pyproject.toml index 5d89221604..b0b5b9eeea 100644 --- a/examples/window/pyproject.toml +++ b/examples/window/pyproject.toml @@ -4,7 +4,7 @@ requires = ["briefcase"] [tool.briefcase] project_name = "Window Demo" bundle = "org.beeware" -version = "0.0.1rc10" +version = "0.3.0.dev39" url = "https://beeware.org" license = "BSD license" author = 'Tiberius Yak' diff --git a/gtk/src/toga_gtk/__init__.py b/gtk/src/toga_gtk/__init__.py index 97ef93502b..073875c8f9 100644 --- a/gtk/src/toga_gtk/__init__.py +++ b/gtk/src/toga_gtk/__init__.py @@ -6,4 +6,4 @@ # __version__ = '1.2.3' # Final Release # __version__ = '1.2.3.post1' # Post Release 1 -__version__ = "0.0.1rc10" +__version__ = "0.3.0.dev39" diff --git a/iOS/src/toga_iOS/__init__.py b/iOS/src/toga_iOS/__init__.py index 97ef93502b..073875c8f9 100644 --- a/iOS/src/toga_iOS/__init__.py +++ b/iOS/src/toga_iOS/__init__.py @@ -6,4 +6,4 @@ # __version__ = '1.2.3' # Final Release # __version__ = '1.2.3.post1' # Post Release 1 -__version__ = "0.0.1rc10" +__version__ = "0.3.0.dev39" diff --git a/toga/setup.py b/toga/setup.py index b558fc60ba..1c6c8414b3 100644 --- a/toga/setup.py +++ b/toga/setup.py @@ -1,7 +1,7 @@ #!/usr/bin/env python from setuptools import setup -version = "0.0.1rc10" +version = "0.3.0.dev39" setup( version=version, diff --git a/web/src/toga_web/__init__.py b/web/src/toga_web/__init__.py index 97ef93502b..073875c8f9 100644 --- a/web/src/toga_web/__init__.py +++ b/web/src/toga_web/__init__.py @@ -6,4 +6,4 @@ # __version__ = '1.2.3' # Final Release # __version__ = '1.2.3.post1' # Post Release 1 -__version__ = "0.0.1rc10" +__version__ = "0.3.0.dev39" diff --git a/winforms/src/toga_winforms/__init__.py b/winforms/src/toga_winforms/__init__.py index 97ef93502b..073875c8f9 100644 --- a/winforms/src/toga_winforms/__init__.py +++ b/winforms/src/toga_winforms/__init__.py @@ -6,4 +6,4 @@ # __version__ = '1.2.3' # Final Release # __version__ = '1.2.3.post1' # Post Release 1 -__version__ = "0.0.1rc10" +__version__ = "0.3.0.dev39" From 7ddf3b54415eaf8b1dd80c0f96aa9fd7a6c06457 Mon Sep 17 00:00:00 2001 From: Malcolm Smith Date: Tue, 8 Nov 2022 18:06:47 +0000 Subject: [PATCH 16/16] Fix release.sh bump / Enable tests --- .github/workflows/ci.yml | 350 +++++++++++++++++++-------------------- release.sh | 18 +- 2 files changed, 184 insertions(+), 184 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 71dae18f15..6c2b3029c1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -62,185 +62,185 @@ jobs: path: "*/dist/*" if-no-files-found: error - # core: - # needs: [pre-commit, towncrier, package] - # strategy: - # matrix: - # platform: ['macos', 'ubuntu', 'windows'] - # python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"] #, "3.12.0-alpha - 3.12.0"] - # runs-on: ${{ matrix.platform }}-latest - # steps: - # - uses: actions/checkout@v3 - # - name: Set up Python ${{ matrix.python-version }} - # uses: actions/setup-python@v4.3.0 - # with: - # python-version: ${{ matrix.python-version }} - # - name: Install dependencies - # run: | - # python -m pip install tox coverage[toml] - # - name: Get packages - # uses: actions/download-artifact@v3 - # with: - # name: packages - # - name: Test - # env: - # TOGA_INSTALL_COMMAND: 'bash -c "pip install ../{core,dummy}/dist/*.whl"' - # run: | - # cd core - # tox -e py - # mv .coverage.* .. - # - name: Store coverage data - # uses: actions/upload-artifact@v3 - # with: - # name: core-coverage-data - # path: ".coverage.*" - # if-no-files-found: ignore - # - name: Report platform coverage - # run: | - # python -m coverage combine - # python -m coverage report - # # Generate XML report for CodeCov - # python -m coverage xml - # - name: Upload coverage data to CodeCov - # uses: codecov/codecov-action@v3 - # with: - # token: ${{ secrets.CODECOV_TOKEN }} - # file: ./coverage.xml - # flags: unittests - # fail_ci_if_error: true + core: + needs: [pre-commit, towncrier, package] + strategy: + matrix: + platform: ['macos', 'ubuntu', 'windows'] + python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"] #, "3.12.0-alpha - 3.12.0"] + runs-on: ${{ matrix.platform }}-latest + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4.3.0 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install tox coverage[toml] + - name: Get packages + uses: actions/download-artifact@v3 + with: + name: packages + - name: Test + env: + TOGA_INSTALL_COMMAND: 'bash -c "pip install ../{core,dummy}/dist/*.whl"' + run: | + cd core + tox -e py + mv .coverage.* .. + - name: Store coverage data + uses: actions/upload-artifact@v3 + with: + name: core-coverage-data + path: ".coverage.*" + if-no-files-found: ignore + - name: Report platform coverage + run: | + python -m coverage combine + python -m coverage report + # Generate XML report for CodeCov + python -m coverage xml + - name: Upload coverage data to CodeCov + uses: codecov/codecov-action@v3 + with: + token: ${{ secrets.CODECOV_TOKEN }} + file: ./coverage.xml + flags: unittests + fail_ci_if_error: true - # core-coverage: - # name: Combine & check core coverage. - # runs-on: ubuntu-latest - # needs: core - # steps: - # - uses: actions/checkout@v3 - # with: - # fetch-depth: 0 - # - uses: actions/setup-python@v4.3.0 - # with: - # # Use latest, so it understands all syntax. - # python-version: ${{ env.max_python_version }} - # - name: Install dependencies - # run: | - # python -m pip install coverage[toml] - # - name: Retrieve coverage data - # uses: actions/download-artifact@v3 - # with: - # name: core-coverage-data - # - name: Normalize paths in coverage data - # run: | - # # See https://github.com/nedbat/coveragepy/issues/991 - # for coverage in `ls .coverage.*`; do - # sqlite3 $coverage "update file set path = replace(path, '\\', '/')" - # done - # - name: Combine coverage - # run: | - # python -m coverage combine - # - name: Generate coverage report - # run: | - # python -m coverage html --skip-covered --skip-empty - # python -m coverage report # --fail-under=100 - # - name: Upload HTML report if check failed. - # uses: actions/upload-artifact@v3 - # with: - # name: html-coverage-report - # path: htmlcov - # if: ${{ failure() }} + core-coverage: + name: Combine & check core coverage. + runs-on: ubuntu-latest + needs: core + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + - uses: actions/setup-python@v4.3.0 + with: + # Use latest, so it understands all syntax. + python-version: ${{ env.max_python_version }} + - name: Install dependencies + run: | + python -m pip install coverage[toml] + - name: Retrieve coverage data + uses: actions/download-artifact@v3 + with: + name: core-coverage-data + - name: Normalize paths in coverage data + run: | + # See https://github.com/nedbat/coveragepy/issues/991 + for coverage in `ls .coverage.*`; do + sqlite3 $coverage "update file set path = replace(path, '\\', '/')" + done + - name: Combine coverage + run: | + python -m coverage combine + - name: Generate coverage report + run: | + python -m coverage html --skip-covered --skip-empty + python -m coverage report # --fail-under=100 + - name: Upload HTML report if check failed. + uses: actions/upload-artifact@v3 + with: + name: html-coverage-report + path: htmlcov + if: ${{ failure() }} - # backend: - # needs: core - # strategy: - # matrix: - # backend: [android, cocoa, gtk, iOS, web, winforms] - # include: - # - runs-on: ubuntu-latest - # - python-version: "3.7" # Should be env.min_python_version (https://github.com/actions/runner/issues/480) - # - pre-command: + backend: + needs: core + strategy: + matrix: + backend: [android, cocoa, gtk, iOS, web, winforms] + include: + - runs-on: ubuntu-latest + - python-version: "3.7" # Should be env.min_python_version (https://github.com/actions/runner/issues/480) + - pre-command: - # - backend: cocoa - # runs-on: macos-latest + - backend: cocoa + runs-on: macos-latest - # - backend: gtk - # pre-command: "sudo apt-get update -y && sudo apt-get install -y python3-gi python3-gi-cairo gir1.2-gtk-3.0 python3-dev libgirepository1.0-dev libcairo2-dev pkg-config" + - backend: gtk + pre-command: "sudo apt-get update -y && sudo apt-get install -y python3-gi python3-gi-cairo gir1.2-gtk-3.0 python3-dev libgirepository1.0-dev libcairo2-dev pkg-config" - # - backend: iOS - # runs-on: macos-latest + - backend: iOS + runs-on: macos-latest - # - backend: winforms - # runs-on: windows-latest - # # Py3.9 is the first Python version for which - # # a wheel of pythonnet isn't available on PyPI. - # python-version: "3.9" - # runs-on: ${{ matrix.runs-on }} - # steps: - # - uses: actions/checkout@v3 - # - name: Set up Python ${{ matrix.python-version }} - # uses: actions/setup-python@v4.3.0 - # with: - # python-version: ${{ matrix.python-version }} - # - name: Get packages - # uses: actions/download-artifact@v3 - # with: - # name: packages - # - name: Install dependencies - # run: | - # ${{ matrix.pre-command }} - # python -m pip install tox coverage[toml] - # - name: Test - # env: - # TOGA_INSTALL_COMMAND: 'bash -c "pip install ../{core,dummy,${{ matrix.backend }}}/dist/*.whl"' - # run: | - # cd ${{ matrix.backend }} - # tox -e py - # mv .coverage.* .. - # - name: Store coverage data - # uses: actions/upload-artifact@v3 - # with: - # name: backend-coverage-data - # path: ".coverage.*" - # if-no-files-found: ignore - # - name: Report platform coverage - # run: | - # python -m coverage combine - # python -m coverage report + - backend: winforms + runs-on: windows-latest + # Py3.9 is the first Python version for which + # a wheel of pythonnet isn't available on PyPI. + python-version: "3.9" + runs-on: ${{ matrix.runs-on }} + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4.3.0 + with: + python-version: ${{ matrix.python-version }} + - name: Get packages + uses: actions/download-artifact@v3 + with: + name: packages + - name: Install dependencies + run: | + ${{ matrix.pre-command }} + python -m pip install tox coverage[toml] + - name: Test + env: + TOGA_INSTALL_COMMAND: 'bash -c "pip install ../{core,dummy,${{ matrix.backend }}}/dist/*.whl"' + run: | + cd ${{ matrix.backend }} + tox -e py + mv .coverage.* .. + - name: Store coverage data + uses: actions/upload-artifact@v3 + with: + name: backend-coverage-data + path: ".coverage.*" + if-no-files-found: ignore + - name: Report platform coverage + run: | + python -m coverage combine + python -m coverage report - # backend-coverage: - # name: Combine & check backend coverage. - # runs-on: ubuntu-latest - # needs: - # - backend - # steps: - # - uses: actions/checkout@v3 - # with: - # fetch-depth: 0 - # - uses: actions/setup-python@v4.3.0 - # with: - # # Use latest, so it understands all syntax. - # python-version: ${{ env.max_python_version }} - # - name: Install dependencies - # run: | - # python -m pip install coverage[toml] - # - name: Retrieve coverage data - # uses: actions/download-artifact@v3 - # with: - # name: backend-coverage-data - # - name: Normalize paths in coverage data - # run: | - # # See https://github.com/nedbat/coveragepy/issues/991 - # for coverage in `ls .coverage.*`; do - # sqlite3 $coverage "update file set path = replace(path, '\\', '/')" - # done - # - name: Combine coverage - # run: | - # python -m coverage combine - # - name: Generate coverage report - # run: | - # python -m coverage html --skip-covered --skip-empty - # python -m coverage report # --fail-under=100 - # - name: Upload HTML report if check failed. - # uses: actions/upload-artifact@v3 - # with: - # name: html-coverage-report - # path: htmlcov - # if: ${{ failure() }} + backend-coverage: + name: Combine & check backend coverage. + runs-on: ubuntu-latest + needs: + - backend + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + - uses: actions/setup-python@v4.3.0 + with: + # Use latest, so it understands all syntax. + python-version: ${{ env.max_python_version }} + - name: Install dependencies + run: | + python -m pip install coverage[toml] + - name: Retrieve coverage data + uses: actions/download-artifact@v3 + with: + name: backend-coverage-data + - name: Normalize paths in coverage data + run: | + # See https://github.com/nedbat/coveragepy/issues/991 + for coverage in `ls .coverage.*`; do + sqlite3 $coverage "update file set path = replace(path, '\\', '/')" + done + - name: Combine coverage + run: | + python -m coverage combine + - name: Generate coverage report + run: | + python -m coverage html --skip-covered --skip-empty + python -m coverage report # --fail-under=100 + - name: Upload HTML report if check failed. + uses: actions/upload-artifact@v3 + with: + name: html-coverage-report + path: htmlcov + if: ${{ failure() }} diff --git a/release.sh b/release.sh index 03e63f00bf..12563e1918 100755 --- a/release.sh +++ b/release.sh @@ -9,7 +9,6 @@ function bump { echo "************************************************************" echo if [ "$1" = "toga" ]; then - pushd . # Find all the pyproject.toml examples, # and update the version of toga required. find examples -name pyproject.toml | while read f; do @@ -17,11 +16,12 @@ function bump { sed "s/^version = \".*\"/version = \"$2\"/g" temp > "$f" git add "$f" done + rm temp - # Update the version in mock_gtk - mv docs/mock_gtk/setup.py temp - sed "s/version=\".*\"/version=\"$2\"/g" temp > docs/mock_gtk/setup.py - git add docs/mock_gtk/setup.py + pushd toga + mv setup.py temp + sed "s/version = .*/version = \"$2\"/g" temp > setup.py + git add setup.py elif [ "$1" = "demo" ]; then pushd demo @@ -39,13 +39,13 @@ function bump { else if [ "$1" = "core" ]; then - pushd src/$1/src/toga + pushd $1/src/toga else - pushd src/$1/src/toga_$1 + pushd $1/src/toga_$1 fi mv __init__.py temp - sed "s/^__version__ = '.*'/__version__ = '$2'/g" temp > __init__.py + sed "s/^__version__ = .*/__version__ = \"$2\"/g" temp > __init__.py git add __init__.py fi rm temp @@ -101,7 +101,7 @@ MODULES="android cocoa core dummy gtk iOS web winforms toga demo" action=$1 shift -VERSION=$(grep "^__version__ = '.*'$" src/core/src/toga/__init__.py | cut -f 2 -d \') +VERSION=$(grep "^__version__ = '.*'$" core/src/toga/__init__.py | cut -f 2 -d \') if [ "$action" = "" ]; then echo "Usage -"