Your message dated Wed, 5 Nov 2025 12:42:17 +0000
with message-id <[email protected]>
and subject line Re: Bug#1117897: pygobject FTBFS with Python 3.14:
TestReferences AssertionErrors
has caused the Debian Bug report #1117897,
regarding pygobject FTBFS with Python 3.14: TestReferences AssertionErrors
to be marked as done.
This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.
(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)
--
1117897: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1117897
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Source: pygobject
Version: 3.50.0-7
Severity: normal
Tags: ftbfs patch upstream
User: [email protected]
Usertags: python3.14
Forwarded: https://gitlab.gnome.org/GNOME/pygobject/-/merge_requests/433
Python 3.14 is upon us, and we would like to enable it as a supported
version in Debian.
pygobject fails to build with Python 3.14 as an available version.
Graham Inggs did a test rebuild in Ubuntu and found this build failure.
These can be reproduced in Debian by installing python3-all from
experimental (but you may need to rebuild some dependencies by hand,
first).
I think it has been fixed in a new upstream version, but that needs to
be checked. At least this MR looks like it should resolve the issue:
https://gitlab.gnome.org/GNOME/pygobject/-/merge_requests/433
Build log:
https://launchpadlibrarian.net/823264865/buildlog_ubuntu-questing-amd64.pygobject_3.50.0-7build1_BUILDING.txt.gz
Errors:
=================================== FAILURES ===================================
______________________ TestReferences.test_iteration_refs ______________________
self = <tests.test_generictreemodel.TestReferences
testMethod=test_iteration_refs>
def test_iteration_refs(self):
# Pull iterators off the model using the wrapped C API which will
# then call back into the python overrides.
model = ATesterModel()
nodes = [node for node in model.iter_depth_first()]
values = [node.value for node in nodes]
# Verify depth first ordering
self.assertEqual(values, [0, 1, 2, 3, 4])
# Verify ref counts for each of the nodes.
# 5 refs for each node at this point:
# 1 - ref held in getrefcount function
# 2 - ref held by "node" var during iteration
# 3 - ref held by local "nodes" var
# 4 - ref held by the root/children graph itself
# 5 - ref held by the model "held_refs" instance var
for node in nodes:
if hasattr(sys, "getrefcount"):
> self.assertEqual(sys.getrefcount(node), 5)
E AssertionError: 4 != 5
tests/test_generictreemodel.py:258: AssertionError
__________ TestPythonReferenceCounting.test_new_instance_has_two_refs __________
self = <tests.test_gobject.TestPythonReferenceCounting
testMethod=test_new_instance_has_two_refs>
def test_new_instance_has_two_refs(self):
obj = GObject.GObject()
if hasattr(sys, "getrefcount"):
> self.assertEqual(sys.getrefcount(obj), 2)
E AssertionError: 1 != 2
tests/test_gobject.py:317: AssertionError
_ TestPythonReferenceCounting.test_new_instance_has_two_refs_using_gobject_new _
self = <tests.test_gobject.TestPythonReferenceCounting
testMethod=test_new_instance_has_two_refs_using_gobject_new>
def test_new_instance_has_two_refs_using_gobject_new(self):
obj = GObject.new(GObject.GObject)
if hasattr(sys, "getrefcount"):
> self.assertEqual(sys.getrefcount(obj), 2)
E AssertionError: 1 != 2
tests/test_gobject.py:322: AssertionError
_____ TestPythonReferenceCounting.test_new_subclass_instance_has_two_refs ______
self = <tests.test_gobject.TestPythonReferenceCounting
testMethod=test_new_subclass_instance_has_two_refs>
def test_new_subclass_instance_has_two_refs(self):
obj = A()
if hasattr(sys, "getrefcount"):
> self.assertEqual(sys.getrefcount(obj), 2)
E AssertionError: 1 != 2
tests/test_gobject.py:327: AssertionError
_
TestPythonReferenceCounting.test_new_subclass_instance_has_two_refs_using_gobject_new
_
self = <tests.test_gobject.TestPythonReferenceCounting
testMethod=test_new_subclass_instance_has_two_refs_using_gobject_new>
def test_new_subclass_instance_has_two_refs_using_gobject_new(self):
obj = GObject.new(A)
if hasattr(sys, "getrefcount"):
> self.assertEqual(sys.getrefcount(obj), 2)
E AssertionError: 1 != 2
tests/test_gobject.py:332: AssertionError
____________ TestVFuncsWithObjectArg.test_vfunc_self_arg_ref_count _____________
self = <tests.test_object_marshaling.TestVFuncsWithObjectArg
testMethod=test_vfunc_self_arg_ref_count>
def test_vfunc_self_arg_ref_count(self):
# Check to make sure vfunc "self" arguments don't leak.
vfuncs = self.VFuncs()
vfuncs_ref = weakref.ref(vfuncs)
vfuncs.get_ref_info_for_vfunc_return_object_transfer_full() # Use any
vfunc to test this.
gc.collect()
if hasattr(sys, "getrefcount"):
> self.assertEqual(sys.getrefcount(vfuncs), 2)
E AssertionError: 1 != 2
tests/test_object_marshaling.py:112: AssertionError
_____________ TestCPropsAccessor.test_held_object_ref_count_setter _____________
self = <tests.test_properties.TestCPropsAccessor
testMethod=test_held_object_ref_count_setter>
def test_held_object_ref_count_setter(self):
holder = GIMarshallingTests.PropertiesObject()
held = GObject.Object()
self.assertEqual(holder.__grefcount__, 1)
self.assertEqual(held.__grefcount__, 1)
# Setting property should only increase ref count by 1
self.set_prop(holder, 'some-object', held)
self.assertEqual(holder.__grefcount__, 1)
> self.assertEqual(held.__grefcount__, 2)
E AssertionError: 3 != 2
tests/test_properties.py:1312: AssertionError
___________ TestRefCountsNonIntrospected.test_callback_ref_count_del ___________
self = <tests.test_signal.TestRefCountsNonIntrospected
testMethod=test_callback_ref_count_del>
@unittest.skipUnless(hasattr(sys, "getrefcount"), "no sys.getrefcount")
def test_callback_ref_count_del(self):
def callback(obj, value):
return value // 2
callback_ref = weakref.ref(callback)
> self.assertEqual(sys.getrefcount(callback), 2)
E AssertionError: 1 != 2
tests/test_signal.py:1418: AssertionError
_______ TestRefCountsNonIntrospected.test_callback_ref_count_disconnect ________
self = <tests.test_signal.TestRefCountsNonIntrospected
testMethod=test_callback_ref_count_disconnect>
@unittest.skipUnless(hasattr(sys, "getrefcount"), "no sys.getrefcount")
def test_callback_ref_count_disconnect(self):
def callback(obj, value):
return value // 2
callback_ref = weakref.ref(callback)
> self.assertEqual(sys.getrefcount(callback), 2)
E AssertionError: 1 != 2
tests/test_signal.py:1440: AssertionError
___ TestRefCountsNonIntrospected.test_callback_ref_count_disconnect_by_func ____
self = <tests.test_signal.TestRefCountsNonIntrospected
testMethod=test_callback_ref_count_disconnect_by_func>
@unittest.skipUnless(hasattr(sys, "getrefcount"), "no sys.getrefcount")
def test_callback_ref_count_disconnect_by_func(self):
def callback(obj, value):
return value // 2
callback_ref = weakref.ref(callback)
> self.assertEqual(sys.getrefcount(callback), 2)
E AssertionError: 1 != 2
tests/test_signal.py:1462: AssertionError
____________ TestRefCountsNonIntrospected.test_user_data_ref_count _____________
self = <tests.test_signal.TestRefCountsNonIntrospected
testMethod=test_user_data_ref_count>
@unittest.skipUnless(hasattr(sys, "getrefcount"), "no sys.getrefcount")
def test_user_data_ref_count(self):
def callback(obj, value, data):
return value // 2
data = self.PyData()
data_ref = weakref.ref(data)
> self.assertEqual(sys.getrefcount(data), 2)
E AssertionError: 1 != 2
tests/test_signal.py:1485: AssertionError
____________ TestRefCountsIntrospected.test_callback_ref_count_del _____________
self = <tests.test_signal.TestRefCountsIntrospected
testMethod=test_callback_ref_count_del>
@unittest.skipUnless(hasattr(sys, "getrefcount"), "no sys.getrefcount")
def test_callback_ref_count_del(self):
def callback(obj, value):
return value // 2
callback_ref = weakref.ref(callback)
> self.assertEqual(sys.getrefcount(callback), 2)
E AssertionError: 1 != 2
tests/test_signal.py:1418: AssertionError
_________ TestRefCountsIntrospected.test_callback_ref_count_disconnect _________
self = <tests.test_signal.TestRefCountsIntrospected
testMethod=test_callback_ref_count_disconnect>
@unittest.skipUnless(hasattr(sys, "getrefcount"), "no sys.getrefcount")
def test_callback_ref_count_disconnect(self):
def callback(obj, value):
return value // 2
callback_ref = weakref.ref(callback)
> self.assertEqual(sys.getrefcount(callback), 2)
E AssertionError: 1 != 2
tests/test_signal.py:1440: AssertionError
_____ TestRefCountsIntrospected.test_callback_ref_count_disconnect_by_func _____
self = <tests.test_signal.TestRefCountsIntrospected
testMethod=test_callback_ref_count_disconnect_by_func>
@unittest.skipUnless(hasattr(sys, "getrefcount"), "no sys.getrefcount")
def test_callback_ref_count_disconnect_by_func(self):
def callback(obj, value):
return value // 2
callback_ref = weakref.ref(callback)
> self.assertEqual(sys.getrefcount(callback), 2)
E AssertionError: 1 != 2
tests/test_signal.py:1462: AssertionError
______________ TestRefCountsIntrospected.test_user_data_ref_count ______________
self = <tests.test_signal.TestRefCountsIntrospected
testMethod=test_user_data_ref_count>
@unittest.skipUnless(hasattr(sys, "getrefcount"), "no sys.getrefcount")
def test_user_data_ref_count(self):
def callback(obj, value, data):
return value // 2
data = self.PyData()
data_ref = weakref.ref(data)
> self.assertEqual(sys.getrefcount(data), 2)
E AssertionError: 1 != 2
tests/test_signal.py:1485: AssertionError
--- End Message ---
--- Begin Message ---
Version: 3.54.3-1
On Sun, 12 Oct 2025 at 11:24:48 +0200, Stefano Rivera wrote:
pygobject fails to build with Python 3.14 as an available version.
I believe this is fixed in unstable now that we have started the pygobject
3.54 transition.
smcv
--- End Message ---