khal icon indicating copy to clipboard operation
khal copied to clipboard

Unconditional importlib_metadata dependency required for Python 3.8

Open inkarkat opened this issue 6 months ago • 2 comments
trafficstars

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

inkarkat avatar May 15 '25 10:05 inkarkat

I believe we recently dropped support for Python 3.8, and it is also not longer supported upstream.

WhyNotHugo avatar May 15 '25 10:05 WhyNotHugo

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!

inkarkat avatar May 15 '25 11:05 inkarkat