This upgrades Cura's Python version to 3.10. Reasons to update to Python 3.10 are that we need to be at least at 3.9 to support the Apple M1 CPU, and because 3.10 has some performance improvements that benefit us.
This is a summary of the changes made to use Python 3.10:
We're building the Python 3.10 source now, of course, and references to the 3.8 site packages were replaces with the equivalent 3.10 location.
Shapely is replaced with Pyclipper. Shapely doesn't support Python 3.10 yet, doesn't provide binaries and has problems building against it.
Shapely's dependency Geos is removed.
Fixed some places where CMake could find the wrong Python installation if another one is installed on the system.
Update download location of Boost's source code, since the previous URL was taken offline.
lxml is downloaded from a Wheel now, which allows removal of the libxml and libxslt dependencies.
Updated hashes of other packages if they include binaries linked to Python 3.10 instead of 3.8: Jeepney, SecretStorage.
Added new dependency of cx-Freeze on Windows: cx-Logging.
Updated Sip to latest Sip-4 version.
Removed the comtypes package, since it's no longer compatible with the latest setuptools and not likely to get updated soon. It was only used by some plug-ins (e.g. SolidworksIntegration) so this can be removed because we need a major SDK version upgrade anyway.
This change impacts more or less all of the front-end of Cura, but not the back-end. The most sensitive changes (focus testing) were in the disallowed areas (due to Pyclipper vs. Shapely) and model loading of certain file formats (due to Trimesh).
This upgrades Cura's Python version to 3.10. Reasons to update to Python 3.10 are that we need to be at least at 3.9 to support the Apple M1 CPU, and because 3.10 has some performance improvements that benefit us.
This is a summary of the changes made to use Python 3.10:
This change impacts more or less all of the front-end of Cura, but not the back-end. The most sensitive changes (focus testing) were in the disallowed areas (due to Pyclipper vs. Shapely) and model loading of certain file formats (due to Trimesh).
Contributes to issue CURA-8592.