# HG changeset patch # User Mads Kiilerich # Date 1670946369 -3600 # Node ID 11cae16e5a5d142e05024d6743452bae86407cba # Parent 2f0f6f80c2131552bdc124bf3844ccd1c6cbf68b setup: use old importlib_metadata version to fix kombu failing on python < 3.8 Many libraries use the importlib_metadata library as fallback when running on Python versions older than 3.8 . For example setuptools when easy_install is used for install the Kallithea console_scripts entrypoints in the bin folder. The dependencies on importlib_metadata were indirect and without constrains on version number. The problem is that Celery uses Kombu, which (on Python < 3.8) uses importlib_metadata in a way that is incompatible with importlib_metadata > 5. Most obvious, building docs failed as: Running Sphinx v5.1.1 Configuration error: There is a programmable error in your configuration file: Traceback (most recent call last): File ".../kallithea/venv/lib64/python3.7/site-packages/sphinx/config.py", line 347, in eval_config_file exec(code, namespace) File ".../kallithea/docs/conf.py", line 17, in import kallithea File ".../kallithea/kallithea/__init__.py", line 45, in CELERY_APP = celery.Celery() # needed at import time but is lazy and can be configured later File ".../kallithea/venv/lib64/python3.7/site-packages/celery/local.py", line 492, in __getattr__ [name]) File ".../kallithea/venv/lib64/python3.7/site-packages/celery/app/__init__.py", line 2, in from celery import _state File ".../kallithea/venv/lib64/python3.7/site-packages/celery/_state.py", line 15, in from celery.utils.threads import LocalStack File ".../kallithea/venv/lib64/python3.7/site-packages/celery/utils/__init__.py", line 16, in from .nodenames import nodename, nodesplit, worker_direct File ".../kallithea/venv/lib64/python3.7/site-packages/celery/utils/nodenames.py", line 6, in from kombu.entity import Exchange, Queue File ".../kallithea/venv/lib64/python3.7/site-packages/kombu/entity.py", line 7, in from .serialization import prepare_accept_content File ".../kallithea/venv/lib64/python3.7/site-packages/kombu/serialization.py", line 440, in for ep, args in entrypoints('kombu.serializers'): # pragma: no cover File ".../kallithea/venv/lib64/python3.7/site-packages/kombu/utils/compat.py", line 82, in entrypoints for ep in importlib_metadata.entry_points().get(namespace, []) AttributeError: 'EntryPoints' object has no attribute 'get' That made readthedocs builds fail, when it in the default web configuration used Python 3.7 . Fixed by introducing an explicit dependency on importlib_metadata < 5. diff -r 2f0f6f80c213 -r 11cae16e5a5d setup.py --- a/setup.py Mon Dec 12 18:28:10 2022 +0100 +++ b/setup.py Tue Dec 13 16:46:09 2022 +0100 @@ -75,6 +75,8 @@ "pip >= 20.0, < 999", "chardet >= 3", ] +if sys.version_info < (3, 8): + requirements.append("importlib-metadata < 5") dependency_links = [ ]