Idea #11308
Updated by Peter Amstutz over 7 years ago
Python 3 has been available for many years and the Python 2/3 migration is reaching its final stages. As a first step, All Arvados Python SDK + command line needs programs need to run on both Python 3 and Python 2. run-tests.sh needs Things to run tests consider: Need to pass test suites using both Python 2.7 and Python 3.4+ Arvados Python packages to port are: * Arvados Python SDK + command line tools * FUSE * Node manager * arvados-cwl-runner (+ its dependencies, e.g. cwltool) arvados-docker-cleaner already targets Python 3! Dependencies must support Python 3. May require updating dependencies and related side effects (API/behavior changes). effects. Use "__future__" to adopt Python 3 behavior on Python 2.7: <pre> from __future__ import division, absolute_import, print_function, unicode_literals </pre> Clean Will need to clean up usage of strings to conform to Python 3 unicode/bytes distinction. Existing Arvados Python packages including FUSE, Node manager, arvados-cwl-runner (+ its dependencies, e.g. cwltool), Also consider backports such as @subprocess32@ and crunchstat-summary must continue to work on Python 2.7 (they will be ported in future stories). Ideally this can be resolved without divergent behavior between Py2 and Py3, however if there is a conflict between Py2 and Py3 behavior it needs to be resolved in favor of maintaining compatibility with existing dependencies on Py2. libraries such as @six@. Packages PyPi packages should be published to PyPi advertising compatibility with both as combined Py2+Py3 . compatible. Will May need to build and publish separate Py2 and Py3 deb/rpm operating system packages (due to hard dependency on Python interpreter).