[Pulp-dev] Proposal to drop support of Python 3.5 for Pulp 3
gmbnomis at gmail.com
Fri Sep 7 06:09:42 UTC 2018
I had a discussion on IRC with Brian yesterday which led to the
question whether we can drop support for Python 3.5. I think there are
good reasons for this, see the rationale below.
Brian proposed to initiate a vote on this topic (and find out whether
this "community thing" works :-) ).
Please send feedback by Friday Sept 14th. Especially, let me know if
there are specific reasons for depending on Python 3.5. The
corresponding issue is 3984 .
The trigger for the discussion was to get rid of boilerplate code like
this ,  to handle batches in the stages API. This becomes a
single line  when using an asynchronous generator . Adding the
`batches()` async generator to Pulp core would simplify existing
stages and ease implementation of stages in plugins.
Async generators have been introduced in Python 3.6. Thus, to make the
`batches` generator available in the Pulp core plugin API, we either
- have to drop support for Python 3.5 or
- reimplement the async generator as an async iterator (which would be
more convoluted but looks doable)
I prefer to drop 3.5, since this will allow to use additional language
features. Among them:
- As said, async generators/async comprehensions. Async generators are
simpler to write and understand than async iterators.
- String interpolation "f-Strings" 
- dict objects preserve insertion-order (officially declared part of
the language with Python 3.7). Eliminates a source of subtle
"works on 3.6, sometimes works on 3.5" bugs.
- One version less to support is always a good thing (provided nobody
really requires it)
- Type annotations are currently not used by the Pulp project, but if
the project decides to use them in the future: IMHO type annotations
(which are great btw.) began to feel ârightâ with 3.6. Working with
them in 3.5 can be clumsy at times.
- And of course: 
Python 3.6 has the OS/distribution support we need:
- Python 3.6 SCL is available for RHEL 7 / CentOS 7
- It is part of Fedora as of Fedora 26
For Ubuntu, it is part of 18.04 LTS. Debian does not have Python 3.6 in stable yet.
More information about the Pulp-dev