Repository: mne-tools/mne-python

Issue:
PyVista Integration CI failures
As of this morning, we're seeing failures for PyVista's MNE integration tests which seem to be an upstream issue:

Ref https://github.com/pyvista/pyvista/actions/runs/3904493261/jobs/6670352105

Looks like something is awry with `ipympl` and matplotlib's latest release?

```
___________ ERROR collecting mne/viz/backends/tests/test_abstract.py ___________
mne/viz/backends/tests/test_abstract.py:123: in <module>
    sys.platform.startswith('win') or not check_version('ipympl'),
mne/utils/check.py:106: in check_version
    library = import_module(library)
/opt/hostedtoolcache/Python/3.10.9/x64/lib/python3.10/importlib/__init__.py:126: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
<frozen importlib._bootstrap>:1050: in _gcd_import
    ???
<frozen importlib._bootstrap>:1027: in _find_and_load
    ???
<frozen importlib._bootstrap>:1006: in _find_and_load_unlocked
    ???
<frozen importlib._bootstrap>:688: in _load_unlocked
    ???
<frozen importlib._bootstrap_external>:883: in exec_module
    ???
<frozen importlib._bootstrap>:241: in _call_with_frames_removed
    ???
/opt/hostedtoolcache/Python/3.10.9/x64/lib/python3.10/site-packages/ipympl/__init__.py:28: in <module>
    matplotlib.use('module://ipympl.backend_nbagg')
/opt/hostedtoolcache/Python/3.10.9/x64/lib/python3.10/site-packages/matplotlib/__init__.py:1166: in use
    plt.switch_backend(name)
/opt/hostedtoolcache/Python/3.10.9/x64/lib/python3.10/site-packages/matplotlib/pyplot.py:265: in switch_backend
    backend_mod = importlib.import_module(
/opt/hostedtoolcache/Python/3.10.9/x64/lib/python3.10/importlib/__init__.py:[126](https://github.com/pyvista/pyvista/actions/runs/3904493261/jobs/6670352105#step:13:127): in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
<frozen importlib._bootstrap>:1050: in _gcd_import
    ???
<frozen importlib._bootstrap>:1027: in _find_and_load
    ???
<frozen importlib._bootstrap>:1006: in _find_and_load_unlocked
    ???
<frozen importlib._bootstrap>:688: in _load_unlocked
    ???
<frozen importlib._bootstrap_external>:883: in exec_module
    ???
<frozen importlib._bootstrap>:241: in _call_with_frames_removed
    ???
/opt/hostedtoolcache/Python/3.10.9/x64/lib/python3.10/site-packages/ipympl/backend_nbagg.py:35: in <module>
    from ipywidgets import DOMWidget, widget_serialization
/opt/hostedtoolcache/Python/3.10.9/x64/lib/python3.10/site-packages/ipywidgets/__init__.py:25: in <module>
    from .widgets import *
/opt/hostedtoolcache/Python/3.10.9/x64/lib/python3.10/site-packages/ipywidgets/widgets/__init__.py:4: in <module>
    from .widget import Widget, CallbackDispatcher, register, widget_serialization
/opt/hostedtoolcache/Python/3.10.9/x64/lib/python3.10/site-packages/ipywidgets/widgets/widget.py:19: in <module>
    from ipykernel.comm import Comm
/opt/hostedtoolcache/Python/3.10.9/x64/lib/python3.10/site-packages/ipykernel/__init__.py:5: in <module>
    from .connect import *  # noqa
/opt/hostedtoolcache/Python/3.10.9/x64/lib/python3.10/site-packages/ipykernel/connect.py:11: in <module>
    import jupyter_client
/opt/hostedtoolcache/Python/3.10.9/x64/lib/python3.10/site-packages/jupyter_client/__init__.py:8: in <module>
    from .asynchronous import AsyncKernelClient  # noqa
/opt/hostedtoolcache/Python/3.10.9/x64/lib/python3.10/site-packages/jupyter_client/asynchronous/__init__.py:1: in <module>
    from .client import AsyncKernelClient  # noqa
/opt/hostedtoolcache/Python/3.10.9/x64/lib/python3.10/site-packages/jupyter_client/asynchronous/client.py:6: in <module>
    from jupyter_client.channels import HBChannel
/opt/hostedtoolcache/Python/3.10.9/x64/lib/python3.10/site-packages/jupyter_client/channels.py:15: in <module>
    from .session import Session
/opt/hostedtoolcache/Python/3.10.9/x64/lib/python3.10/site-packages/jupyter_client/session.py:49: in <module>
    from zmq.eventloop.ioloop import IOLoop
/opt/hostedtoolcache/Python/3.10.9/x64/lib/python3.10/site-packages/zmq/eventloop/ioloop.py:25: in <module>
    _deprecated()
/opt/hostedtoolcache/Python/3.10.9/x64/lib/python3.10/site-packages/zmq/eventloop/ioloop.py:17: in _deprecated
    warnings.warn(
E   DeprecationWarning: zmq.eventloop.ioloop is deprecated in pyzmq 17. pyzmq now works with default tornado and asyncio eventloops.
- generated xml file: /home/runner/work/pyvista/pyvista/mne-python/junit-results.xml -
```


Discussion:

Resolving patch:
diff --git a/mne/conftest.py b/mne/conftest.py
--- a/mne/conftest.py
+++ b/mne/conftest.py
@@ -130,6 +130,7 @@ def pytest_configure(config):
     ignore:Unclosed context <zmq.asyncio.Context.*:ResourceWarning
     ignore:Jupyter is migrating its paths.*:DeprecationWarning
     ignore:Widget\..* is deprecated\.:DeprecationWarning
+    ignore:.*is deprecated in pyzmq.*:DeprecationWarning
     # hopefully temporary https://github.com/matplotlib/matplotlib/pull/24455#issuecomment-1319318629
     ignore:The circles attribute was deprecated in Matplotlib.*:
     # PySide6


Test patch: