But pip doesn't try to reconcile user's requested version and Beam's listed dep, right? (https://github.com/pypa/pip/issues/988 still open)
Kenn On Thu, Feb 13, 2020 at 9:48 AM Ahmet Altay <al...@google.com> wrote: > Thank you, Ismaël. I did not know that Avro was not using semantic > versioning either. > > On Thu, Feb 13, 2020 at 9:44 AM Valentyn Tymofieiev <valen...@google.com> > wrote: > >> Thank you, Ismaël. Good to know Avro doesn't follow semantic versioning. >> Replied on the PR. >> >> On Thu, Feb 13, 2020 at 5:24 AM Ismaël Mejía <ieme...@gmail.com> wrote: >> >>> For info Avro has published a new version 1.9.2.1 that fixes the issue: >>> https://issues.apache.org/jira/browse/AVRO-2737 >>> >>> I just submitted a PR to make the dependency consistent with Avro >>> versioning and >>> verify that everything works as intended with the upgraded dependency on >>> the >>> python SDK. Can you PTAL? >>> https://github.com/apache/beam/pull/10851 >>> >>> >>> On Thu, Feb 13, 2020 at 9:39 AM Ismaël Mejía <ieme...@gmail.com> wrote: >>> >>>> >>>> > I can argue for not pinning and bounding with major version ranges. >>>> This gives flexibility to users to mix other third party libraries that >>>> share common dependencies with Beam. Our expectation is that dependencies >>>> follow semantic versioning and do not introduce breaking changes unless >>>> there is a major version change. A good example of this is Beam's >>>> dependency on "pytz>=2018.3". It is a simple wrapper around a time zone >>>> file. Latest version of the dependency is 2019.3, it is updated a few times >>>> a year. Beam users do not have to update Beam just to be able to use a >>>> later version of it since Beam does not pin it. >>>> >>>> Avro does not follow semantic versioning (the first number corresponds >>>> to the version of the Avro binary format the release is compatible with, >>>> the second correspond to the MAJOR and the third to the MINOR in semver), >>>> so we should then fix the upper bound to 1.10.0 instead of 2.0.0 >>>> considering that 1.10.x before the summer and it may contain breaking >>>> changes. >>>> >>>> > There is also a middle ground, where we can pin certain dependencies >>>> if we are not confident about their releases. And allow ranges for rest of >>>> the dependencies. In general, we are currently following this practice. >>>> >>>> I see your point, like many things in software it is all about >>>> tradeoffs, and it is good to find a middle ground, do we have a robust >>>> reproducible release experience, or do we deal with the annoyance of doing >>>> manual minor version upgrades. Choices choices... >>>> >>>> >>>> >>>> >>>> On Thu, Feb 13, 2020 at 2:26 AM Ahmet Altay <al...@google.com> wrote: >>>> >>>>> >>>>> >>>>> On Wed, Feb 12, 2020 at 12:54 PM Ismaël Mejía <ieme...@gmail.com> >>>>> wrote: >>>>> >>>>>> Independently of the bug in the dependency release the fact that the >>>>>> Beam Python >>>>>> SDK does not have pinned fixed dependency numbers is error-prone. We >>>>>> may >>>>>> continue to have this kind of problems until we fix this (with other >>>>>> dependencies too). In the Java SDK we do not accept such type of >>>>>> dynamic >>>>>> dependency numbers and python should probably follow this practice to >>>>>> avoid >>>>>> issues like the present one. >>>>>> >>>>>> Why don't we just do: >>>>>> >>>>>> 'avro-python3==1.9.1', >>>>>> >>>>>> instead of the current: >>>>>> >>>>>> 'avro-python3>=1.8.1,!=1.9.2,<2.0.0; python_version >= "3.0"', >>>>>> >>>>> >>>>> I agree this is error prone. Your argument for pinning makes sense and >>>>> I agree with it. >>>>> >>>>> I can argue for not pinning and bounding with major version ranges. >>>>> This gives flexibility to users to mix other third party libraries that >>>>> share common dependencies with Beam. Our expectation is that dependencies >>>>> follow semantic versioning and do not introduce breaking changes unless >>>>> there is a major version change. A good example of this is Beam's >>>>> dependency on "pytz>=2018.3". It is a simple wrapper around a time zone >>>>> file. Latest version of the dependency is 2019.3, it is updated a few >>>>> times >>>>> a year. Beam users do not have to update Beam just to be able to use a >>>>> later version of it since Beam does not pin it. >>>>> >>>>> There is also a middle ground, where we can pin certain dependencies >>>>> if we are not confident about their releases. And allow ranges for rest of >>>>> the dependencies. In general, we are currently following this practice. >>>>> >>>>> >>>>>> >>>>>> >>>>>> On Wed, Feb 12, 2020 at 9:14 PM Ahmet Altay <al...@google.com> wrote: >>>>>> >>>>>>> Related: we have dependencies on avro, avro-python3, and fastavro. >>>>>>> fastavro supports both python 2 and 3. Could we reduce this dependency >>>>>>> list >>>>>>> and depend only on fastavro? If we need avro and avro-python3 for the >>>>>>> purposes of testing only, we can move them to test only dependencies. >>>>>>> >>>>>>> +Chamikara Jayalath <chamik...@google.com>, because I vaguely >>>>>>> remember him working on this. >>>>>>> >>>>>>> The reason I am calling for this is the impact of bad dependency >>>>>>> releases are high. All previously released Beam versions will be >>>>>>> impacted. >>>>>>> Reducing the dependency list will reduce the risk. >>>>>>> >>>>>>> Ahmet >>>>>>> >>>>>>> On Wed, Feb 12, 2020 at 12:02 PM Ahmet Altay <al...@google.com> >>>>>>> wrote: >>>>>>> >>>>>>>> Thank you Valentyn! >>>>>>>> >>>>>>>> On Wed, Feb 12, 2020 at 11:32 AM Valentyn Tymofieiev < >>>>>>>> valen...@google.com> wrote: >>>>>>>> >>>>>>>>> Yes, otherwise all Python tests will continue to fail until Avro >>>>>>>>> comes up with a new release. Sent: >>>>>>>>> https://github.com/apache/beam/pull/10844 >>>>>>>>> >>>>>>>>> On Wed, Feb 12, 2020 at 11:08 AM Ahmet Altay <al...@google.com> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> Should we update Beam's setup.py to skip this avro-python3 >>>>>>>>>> version? >>>>>>>>>> >>>>>>>>>> On Wed, Feb 12, 2020 at 10:57 AM Alan Krumholz < >>>>>>>>>> alan.krumh...@betterup.co> wrote: >>>>>>>>>> >>>>>>>>>>> makes sense. I'll add this workaround for now. >>>>>>>>>>> Thanks so much for your help! >>>>>>>>>>> >>>>>>>>>>> On Wed, Feb 12, 2020 at 10:33 AM Valentyn Tymofieiev < >>>>>>>>>>> valen...@google.com> wrote: >>>>>>>>>>> >>>>>>>>>>>> Alan, Dataflow workers preinstall Beam SDK dependencies, >>>>>>>>>>>> including (a working version) of avro-python3. So after reading >>>>>>>>>>>> your email >>>>>>>>>>>> once again, I think in your case you were not able to install Beam >>>>>>>>>>>> SDK >>>>>>>>>>>> locally. So a workaround for you would be to `pip install >>>>>>>>>>>> avro-python3==1.9.1` or `pip install pycodestyle` before >>>>>>>>>>>> installing Beam, >>>>>>>>>>>> until AVRO-2737 is resolved. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On Wed, Feb 12, 2020 at 10:21 AM Valentyn Tymofieiev < >>>>>>>>>>>> valen...@google.com> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> Ah, there's already >>>>>>>>>>>>> https://issues.apache.org/jira/browse/AVRO-2737 and it >>>>>>>>>>>>> received attention. >>>>>>>>>>>>> >>>>>>>>>>>>> On Wed, Feb 12, 2020 at 10:19 AM Valentyn Tymofieiev < >>>>>>>>>>>>> valen...@google.com> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> Opened https://issues.apache.org/jira/browse/AVRO-2738 >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Wed, Feb 12, 2020 at 10:14 AM Valentyn Tymofieiev < >>>>>>>>>>>>>> valen...@google.com> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> Here's a short repro: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> :~$ docker run -it --entrypoint=/bin/bash python:3.7-stretch >>>>>>>>>>>>>>> root@04b45a100d16:/# pip install avro-python3 >>>>>>>>>>>>>>> Collecting avro-python3 >>>>>>>>>>>>>>> Downloading avro-python3-1.9.2.tar.gz (37 kB) >>>>>>>>>>>>>>> ERROR: Command errored out with exit status 1: >>>>>>>>>>>>>>> command: /usr/local/bin/python -c 'import sys, >>>>>>>>>>>>>>> setuptools, tokenize; sys.argv[0] = >>>>>>>>>>>>>>> '"'"'/tmp/pip-install-mmy4vspt/avro-python3/setup.py'"'"'; >>>>>>>>>>>>>>> __file__='"'"'/tmp/pip-install-mmy4vspt/avro-python3/setup.py'"'"';f=getattr(tokenize, >>>>>>>>>>>>>>> '"'"'open'"'"', >>>>>>>>>>>>>>> open)(__file__);code=f.read().replace('"'"'\r\n'"'"', >>>>>>>>>>>>>>> '"'"'\n'"'"');f.close();exec(compile(code, __file__, >>>>>>>>>>>>>>> '"'"'exec'"'"'))' >>>>>>>>>>>>>>> egg_info --egg-base >>>>>>>>>>>>>>> /tmp/pip-install-mmy4vspt/avro-python3/pip-egg-info >>>>>>>>>>>>>>> cwd: /tmp/pip-install-mmy4vspt/avro-python3/ >>>>>>>>>>>>>>> Complete output (5 lines): >>>>>>>>>>>>>>> Traceback (most recent call last): >>>>>>>>>>>>>>> File "<string>", line 1, in <module> >>>>>>>>>>>>>>> File >>>>>>>>>>>>>>> "/tmp/pip-install-mmy4vspt/avro-python3/setup.py", line 41, in >>>>>>>>>>>>>>> <module> >>>>>>>>>>>>>>> import pycodestyle >>>>>>>>>>>>>>> ModuleNotFoundError: No module named 'pycodestyle' >>>>>>>>>>>>>>> ---------------------------------------- >>>>>>>>>>>>>>> ERROR: Command errored out with exit status 1: python >>>>>>>>>>>>>>> setup.py egg_info Check the logs for full command output. >>>>>>>>>>>>>>> root@04b45a100d16:/# >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Wed, Feb 12, 2020 at 10:14 AM Valentyn Tymofieiev < >>>>>>>>>>>>>>> valen...@google.com> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Yes, it is a bug in the recent Avro release. We should >>>>>>>>>>>>>>>> report it to the Avro maintainers. The workaround is to >>>>>>>>>>>>>>>> downgrade >>>>>>>>>>>>>>>> avro-python3 to 1.9.1, for example via requirements.txt. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On Wed, Feb 12, 2020 at 10:06 AM Steve Niemitz < >>>>>>>>>>>>>>>> sniem...@apache.org> wrote: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> avro-python3 1.9.2 was released on pypi 4 hours ago, and >>>>>>>>>>>>>>>>> added pycodestyle as a dependency, probably related? >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> On Wed, Feb 12, 2020 at 1:03 PM Luke Cwik < >>>>>>>>>>>>>>>>> lc...@google.com> wrote: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> +dev <dev@beam.apache.org> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> There was recently an update to add autoformatting to the >>>>>>>>>>>>>>>>>> Python SDK[1]. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> I'm seeing this during testing of a PR as well. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> 1: >>>>>>>>>>>>>>>>>> https://lists.apache.org/thread.html/448bb5c2d73fbd74eec7aacb5f28fa2f9d791784c2e53a2e3325627a%40%3Cdev.beam.apache.org%3E >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> On Wed, Feb 12, 2020 at 9:57 AM Alan Krumholz < >>>>>>>>>>>>>>>>>> alan.krumh...@betterup.co> wrote: >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Some more information for this as I still can't get to >>>>>>>>>>>>>>>>>>> fix it.... >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> This job is triggered using the beam[gcp] python sdk >>>>>>>>>>>>>>>>>>> from a KubeFlow Pipelines component which runs on top of >>>>>>>>>>>>>>>>>>> docker image: >>>>>>>>>>>>>>>>>>> tensorflow/tensorflow:1.13.1-py3 >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> I just checked and that image hasn't been updated >>>>>>>>>>>>>>>>>>> recently. I also redeployed my pipeline to another (older) >>>>>>>>>>>>>>>>>>> deployment of >>>>>>>>>>>>>>>>>>> KFP and it gives me the same error (which tells me this >>>>>>>>>>>>>>>>>>> isn't an internal >>>>>>>>>>>>>>>>>>> KFP problem) >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> The exact same pipeline/code running on the exact same >>>>>>>>>>>>>>>>>>> image has been running fine for days. Did anything changed >>>>>>>>>>>>>>>>>>> on the >>>>>>>>>>>>>>>>>>> beam/dataflow side since yesterday morning? >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Thanks for your help! this is a production pipeline that >>>>>>>>>>>>>>>>>>> is not running for us :( >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> On Wed, Feb 12, 2020 at 7:21 AM Alan Krumholz < >>>>>>>>>>>>>>>>>>> alan.krumh...@betterup.co> wrote: >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Hi, I have a scheduled daily job that I have been >>>>>>>>>>>>>>>>>>>> running fine in dataflow for days now. >>>>>>>>>>>>>>>>>>>> We haven't changed anything on this code but this >>>>>>>>>>>>>>>>>>>> morning run failed (it couldn't even spin up the job) >>>>>>>>>>>>>>>>>>>> The job submits a setup.py file (that also hasn't >>>>>>>>>>>>>>>>>>>> changed) but maybe is causing the problem? (based on the >>>>>>>>>>>>>>>>>>>> error I'm getting) >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Anyone else having the same issue? or know how to fix >>>>>>>>>>>>>>>>>>>> it? >>>>>>>>>>>>>>>>>>>> Thanks! >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> ERROR: Complete output from command python setup.py >>>>>>>>>>>>>>>>>>>> egg_info: >>>>>>>>>>>>>>>>>>>> 2 ERROR: Traceback (most recent call last): >>>>>>>>>>>>>>>>>>>> 3 File "<string>", line 1, in <module> >>>>>>>>>>>>>>>>>>>> 4 File >>>>>>>>>>>>>>>>>>>> "/tmp/pip-install-42zyi89t/avro-python3/setup.py", line >>>>>>>>>>>>>>>>>>>> 41, in <module> >>>>>>>>>>>>>>>>>>>> 5 import pycodestyle >>>>>>>>>>>>>>>>>>>> 6 ImportError: No module named 'pycodestyle' >>>>>>>>>>>>>>>>>>>> 7 ---------------------------------------- >>>>>>>>>>>>>>>>>>>> 8ERROR: Command "python setup.py egg_info" failed with >>>>>>>>>>>>>>>>>>>> error code 1 in /tmp/pip-install-42zyi89t/avro-python3/ >>>>>>>>>>>>>>>>>>>> 9 ERROR: Complete output from command python setup.py >>>>>>>>>>>>>>>>>>>> egg_info: >>>>>>>>>>>>>>>>>>>> 10 ERROR: Traceback (most recent call last): >>>>>>>>>>>>>>>>>>>> 11 File "<string>", line 1, in <module> >>>>>>>>>>>>>>>>>>>> 12 File >>>>>>>>>>>>>>>>>>>> "/tmp/pip-install-wrqytf9a/avro-python3/setup.py", line >>>>>>>>>>>>>>>>>>>> 41, in <module> >>>>>>>>>>>>>>>>>>>> 13 import pycodestyle >>>>>>>>>>>>>>>>>>>> 14 ImportError: No module named 'pycodestyle' >>>>>>>>>>>>>>>>>>>> 15 ---------------------------------------- >>>>>>>>>>>>>>>>>>>> 16ERROR: Command "python setup.py egg_info" failed >>>>>>>>>>>>>>>>>>>> with error code 1 in >>>>>>>>>>>>>>>>>>>> /tmp/pip-install-wrqytf9a/avro-python3/ >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>