In CI there are:
There are no tests for legacy versions of the optional libraries.
Today I tried downgrading dask in the py37 environment to dask=1.1.2, which is 6 months old...
...it's a bloodbath. 383 errors of the most diverse kind.
In the codebase I found mentions to much older minimum versions: installing.rst mentions dask >=0.16.1, and Dataset.chunk() even asks for dask>=0.9.
It think we should add CI tests for old versions of the optional dependencies.
What policy should we adopt when we find an incompatibility? How old a library should be not to bother fixing bugs and just require a newer version? I personally would go for an aggressive 6 months worth' of backwards compatibility; less if the time it takes to fix the issues is excessive.
The tests should run on py36 because py35 builds are becoming very scarce in anaconda.
This has the outlook of being an exercise in extreme frustration. I'm afraid I personally hold zero interest towards packages older than the latest available in the anaconda official repo, so I'm not volunteering for this one (sorry).
I'd like to hear other people's opinions and/or offers of self-immolation... :)
Today I tried downgrading dask in the py37 environment to dask=1.1.2, which is 6 months old...
Yikes, we should fix this.
It has not been hard to ensure that older version of NumPy and pandas work. The key thing is CI tests that verify things as PR goes in. If work-arounds for old versions are hard, then we bump minimum required dependencies.
Probably the best place to start would be adding a CI build with pinned versions of the oldest required versions that works today, and then looking if there are simple fixes that will let us downgrade project like dask. It's not worth a huge effort, but it's not very user friendly for everything to broken with old versions of optional dependencies either.
How does this sound as a rolling policy?
it would be nice to try to follow the guidelines in NEP-29: https://numpy.org/neps/nep-0029-deprecation_policy.html
@shoyer that sounds sensible, but only covers python and numpy. What about the rest?
Revised proposal (in parenthesis: minimum version if this policy were to be applied right now):
Note: patch versions are not pinned. This means that the minimum python version that is guaranteed to work is actually 3.6.7 or 3.6.9, not 3.6.0.
What are people's thoughts?
It may also be a cool idea to write a script that parses the requirements yml files and generates .rst documentation out of them.
I slightly misinterpreted NEP-29. The above should be rectified:
pandas: 24 months (>=0.21)
scipy: 24 months (>=1.0)
Thanks for putting this together -- this looks good to me!
We can revise if any of they cause us trouble. In particular, pandas has the most stability issues, so it might be a little annoying to try to maintain two years of support.
We should add this stuff to a doc page.
Overall this is awesome, thanks @crusaderky
One minor question: do we need to support 24 months of pandas & scipy releases? These change their API faster than numpy, and I can't imagine there's a wide audience for people that a) need the very latest xarray and b) are using pandas released in 2017.
I would vote to dramatically cut that, to something like the last two minor releases or 6 months. But could imagine two-three minor releases or 12 months being more palatable.
I think targeting 12 months of support for SciPy/pandas would be a
reasonable goal.
On Wed, Oct 2, 2019 at 2:48 PM Maximilian Roos notifications@github.com
wrote:
Overall this is awesome, thanks @crusaderky
https://github.com/crusaderkyOne minor question: do we need to support 24 months of pandas & scipy
releases? These change their API faster than numpy, and I can't imagine
there's a wide audience for people that a) need the very latest xarray and
b) are using pandas released in 2017.
I would vote to dramatically cut that, to something like the last two
minor releases or 6 months. But could imagine two-three minor releases or
12 months being more palatable.—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/pydata/xarray/issues/3222?email_source=notifications&email_token=AAJJFVX4LXPFLJ7MOR6TN4LQMUJMHA5CNFSM4IMAETKKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEAGJQBI#issuecomment-537696261,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAJJFVQBLJ7V5GRSCC6MXMLQMUJMHANCNFSM4IMAETKA
.
Ok, bumping pandas to >=0.24 and scipy to >=1.2
scipy 1.1 and 1.2 break numpy 1.14 due to a conflict on openblas. We're stuck with 1.0 at least until the next numpy upgrade.
Most helpful comment
Revised proposal (in parenthesis: minimum version if this policy were to be applied right now):
Note: patch versions are not pinned. This means that the minimum python version that is guaranteed to work is actually 3.6.7 or 3.6.9, not 3.6.0.
What are people's thoughts?
It may also be a cool idea to write a script that parses the requirements yml files and generates .rst documentation out of them.