aports/community/py3-matplotlib/gi_require_version.patch
2025-11-20 19:38:17 +01:00

60 lines
2.2 KiB
Diff

From b843483d308ce1f8bb94e1449bdb2b77da9a327c Mon Sep 17 00:00:00 2001
From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
Date: Tue, 21 Oct 2025 03:55:51 -0400
Subject: [PATCH] Backport PR #30657: Fix `AttributeError: module 'gi' has no
attribute 'require_version'`
---
lib/matplotlib/backends/backend_gtk3.py | 4 ++--
lib/matplotlib/backends/backend_gtk4.py | 5 +++--
2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/lib/matplotlib/backends/backend_gtk3.py b/lib/matplotlib/backends/backend_gtk3.py
index 888f5a770f5d..c27b57e36a0a 100644
--- a/lib/matplotlib/backends/backend_gtk3.py
+++ b/lib/matplotlib/backends/backend_gtk3.py
@@ -10,14 +10,14 @@
CloseEvent, KeyEvent, LocationEvent, MouseEvent, ResizeEvent)
try:
- import gi
+ from gi import require_version as gi_require_version
except ImportError as err:
raise ImportError("The GTK3 backends require PyGObject") from err
try:
# :raises ValueError: If module/version is already loaded, already
# required, or unavailable.
- gi.require_version("Gtk", "3.0")
+ gi_require_version("Gtk", "3.0")
except ValueError as e:
# in this case we want to re-raise as ImportError so the
# auto-backend selection logic correctly skips.
diff --git a/lib/matplotlib/backends/backend_gtk4.py b/lib/matplotlib/backends/backend_gtk4.py
index cd38968779ed..e3d3548c1cd1 100644
--- a/lib/matplotlib/backends/backend_gtk4.py
+++ b/lib/matplotlib/backends/backend_gtk4.py
@@ -9,19 +9,20 @@
KeyEvent, LocationEvent, MouseEvent, ResizeEvent, CloseEvent)
try:
- import gi
+ from gi import require_version as gi_require_version
except ImportError as err:
raise ImportError("The GTK4 backends require PyGObject") from err
try:
# :raises ValueError: If module/version is already loaded, already
# required, or unavailable.
- gi.require_version("Gtk", "4.0")
+ gi_require_version("Gtk", "4.0")
except ValueError as e:
# in this case we want to re-raise as ImportError so the
# auto-backend selection logic correctly skips.
raise ImportError(e) from e
+import gi
from gi.repository import Gio, GLib, Gtk, Gdk, GdkPixbuf
from . import _backend_gtk
from ._backend_gtk import ( # noqa: F401 # pylint: disable=W0611