From 31c88ce4a3b72759dd288300cd761ed171ba0a55 Mon Sep 17 00:00:00 2001 From: Jacob Coffee Date: Wed, 18 Feb 2026 17:57:52 -0600 Subject: [PATCH] fix: use dependency-groups for dev deps, guard debug_toolbar import Dev dependencies are defined under [dependency-groups] (PEP 735), not [project.optional-dependencies]. Use `pip install --group dev` instead of `pip install '.[dev]'` in CI and Dockerfile. Guard debug_toolbar imports in local.py and urls.py with scoped ModuleNotFoundError checks so missing transitive deps still surface. Co-Authored-By: Claude Opus 4.6 --- .github/workflows/ci.yml | 6 ++---- Dockerfile | 4 ++-- pydotorg/settings/local.py | 20 +++++++++++++------- pydotorg/urls.py | 5 +++-- 4 files changed, 20 insertions(+), 15 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 22baf1c2f..90d53ef00 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,7 +32,7 @@ jobs: restore-keys: ${{ runner.os }}-pip- - name: Install dependencies - run: pip install -e '.[dev]' + run: pip install --group dev -e . - name: Check for ungenerated migrations run: python manage.py makemigrations --check --dry-run @@ -82,9 +82,7 @@ jobs: restore-keys: ${{ runner.os }}-pip- - name: Install dependencies - run: | - pip install -U pip setuptools wheel - pip install -e '.[dev]' + run: pip install --group dev -e . - name: Run tests run: python -Wd -m coverage run manage.py test -v2 diff --git a/Dockerfile b/Dockerfile index 85bc6d902..925a7d1e5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -39,8 +39,8 @@ COPY pyproject.toml /code/ RUN --mount=type=cache,target=/root/.cache/pip \ set -x \ && pip --disable-pip-version-check \ - install \ - '.[dev]' + install --group dev \ + . COPY . /code/ diff --git a/pydotorg/settings/local.py b/pydotorg/settings/local.py index 95e5e8bfc..c853fcbad 100644 --- a/pydotorg/settings/local.py +++ b/pydotorg/settings/local.py @@ -25,13 +25,19 @@ EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend" -INSTALLED_APPS += [ - "debug_toolbar", -] - -MIDDLEWARE += [ - "debug_toolbar.middleware.DebugToolbarMiddleware", -] +try: + import debug_toolbar # noqa: F401 + + INSTALLED_APPS += [ + "debug_toolbar", + ] + + MIDDLEWARE += [ + "debug_toolbar.middleware.DebugToolbarMiddleware", + ] +except ModuleNotFoundError as exc: + if exc.name != "debug_toolbar": + raise CACHES = { "default": { diff --git a/pydotorg/urls.py b/pydotorg/urls.py index fd0ec3c25..3cb9f32ea 100644 --- a/pydotorg/urls.py +++ b/pydotorg/urls.py @@ -73,6 +73,7 @@ if settings.DEBUG: urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) - import debug_toolbar + if "debug_toolbar" in settings.INSTALLED_APPS: + import debug_toolbar - urlpatterns = [path("__debug__/", include(debug_toolbar.urls)), *urlpatterns] + urlpatterns = [path("__debug__/", include(debug_toolbar.urls)), *urlpatterns]