html_url,issue_url,id,node_id,user,created_at,updated_at,author_association,body,reactions,performed_via_github_app,issue
https://github.com/pydata/xarray/issues/4295#issuecomment-671842738,https://api.github.com/repos/pydata/xarray/issues/4295,671842738,MDEyOklzc3VlQ29tbWVudDY3MTg0MjczOA==,6213168,2020-08-11T09:39:05Z,2020-08-11T09:39:05Z,MEMBER,pandas is really unstable and its API breaks every other version. Extending its support window from 1 to 2 years would be extremely expensive and frustrating to maintain.,"{""total_count"": 2, ""+1"": 2, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,671019427
https://github.com/pydata/xarray/issues/4295#issuecomment-671816252,https://api.github.com/repos/pydata/xarray/issues/4295,671816252,MDEyOklzc3VlQ29tbWVudDY3MTgxNjI1Mg==,6213168,2020-08-11T08:45:02Z,2020-08-11T08:45:02Z,MEMBER,"Discussion seems to have died down here. Can we get to a consensus and wrap this up?
My vote is to simply require setuptools >= 38.4 at runtime (for which PR https://github.com/pydata/xarray/pull/4296 is ready to go).","{""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,671019427
https://github.com/pydata/xarray/issues/4295#issuecomment-668872362,https://api.github.com/repos/pydata/xarray/issues/4295,668872362,MDEyOklzc3VlQ29tbWVudDY2ODg3MjM2Mg==,6213168,2020-08-04T23:13:20Z,2020-08-04T23:13:20Z,MEMBER,"> It's not clear from the OP how they were installing -- i.e. from wheels or source, but if wheels, then pushing teh run time dependency back would fix it.
I don't think we should be discussing a solution that works on wheels but breaks on sources...","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,671019427
https://github.com/pydata/xarray/issues/4295#issuecomment-668866899,https://api.github.com/repos/pydata/xarray/issues/4295,668866899,MDEyOklzc3VlQ29tbWVudDY2ODg2Njg5OQ==,6213168,2020-08-04T22:59:29Z,2020-08-04T22:59:29Z,MEMBER,"Ubuntu 18.04 ships Python 3.6.5 and setuptools 39.0.
Ubuntu 16.04 ships Python 3.5 so it's not to be taken into consideration anyway.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,671019427
https://github.com/pydata/xarray/issues/4295#issuecomment-668865267,https://api.github.com/repos/pydata/xarray/issues/4295,668865267,MDEyOklzc3VlQ29tbWVudDY2ODg2NTI2Nw==,6213168,2020-08-04T22:55:12Z,2020-08-04T22:55:12Z,MEMBER,"> My preference would be to say that we support setuptools 30.3 and newer, even if we can't test it
I have tested that setuptools < 36.7 breaks setuptools-scm; the installed version becomes 0.0.0 which in turns breaks any other package that contains a minimum version check (namely, pandas).
Also, I think we agreed when we implemented NEP29 that **we should not support Python 3.6.0**, but only the latest patch version for any given minor version of a package. Python 3.6.11 (released 1 month ago) is shipped with setuptools 40.6.
Any pip or conda-based environment can trivially upgrade from Python 3.6.0 to 3.6.11.
The only users that have problems with getting setuptools >=38.4 (2.5 years old!!!) are those that use /usr/bin/python3 from a very old Linux distribution, which for some reason never got the patch updates of Python, AND expect everything to be compatible with the very latest python packages freshly downloaded from the internet. I mean, seriously?","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,671019427
https://github.com/pydata/xarray/issues/4295#issuecomment-668858302,https://api.github.com/repos/pydata/xarray/issues/4295,668858302,MDEyOklzc3VlQ29tbWVudDY2ODg1ODMwMg==,5635139,2020-08-04T22:35:32Z,2020-08-04T22:35:32Z,MEMBER,"FWIW according to https://numpy.org/neps/nep-0029-deprecation_policy.html, we can drop 3.6 support as-of June 2020.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,671019427
https://github.com/pydata/xarray/issues/4295#issuecomment-668793103,https://api.github.com/repos/pydata/xarray/issues/4295,668793103,MDEyOklzc3VlQ29tbWVudDY2ODc5MzEwMw==,1217238,2020-08-04T19:52:30Z,2020-08-04T19:52:30Z,MEMBER,"> and in `formatting_html.py`
>
> `pkg_resources.resource_string(""xarray"", fname).decode(""utf8"")`
This is used for pulling out static files (CSS/HTML) for xarray's HTML repr.
We _could_ inline these resources as Python strings, but I think using separate files is cleaner and to my knowledge there is no better alternative than `pkg_resources` prior to Python 3.7.
On Python 3.7 we could use `importlib.resources`: https://docs.python.org/3/library/importlib.html#module-importlib.resources","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,671019427
https://github.com/pydata/xarray/issues/4295#issuecomment-668401159,https://api.github.com/repos/pydata/xarray/issues/4295,668401159,MDEyOklzc3VlQ29tbWVudDY2ODQwMTE1OQ==,1217238,2020-08-04T06:13:36Z,2020-08-04T06:13:36Z,MEMBER,"> I'm not here to argue, but `pyproject.toml` was introduced in [PEP-518](https://www.python.org/dev/peps/pep-0518/), which was accepted over 4 years ago. I know packaging moves slowly but I'm curious how long something has to be around before becoming ""established"" and ceases to be ""novel"". 😉
It looks like pip has supported `pyproject.toml` since version 10.0.0, on 2018-04-14. That's more recent than Python 3.6 (which, to be fair, we are about to drop support for).
Consistent with my earlier suggestion about setuptools, I think we should support the oldest packaging tools that were released at the time of our earliest supported Python release. So if we switch to requiring Python 3.7 in our next major release, we could switch to using `pyproject.toml`, too.","{""total_count"": 2, ""+1"": 2, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,671019427
https://github.com/pydata/xarray/issues/4295#issuecomment-668383854,https://api.github.com/repos/pydata/xarray/issues/4295,668383854,MDEyOklzc3VlQ29tbWVudDY2ODM4Mzg1NA==,1217238,2020-08-04T05:14:32Z,2020-08-04T05:14:32Z,MEMBER,"My preference would be to say that we support setuptools 30.3 and newer, even if we can't test it:
1. setuptools is extremely stable, compared to any of our other dependencies. I have a very hard time imagining any of the limited functionality we use breaking.
2. It is apparently tricky to upgrade, at least it can't be done automatically with `pip install` on some platforms.
I don't think it's worth the hassle of switching to importlib backports, at least for now. Likewise, I would lean against switching to `pyproject.toml` until it is well established. There's just not much to be gained by switching to novel packaging technology...","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,671019427
https://github.com/pydata/xarray/issues/4295#issuecomment-667664327,https://api.github.com/repos/pydata/xarray/issues/4295,667664327,MDEyOklzc3VlQ29tbWVudDY2NzY2NDMyNw==,14808389,2020-08-02T11:51:01Z,2020-08-02T14:27:09Z,MEMBER,"I was going to suggest using [preprocessing selectors](https://docs.conda.io/projects/conda-build/en/latest/resources/define-metadata.html#preprocessing-selectors), but as you say these are incompatible with `noarch` because they're used at package build time, not when installing.
The `pint` recipe worked around that by unconditionally installing `importlib_metadata`, even on python 3.8. Not sure if that's the best option, though. Other than that, NEP29 states that we can drop python 3.6 since Jun 23 2020, so if we bump python we could use stdlib's `importlib.resources`. ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,671019427
https://github.com/pydata/xarray/issues/4295#issuecomment-667659338,https://api.github.com/repos/pydata/xarray/issues/4295,667659338,MDEyOklzc3VlQ29tbWVudDY2NzY1OTMzOA==,6213168,2020-08-02T11:01:12Z,2020-08-02T11:01:12Z,MEMBER,"> importlib.resources (available since 3.7) and importlib.metadata (available since 3.8). Both also have backports (importlib-resources and importlib-metadata), so we should be able to get rid of the install-dependency on setuptools.
-1 from me, because dependencies that are only required on a specific Python version are incompatible with noarch conda recipes. This would force us to change conda to build one package for each OS x python version.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,671019427
https://github.com/pydata/xarray/issues/4295#issuecomment-667657310,https://api.github.com/repos/pydata/xarray/issues/4295,667657310,MDEyOklzc3VlQ29tbWVudDY2NzY1NzMxMA==,14808389,2020-08-02T10:38:36Z,2020-08-02T10:38:36Z,MEMBER,"the reason we install-depend on `setuptools` is that we use `pkg_resources` for constructing the version with `setuptools_scm` and for getting the paths to images and css used for the HTML repr. Both of these can be replaced with modules in the standard library: `importlib.resources` (available since `3.7`) and `importlib.metadata` (available since `3.8`). Both also have backports (`importlib-resources` and `importlib-metadata`), so we should be able to get rid of the install-dependency on `setuptools`.
`setup_requires` has been deprecated in favor of specifying the build dependency in [pyproject.toml](https://snarky.ca/what-the-heck-is-pyproject-toml/). Maybe we should use that instead? That way we don't have to *care* about users failing to bootstrap `setuptools` because `pip` will create a isolated environment with just the build dependencies, build the source into a wheel and then install that without using `setuptools`. So I think that means you can have a old version of setuptools installed in your environment and still `pip`-install a package that requires a newer version.
An additional advantage is that our `setup.py` can become
```python
from setuptools import setup
if __name__ == ""__main__"":
setup()
```
(we can't remove `setup.py` entirely because it's required for editable installs)","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,671019427
https://github.com/pydata/xarray/issues/4295#issuecomment-667589873,https://api.github.com/repos/pydata/xarray/issues/4295,667589873,MDEyOklzc3VlQ29tbWVudDY2NzU4OTg3Mw==,6213168,2020-08-01T21:34:05Z,2020-08-01T21:34:05Z,MEMBER,PR ready for review,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,671019427
https://github.com/pydata/xarray/issues/4295#issuecomment-667578007,https://api.github.com/repos/pydata/xarray/issues/4295,667578007,MDEyOklzc3VlQ29tbWVudDY2NzU3ODAwNw==,6213168,2020-08-01T19:40:16Z,2020-08-01T19:40:16Z,MEMBER,"The key problem in ""as-old-as-they-can-be"" is that you end up with dependencies *that depend on each other* and are 1 year apart in release date. Since very frequently other projects are a lot less rigorous with testing vs old dependencies (if they test at all!) that has caused an endless amount of breakages in the past. Testing with all packages as of 1 year ago is a lot less bug-prone and time-wasting.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,671019427
https://github.com/pydata/xarray/issues/4295#issuecomment-667576666,https://api.github.com/repos/pydata/xarray/issues/4295,667576666,MDEyOklzc3VlQ29tbWVudDY2NzU3NjY2Ng==,6213168,2020-08-01T19:27:21Z,2020-08-01T19:27:21Z,MEMBER,"setuptools-scm doesn't work with setuptools < 36.7 (Nov 2017).
The conda metadata is malformed for setuptools < 38.4 (Jan 2018) - it's missing a timestamp which prevents the minimum versions tool from working.
Is everybody happy with >= 38.4?","{""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,671019427
https://github.com/pydata/xarray/issues/4295#issuecomment-667575675,https://api.github.com/repos/pydata/xarray/issues/4295,667575675,MDEyOklzc3VlQ29tbWVudDY2NzU3NTY3NQ==,6213168,2020-08-01T19:19:11Z,2020-08-01T19:19:11Z,MEMBER,"> then you should be testing with-as-old-as-they-can-be versions
We used to do that and we abandoned that policy in favour of the current rolling window, because it made developers (particularly the less experienced ones) waste a considerable amount of effort retaining backwards compatibility with obsolete versions of the dependencies that nobody cared about.
","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,671019427
https://github.com/pydata/xarray/issues/4295#issuecomment-667571656,https://api.github.com/repos/pydata/xarray/issues/4295,667571656,MDEyOklzc3VlQ29tbWVudDY2NzU3MTY1Ng==,1217238,2020-08-01T18:40:35Z,2020-08-01T18:40:35Z,MEMBER,"> I'm preparing a PR...
Thanks! This is greatly appreciated :)","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,671019427
https://github.com/pydata/xarray/issues/4295#issuecomment-667571613,https://api.github.com/repos/pydata/xarray/issues/4295,667571613,MDEyOklzc3VlQ29tbWVudDY2NzU3MTYxMw==,1217238,2020-08-01T18:40:16Z,2020-08-01T18:40:16Z,MEMBER,"I think setuptools should be treated more like Python/NumPy because it's hard installation requirement (and can be challenging to install).
> The requirement is explicitly set in setup.cfg because _don't ship what you don't test_.
My sense is that setuptools is somewhat unique as a dependency because it's only used as part of installation
I am supportive of bumping minimum version requirements according to our policy when it serves a purpose, but I don't think we should do it ""just because we can"".
> I see no problem in explicitly adding a special case to the policy for setuptools - I guess 24 months should be fine for all? I do not recommend just going back to ""whatever the very first version that works"" as we were doing before the introduction of the rolling policy.
24 months sounds about right to me. Or given that setuptools is typically bundled with Python, maybe ""Whatever version of setuptools corresponds to our oldest supported Python release""?
(This is assuming that it's still possible to get that version of setuptools in CI environments. If not, we may need to reconsider...)","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,671019427
https://github.com/pydata/xarray/issues/4295#issuecomment-667569885,https://api.github.com/repos/pydata/xarray/issues/4295,667569885,MDEyOklzc3VlQ29tbWVudDY2NzU2OTg4NQ==,6213168,2020-08-01T18:24:22Z,2020-08-01T18:24:22Z,MEMBER,"> I was surprised to see this in our setup.cfg file, added by @crusaderky in #3628. The version requirement is not documented in our docs.
It is documented:
https://xarray.pydata.org/en/stable/installing.html#minimum-dependency-versions
> xarray adopts a rolling policy regarding the minimum supported version of its dependencies:
> [...]
> all other libraries: 6 months
The requirement is explicitly set in setup.cfg because *don't ship what you don't test*.
I see no problem in explicitly adding a special case to the policy for setuptools - I guess 24 months should be fine for all? I do not recommend just going back to ""whatever the very first version that works"" as we were doing before the introduction of the rolling policy.
I'm preparing a PR...
","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,671019427
https://github.com/pydata/xarray/issues/4295#issuecomment-667559947,https://api.github.com/repos/pydata/xarray/issues/4295,667559947,MDEyOklzc3VlQ29tbWVudDY2NzU1OTk0Nw==,1217238,2020-08-01T17:01:48Z,2020-08-01T17:01:48Z,MEMBER,"It looks like the actual hard requirement for `setup.cfg` may be setuptools 30.3.0 from 8 December 2016:
https://setuptools.readthedocs.io/en/latest/setuptools.html#configuring-setup-using-setup-cfg-files
This is shortly before the release date of Python 3.6.0, so I suspect this would be a fine requirement to impose for our users.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,671019427