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 long
, basestring
, unicode
, and execfile
and this work will be scheduled.
There are many resources online describing Python 3. For example:
- https://www.asmeurer.com/python3-presentation/slides.html#1
- https://powerfulpython.com/blog/whats-really-new-in-python-3/
- https://dbader.org/blog/cool-new-features-in-python-3-6
I also recommend the Fluent Python O’Reilly book. If people have other recommendations please reply to this topic.