Repository navigation
APE 18: Adopt NEP 29 #63
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
be9b60d
74c3fc0
9e3ff3b
e49d790
0c39921
386ef3f
1999796
ee3959f
d2d7294
b83f14a
1f54326
80aff90
f6ba8f3
ef73426
e40dd7d
211ee64
59d74a5
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,70 @@ | ||||||||||||||||||||||||||||
| Adopt NEP 29 for CPython and Numpy Version Support | ||||||||||||||||||||||||||||
| -------------------------------------------------- | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| author: Stuart Mumford and Thomas Robitaille | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| date-created: 2020 October 16 | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| date-last-revised: 2021 February 25 | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| type: Standard Track | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| status: Accepted | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| Abstract | ||||||||||||||||||||||||||||
| -------- | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| APE 10 previously determined supported CPython versions, and provided a list up to the 4.0 release. | ||||||||||||||||||||||||||||
| Since APE 10 was written the wider scientific Python community have written and largely adopted `NEP 29`_ as a policy for supported versions of both CPython and Numpy. | ||||||||||||||||||||||||||||
| This APE proposes that Astropy adopt this policy following other projects in the scientific ecosystem. | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| Detailed description | ||||||||||||||||||||||||||||
| -------------------- | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| This APE fully adopts `NEP 29`_ for both CPython and Numpy versions for the core astropy package, and it supersedes APE 10 wherever there is a conflict between that APE and this APE or `NEP 29`_. | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| This APE will not replicate the content of `NEP 29`_, and the full text of `NEP 29`_ is adopted via this APE. | ||||||||||||||||||||||||||||
| In addition to the content of `NEP 29`_, the APE also extends the numpy policy to all of the core package dependencies. | ||||||||||||||||||||||||||||
| This leads to the following support policy for dependencies of the core package. | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| Astropy core will support: | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| * All minor versions of Python released 42 months prior to a non-bugfix, and at minimum the two latest minor versions. | ||||||||||||||||||||||||||||
| * All minor versions of numpy released in the 24 months prior to a non-bugfix, and at minimum the last three minor versions. | ||||||||||||||||||||||||||||
| * Versions of other runtime dependencies released 24 months prior to a non-bugfix release. | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
this is the change I was asking for clarification of in https://github.com/astropy/astropy-APEs/pull/63/files#r506624591
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maybe worth saying since these are currently supported for two years (in case we change that some day)
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I find this phrasing very confusing. What about rewording to say the 42 and 24 are for the start of a release "family", and support won't be dropped in a bugfix release, neither on LTS nor on normal feature release bugfix?
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. (also, I promised Stu a blurb about the exceptation, e.g. the latest LTS dropped a numpy version the release, as it would have been dropped based on NEP29 very soon after the release)
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
👍 This is in NEP 29, but I am happy to call it out here in terms of the LTS if people feel it needs more clarity.
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I disagree that it's very clear in NEP 29 for the casual reader. That is it's very specific and when I read very carefully I understand the above, and really anyone in this conversation is clearly interested enough to dig deeply on this. But I do not think the typical reader who comes upon this via google and just wants to know "how long will an astropy support this Python version" will take the time to click through to NEP 29, map it onto our Astropy-specific release candence, etc. That said, if y'all think this wording is not clearer, maybe the better thing is to just give a few concrete examples and let the reader extrapolate? Something like:
Suggested change
Or @cadirS wording from https://github.com/astropy/astropy-APEs/pull/63/files#r506678119 makes sense to me too.
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. See my extra sentence about the bugfix lifetimes.
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. (I don't find these concrete examples any useful, try to swap it out with e.g 1.3 and it will all read obsolete for the casual reader who you say would not bother to read/try to understand the tables and figures in NEP29)
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There is a line now stating that the versions are supported for the lifetime of the bugfixes, so hopefully that resolves the core of your comment @eteq in a way people are happy with?
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Reads well to me. |
||||||||||||||||||||||||||||
| These versions of the dependencies are to be supported for bugfix lifetime of the given astropy version. | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| This version support policy allows, at the discretion of the maintainers, to adopt the supported version of the next release in situations where it is judged to be valuable. | ||||||||||||||||||||||||||||
| For example, this could be done in the case of an important change in numpy or a change over date very close to the release. | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| Implementation | ||||||||||||||||||||||||||||
| -------------- | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| Some initial work has been done in `#10900 <https://github.com/astropy/astropy/pull/10900>`__ on bumping the minimum Python version in the core astropy package to Python 3.7+. | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
|
Cadair marked this conversation as resolved.
Resolved
|
||||||||||||||||||||||||||||
| The release calendar for the astropy core package will be updated over time to include the minimum Python and Numpy version for upcoming releases. | ||||||||||||||||||||||||||||
| Backward compatibility | ||||||||||||||||||||||||||||
| ---------------------- | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| The version schedule here is more rapid than that proposed in APE 10, however, this allows the core library to adopt modern features, and reduces burden on maintainers. | ||||||||||||||||||||||||||||
| In addition to this, aligning ourselves with other projects in the ecosystem is consistent and prevents potential minimum version conflicts. | ||||||||||||||||||||||||||||
| See the text of `NEP 29`_ for further justification. | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
|
Cadair marked this conversation as resolved.
Resolved
|
||||||||||||||||||||||||||||
| This APE fully replaces APE10 where they are in conflict. | ||||||||||||||||||||||||||||
|
Cadair marked this conversation as resolved.
Resolved
|
||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| Alternatives | ||||||||||||||||||||||||||||
| ------------ | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| See `NEP 29`_. | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
|
Cadair marked this conversation as resolved.
Resolved
|
||||||||||||||||||||||||||||
| Decision rationale | ||||||||||||||||||||||||||||
| ------------------ | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| After discussion and some revision in the PR, there was broad support and no | ||||||||||||||||||||||||||||
| objections to adopting this plan. | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| .. _NEP 29: https://numpy.org/neps/nep-0029-deprecation_policy.html | ||||||||||||||||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
While I'm fine with this, I think it might be good to give at least one concrete example of a way the more "accelerated" schedule will help things. Like what py3.7 features would we want to implement sooner rather than later? (manylinux2010 might be the answer! Or data classes?)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I added a small justification in the backwards compatibility section, I don't really want to do a "let's adopt 3.7 because new features things" because I would rather this stand the test of time. I am happy to pull the justification section up here if you think it's a better place for it?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I see your point on "stand the test of time", but I was thinking the point of this is to give a couple of concrete examples to what is currently a very abstract phrasing. So just meant something like "For example, at the time of the py3.7 release infrastructure maitainers found their life would be easier if manylinux2010 was an option". Or similar.
But if you really want it to be timeless, I'm ok with either pulling it up here or leaving as-is 🤷.