Skip to content
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

META: deprecation tracker #15765

Open
11 of 36 tasks
h-vetinari opened this issue Mar 11, 2022 · 23 comments
Open
11 of 36 tasks

META: deprecation tracker #15765

h-vetinari opened this issue Mar 11, 2022 · 23 comments
Labels
deprecated Items related to behavior that has been deprecated maintenance Items related to regular maintenance tasks

Comments

@h-vetinari
Copy link
Member

h-vetinari commented Mar 11, 2022

Please edit this tracker as necessary

Below a list of deprecations by kind and scipy release. Ideally all deprecations should come with an announced behaviour change, and with an announced timeframe (i.e. SciPy version where things will be changed/removed), and other items migrated there as appropriate.

In most cases, we aim for removal/behaviour change one year after a given deprecation is introduced in 1.N (not just in documentation, but in a way that the user cannot miss, i.e. raise DeprecationWarning upon use). Due to the 6 month release cadence this often ends up being 1.(N+2), but exceptional out-of-band releases can occur, so try to avoid promising exact versions. For more disruptive cases, adaptations (e.g. longer timeframes) can be made as necessary.

Note
If you add newly-deprecated functionality to the tracker, please do so twice - once for tracking what we did for the upcoming release (whether following up on old doc-only deprecation or completely new deprecations), and once for tracking when that deprecation is scheduled to be executed (generally two releases later).

Cleaning up the past

Deprecations in documentation only

None currently tracked, if you find one, let us know!

Deprecated without announced removal

None currently tracked, if you find one, let us know!

Removal announced, missed

In progress for upcoming release

Note
For removals and new or sharpened deprecations, please keep the release notes up-to-date.

Old deprecations, warning sharpened for removal in 1.14/1.15

None so far

New deprecations

Removal announced for 1.14

Open issues for these once 1.13 branches off of main.

Scheduled removals in future versions

Removal announced for 1.15

Open issues for these once 1.14 branches off of main.

  • 1.12 (removal intentionally delayed by one release due to out-of-band 1.13)
    • raise ValueError for initial not in (0, None) in cumulative_trapezoid (follow-up to this)
    • remove scipy.signal.cmplx_sort (follow-up to this)
    • remove scipy.stats.rvs_ratio_uniforms (follow up to this)
    • remove wavelet functions (follow-up to this)
    • remove quadrature and romberg functions (follow-up to this)

Removal announced for 1.16

Open issues for these once 1.15 branches off of main.

Removal announced/planned for 2.0

Other

Outstanding deprecations

List most likely incomplete

Outstanding behaviour changes

List incomplete (and intentionally so; not every tiny planned change needs to be here from the get go; but do add it if desired, ideally already above with a direct action item).

Reference

Closed but relevant for continued maintenance

@h-vetinari h-vetinari added maintenance Items related to regular maintenance tasks deprecated Items related to behavior that has been deprecated labels Mar 11, 2022
@tupui
Copy link
Member

tupui commented Mar 11, 2022

Hi @h-vetinari, thanks for compiling this list! I would not have created issues for all of them, but kept a list and use GH's features to then create/link PRs when something is on the way. This to prevent spamming people following the repo.

@h-vetinari
Copy link
Member Author

Understood, though I think text in an issue somewhere quickly gets forgotten (and discussing individual cases in a meta/mega-tracker quickly gets impossible to follow).

OTOH, if it's an issue in a milestone, many more people will look at it, with a much higher chance that it gets done (also, we can set "good first issue" labels!). I'm sorry about the spam; at least it should be (have been) a one-time thing; even if we continued to raise individual issues, it'd be incremental from now on.

@rgommers
Copy link
Member

This is very useful, and will help going through and cleaning this up, thanks @h-vetinari. One minor comment: the abbreviation we use is DEP: rather than DEPR:. For consistency, it may be useful to remove that now, otherwise we'll end up with mixed acronyms long-term.

@h-vetinari
Copy link
Member Author

One minor comment: the abbreviation we use is DEP: rather than DEPR:

Sorry about that. My first instinct when choosing such acronyms is to avoid ambiguity (such as "dep" for depencency management), but I didn't know that this was standardized already (is there a list somewhere?). In any case, I can change this in the issue titles (of those I raised). If we're consistent with the deprecate label, that schism will be even less of a problem.

@tupui
Copy link
Member

tupui commented Mar 16, 2022

... (is there a list somewhere?).

Yes the list is here https://scipy.github.io/devdocs/dev/contributor/development_workflow.html#writing-the-commit-message

@h-vetinari
Copy link
Member Author

Great thanks! (I was looking through the templates and the wiki here...)

@j-bowhay
Copy link
Member

j-bowhay commented Mar 20, 2022

@h-vetinari another warning that doesn't state version to be removed in https://github.com/scipy/scipy/blame/main/scipy/io/harwell_boeing.py

@h-vetinari
Copy link
Member Author

Thanks @j-bowhay. I've excluded all the module-level deprecations that came from the work in #14360 above; I think we should track a timeline for removal, but I'm not sure when that's planned...

@melissawm melissawm added the sprint Mentored-Sprint. Please do not work on this unless you're participating to a sprint label Apr 29, 2022
@h-vetinari
Copy link
Member Author

I did another search for "deprecated" and found some more things that somehow did not show up in the github code search the last time. I added respective issues to the tracker.

@h-vetinari
Copy link
Member Author

Now that 1.9 has branched, I removed the work done for that release from the tracker. Here it is for the purpose of record-keeping:

Deprecations that were executed for 1.9

Old deprecations, warning sharpened for removal in 1.10/1.11

@tupui
Copy link
Member

tupui commented Jun 2, 2022

Thank you again @h-vetinari, this is great work and very useful 👏

@ev-br
Copy link
Member

ev-br commented Nov 6, 2022

Edited in the interp2d deprecation plan from gh-17180 and the related mailing list discussion. Please let me know and/or adjust the landing page if what I added is not right.

@j-bowhay
Copy link
Member

j-bowhay commented Nov 6, 2022

Maybe this would be a nice issue to pin for better visibility?

@h-vetinari
Copy link
Member Author

@j-bowhay j-bowhay removed the sprint Mentored-Sprint. Please do not work on this unless you're participating to a sprint label Apr 18, 2023
@h-vetinari
Copy link
Member Author

h-vetinari commented May 30, 2023

Since 1.11 just branched, here's the things we did for that release (now removed from the tracker)

Removed in 1.11

Old deprecations, warning sharpened for removal in 1.12/1.13

New deprecations

@j-bowhay
Copy link
Member

j-bowhay commented Dec 10, 2023

Work completed for this release:

Old deprecations, warning sharpened for removal in 1.13/1.14

New deprecations

Removed for 1.12

@lucascolley
Copy link
Member

@j-bowhay probably useful to have gh-18703 linked somewhere in the top comment?

@h-vetinari
Copy link
Member Author

Work completed for this release:

Since you took care of most of the tracking this cycle, could you open a PR that ensures the release notes (already on the 1.12 branch) are up-to-date? For example, I see that not all expired deprecations are listed.

@lucascolley
Copy link
Member

For executing the deprecations of things that were never supposed to be public like gh-19801 for 1.13.0, is that going to be done per module @j-bowhay ? I have no idea how many there are.

@j-bowhay
Copy link
Member

j-bowhay commented Jan 3, 2024

I was planning to do it all at once, I think it should be a case of just tweaking the helper and removing things until the tests are happy.

@h-vetinari
Copy link
Member Author

h-vetinari commented Jan 16, 2024

In #19880, there was some discussion around deprecations, as the "out-of-band" release of 1.13 throws a bit of a wrench into the deprecations as they've been laid out (on the basis of a 6 month release cadence).

@rgommers noted:

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.

We do follow that pretty much to a tee, with the exception that we started putting version numbers for scheduled removal in the warnings (that aspect does not seem mandated either way by NEP23), and that we don't have "is deprecated since" bit.

I do think the removal date is user-relevant (despite the fact that we don't know the future); by seeing the warning, they're obviously already on an affected version, so when it was introduced is less relevant.

That said, it's IMO fine to switch to a "deprecated as of" formulation, as that avoids the need for a crystal ball. That way we can always wait for a year before removal - though in turn, we shouldn't revert back to the bad old days of letting these deprecation warnings linger indefinitely.


For the here and now (and especially given that 1.12 hasn't been released yet), we should double-check current deprecations that we don't remove things too early/eagerly. Looking at the list above, a lot of them had been deprecated previously already (or we even extended the deprecation period due to also deprecating positional use), so the only ones where I think it makes sense to push the announced deprecation date from 1.14 to 1.15 (or reformulate the warning completely) are the following:

For things deprecated in 1.11 and already removed on main, the emerging consensus was to leave these things as-is. The only exceptions are #18583 (delayed to 1.14, see discussion in #18618), #19673, resp. the follow-up to #18507; for the latter two we should decide what we want to do; I think it'd be easiest just to wait.

I'll try to prepare a PR for the 1.12 backport.

@tylerjereddy
Copy link
Contributor

@h-vetinari I proposed the SciPy 1.14.0 release schedule here: https://discuss.scientific-python.org/t/proposed-release-schedule-for-scipy-1-14-0/1151?u=tylerjereddy

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
deprecated Items related to behavior that has been deprecated maintenance Items related to regular maintenance tasks
Projects
None yet
Development

No branches or pull requests

10 participants