Idea #11308
Updated by Peter Amstutz almost 8 years ago
Python 3 has been available for many years and the Python 2/3 migration is reaching its final stages. All Arvados Python programs need to run on both Python 3 and Python 2.
Things to 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.
Use "__future__" to adopt Python 3 behavior on Python 2.7:
<pre>
from __future__ import division, absolute_import, print_function, unicode_literals
</pre>
Will need to clean up usage of strings to conform to Python 3 unicode/bytes distinction.
Also consider backports such as @subprocess32@ and compatibility libraries such as @six@.
PyPi packages should be published as combined Py2+Py3 compatible.
May need to publish separate Py2 and Py3 operating system packages (due to hard dependency on Python interpreter).