Upgrade the locked dependencies, adapting to allauth 65.21 and cotton 2.8 #1221

Merged
tiagoagueda merged 5 commits from deps-2026-11 into main 2026-11-06 04:18:52 +00:00
Owner

This month's uv lock --upgrade, which the scheduled job (run 1856) could not propose because its check failed. It moves 52 packages and adapts Postulo to the two that broke.

The fixes

  • django-allauth 65.20 → 65.21
    • Rate-limit calls: ratelimit.consume()/clear() require app=. The sign-in counts (#744) pass "allauth.account", so they share keys with allauth's own.
    • Authentication records: they are now per account and read as empty without a user. accounts/stages.py (single sign-on as a second factor) and accounts/reauth.py (recent sign-in, #741) now ask for the person signing in. Without this, both would have silently seen no sign-in.
    • Tests: the helpers write the records with their owner, through one write_records() in tests/recently.py. A new test checks that one account's records say nothing about another.
  • django-cotton 2.7 → 2.8: context isolation is now COTTON_ISOLATE_BY_DEFAULT and no longer reruns the context processors per component. test_components.py pins that. Isolation stays off.

Ruff's pre-commit rev follows the lock (v0.17.4), as the job does. Majors that moved without breaking anything: python-dateutil 2.9 → 4.0 (not used directly), pyee 13 → 14 (Playwright's), python-slugify 8 → 9.

Checked locally

The job's own quick check: ruff, format, makemigrations --check, catalogues compile, and the whole suite on Python 3.14. The previously failing files all pass. The one other failure in the parallel run, test_slow_work's report draft, passes alone on this branch and on main, so it is a parallel-order flake.

Closes #1220

🤖 Generated with Claude Code

This month's `uv lock --upgrade`, which the scheduled job (run 1856) could not propose because its check failed. It moves 52 packages and adapts Postulo to the two that broke. ## The fixes - **django-allauth 65.20 → 65.21** - **Rate-limit calls:** `ratelimit.consume()`/`clear()` require `app=`. The sign-in counts (#744) pass `"allauth.account"`, so they share keys with allauth's own. - **Authentication records:** they are now per account and read as empty without a user. `accounts/stages.py` (single sign-on as a second factor) and `accounts/reauth.py` (recent sign-in, #741) now ask for the person signing in. Without this, both would have silently seen no sign-in. - **Tests:** the helpers write the records with their owner, through one `write_records()` in `tests/recently.py`. A new test checks that one account's records say nothing about another. - **django-cotton 2.7 → 2.8:** context isolation is now `COTTON_ISOLATE_BY_DEFAULT` and no longer reruns the context processors per component. `test_components.py` pins that. Isolation stays off. Ruff's pre-commit `rev` follows the lock (v0.17.4), as the job does. Majors that moved without breaking anything: python-dateutil 2.9 → 4.0 (not used directly), pyee 13 → 14 (Playwright's), python-slugify 8 → 9. ## Checked locally The job's own quick check: ruff, format, `makemigrations --check`, catalogues compile, and the whole suite on Python 3.14. The previously failing files all pass. The one other failure in the parallel run, `test_slow_work`'s report draft, passes alone on this branch and on `main`, so it is a parallel-order flake. Closes #1220 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Upgrade the locked dependencies, adapting to allauth 65.21 and cotton 2.8
Some checks failed
CI / Browser tests (Chromium) (pull_request) Failing after 10m3s
CI / Checks: lint, migrations, catalogues, settings, built files (pull_request) Successful in 4m1s
CI / Database tests on PostgreSQL (pull_request) Successful in 8m48s
CI / Security audit (pull_request) Successful in 3m48s
CI / Unit tests and coverage (Python 3.14) (pull_request) Successful in 24m53s
006bcc732b
The monthly upgrade (run 1856) stopped on 87 failures and 10 errors:

- allauth's internal ratelimit consume()/clear() now require app=. The
  sign-in counts in accounts/adapter.py pass "allauth.account", the app
  allauth's own sign-in counts under, so both share keys.
- allauth's authentication records now belong to one account, and read
  without a user they are empty. accounts/stages.py and accounts/reauth.py
  ask for the person signing in, as allauth's own stage does; without that
  the SSO-as-second-factor rule and the recent-sign-in check would have
  seen no sign-in at all.
- The test helpers write the records the way allauth now reads them,
  through one write_records() in tests/recently.py, and a test says that
  one account's records say nothing about another.
- cotton 2.8 renamed context isolation to COTTON_ISOLATE_BY_DEFAULT and no
  longer reruns the context processors per component; test_components.py
  pins the new cost. Isolation stays off.

Ruff's pre-commit pin follows the lock, as the job does. The job's quick
check (ruff, migrations, catalogues, the whole suite on 3.14) passes.

Closes #1220

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Give the browser suite its own base_url fixture
Some checks failed
CI / Unit tests and coverage (Python 3.14) (pull_request) Successful in 30m7s
CI / Checks: lint, migrations, catalogues, settings, built files (pull_request) Successful in 3m15s
CI / Database tests on PostgreSQL (pull_request) Successful in 8m0s
CI / Security audit (pull_request) Successful in 2m45s
CI / Browser tests (Chromium) (pull_request) Failing after 53m21s
ce19b40429
pytest-playwright 0.10 replaced pytest-base-url with a fallback fixture
defined as a session fixture on an instance, which pytest 9.2 deprecates.
With warnings as errors, it failed every browser test at setup.

Refs #1220

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Run CI again on an idle runner
Some checks failed
CI / Unit tests and coverage (Python 3.14) (pull_request) Successful in 20m34s
CI / Checks: lint, migrations, catalogues, settings, built files (pull_request) Successful in 2m22s
CI / Database tests on PostgreSQL (pull_request) Successful in 6m5s
CI / Security audit (pull_request) Successful in 2m0s
CI / Browser tests (Chromium) (pull_request) Failing after 51m45s
c69bc5ca96
The browser job hit its 45-minute step limit under load.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Keep Playwright at 1.62 and pytest-playwright at 0.9 for now
Some checks failed
CI / Unit tests and coverage (Python 3.14) (pull_request) Failing after 43m12s
CI / Checks: lint, migrations, catalogues, settings, built files (pull_request) Successful in 6m13s
CI / Database tests on PostgreSQL (pull_request) Successful in 8m19s
CI / Security audit (pull_request) Successful in 2m3s
CI / Browser tests (Chromium) (pull_request) Has been cancelled
d66bc80f5d
With Playwright 1.64.1 (Chrome 156) and pytest-playwright 0.10, the browser
job ran 2.3 times slower file for file than main's last green run, filled
the runner's swap and was cut off at its 45-minute limit twice, at 82%.
Main's own code ran the suite in 29 minutes on the same host between those
two runs. Everything else in the upgrade stays.

Refs #1220

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Bring Playwright 1.64 and pytest-playwright 0.10 back
All checks were successful
CI / Unit tests and coverage (Python 3.14) (pull_request) Successful in 20m34s
CI / Checks: lint, migrations, catalogues, settings, built files (pull_request) Successful in 2m22s
CI / Database tests on PostgreSQL (pull_request) Successful in 7m8s
CI / Security audit (pull_request) Successful in 1m44s
CI / Browser tests (Chromium) (pull_request) Successful in 47m28s
d9deee33af
They were not the cause: with them pinned back, the browser job reached
only 47% and the unit job timed out too. The runner host was loaded by
other services (Nextcloud restarting, swap full), not by the upgrade.

This reverts commit d66bc80f5.

Refs #1220

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
tiagoagueda deleted branch deps-2026-11 2026-11-06 04:18:53 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Postulo/postulo!1221
No description provided.