Skip to content

Version v82 of setuptools incompatible with other current dependency versions #5697

@bjester

Description

@bjester

This issue is not open for contribution. Visit Contributing guidelines to learn about the contributing process and how to find suitable issues.

Observed behavior

I've been using uv venv --seed to create virtualenvs. The --seed parameter adds in pip and setuptools, but usually the most recent versions. This is somewhat needed because studio uses pip explicitly, but moreso because the dependency on setuptools is implicit. This uncovered a dependency conflict with a package that isn't compatible with it.

Errors and logs

Unable to load celery application.
While trying to load the module contentcuration the following error occurred:
Traceback (most recent call last):
  File "/home/bjester/Projects/learningequality/studio/issue-5691-941b2f/.venv/lib/python3.10/site-packages/celery/bin/celery.py", line 141, in celery
    app = find_app(app)
  File "/home/bjester/Projects/learningequality/studio/issue-5691-941b2f/.venv/lib/python3.10/site-packages/celery/app/utils.py", line 383, in find_app
    sym = symbol_by_name(app, imp=imp)
  File "/home/bjester/Projects/learningequality/studio/issue-5691-941b2f/.venv/lib/python3.10/site-packages/kombu/utils/imports.py", line 59, in symbol_by_name
    module = imp(module_name, package=package, **kwargs)
  File "/home/bjester/Projects/learningequality/studio/issue-5691-941b2f/.venv/lib/python3.10/site-packages/celery/utils/imports.py", line 109, in import_from_cwd
    return imp(module, package=package)
  File "/home/bjester/.local/share/uv/python/cpython-3.10.19-linux-x86_64-gnu/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/home/bjester/Projects/learningequality/studio/issue-5691-941b2f/contentcuration/contentcuration/__init__.py", line 3, in <module>
    from .celery import app as celery_app  # noqa
  File "/home/bjester/Projects/learningequality/studio/issue-5691-941b2f/contentcuration/contentcuration/celery.py", line 14, in <module>
    app.config_from_object(settings.CELERY)
  File "/home/bjester/Projects/learningequality/studio/issue-5691-941b2f/.venv/lib/python3.10/site-packages/django/conf/__init__.py", line 82, in __getattr__
    self._setup(name)
  File "/home/bjester/Projects/learningequality/studio/issue-5691-941b2f/.venv/lib/python3.10/site-packages/django/conf/__init__.py", line 69, in _setup
    self._wrapped = Settings(settings_module)
  File "/home/bjester/Projects/learningequality/studio/issue-5691-941b2f/.venv/lib/python3.10/site-packages/django/conf/__init__.py", line 170, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "/home/bjester/.local/share/uv/python/cpython-3.10.19-linux-x86_64-gnu/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "/home/bjester/Projects/learningequality/studio/issue-5691-941b2f/contentcuration/contentcuration/dev_settings.py", line 2, in <module>
    from .not_production_settings import *  # noqa
  File "/home/bjester/Projects/learningequality/studio/issue-5691-941b2f/contentcuration/contentcuration/not_production_settings.py", line 1, in <module>
    from .settings import *  # noqa
  File "/home/bjester/Projects/learningequality/studio/issue-5691-941b2f/contentcuration/contentcuration/settings.py", line 22, in <module>
    from contentcuration.utils.secretmanagement import get_secret
  File "/home/bjester/Projects/learningequality/studio/issue-5691-941b2f/contentcuration/contentcuration/utils/secretmanagement.py", line 6, in <module>
    from google.cloud import kms
  File "/home/bjester/Projects/learningequality/studio/issue-5691-941b2f/.venv/lib/python3.10/site-packages/google/cloud/kms/__init__.py", line 17, in <module>
    from google.cloud.kms_v1.services.key_management_service.client import (
  File "/home/bjester/Projects/learningequality/studio/issue-5691-941b2f/.venv/lib/python3.10/site-packages/google/cloud/kms_v1/__init__.py", line 17, in <module>
    from .services.key_management_service import KeyManagementServiceClient
  File "/home/bjester/Projects/learningequality/studio/issue-5691-941b2f/.venv/lib/python3.10/site-packages/google/cloud/kms_v1/services/key_management_service/__init__.py", line 16, in <module>
    from .client import KeyManagementServiceClient
  File "/home/bjester/Projects/learningequality/studio/issue-5691-941b2f/.venv/lib/python3.10/site-packages/google/cloud/kms_v1/services/key_management_service/client.py", line 21, in <module>
    import pkg_resources
ModuleNotFoundError: No module named 'pkg_resources'

Expected behavior

We should add an explicit dependency on setuptools so we can ensure compatibility across all packages.

User-facing consequences

Developers may encounter this and not understand what's wrong. The current approach makes developer setup brittle towards dependency changes.

Steps to reproduce

  1. Run uv venv --seed to create virtualenv
  2. Install all packages
  3. Attempt to run the celery workers make devceleryworkers

Context

Observed testing: #5695

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions