February may be the shortest month, but that doesn't mean we've got any less progress to report!
What we've done
- PEP 738, adding official Android support to CPython, has been formally submitted to the Python Steering Council for approval.
- We've started landing patches in CPython to add formal support for iOS and Android. There are more patches in review, and more to come, but so far we've landed patches that:
- Fix the compilation of the grp module on Android
- Disable tests that can't run on mobile platforms
- Refactor the CPython build system to allow for some of the oddities of iOS as a platform
- Add build targets for compiling iOS-compatible frameworks
- Correct the linking of extension modules on Android
- Enable the concurrent.futures tests on platforms that don't support multiprocessing
- We added macOS ARM64 machines to our CI capabilities for Toga and Briefcase. We've officially supported ARM64 on macOS for some time, but we've been unable to test this support as part of our CI and release procedure - we've had to do ad-hoc testing on the machines we're using to develop on a day to day basis. As a result of improvements to Github's CI infrastructure, we're now able to perform automated testing. As part of these changes, we've also added testing for Python 3.13 (which will be released around October of this year).
- We added an API for detecting the displays attached to a computer, and specifying the location of windows relative to those displays.
- We added a pluggable API for image formats. With this API, any third party library that has an internal format for images can implement support so that Toga can convert to and from images in that format.
- We've significantly improved shortcut key handling on GTK and Winforms, including improved coverage of non-alphanumeric keys, and support for numpad keys.
- We've added a MapView widget. This widget is in final review, but should land very soon.
- We've improved error handling when the Android emulator fails to start. This should hopefully make it easier to identify the source of any emulator failures.
- We've added the ability to run Linux apps that have been built for different platforms. Using Docker, it's now possible to run a Fedora system app on an Ubuntu machine, or any other combination of supported platforms.
- We've added the ability to pass extra arguments to Docker when building images.
- We've improved the console output for non-interactive consoles on some long-running commands.
What's next?
In March, we will continue to focus on iOS and Android patches for CPython; if all goes extremely well, the bulk of patches should be upstream (or at least submitted for review) by the end of the month. While we're waiting for CPython patches to be reviewed, we'll be adding geolocation APIs to Toga.
Want to get involved?
Want to get involved? Here are some open issues that would be a great place to get started with contributing to a BeeWare project. They're all relatively minor changes, but would provide a big improvement to the lives of BeeWare users:
- Update the Toga testbed test suite to use Pixel 7 Pro device sizes
- Filter out a message generated after Xcode updates
- Add the ability to configure the ABIs built by an Android project
- Rationalise the application of adhoc signing on macOS
- Add support for custom PyPI repositories
- Document how to debug an application in popular IDEs
- Correctly handle incomplete project deletions
- Add an option to select the Android base image when creating new emulators
- Print notarisation log failures when building macOS apps
- Add an API to replace a child of a widget
- Add an API to entirely replace the style of a widget
- Add the ability to define content when creating a window
Pick one of these tickets, drop a comment on the ticket to let others know you're looking at it, and try your hand at a PR! We have a guide on setting up a Briefcase development environment; but if you need any additional assistance or guidance, you can ask on the ticket, or join us on the BeeWare Discord server.
- Próximo artigo
- March 2024 Status Update
- Artigo anterior
- January 2024 Status Update