https://github.com/gnome-terminator/terminator/pull/1092 From 22785efe3bbeb49b1de011d2fc9d14b5c1bed5e4 Mon Sep 17 00:00:00 2001 From: Anton Bolshakov Date: Wed, 3 Jun 2026 12:26:31 +0800 Subject: [PATCH] tests: fix accelerator_parse hash mismatch on Python 3.14 gi._gi.ResultTuple (returned by Gtk.accelerator_parse()) has __hash__ hardcoded to 0, while plain tuples use content-based hashing. This breaks set membership checks: (key, mods) in {ResultTuple(...)} fails even though equality holds, because Python set lookup uses hash first. Fix: wrap Gtk.accelerator_parse() calls with tuple() so both the set contents and the lookup key share the same hash implementation. Fixes: #1089 --- tests/test_prefseditor_keybindings.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_prefseditor_keybindings.py b/tests/test_prefseditor_keybindings.py index 56ee3b74..5f1079cc 100644 --- a/tests/test_prefseditor_keybindings.py +++ b/tests/test_prefseditor_keybindings.py @@ -56,7 +56,7 @@ def test_non_empty_default_keybinding_accels_are_distinct(): from terminatorlib import config all_default_accelerators = [ - Gtk.accelerator_parse(accel) + tuple(Gtk.accelerator_parse(accel)) for accel in config.DEFAULTS["keybindings"].values() if accel != "" # ignore empty key bindings ] @@ -156,7 +156,7 @@ def test_duplicate_accels_not_possible_to_set(accel_params): binding = liststore.get_value(liststore.get_iter(path), 0) all_default_accelerators = { - Gtk.accelerator_parse(accel) + tuple(Gtk.accelerator_parse(accel)) for accel in config.DEFAULTS["keybindings"].values() if accel != "" # ignore empty key bindings }