DroneKit-Python with Python 3.11 upgrade decision matrix
Context:
We are looking to upgrade from Python 3.8 to Python 3.11 as 3.11 is the new default Python version on the Raspberry Pi 5 (and Python 3.8 will be unsupported soon). However, the DroneKit-Python library is not compatible with Python 3.11, and this decision matrix is used for the solutions to this issue.
Solution | Maintenance effort | Further impact |
---|---|---|
Do nothing: Stay on Python 3.8 | None | Compatibility issues with future versions of 3rd party Python libraries (e.g. Pytorch) |
Create our own MAVLink message processing and handling | Full responsibility on Autonomy to maintain
| Any bugs not caught at testing will occur during flight tests
|
*Fork DroneKit-Python and use as submodule | Full responsibility on Autonomy to maintain
| Â |
*Use DroneKit-Python as a submodule | Autonomy must maintain correct version of submodule | Submodule update by members must be made carefully
|
*Compile DroneKit-Python into a Python package | Autonomy must compile DroneKit-Python for every upgrade to new version Autonomy must maintain and allow access to correct version of package
| Â |
*Note: DroneKit’s PyPI is out of date, but their GitHub repo is updated
@Maxwell Lou Verify compatibility with Python 3.11
It is compatible, tested using the unit test and mission planner
Some of the imports from the drone-kit library had to be changed since it assumed that it was already imported as a package (there are some weird things with imports when writing packages)
Decision
We have decided to implement the solution of forking dronekit-python source code due to low development effort and pretty low maintenance effort.