As a concrete proposal, could we commit to removing python 2 support by
2.24? In other words, mark the next release 2.23 as the last python 2
compatible Beam version.

On Mon, Jun 15, 2020 at 2:09 PM Valentyn Tymofieiev <valen...@google.com>
wrote:

> Another input here:
>
> If you opened a Python PR in the last few days, you probably noticed that
> our test suites were broken by a transitive dependency of Beam that dropped
> python 2 support, but did not declare python_requires>=3 in its setup.py
> [1]. This temporarily broke a subset of Beam Py2 users (who did not
> explicitly pin the 'rsa' dependency), and still affects Beam
> development[2].
>
> This is the second time[3] Beam is affected with an issue of this kind, so
> support of Python 2 starts to slow down our development, and add toil for
> maintainers of packages we depend on (both directly and transitively).
>
> [1] https://github.com/sybrenstuvel/python-rsa/issues/152
> [2]
> https://lists.apache.org/thread.html/r9993b40b0c1cb8682ce56013165d4b80fdde0ee469a73bcb9466ddfb%40%3Cdev.beam.apache.org%3E
> [3] https://github.com/hamcrest/PyHamcrest/issues/131
>
> On Tue, Jun 9, 2020 at 4:06 PM Ahmet Altay <al...@google.com> wrote:
>
>> Thank you for re-opening this Valentyn. I am in favor of EOLing py2
>> support sooner than later. The reality is that we will not be effectively
>> supporting beam python 2 for a long time while the ecosystem already EOLed
>> python 2. That said, a significant chunk (but no longer a majority) of our
>> users are still using python 2. Upgrades are painful, it might be
>> especially painful nowadays. It would be good to hear counter view points,
>> user voices related to this.
>>
>> On Thu, Jun 4, 2020 at 4:53 PM Valentyn Tymofieiev <valen...@google.com>
>> wrote:
>>
>>> Back at the end of February we decided to revisit this conversation in 3
>>> months. Do folks on this thread have any new input or perspective regarding
>>> us balancing "user pain/contributor pain/our ability to continuously test
>>> with python 2 in a shifting environment"?
>>>
>>> Some new information on my end is that we have been seeing steady
>>> adoption of Python 3 among Beam Python users in Dataflow, particularly
>>> strong adoption among streaming users, and Dataflow is sunsetting Python 2
>>> support for all released Beam SDKs later this year [1]. We will have to
>>> remove Python 2 Beam test suites that use Dataflow  when Dataflow runner
>>> disables Py2 support if this happens before Beam Py2 EOL (when we have to
>>> remove all Py2 suites), including performance tests that still use Dataflow
>>> on Python 3.
>>>
>>> I am curious how much motivation there is in the community at this
>>> moment to continue Py2 support in Beam,  whether any previous Py3 migration
>>> blockers were resolved or any new blockers discovered among Beam users.
>>>
>>> [1] https://cloud.google.com/python/docs/python2-sunset/#dataflow
>>>
>>> On Fri, May 8, 2020 at 3:52 PM Valentyn Tymofieiev <valen...@google.com>
>>> wrote:
>>>
>>>> That's good news! Thanks for sharing.
>>>>
>>>> Another datapoint, here are a few of Beam's dependencies that no longer
>>>> release new py2 artifacts (I looked at REQUIRED_PACKAGES +  aws, gcp, and
>>>> interactive extras):
>>>>
>>>> hdfs
>>>> numpy
>>>> pyarrow
>>>> ipython
>>>>
>>>> There are more if we include transitive dependencies and test-only
>>>> packages. I also remember encountering one issue last month that was broken
>>>> only on Py2, which we had to go back and fix.
>>>>
>>>> If others have noticed frictions related to ongoing Py2 support or have
>>>> updates on previously mentioned Py3 migration blockers, feel free to post
>>>> them.
>>>>
>>>> On Fri, May 8, 2020 at 9:19 AM Robert Bradshaw <rober...@google.com>
>>>> wrote:
>>>>
>>>>> It hasn't been 3 months yet, but I wanted to call out a milestone that
>>>>> Python 3 downloads crossed the 50% threshold on pypi, if just briefly.
>>>>>
>>>>> On Thu, Feb 13, 2020 at 12:40 AM Ismaël Mejía <ieme...@gmail.com>
>>>>> wrote:
>>>>> >
>>>>> > > I would suggest re-evaluating this within the next 3 months again.
>>>>> We need to balance between user pain/contributor pain/our ability to
>>>>> continuously test with python 2 in a shifting environment.
>>>>> >
>>>>> > Good idea for the in 3 months evaluation, at that point also
>>>>> distributions will probably be phasing out python2 by default which
>>>>> definitely help in this direction.
>>>>> > Thanks for updating the roadmap Ahmet
>>>>> >
>>>>> >
>>>>> > On Thu, Feb 13, 2020 at 2:49 AM Ahmet Altay <al...@google.com>
>>>>> wrote:
>>>>> >>
>>>>> >>
>>>>> >>
>>>>> >> On Wed, Feb 12, 2020 at 1:29 AM Ismaël Mejía <ieme...@gmail.com>
>>>>> wrote:
>>>>> >>>
>>>>> >>> I am with Chad on this, we should probably extend it a bit more,
>>>>> even if it
>>>>> >>> makes us struggle a bit at least we have some workarounds as
>>>>> Robert suggests,
>>>>> >>> and as Chad said there are still many people playing the python 3
>>>>> catchup game,
>>>>> >>> so worth to support those users.
>>>>> >>>
>>>>> >>>
>>>>> >>> But maybe it is worth to evaluate the current state later in the
>>>>> year.
>>>>> >>
>>>>> >>
>>>>> >> I would suggest re-evaluating this within the next 3 months again.
>>>>> We need to balance between user pain/contributor pain/our ability to
>>>>> continuously test with python 2 in a shifting environment.
>>>>> >>
>>>>> >>>
>>>>> >>> In the
>>>>> >>> meantime can someone please update our Roadmap in the website with
>>>>> this info and
>>>>> >>> where we are with Python 3 support (it looks not up to date).
>>>>> >>> https://beam.apache.org/roadmap/
>>>>> >>
>>>>> >>
>>>>> >> I made a minor change to update that page (
>>>>> https://github.com/apache/beam/pull/10848). A more comprehensive
>>>>> update to that page and linked (
>>>>> https://beam.apache.org/roadmap/python-sdk/#python-3-support) would
>>>>> still be welcome.
>>>>> >>
>>>>> >>>
>>>>> >>>
>>>>> >>> - Ismaël
>>>>> >>>
>>>>> >>>
>>>>> >>> On Tue, Feb 4, 2020 at 10:49 PM Robert Bradshaw <
>>>>> rober...@google.com> wrote:
>>>>> >>>>
>>>>> >>>>  On Tue, Feb 4, 2020 at 12:12 PM Chad Dombrova <chad...@gmail.com>
>>>>> wrote:
>>>>> >>>> >>
>>>>> >>>> >>  Not to mention that all the nice work for the type hints will
>>>>> have to be redone in the for 3.x.
>>>>> >>>> >
>>>>> >>>> > Note that there's a tool for automatically converting type
>>>>> comments to annotations: https://github.com/ilevkivskyi/com2ann
>>>>> >>>> >
>>>>> >>>> > So don't let that part bother you.
>>>>> >>>>
>>>>> >>>> +1, I wouldn't worry about what can be easily automated.
>>>>> >>>>
>>>>> >>>> > I'm curious what other features you'd like to be using in the
>>>>> Beam source that you cannot now.
>>>>> >>>>
>>>>> >>>> I hit things occasionally, e.g. I just ran into wanting
>>>>> keyword-only
>>>>> >>>> arguments the other day.
>>>>> >>>>
>>>>> >>>> >> It seems the faster we drop support the better.
>>>>> >>>> >
>>>>> >>>> >
>>>>> >>>> > I've already gone over my position on this, but a refresher for
>>>>> those who care:  some of the key vendors that support my industry will not
>>>>> offer python3-compatible versions of their software until the 4th quarter
>>>>> of 2020.  If Beam switches to python3-only before that point we may be
>>>>> forced to stop contributing features (note: I'm the guy who added the type
>>>>> hints :).   Every month you can give us would be greatly appreciated.
>>>>> >>>>
>>>>> >>>> As another data point, we're still 80/20 on Py2/Py3 for downloads
>>>>> at
>>>>> >>>> PyPi [1] (which I've heard should be taken with a grain of salt,
>>>>> but
>>>>> >>>> likely isn't totally off). IMHO that ratio needs to be way higher
>>>>> for
>>>>> >>>> Python 3 to consider dropping Python 2. It's pretty noisy, but
>>>>> say it
>>>>> >>>> doubles every 3 months that would put us at least mid-year before
>>>>> we
>>>>> >>>> hit a cross-over point. On the other hand Q4 2020 is probably a
>>>>> >>>> stretch.
>>>>> >>>>
>>>>> >>>> We could consider whether it needs to be an all-or-nothing thing
>>>>> as
>>>>> >>>> well. E.g. perhaps some features could be Python 3 only sooner
>>>>> than
>>>>> >>>> the whole codebase. (This would have to be well justified.)
>>>>> Another
>>>>> >>>> mitigation is that it is possible to mix Python 2 and Python 3 in
>>>>> the
>>>>> >>>> same pipeline with portability, so if there's a library that you
>>>>> need
>>>>> >>>> for one DoFn it doesn't mean you have to hold back your whole
>>>>> >>>> pipeline.
>>>>> >>>>
>>>>> >>>> - Robert
>>>>> >>>>
>>>>> >>>> [1] https://pypistats.org/packages/apache-beam , and that 20%
>>>>> may just
>>>>> >>>> be a spike.
>>>>>
>>>>

Reply via email to