khal
khal copied to clipboard
Unconditional importlib_metadata dependency required for Python 3.8
Describe the bug After upgrading khal from 0.11.3 to 0.11.4, it throws ModuleNotFoundError: No module named 'importlib_metadata' on every invocation.
Turns out the dependency is only declared for the test extra, but it's actually required on normal use already (though plugins.py → _compat.py).
/opt/pipx/venvs/khal/lib/python3.8/site-packages/khal-0.11.4.dist-info/METADATA
Requires-Dist: importlib-metadata; python_version
If applicable: Stack Trace
$ khal
Traceback (most recent call last):
File "/usr/local/bin/khal", line 5, in <module>
from khal.cli import main_khal
File "/opt/pipx/venvs/khal/lib/python3.8/site-packages/khal/cli.py", line 33, in <module>
from . import controllers, plugins
File "/opt/pipx/venvs/khal/lib/python3.8/site-packages/khal/controllers.py", line 35, in <module>
from khal import __productname__, __version__, calendar_display, parse_datetime
File "/opt/pipx/venvs/khal/lib/python3.8/site-packages/khal/calendar_display.py", line 29, in <module>
from .khalendar import CalendarCollection
File "/opt/pipx/venvs/khal/lib/python3.8/site-packages/khal/khalendar/__init__.py", line 22, in <module>
from .khalendar import CalendarCollection # noqa: F401 # type: ignore
File "/opt/pipx/venvs/khal/lib/python3.8/site-packages/khal/khalendar/khalendar.py", line 38, in <module>
from .event import Event
File "/opt/pipx/venvs/khal/lib/python3.8/site-packages/khal/khalendar/event.py", line 41, in <module>
from ..plugins import FORMATTERS
File "/opt/pipx/venvs/khal/lib/python3.8/site-packages/khal/plugins.py", line 3, in <module>
from khal._compat import importlib_metadata
File "/opt/pipx/venvs/khal/lib/python3.8/site-packages/khal/_compat.py", line 8, in <module>
import importlib_metadata
ModuleNotFoundError: No module named 'importlib_metadata'
To Reproduce
Invoke khal.
Expected behavior No errors.
OS, version, khal version and how you installed it:
- The output of khal --version: khal, version 0.11.4
- Installation method: pipx
- python version: Python 3.8.10
- OS: Ubuntu 20.04.6 LTS
Workaround
Install the dependency manually: pipx inject --global khal importlib-metadata
I believe we recently dropped support for Python 3.8, and it is also not longer supported upstream.
Yeah, but Python 3.8 was still supported for 0.11.x (BTW dropping Python 3.8 is fine with me; I just encountered that on my only remaining legacy system):
Requires-Python: <3.14,>=3.8
The requirement has been adapted for 0.12.0 and 0.13.0 (that's why I only got 0.11.4 offered).
It's probably not worth it to release a fixed 0.11.5, so feel free to close this; at least the error is documented now and people will find the workaround. Thanks for the useful tool!