Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Simplify/improve check for pycairo in Gtk-based backends. #23347

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

Merged
merged 1 commit into from
Jun 25, 2022

Conversation

anntzer
Copy link
Contributor

@anntzer anntzer commented Jun 25, 2022

Gtk-based backends require pycairo (cairocffi is unsupported:
https://pygobject.readthedocs.io/en/latest/guide/cairo_integration.html).
Prior to this patch, trying to run gtk{3,4}{agg,cairo} fails at draw
time
TypeError: Couldn't find foreign struct converter for 'cairo.Context').

This patch moves the import check for cairo to the top of the common
_backend_gtk, and also simplifies backend_gtk{3,4}agg to always use
pycairo (in which case backend_cairo._to_context is a no-op) as they
cannot inter-operate with cairocffi anyways.

PR Summary

PR Checklist

Tests and Styling

  • Has pytest style unit tests (and pytest passes).
  • Is Flake 8 compliant (install flake8-docstrings and run flake8 --docstring-convention=all).

Documentation

  • New features are documented, with examples if plot related.
  • New features have an entry in doc/users/next_whats_new/ (follow instructions in README.rst there).
  • API changes documented in doc/api/next_api_changes/ (follow instructions in README.rst there).
  • Documentation is sphinx and numpydoc compliant (the docs should build without error).

Gtk-based backends require pycairo (cairocffi is unsupported:
https://pygobject.readthedocs.io/en/latest/guide/cairo_integration.html).
Prior to this patch, trying to run gtk{3,4}{agg,cairo} fails *at draw
time* `TypeError: Couldn't find foreign struct converter for 'cairo.Context'`).

This patch moves the import check for cairo to the top of the common
_backend_gtk, and also simplifies backend_gtk{3,4}agg to always use
pycairo (in which case backend_cairo._to_context is a no-op) as they
cannot inter-operate with cairocffi anyways.
@timhoffm timhoffm merged commit 3eadeac into matplotlib:main Jun 25, 2022
@anntzer anntzer deleted the gtkcairo branch June 25, 2022 23:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants