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

Sign up
Appearance settings

Commit 1fe7e5b

Browse files
committed
cairo backend: default to pycairo
As seen in matplotlib#13042 it's a bit faster than cairocffi and it also takes 50 ms less time to import here. Also the GTK3Cairo backend requires pycairo, so there is a good chance it's already loaded anyway for that case.
1 parent d1060a8 commit 1fe7e5b

File tree

2 files changed

+22
-19
lines changed

2 files changed

+22
-19
lines changed

‎.flake8‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ per-file-ignores =
3232
matplotlib/_mathtext_data.py: E203, E261
3333
matplotlib/backends/_backend_tk.py: E501
3434
matplotlib/backends/backend_agg.py: E302
35-
matplotlib/backends/backend_cairo.py: E203, E221, E402
35+
matplotlib/backends/backend_cairo.py: E203, E221
3636
matplotlib/backends/backend_gtk3.py: E203, E221, E222, E225, E251, E501
3737
matplotlib/backends/backend_pgf.py: E731
3838
matplotlib/backends/qt_editor/_formlayout.py: E501

‎lib/matplotlib/backends/backend_cairo.py‎

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,27 +8,10 @@
88

99
import copy
1010
import gzip
11+
import sys
1112

1213
import numpy as np
1314

14-
# cairocffi is more widely compatible than pycairo so try it first.
15-
try:
16-
import cairocffi as cairo
17-
except ImportError:
18-
try:
19-
import cairo
20-
except ImportError:
21-
raise ImportError("cairo backend requires that cairocffi or pycairo "
22-
"is installed")
23-
else:
24-
if cairo.version_info < (1, 11, 0):
25-
# Introduced create_for_data for Py3.
26-
raise ImportError(
27-
"cairo {} is installed; cairo>=1.11.0 is required"
28-
.format(cairo.version))
29-
30-
backend_version = cairo.version
31-
3215
from .. import cbook
3316
from matplotlib.backend_bases import (
3417
_Backend, FigureCanvasBase, FigureManagerBase, GraphicsContextBase,
@@ -39,6 +22,26 @@
3922
from matplotlib.transforms import Affine2D
4023

4124

25+
def import_cairo():
26+
try:
27+
import cairo
28+
if cairo.version_info < (1, 11, 0):
29+
raise ImportError
30+
except ImportError:
31+
try:
32+
import cairocffi as cairo
33+
except ImportError:
34+
raise ImportError(
35+
"cairo backend requires that pycairo>=1.11.0 or cairocffi"
36+
"is installed")
37+
38+
return cairo
39+
40+
41+
cairo = import_cairo()
42+
backend_version = cairo.version
43+
44+
4245
if cairo.__name__ == "cairocffi":
4346
# Convert a pycairo context to a cairocffi one.
4447
def _to_context(ctx):

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /