user_data is obviously meant for the programmer to put arbitrary data in for later use. At runtime it may be any type. However, user_data is typed as None throughout these stubs.
Here is an example:
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
it = Gtk.TreeIter()
it.user_data = 0
This is what mypy says:
$ mypy repr.py
repr.py:8: error: Incompatible types in assignment (expression has type "int", variable has type "None") [assignment]
Found 1 error in 1 file (checked 1 source file)
It seems that there is no distinction between void and void* at introspection level, but I think we can avoid to use None where it makes no sense and use Any instead. I will work on this
user_data is obviously meant for the programmer to put arbitrary data in for later use. At runtime it may be any type. However, user_data is typed as None throughout these stubs.
Here is an example:
This is what mypy says:
Here is the definition of TreeIter in _Gtk3.pyi: