Message 394541 - Python tracker
So it seems like the weakref list (__weaklistoffset__) doesn't have to be handled by visit, clear or free functions, it only has to be deallocated with PyObject_ClearWeakRefs() in the dealloc function. I noticed that when reviewing partial_clear(partialobject *pto) in PR 26363.