From 056b86c135111bb9ed7061772546a844cff2a990 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sun, 23 Dec 2018 18:34:20 +0100 Subject: [PATCH] cairo backend: default to pycairo As seen in #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. --- .../2019-01-06-pycairo-default.rst | 5 +++++ lib/matplotlib/backends/backend_cairo.py | 19 ++++++++----------- 2 files changed, 13 insertions(+), 11 deletions(-) create mode 100644 doc/users/next_whats_new/2019-01-06-pycairo-default.rst diff --git a/doc/users/next_whats_new/2019-01-06-pycairo-default.rst b/doc/users/next_whats_new/2019-01-06-pycairo-default.rst new file mode 100644 index 000000000000..2d8143eb4dc9 --- /dev/null +++ b/doc/users/next_whats_new/2019-01-06-pycairo-default.rst @@ -0,0 +1,5 @@ +The cairo backend now defaults to pycairo instead of cairocffi +`````````````````````````````````````````````````````````````` + +This leads to faster import/runtime performance in some cases. The backend +will fall back to cairocffi in case pycairo isn't available. diff --git a/lib/matplotlib/backends/backend_cairo.py b/lib/matplotlib/backends/backend_cairo.py index b14b94e91b76..6f6edd142249 100644 --- a/lib/matplotlib/backends/backend_cairo.py +++ b/lib/matplotlib/backends/backend_cairo.py @@ -10,21 +10,18 @@ import numpy as np -# cairocffi is more widely compatible than pycairo so try it first. try: - import cairocffi as cairo + import cairo + if cairo.version_info < (1, 11, 0): + # Introduced create_for_data for Py3. + raise ImportError except ImportError: try: - import cairo + import cairocffi as cairo except ImportError: - raise ImportError("cairo backend requires that cairocffi or pycairo " - "is installed") - else: - if cairo.version_info < (1, 11, 0): - # Introduced create_for_data for Py3. - raise ImportError( - "cairo {} is installed; cairo>=1.11.0 is required" - .format(cairo.version)) + raise ImportError( + "cairo backend requires that pycairo>=1.11.0 or cairocffi" + "is installed") backend_version = cairo.version