Skip to content

Apply NEP29 (time-limited support) to IPython #16263

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

Closed
anntzer opened this issue Jan 19, 2020 · 8 comments · Fixed by #28279
Closed

Apply NEP29 (time-limited support) to IPython #16263

anntzer opened this issue Jan 19, 2020 · 8 comments · Fixed by #28279
Milestone

Comments

@anntzer
Copy link
Contributor

anntzer commented Jan 19, 2020

Currently, Matplotlib maintains some code to support some extremely old versions of IPython (supposedly down to 1.x) even though it is quite possible that such versions don't even work with Py3.6+. There are also some tricky points wrt backend switching which were fixed a while ago in ipython (ipython/ipython#9287) but for which we still maintain backcompat for older versions. (Backend switching is the motivation for this proposal.)

Even though IPython is not a "dependency" of Matplotlib, there's obviously some rather tight coupling due to event loop integration, so I would suggest applying NEP29 (or rather our version of it, https://matplotlib.org/devdocs/devel/min_dep_policy.html#python-dependencies): "we should support at least (...) minor versions initially released in the 12 months prior to our planed release date or the oldest that supports our minimum python" (as there is no compiled code in IPython) -- right now this would mean ipython 7.3.0. I'm not asking that we be super strict (we could e.g. also treat ipython like numpy, which means 24 months -- so IPython 6.3.0, right now), but unlimited support seems a bit too much.

Assuming we agree on this, we also need to decide what to do if Matplotlib detects that it is running in an too-old-IPython: error out? print a warning?

@tacaswell tacaswell added this to the v3.3.0 milestone Jan 19, 2020
@tacaswell
Copy link
Member

👍 to removing work-around code for old versions of IPython. 50/50 on adding a warning for older versions of IPython.

@anntzer
Copy link
Contributor Author

anntzer commented Jan 20, 2020

Do you suggest to not even bother checking if we're running a too-old ipython?

@dopplershift
Copy link
Contributor

Treating IPython like numpy seems reasonable. I’m also 50/50 on even bothering to warn about old versions.

@tacaswell tacaswell modified the milestones: v3.3.0, v3.4.0 May 25, 2020
@tacaswell
Copy link
Member

Pushing to 3.4 as it is not urgent.

We talked about this on the call, general agreement, but still want to think about if we should warn about old versions.

The code we use from IPython has been stable for an extremely long time so this maybe a moot point.

@QuLogic QuLogic modified the milestones: v3.4.0, v3.5.0 Jan 27, 2021
@QuLogic QuLogic modified the milestones: v3.5.0, v3.6.0 Sep 25, 2021
@QuLogic QuLogic modified the milestones: v3.6.0, v3.7.0 Aug 24, 2022
@QuLogic QuLogic modified the milestones: v3.7.0, future releases Jan 26, 2023
@QuLogic
Copy link
Member

QuLogic commented May 10, 2024

cc @ianthomas23; I think this ties in with the backend registry?

QuLogic added a commit to QuLogic/matplotlib that referenced this issue May 10, 2024
I only went back as far as 7.0.0, as due to matplotlib#16263, we probably don't
want to be supporting all the way back to IPython 1.
QuLogic added a commit to QuLogic/matplotlib that referenced this issue May 10, 2024
I only went back as far as 7.0.0, as due to matplotlib#16263, we probably don't
want to be supporting all the way back to IPython 1.
@ianthomas23
Copy link
Member

cc @ianthomas23; I think this ties in with the backend registry?

Yes it does. Looking forward we have removed the hidden tight coupling between the two projects, such as matplotlib dynamically altering ipython's backend2gui mapping, and replaced it with the BackendRegistry public API. So it should be much easier in future to keep them in step.

Can we claim to have done enough to close this issue now by informally adopting NEP29 for IPython backward compatibility and implementing tests to prove it in #28205? Or does there need to be a statement somewhere (code or docs) that this is a formal policy?

@anntzer
Copy link
Contributor Author

anntzer commented May 21, 2024

I think what really matters is just that someone actually looked into the compatibility ranges, but a statement in the docs can't hurt... (I'm not insisting on it either.)

tacaswell added a commit to tacaswell/matplotlib that referenced this issue May 22, 2024
@tacaswell tacaswell modified the milestones: future releases, v3.10.0 May 22, 2024
tacaswell added a commit to tacaswell/matplotlib that referenced this issue May 22, 2024
@tacaswell tacaswell mentioned this issue May 22, 2024
2 tasks
@tacaswell
Copy link
Member

Opened a PR with explicitly adding it to the docs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants