Skip to content

Commit

Permalink
TST: Fix tests with older versions of ipython
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
QuLogic committed May 10, 2024
1 parent 3ee509d commit 72c62b5
Show file tree
Hide file tree
Showing 5 changed files with 11 additions and 16 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ jobs:
- os: ubuntu-20.04
python-version: 3.9
# One CI run tests ipython/matplotlib-inline before backend mapping moved to mpl
extra-requirements: '-r requirements/testing/extra.txt "ipython<8.24" "matplotlib-inline<0.1.7"'
extra-requirements: '-r requirements/testing/extra.txt "ipython==7.19" "matplotlib-inline<0.1.7"'
CFLAGS: "-fno-lto" # Ensure that disabling LTO works.
# https://github.com/matplotlib/matplotlib/pull/26052#issuecomment-1574595954
# https://www.riverbankcomputing.com/pipermail/pyqt/2023-November/045606.html
Expand Down
18 changes: 7 additions & 11 deletions lib/matplotlib/testing/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -179,11 +179,7 @@ def _has_tex_package(package):
return False


def ipython_in_subprocess(
requested_backend_or_gui_framework,
expected_backend_old_ipython, # IPython < 8.24
expected_backend_new_ipython, # IPython >= 8.24
):
def ipython_in_subprocess(requested_backend_or_gui_framework, all_expected_backends):
import pytest
IPython = pytest.importorskip("IPython")

Expand All @@ -194,12 +190,12 @@ def ipython_in_subprocess(
requested_backend_or_gui_framework == "osx"):
pytest.skip("Bug using macosx backend in IPython 8.24.0 fixed in 8.24.1")

if IPython.version_info[:2] >= (8, 24):
expected_backend = expected_backend_new_ipython
else:
# This code can be removed when Python 3.12, the latest version supported by
# IPython < 8.24, reaches end-of-life in late 2028.
expected_backend = expected_backend_old_ipython
# This code can be removed when Python 3.12, the latest version supported
# by IPython < 8.24, reaches end-of-life in late 2028.
for min_version, backend in all_expected_backends.items():
if IPython.version_info[:2] >= min_version:
expected_backend = backend
break

code = ("import matplotlib as mpl, matplotlib.pyplot as plt;"
"fig, ax=plt.subplots(); ax.plot([1, 3, 2]); mpl.get_backend()")
Expand Down
3 changes: 1 addition & 2 deletions lib/matplotlib/testing/__init__.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,5 @@ def _check_for_pgf(texsystem: str) -> bool: ...
def _has_tex_package(package: str) -> bool: ...
def ipython_in_subprocess(
requested_backend_or_gui_framework: str,
expected_backend_old_ipython: str,
expected_backend_new_ipython: str,
all_expected_backends: dict[tuple[int, int], str],
) -> None: ...
2 changes: 1 addition & 1 deletion lib/matplotlib/tests/test_backend_macosx.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,4 @@ def new_choose_save_file(title, directory, filename):

def test_ipython():
from matplotlib.testing import ipython_in_subprocess
ipython_in_subprocess("osx", "MacOSX", "macosx")
ipython_in_subprocess("osx", {(8, 24): "macosx", (7, 0): "MacOSX"})
2 changes: 1 addition & 1 deletion lib/matplotlib/tests/test_backend_qt.py
Original file line number Diff line number Diff line change
Expand Up @@ -378,4 +378,4 @@ def custom_handler(signum, frame):

def test_ipython():
from matplotlib.testing import ipython_in_subprocess
ipython_in_subprocess("qt", "QtAgg", "qtagg")
ipython_in_subprocess("qt", {(8, 24): "qtagg", (8, 15): "QtAgg", (7, 0): "Qt5Agg"})

0 comments on commit 72c62b5

Please sign in to comment.