Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 939c311

Browse filesBrowse files
authored
Merge pull request #11519 from anntzer/backendloadfailure
API: Raise ImportError on failure to import backends.
2 parents 25b736a + 5a01cb8 commit 939c311
Copy full SHA for 939c311

File tree

Expand file treeCollapse file tree

3 files changed

+26
-12
lines changed
Filter options
Expand file treeCollapse file tree

3 files changed

+26
-12
lines changed
+6Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
Changes to backend loading
2+
``````````````````````````
3+
4+
Failure to load backend modules (``macosx`` on non-framework builds and
5+
``gtk3`` when running headless) now raises `ImportError` (instead of
6+
`RuntimeError` and `TypeError`, respectively.

‎lib/matplotlib/backends/backend_gtk3.py

Copy file name to clipboardExpand all lines: lib/matplotlib/backends/backend_gtk3.py
+11-6Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,18 @@
2323
# see http://groups.google.com/groups?q=screen+dpi+x11&hl=en&lr=&ie=UTF-8&oe=UTF-8&safe=off&selm=7077.26e81ad5%40swift.cs.tcd.ie&rnum=5 for some info about screen dpi
2424
PIXELS_PER_INCH = 96
2525

26-
cursord = {
27-
cursors.MOVE : Gdk.Cursor.new(Gdk.CursorType.FLEUR),
28-
cursors.HAND : Gdk.Cursor.new(Gdk.CursorType.HAND2),
29-
cursors.POINTER : Gdk.Cursor.new(Gdk.CursorType.LEFT_PTR),
30-
cursors.SELECT_REGION : Gdk.Cursor.new(Gdk.CursorType.TCROSS),
31-
cursors.WAIT : Gdk.Cursor.new(Gdk.CursorType.WATCH),
26+
try:
27+
cursord = {
28+
cursors.MOVE : Gdk.Cursor.new(Gdk.CursorType.FLEUR),
29+
cursors.HAND : Gdk.Cursor.new(Gdk.CursorType.HAND2),
30+
cursors.POINTER : Gdk.Cursor.new(Gdk.CursorType.LEFT_PTR),
31+
cursors.SELECT_REGION : Gdk.Cursor.new(Gdk.CursorType.TCROSS),
32+
cursors.WAIT : Gdk.Cursor.new(Gdk.CursorType.WATCH),
3233
}
34+
except TypeError as exc:
35+
# Happens when running headless. Convert to ImportError to cooperate with
36+
# backend switching.
37+
raise ImportError(exc)
3338

3439

3540
class TimerGTK3(TimerBase):

‎src/_macosx.m

Copy file name to clipboardExpand all lines: src/_macosx.m
+9-6Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3025,23 +3025,26 @@ static bool verify_framework(void)
30253025
&& GetCurrentProcess(&psn)==noErr
30263026
&& SetFrontProcess(&psn)==noErr) return true;
30273027
#endif
3028-
PyErr_SetString(PyExc_RuntimeError,
3028+
PyErr_SetString(PyExc_ImportError,
30293029
"Python is not installed as a framework. The Mac OS X backend will "
30303030
"not be able to function correctly if Python is not installed as a "
30313031
"framework. See the Python documentation for more information on "
30323032
"installing Python as a framework on Mac OS X. Please either reinstall "
30333033
"Python as a framework, or try one of the other backends. If you are "
3034-
"using (Ana)Conda please install python.app and replace the use of 'python' "
3035-
"with 'pythonw'. See 'Working with Matplotlib on OSX' "
3036-
"in the Matplotlib FAQ for more information.");
3034+
"using (Ana)Conda please install python.app and replace the use of "
3035+
"'python' with 'pythonw'. See 'Working with Matplotlib on OSX' in the "
3036+
"Matplotlib FAQ for more information.");
30373037
return false;
30383038
}
30393039

30403040
static struct PyMethodDef methods[] = {
30413041
{"show",
30423042
(PyCFunction)show,
30433043
METH_NOARGS,
3044-
"Show all the figures and enter the main loop.\nThis function does not return until all Matplotlib windows are closed,\nand is normally not needed in interactive sessions."
3044+
"Show all the figures and enter the main loop.\n"
3045+
"\n"
3046+
"This function does not return until all Matplotlib windows are closed,\n"
3047+
"and is normally not needed in interactive sessions."
30453048
},
30463049
{"choose_save_file",
30473050
(PyCFunction)choose_save_file,
@@ -3053,7 +3056,7 @@ static bool verify_framework(void)
30533056
METH_VARARGS,
30543057
"Sets the active cursor."
30553058
},
3056-
{NULL, NULL, 0, NULL}/* sentinel */
3059+
{NULL, NULL, 0, NULL} /* sentinel */
30573060
};
30583061

30593062
static struct PyModuleDef moduledef = {

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.