#1109833 cannot import SafeConfigParser

#1109833#5
Date:
2025-07-24 16:02:31 UTC
From:
To:
Hi

Trying to start voctogui results in a traceback:

| $ voctogui
| /usr/bin/voctogui:30: PyGIDeprecationWarning: Since version 3.11, calling threads_init is no longer needed. See: https://wiki.gnome.org/PyGObject/Threading
|   GObject.threads_init()
| Traceback (most recent call last):
|   File "/usr/bin/voctogui", line 204, in <module>
|     main()
|     ~~~~^^
|   File "/usr/bin/voctogui", line 151, in main
|     from lib import config
|   File "/usr/share/voctomix/voctogui/lib/config.py", line 3, in <module>
|     from configparser import SafeConfigParser
| ImportError: cannot import name 'SafeConfigParser' from 'configparser' (/usr/lib/python3.13/configparser.py). Did you mean: 'RawConfigParser'?

and if I change SafeConfigParser to ConfigParser (quick workaround,
dunno if that's the right fix), I get:

| /usr/bin/voctogui:30: PyGIDeprecationWarning: Since version 3.11, calling threads_init is no longer needed. See: https://wiki.gnome.org/PyGObject/Threading
|   GObject.threads_init()
| Traceback (most recent call last):
|   File "/usr/bin/voctogui", line 204, in <module>
|     main()
|     ~~~~^^
|   File "/usr/bin/voctogui", line 158, in main
|     Connection.establish(
|     ~~~~~~~~~~~~~~~~~~~~^
|         Args.host if Args.host else Config.get('server', 'host')
|         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|     )
|     ^
|   File "/usr/share/voctomix/voctogui/lib/connection.py", line 19, in establish
|     conn = socket.create_connection((host, port))
|   File "/usr/lib/python3.13/socket.py", line 864, in create_connection
|     raise exceptions[0]
|   File "/usr/lib/python3.13/socket.py", line 849, in create_connection
|     sock.connect(sa)
|     ~~~~~~~~~~~~^^^^
| ConnectionRefusedError: [Errno 111] Connection refused

I guessed it needs some kind of server (more meaningful error message
would be nice) and started `voctocore` (after I made similar change in
/usr/share/voctomix/voctocore/lib/config.py)

but then I get:

| /usr/bin/voctogui:30: PyGIDeprecationWarning: Since version 3.11, calling threads_init is no longer needed. See: https://wiki.gnome.org/PyGObject/Threading
|   GObject.threads_init()
| Traceback (most recent call last):
|   File "/usr/bin/voctogui", line 204, in <module>
|     main()
|     ~~~~^^
|   File "/usr/bin/voctogui", line 195, in main
|     voctogui = Voctogui()
|   File "/usr/bin/voctogui", line 102, in __init__
|     self.ui.setup()
|     ~~~~~~~~~~~~~^^
|   File "/usr/share/voctomix/voctogui/lib/ui.py", line 66, in setup
|     self.main_video_display = VideoDisplay(
|                               ~~~~~~~~~~~~^
|         drawing_area,
|         ^^^^^^^^^^^^^
|     ...<2 lines>...
|         level_callback=self.audio_level_display.level_callback
|         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|     )
|     ^
|   File "/usr/share/voctomix/voctogui/lib/videodisplay.py", line 151, in __init__
|     self.xid = self.drawing_area.get_property('window').get_xid()
|                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| AttributeError: 'GdkWaylandWindow' object has no attribute 'get_xid'. Did you mean: 'get_width'?