-
-
Notifications
You must be signed in to change notification settings - Fork 5.1k
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
DOC: prepare 1.13.0 release notes #19880
Conversation
Do we really want to bump the minor number here, "just" for supporting NumPy 2.0? I guess the main argument relates to the volume of changes necessary to adapt to API-changes in 2.0. I can't tell how big that volume would be, and if we'd be comfortable with putting this into a 1.12.1. I ask primarily because in terms of deprecation announcements, we've been pretty clearly communicating "will be removed in 2 releases" warnings, with the expectation that this would give users about a year to adapt. If we're introducing another release in between this is either going to mess up our announcements or quite substantially shorten the timespan from deprecation to execution. In case we stay with the choice to release 1.13 out of band, we should then at least consider increasing all the current deprecation warnings by one (before 1.12 GA), though that'd still leave the various deprecations we already executed for 1.13 on a very accelerated schedule (unless we revert them). |
FWIW, I'd prefer if we backport the relevant changes for numpy 2.0 to 1.12 rather than release 1.13 out-of-band. |
the main issue there is that there are still breaking changes which haven't happened yet in NumPy for 2.0. |
It'll be way better for debugging potential issues if there's a clear split here with a new minor release. There's a lot that changes in 2.0, and also a lot of fixes for 2.0 went into
We've been overdoing it on policy I think. It's completely fine to remove something in 3 releases after deprecations. That should not require even a change in message - those messages are mistakes then if they were that specific. It's a minimum of 2 releases. |
I disagree on that. It's taken a fair amount of effort to get away from the previous "it's deprecated, but not removed for a long time", which just breeds complacency because we never followed through. So now we give users actionable warnings that say "this function will disappear in version 1.X". I continue to think this is useful both from a communication and a maintenance standpoint. Since we started doing this in the 1.8/1.9 timeframe, we've had a very reliable 6 month release cadence, so the issue at hand never came up. I accept that numpy 2.0 is an exceptional event and that an out-of-band release might be the best choice. But then we just need to our messaging (good we caught this before 1.12 GA...), not the way we've been doing deprecations. |
This is too absolute. It's a good default, but it should always be possible to leave something in for longer if there is a reason not to remove it. If new deprecation messages are written to give zero wiggle room to a removal schedule, that's a mistake I think - it'd be better to say "is likely to be removed in ...". |
Clearly we don't have a crystal ball, and we've missed announced removals or changed the announced version in the past. It remains "best effort" as opposed to "set in stone", but in this case, we could simply adapt the warning messages that we're releasing for 1.12? The more annoying question is whether we want to undo all the deprecations that were already executed on main (with the expectation of a mid-2024 release of 1.13) |
I think that this seems slightly unnecessary given that, assuming the NumPy release continues as speculated, 1.13 will still be ~9 months after 1.11. Sure, this will be unexpected for anyone who is keeping track of our normal release schedule, but I think it still gives a reasonable amount of time to adapt. |
Sure, if you want to do that that seems fine. Please consider following https://numpy.org/neps/nep-0023-backwards-compatibility.html#implementing-deprecations-and-removals for future deprecations though, it works pretty well in NumPy.
It's the list in gh-15765 for 1.13, right? 6 PRs so far? I dunno, either way seems fine. Given that many packages will do a new numpy 2.0-compatible release, maybe it's not too much of a problem here to do these ones a bit faster. |
I have a few hours worth work remaining for the I didn't know 1.13 was the NumPy 2.0 release so I can actually push it a bit more and finish it off if there is time. I'm wondering how much time are we talking about until this starts flying, what do you say @tylerjereddy ? |
I think late January/early February is what I'd heard in the last month or two from NumPy folks. They do have a 2.0 progress board: https://github.com/orgs/numpy/projects/9. I believe world events did cause some delays to original plans, and I don't know if they'll push a bit later than that now. It seems likely you'd finish up a few hours of work before Anyway, part of the point of opening this was to advertise it a bit more broadly, so hopefully we find a solution that doesn't cause too much friction. The original |
It's getting close, but there's always some last-minute hiccups. So if the plan is 31 January, it'll probably be sometime in the ~10 days after that. |
Ah OK, that's plenty sans reviewing. |
@mdhaber @h-vetinari I think I saw some emails/queries about scheduling. My plan was to do this for |
My PR (following a quick analysis that no-one objected to) is here: #19892. I checked that it cherry-picks cleanly to |
@tylerjereddy can we ask for at least a quick 1.13.1 because we were under the impression that this would be a regular release. If I missed the convo, my apologies in advance. There will be quite some bug reports I am anticipating for the Fortran rewrites but in 10 days, we might not clean up the low hanging fruit. NumPy announcement should be a bit more louder in my opinion. We should probably hit all the relevant geek squad circles. |
Yes, I have some funding support to do releases and happy to do what I can to help. For urgent release problems Ralf usually helps me get unstuck pretty fast too. Of course, there's also the |
I can at least promise that our fixes will be way less sophisticated than NumPy 2.0 issues. |
Suggested timeline from NumPy team meeting this morning was ~late February. |
Some timeline updates from upstream are here: numpy/numpy#24300 (comment) I will start updating the release notes "soon" of course (I keep bumping the calendar reminder, but really do need to start back at it soon). Chuck is working on the beta release process as I write this. |
@tylerjereddy it may be worth announcing a timeline on the mailing list, to give people a chance to get some last things in for the release? It usually motivates getting something over the finish line.
I suggest keeping this PR for release notes only. Re
I think we're all good here, since we have working wheel builds with NumPy |
See https://github.com/scipy/scipy/compare/main...rgommers:scipy:update-deps-for-1.13?expand=1 for changes I think we need - I can open a PR after |
Great, thanks. Yes, this PR is release notes only. I made a calendar reminder to send something to the mailing list Monday evening, if the NumPy beta is out and I have a tentative plan. |
This is the tentative/proposed schedule I sent to the mailing list for feedback:
|
* prepare the release notes for SciPy `1.13.0`, which is an out-of-band release primarily aimed at supporting NumPy `2.0.0` [skip ci] [skip circle]
doc/source/release/1.13.0-notes.rst
Outdated
- `scipy.stats.rankdata` has been vectorized, improving its performance and the | ||
performance of hypothesis tests that depend on it. | ||
- ``stats.mannwhitneyu`` should now be faster due to a vectorized statistic | ||
calculation. | ||
- `scipy.stats.mood` now has ``nan_policy`` and ``keepdims`` support. | ||
- `scipy.stats.shapiro`, `scipy.stats.normaltest`, `scipy.stats.skewtest`, | ||
`scipy.stats.kurtosistest`, and `scipy.stats.kstest` have gained ``axis``, | ||
``nan_policy`` and ``keepdims`` support. | ||
- `scipy.stats.boxcox_normmax` has gained a ``ymax`` parameter to allow user | ||
specification of the maximum value of the transformed data. |
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.
- `scipy.stats.rankdata` has been vectorized, improving its performance and the | |
performance of hypothesis tests that depend on it. | |
- ``stats.mannwhitneyu`` should now be faster due to a vectorized statistic | |
calculation. | |
- `scipy.stats.mood` now has ``nan_policy`` and ``keepdims`` support. | |
- `scipy.stats.shapiro`, `scipy.stats.normaltest`, `scipy.stats.skewtest`, | |
`scipy.stats.kurtosistest`, and `scipy.stats.kstest` have gained ``axis``, | |
``nan_policy`` and ``keepdims`` support. | |
- `scipy.stats.boxcox_normmax` has gained a ``ymax`` parameter to allow user | |
specification of the maximum value of the transformed data. | |
- `scipy.stats.wasserstein_distance_nd` was introduced to compute the Wasserstein-1 | |
distance between two N-D discrete distributions. | |
- Vectorized calculations with `scipy.stats.wilcoxon`, `scipy.stats.mannwhitneyu`, | |
and `scipy.stats.rankdata` are faster. | |
- The ``method`` parameter of `scipy.stats.wilcoxon` and `scipy.stats.mannwhitneyu` | |
now accepts instances of `scipy.stats.PermutationMethod` for computing exact | |
or randomized *p*-values, even in the presence of ties and/or zeros. | |
- `scipy.stats.boxcox_normmax` now accepts a ``ymax`` parameter, which allows users | |
to specify the maximum allowable magnitude of the transformed data when | |
``method='mle'``. | |
- The ``fit`` methods of `scipy.stats.gamma` (with ``method='mm'``) and | |
`scipy.stats.loglaplace` are faster and more reliable. | |
- Moment calculations of `scipy.stats.powerlaw` are faster and more accurate. | |
- The ``statistic`` parameter of `scipy.stats.goodness_of_fit` now accepts custom | |
callables. | |
- Support for ``axis``, ``keepdims``, and/or ``nan_policy`` keyword arguments has | |
been added or improved for the following functions: `scipy.stats.f_oneway`, | |
`scipy.stats.alexandergovern`, scipy.stats.shapiro`, `scipy.stats.normaltest`, | |
scipy.stats.skewtest`, scipy.stats.kurtosistest`, scipy.stats.friedmanchisquare`, | |
scipy.stats.brunnermunzel`, and `scipy.stats.mood`. |
@dschmitz89 If there are any PRs you reviewed/merged that aren't listed here, please feel free to add them.
@tylerjereddy IIRC in the past, we have drafted these in the Wiki and the PR gets created from that shortly before release. Will we be doing this differently going forward?
doc/source/release/1.13.0-notes.rst
Outdated
``nan_policy`` and ``keepdims`` support. | ||
- `scipy.stats.boxcox_normmax` has gained a ``ymax`` parameter to allow user | ||
specification of the maximum value of the transformed data. | ||
- `scipy.stats.invwishart` ``rvs`` and ``logpdf`` are now faster. | ||
|
||
Hypothesis Tests |
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.
When someone is editing locally, these scipy.stats
sub-categories can be removed. Also, if you're willing to add to the "Other Changes" section :
- The second argument of `scipy.stats.moment` has been renamed to `order` while maintaining backward compatibility.
I'd appreciate it!
@@ -37,7 +30,9 @@ New features | |||
|
|||
`scipy.interpolate` improvements |
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.
`scipy.interpolate` improvements | |
`scipy.integrate` improvements | |
============================== | |
- The `terminal` attribute of event functions passed to `scipy.integrate.solve_ivp` may now be a positive integer: integration stops after `terminal` events have occurred. | |
`scipy.interpolate` improvements |
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.
Yeah, I've already got this one locally. I guess we'll see how things compare when I push up in a bit.
doc/source/release/1.13.0-notes.rst
Outdated
``nan_policy`` and ``keepdims`` support. | ||
- `scipy.stats.boxcox_normmax` has gained a ``ymax`` parameter to allow user | ||
specification of the maximum value of the transformed data. | ||
- `scipy.stats.invwishart` ``rvs`` and ``logpdf`` are now faster. |
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.
- `scipy.stats.invwishart` ``rvs`` and ``logpdf`` are now faster. |
I've been working on the release notes locally for a few hours, so I'll need to take a look at how things mesh after I push up. |
* Update the release notes based on the wiki version of the `1.13.0` release notes, and a manual read through of all enhancement PRs merged with the appropriate milestone. * Update issue/PR/author lists by re-running the scraping scripts. [skip ci] [skip circle]
4c26be2
to
4b3b315
Compare
Ok, I've pushed up what I have locally for now, to make it easier for folks to see where things stand. Probably some of Matt's Highlights and Edit: doc build is passing locally with |
To address one point above, the wiki was fairly sparsely populated with updates this time around, probably because of the out-of-band timing, but I don't have any plans to change the process, I still updated from the wiki last night, then scanned through the merged PRs manually. I'm working on a few more cleanups now, then I'll see if I can find consensus with the changes from Matt above. |
* update `.mailmap` for those authors where I could do a bit of digging and find their actual names * update the "Highlights" section and mention the OpenBLAS version bump for wheel builds * fuse in changes/suggestions from Matt H. * delete a few section headings due to lack of content/entries [docs only] --------- Co-authored-by: Matt Haberland <mhaberla@calpoly.edu>
I pushed in some updates to The rendered version of the docs looks fairly pleasing locally, I'll let CI do a docs-only pass now. |
I also don't plan to allow numpy/numpy#26060 to block us from branching. I'll backport a shim after branching if one is needed on our end, though I'd prefer if NumPy didn't change a public header struct size at this stage of the process. |
Alright, Matt, Evgeni and others can suggest more release notes improvements after I branch, but the docs CI is happy here, and the render of the new release notes seems "ok." I'm going to self-merge as branching is imminent. |
* prepare the release notes for SciPy `1.13.0`, which is an out-of-band release primarily aimed at supporting NumPy `2.0.0` --------- Co-authored-by: Matt Haberland <mhaberla@calpoly.edu>
1.13.0
, which is an out-of-band release primarily aimed at supporting NumPy2.0.0
[skip ci] [skip circle]
TODO:
1.13.0
out as soon as NumPy2.0.0
is up on PyPI and the wheel builds are passing in our CI (or if NumPy will do RCs or whatever that guarantee stability..)pyproject.toml
(etc.) for the "new way" to build against NumPy2.0.0
and have backwards-compat to older NumPy that way (if any adjustments are still needed...)2.0.0
pre-release compat issues left? yes, MAINT: maintenance/2.0.x branch binary compat issue on SciPy main numpy/numpy#26060, I suggested they revert but will deal with after branching probably....mailmap
adjustments to improve author listsparse
andstats