| 49 | |
| 50 | # Constraints placed on an imported matplotlib |
| 51 | def matplotlib_options(mpl): |
| 52 | if mpl is None: |
| 53 | return |
| 54 | |
| 55 | # #PyDev-779: In pysrc/pydev_ipython/qt_for_kernel.py, matplotlib_options should be replaced with latest from ipython |
| 56 | # (i.e.: properly check backend to decide upon qt4/qt5). |
| 57 | |
| 58 | backend = mpl.rcParams.get("backend", None) |
| 59 | if backend == "Qt4Agg": |
| 60 | mpqt = mpl.rcParams.get("backend.qt4", None) |
| 61 | if mpqt is None: |
| 62 | return None |
| 63 | if mpqt.lower() == "pyside": |
| 64 | return [QT_API_PYSIDE] |
| 65 | elif mpqt.lower() == "pyqt4": |
| 66 | return [QT_API_PYQT_DEFAULT] |
| 67 | elif mpqt.lower() == "pyqt4v2": |
| 68 | return [QT_API_PYQT] |
| 69 | raise ImportError("unhandled value for backend.qt4 from matplotlib: %r" % mpqt) |
| 70 | |
| 71 | elif backend == "Qt5Agg": |
| 72 | mpqt = mpl.rcParams.get("backend.qt5", None) |
| 73 | if mpqt is None: |
| 74 | return None |
| 75 | if mpqt.lower() == "pyqt5": |
| 76 | return [QT_API_PYQT5] |
| 77 | raise ImportError("unhandled value for backend.qt5 from matplotlib: %r" % mpqt) |
| 78 | |
| 79 | elif backend == "Qt6Agg": |
| 80 | mpqt = mpl.rcParams.get("backend.qt6", None) |
| 81 | if mpqt is None: |
| 82 | return None |
| 83 | if mpqt.lower() == "pyqt6": |
| 84 | return [QT_API_PYQT6] |
| 85 | raise ImportError("unhandled value for backend.qt6 from matplotlib: %r" % mpqt) |
| 86 | |
| 87 | # Fallback without checking backend (previous code) |
| 88 | mpqt = mpl.rcParams.get("backend.qt4", None) |
| 89 | if mpqt is None: |
| 90 | mpqt = mpl.rcParams.get("backend.qt5", None) |
| 91 | if mpqt is None: |
| 92 | mpqt = mpl.rcParams.get("backend.qt6", None) |
| 93 | |
| 94 | if mpqt is None: |
| 95 | return None |
| 96 | if mpqt.lower() == "pyside": |
| 97 | return [QT_API_PYSIDE] |
| 98 | elif mpqt.lower() == "pyqt4": |
| 99 | return [QT_API_PYQT_DEFAULT] |
| 100 | elif mpqt.lower() == "pyqt5": |
| 101 | return [QT_API_PYQT5] |
| 102 | elif mpqt.lower() == "pyqt6": |
| 103 | return [QT_API_PYQT6] |
| 104 | raise ImportError("unhandled value for qt backend from matplotlib: %r" % mpqt) |
| 105 | |
| 106 | |
| 107 | def get_options(): |