microsoft/debugpy

Failed test due to matplotlib deprecation of interactive_bk

scottshambaugh opened this issue · 0 comments

Environment data

  • debugpy version: 1.6.7
  • OS and version: WSL 2, Ubuntu
  • Python version (& distribution if applicable, e.g. Anaconda): 3.11.5
  • Using VS Code or Visual Studio: VS Code

Actual behavior

Running a single debug test fails from the following deprecation warning. This is from the changes in matplotlib/matplotlib#27719 and matplotlib/matplotlib#27948

(mpl-dev) scott@DESKTOP-M5S4AGS:/mnt/c/Users/Scott/Documents/Documents/Coding/matplotlib$  cd /mnt/c/Users/Scott/Documents/Documents/Coding/matplotlib ; /usr/bin/env /home/scott/anaconda3/envs/mpl-dev/bin/python /home/scott/.vscode-server/extensions/ms-python.debugpy-2024.7.11591012/bundled/libs/debugpy/adapter/../../debugpy/launcher 59141 -- /home/scott/.vscode-server/extensions/ms-python.python-2024.11.2024070901-linux-x64/python_files/vscode_pytest/run_pytest_script.py --rootdir=/mnt/c/Users/Scott/Documents/Documents/Coding/matplotlib --capture=no 
Received JSON data in run script
Running pytest with args: ['-p', 'vscode_pytest', '--rootdir=/mnt/c/Users/Scott/Documents/Documents/Coding/matplotlib', '--capture=no', '/mnt/c/Users/Scott/Documents/Documents/Coding/matplotlib/lib/mpl_toolkits/mplot3d/tests/test_axes3d.py::test_axes3d_isometric[png]']
Plugin info[vscode-pytest]: Checking if rootdir is a child of a symlink.
Checking for symlink parent starting at current path:  /mnt/c/Users/Scott/Documents/Documents/Coding/matplotlib
============================= test session starts ==============================
platform linux -- Python 3.12.4, pytest-8.2.2, pluggy-1.5.0
rootdir: /mnt/c/Users/Scott/Documents/Documents/Coding/matplotlib
configfile: pyproject.toml
plugins: cov-5.0.0, xdist-3.6.1, rerunfailures-14.0, timeout-2.3.1
collected 1 item

lib/mpl_toolkits/mplot3d/tests/test_axes3d.py Traceback (most recent call last):
  File "/home/scott/.vscode-server/extensions/ms-python.debugpy-2024.7.11591012/bundled/libs/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame.py", line 988, in trace_dispatch
    self.do_wait_suspend(thread, frame, event, arg)
  File "/home/scott/.vscode-server/extensions/ms-python.debugpy-2024.7.11591012/bundled/libs/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame.py", line 165, in do_wait_suspend
    self._args[0].do_wait_suspend(*args, **kwargs)
  File "/home/scott/.vscode-server/extensions/ms-python.debugpy-2024.7.11591012/bundled/libs/debugpy/_vendored/pydevd/pydevd.py", line 2070, in do_wait_suspend
    keep_suspended = self._do_wait_suspend(thread, frame, event, arg, suspend_type, from_this_thread, frames_tracker)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/scott/.vscode-server/extensions/ms-python.debugpy-2024.7.11591012/bundled/libs/debugpy/_vendored/pydevd/pydevd.py", line 2093, in _do_wait_suspend
    self._activate_gui_if_needed()
  File "/home/scott/.vscode-server/extensions/ms-python.debugpy-2024.7.11591012/bundled/libs/debugpy/_vendored/pydevd/pydevd.py", line 1592, in _activate_gui_if_needed
    activate_function()
  File "/home/scott/.vscode-server/extensions/ms-python.debugpy-2024.7.11591012/bundled/libs/debugpy/_vendored/pydevd/pydevd.py", line 1576, in <lambda>
    self.mpl_modules_for_patching = {"matplotlib": lambda: activate_matplotlib(do_enable_gui),
                                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/scott/.vscode-server/extensions/ms-python.debugpy-2024.7.11591012/bundled/libs/debugpy/_vendored/pydevd/pydev_ipython/matplotlibtools.py", line 94, in activate_matplotlib
    is_interactive = is_interactive_backend(backend)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/scott/.vscode-server/extensions/ms-python.debugpy-2024.7.11591012/bundled/libs/debugpy/_vendored/pydevd/pydev_ipython/matplotlibtools.py", line 55, in is_interactive_backend
    from matplotlib.rcsetup import interactive_bk, non_interactive_bk  # @UnresolvedImport
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/c/Users/Scott/Documents/Documents/Coding/matplotlib/lib/matplotlib/_api/__init__.py", line 216, in __getattr__
    return props[name].__get__(instance)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/c/Users/Scott/Documents/Documents/Coding/matplotlib/lib/matplotlib/_api/deprecation.py", line 161, in __get__
    emit_warning()
  File "/mnt/c/Users/Scott/Documents/Documents/Coding/matplotlib/lib/matplotlib/_api/deprecation.py", line 196, in emit_warning
    warn_deprecated(
  File "/mnt/c/Users/Scott/Documents/Documents/Coding/matplotlib/lib/matplotlib/_api/deprecation.py", line 99, in warn_deprecated
    warn_external(warning, category=MatplotlibDeprecationWarning)
  File "/mnt/c/Users/Scott/Documents/Documents/Coding/matplotlib/lib/matplotlib/_api/__init__.py", line 381, in warn_external
    warnings.warn(message, category, stacklevel)
matplotlib._api.deprecation.MatplotlibDeprecationWarning: The interactive_bk attribute was deprecated in Matplotlib 3.9 and will be removed in 3.11. Use ``matplotlib.backends.backend_registry.list_builtin(matplotlib.backends.BackendFilter.INTERACTIVE)`` instead.
F

=================================== FAILURES ===================================
__________________________ test_axes3d_isometric[png] __________________________

args = ()
kwds = {'extension': 'png', 'request': <FixtureRequest for <Function test_axes3d_isometric[png]>>}

    @wraps(func)
    def inner(*args, **kwds):
        with self._recreate_cm():
>           return func(*args, **kwds)

/home/scott/anaconda3/envs/mpl-dev/lib/python3.12/contextlib.py:81: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
lib/matplotlib/figure.py:3398: in savefig
    self.canvas.print_figure(fname, **kwargs)
lib/matplotlib/backend_bases.py:2173: in print_figure
    result = print_method(
lib/matplotlib/backend_bases.py:2023: in <lambda>
    print_method = functools.wraps(meth)(lambda *args, **kwargs: meth(
lib/matplotlib/backends/backend_agg.py:496: in print_png
    self._print_pil(filename_or_obj, "png", pil_kwargs, metadata)
lib/matplotlib/backends/backend_agg.py:444: in _print_pil
    FigureCanvasAgg.draw(self)
lib/matplotlib/backends/backend_agg.py:387: in draw
    self.figure.draw(self.renderer)
lib/matplotlib/artist.py:95: in draw_wrapper
    result = draw(artist, renderer, *args, **kwargs)
lib/matplotlib/artist.py:72: in draw_wrapper
    return draw(artist, renderer)
lib/matplotlib/figure.py:3165: in draw
    mimage._draw_list_compositing_images(
lib/matplotlib/image.py:132: in _draw_list_compositing_images
    a.draw(renderer)
lib/matplotlib/artist.py:72: in draw_wrapper
    return draw(artist, renderer)
lib/mpl_toolkits/mplot3d/axes3d.py:469: in draw
    super().draw(renderer)
lib/matplotlib/artist.py:72: in draw_wrapper
    return draw(artist, renderer)
lib/matplotlib/axes/_base.py:3147: in draw
    mimage._draw_list_compositing_images(
lib/matplotlib/image.py:132: in _draw_list_compositing_images
    a.draw(renderer)
lib/matplotlib/artist.py:72: in draw_wrapper
    return draw(artist, renderer)
lib/mpl_toolkits/mplot3d/art3d.py:270: in draw
    xs, ys, zs, tis = proj3d.proj_transform_clip(xs3d, ys3d, zs3d, self.axes.M)
/home/scott/.vscode-server/extensions/ms-python.debugpy-2024.7.11591012/bundled/libs/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame.py:988: in trace_dispatch
    self.do_wait_suspend(thread, frame, event, arg)
/home/scott/.vscode-server/extensions/ms-python.debugpy-2024.7.11591012/bundled/libs/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame.py:165: in do_wait_suspend
    self._args[0].do_wait_suspend(*args, **kwargs)
/home/scott/.vscode-server/extensions/ms-python.debugpy-2024.7.11591012/bundled/libs/debugpy/_vendored/pydevd/pydevd.py:2070: in do_wait_suspend
    keep_suspended = self._do_wait_suspend(thread, frame, event, arg, suspend_type, from_this_thread, frames_tracker)
/home/scott/.vscode-server/extensions/ms-python.debugpy-2024.7.11591012/bundled/libs/debugpy/_vendored/pydevd/pydevd.py:2093: in _do_wait_suspend
    self._activate_gui_if_needed()
/home/scott/.vscode-server/extensions/ms-python.debugpy-2024.7.11591012/bundled/libs/debugpy/_vendored/pydevd/pydevd.py:1592: in _activate_gui_if_needed
    activate_function()
/home/scott/.vscode-server/extensions/ms-python.debugpy-2024.7.11591012/bundled/libs/debugpy/_vendored/pydevd/pydevd.py:1576: in <lambda>
    self.mpl_modules_for_patching = {"matplotlib": lambda: activate_matplotlib(do_enable_gui),
/home/scott/.vscode-server/extensions/ms-python.debugpy-2024.7.11591012/bundled/libs/debugpy/_vendored/pydevd/pydev_ipython/matplotlibtools.py:94: in activate_matplotlib
    is_interactive = is_interactive_backend(backend)
/home/scott/.vscode-server/extensions/ms-python.debugpy-2024.7.11591012/bundled/libs/debugpy/_vendored/pydevd/pydev_ipython/matplotlibtools.py:55: in is_interactive_backend
    from matplotlib.rcsetup import interactive_bk, non_interactive_bk  # @UnresolvedImport
lib/matplotlib/_api/__init__.py:216: in __getattr__
    return props[name].__get__(instance)
lib/matplotlib/_api/deprecation.py:161: in __get__
    emit_warning()
lib/matplotlib/_api/deprecation.py:196: in emit_warning
    warn_deprecated(
lib/matplotlib/_api/deprecation.py:99: in warn_deprecated
    warn_external(warning, category=MatplotlibDeprecationWarning)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

message = MatplotlibDeprecationWarning('The interactive_bk attribute was deprecated in Matplotlib 3.9 and will be removed in 3.11. Use ``matplotlib.backends.backend_registry.list_builtin(matplotlib.backends.BackendFilter.INTERACTIVE)`` instead.')
category = <class 'matplotlib._api.deprecation.MatplotlibDeprecationWarning'>

    def warn_external(message, category=None):
        """
        `warnings.warn` wrapper that sets *stacklevel* to "outside Matplotlib".
    
        The original emitter of the warning can be obtained by patching this
        function back to `warnings.warn`, i.e. ``_api.warn_external =
        warnings.warn`` (or ``functools.partial(warnings.warn, stacklevel=2)``,
        etc.).
        """
        frame = sys._getframe()
        for stacklevel in itertools.count(1):
            if frame is None:
                # when called in embedded context may hit frame is None
                break
            if not re.match(r"\A(matplotlib|mpl_toolkits)(\Z|\.(?!tests\.))",
                            # Work around sphinx-gallery not setting __name__.
                            frame.f_globals.get("__name__", "")):
                break
            frame = frame.f_back
        # preemptively break reference cycle between locals and the frame
        del frame
>       warnings.warn(message, category, stacklevel)
E       matplotlib._api.deprecation.MatplotlibDeprecationWarning: The interactive_bk attribute was deprecated in Matplotlib 3.9 and will be removed in 3.11. Use ``matplotlib.backends.backend_registry.list_builtin(matplotlib.backends.BackendFilter.INTERACTIVE)`` instead.

lib/matplotlib/_api/__init__.py:381: MatplotlibDeprecationWarning
=========================== short test summary info ============================
FAILED lib/mpl_toolkits/mplot3d/tests/test_axes3d.py::test_axes3d_isometric[png]
============================== 1 failed in 4.20s ===============================

Expected behavior

Steps to reproduce:

  1. Install matplotlib >= 3.9
  2. Run a single test in debug mode