With Python 3.10 as default, Quod Libet 4.4.0 is completely broken for Ubuntu 22.04 users. It fails to start with the following error:
E: 0.321: errorreport.main.errorhook: collection.py:27:<module>: ImportError: cannot import name 'Iterable' from 'collections' (/usr/lib64/python3.10/collections/__init__.py)
Error in sys.excepthook:
Traceback (most recent call last):
File "/usr/lib/python3.10/site-packages/quodlibet/errorreport/main.py", line 175, in errorhook
sentry_error = sentry.capture(exc_info, fingerprint=fingerprint)
File "/usr/lib/python3.10/site-packages/quodlibet/errorreport/sentrywrapper.py", line 247, in capture
client = Client(
File "/usr/lib/python3.10/site-packages/quodlibet/packages/raven/base.py", line 224, in __init__
from raven.context import Context
File "/usr/lib/python3.10/site-packages/quodlibet/_import.py", line 47, in load_module
mod = importlib.import_module(loadname)
File "/usr/lib64/python3.10/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "/usr/lib/python3.10/site-packages/quodlibet/packages/raven/context.py", line 10, in <module>
from collections import Mapping, Iterable
ImportError: cannot import name 'Mapping' from 'collections' (/usr/lib64/python3.10/collections/__init__.py)
The issue is fixed in Quod Libet 4.5.0, which made it into Debian but not the Jammy release. It should therefore be automatically fixed once the Debian package is autosynced into development version 22.10.
[Test Plan]
* Install quodlibet into Ubuntu Jammy: sudo apt-get install quodlibet
* Try to launch it: quodlibet
* Observe the above stack trace.
* Build and install quodlibet package version 4.5.0-1 from Debian.
* Observe that the application correctly starts and runs.
I myself have tested quodlibet 4.5.0-1 on my machine after doing a no-change Jammy build with pbuilder.
[Where problems could occur]
Quod Libet is a GUI application and, as such, should not break any software that could depend on it as a command line application or a library.
The changelog between 4.4.0 and 4.5.0 consists of minor quality of life features and bugfixes, so it is unlikely that anything will be broken. I myself use Quod Libet as my primary music player, and so far 4.5.0-1 from Debian works correctly for me.
In the current Jammy archive, the following packages depend on quodlibet:
All of them list quodlibet in the Recommends or Suggests section, not Depends. fvwm-crystal specifically recommends several music player alternatives, not necessarily quodlibet. As the MPRIS functionality did not change in 4.5.0, it is unlikely that any applications using MPRIS to control Quod Libet would be affected.
An alternative to updating to stable release 4.5.0 would be cherry-picking the Python 3.10 incompatibility fix to version 4.4.0. If the SRU for 4.5.0 is denied, I will prepare a patched 4.4.0 package instead.
[Impact]
With Python 3.10 as default, Quod Libet 4.4.0 is completely broken for Ubuntu 22.04 users. It fails to start with the following error:
E: 0.321: errorreport. main.errorhook: collection. py:27:< module> : ImportError: cannot import name 'Iterable' from 'collections' (/usr/lib64/ python3. 10/collections/ __init_ _.py) python3. 10/site- packages/ quodlibet/ errorreport/ main.py" , line 175, in errorhook capture( exc_info, fingerprint= fingerprint) python3. 10/site- packages/ quodlibet/ errorreport/ sentrywrapper. py", line 247, in capture python3. 10/site- packages/ quodlibet/ packages/ raven/base. py", line 224, in __init__ python3. 10/site- packages/ quodlibet/ _import. py", line 47, in load_module import_ module( loadname) python3. 10/importlib/ __init_ _.py", line 126, in import_module _gcd_import( name[level: ], package, level) python3. 10/site- packages/ quodlibet/ packages/ raven/context. py", line 10, in <module> python3. 10/collections/ __init_ _.py)
Error in sys.excepthook:
Traceback (most recent call last):
File "/usr/lib/
sentry_error = sentry.
File "/usr/lib/
client = Client(
File "/usr/lib/
from raven.context import Context
File "/usr/lib/
mod = importlib.
File "/usr/lib64/
return _bootstrap.
File "/usr/lib/
from collections import Mapping, Iterable
ImportError: cannot import name 'Mapping' from 'collections' (/usr/lib64/
The issue is fixed in Quod Libet 4.5.0, which made it into Debian but not the Jammy release. It should therefore be automatically fixed once the Debian package is autosynced into development version 22.10.
[Test Plan]
* Install quodlibet into Ubuntu Jammy: sudo apt-get install quodlibet
* Try to launch it: quodlibet
* Observe the above stack trace.
* Build and install quodlibet package version 4.5.0-1 from Debian.
* Observe that the application correctly starts and runs.
I myself have tested quodlibet 4.5.0-1 on my machine after doing a no-change Jammy build with pbuilder.
[Where problems could occur]
Quod Libet is a GUI application and, as such, should not break any software that could depend on it as a command line application or a library.
The changelog between 4.4.0 and 4.5.0 consists of minor quality of life features and bugfixes, so it is unlikely that anything will be broken. I myself use Quod Libet as my primary music player, and so far 4.5.0-1 from Debian works correctly for me.
In the current Jammy archive, the following packages depend on quodlibet:
|cairo- dock-musicplaye r-plug- in
task-xfce-desktop
puddletag
playerctl
fvwm-crystal
All of them list quodlibet in the Recommends or Suggests section, not Depends. fvwm-crystal specifically recommends several music player alternatives, not necessarily quodlibet. As the MPRIS functionality did not change in 4.5.0, it is unlikely that any applications using MPRIS to control Quod Libet would be affected.
An alternative to updating to stable release 4.5.0 would be cherry-picking the Python 3.10 incompatibility fix to version 4.4.0. If the SRU for 4.5.0 is denied, I will prepare a patched 4.4.0 package instead.