Now that v15.0 has been released and following the previously announced timeline, DM code no longer needs to work with Python 2. This week the Python 2 jobs will be removed from Jenkins and the
python EUPS package will be updated to refuse to allow Python 2.
This means that developers can now start to use Python 3.6 features. As discussed here all Python 3.6 features are allowed. The one exception is type and function annotations. These need to be discussed to see how they interact with our
numpydoc usage (and pybind11).
We will begin to remove the use of
future from the DM code but there is no requirement to do this immediately. Any code that does
from builtins import... is a no-op on Python 3 and can be removed at any time if you notice it. Usage of
past.builtins will require explicit fix ups to remove usage of
execfile and this work will be scheduled.
There are many resources online describing Python 3. For example:
I also recommend the Fluent Python O’Reilly book. If people have other recommendations please reply to this topic.