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

interactive plot window not showing under wayland in debug mode for matplotlib=3.9 #1633

Open
suxpert opened this issue Jul 22, 2024 · 5 comments
Assignees

Comments

@suxpert
Copy link

suxpert commented Jul 22, 2024

Environment data

  • debugpy version: 1.8.2
  • OS and version: OpenSUSE Tumbleweed (20240716), KDE Plasma 6 under wayland.
  • Python version (& distribution if applicable, e.g. Anaconda): python 3.11.9 from conda-forge (mamba)
  • Using VS Code or Visual Studio:
    VS Code with Python Debugger v2024.8.0

Actual behavior

Try debugging the following code:

import matplotlib.pyplot as plt

plt.plot([1,2,3,3])
plt.show()
pass

If the break point is at pass, where Debugger skipped entering the interactive mode, the figure is shown normally.
But if there are break points earlier, e.g., add a break point at plt.plot..., then debug and go though until we stop at pass,
the figure won't be shown, with a wayland icon/window showing in the taskbar, but an invisible figure window.

Turing on interactive mode manually makes the plot invisible too (set break point at pass and debug):

import matplotlib.pyplot as plt

plt.ion()
plt.plot([1,2,3,3])
plt.show()
pass

Expected behavior

We expect the interactive plot window be shown as a normal window and response to resize/maximize etc.

Steps to reproduce:

  1. Create an environment with matplotlib=3.9: mamba create -n 'test' matplotlib=3.9 qt-wayland
  2. Enabling wayland support via setting QT_QPA_PLATFORM=wayland;xcb in /etc/environment or launch.json
  3. launch VS code and try debugging the previous code snippets
  4. You may see the behavior described earlier, with visible figure window when interactive mode is off, or misbehavior when interactive mode is on.

Additional information:

  1. If we down-grade matplotlib to 3.8, this issue do not exist. (see Can't create plot from the debug console #1606)
  2. Might be the same issue as Failed test due to matplotlib deprecation of interactive_bk #1623, don't know if is related to Unable to interactively see matplotlib plots with QtAgg backend #858 et al.,
  3. Don't know if this is wayland specific, or also affect X11 (not tested). But note that under wayland, there exists a warning: qt.qpa.wayland: Wayland does not support QWindow::requestActivate() when plt.show().
@rchiodo
Copy link
Contributor

rchiodo commented Jul 22, 2024

There's specific code in pydevd (the base of debugpy) that likely is out of date with matplotlib: https://github.com/fabioz/PyDev.Debugger/blob/54f8db469c2d8c31635db7cc59a10bc8dab76057/pydevd.py#L695

@jcjaskula-aws
Copy link

jcjaskula-aws commented Sep 15, 2024

Proposed this fix: fabioz/PyDev.Debugger#289. Curious to know if it solves most of the issues listed here.

@mariuswallraff
Copy link

Thank you for the proposed fix, sadly it did not help for me. I could not notice any differences (and I verified that I modified the correct file; raising a ValueError led to the expected result).

@planted-jason-hoving
Copy link

same issue here. any updated guidance on how to fix?

I am using python 3.12.1 with up-to-date VS Code for windows, and updated to the latest debugpy 1.8.11

@rchiodo
Copy link
Contributor

rchiodo commented Dec 20, 2024

There's likely a need to update the matplotlib code that pydevd has. This code here:

https://github.com/fabioz/PyDev.Debugger/blob/d0f81de46ec51687ac24ae9598eb2615010a4b44/pydev_ipython/matplotlibtools.py#L93

@rchiodo rchiodo self-assigned this Dec 20, 2024
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

No branches or pull requests

5 participants