Skip to content

Security refresh: update the lock files and group Dependabot updates monthly - #99

Open
maxipavlovic wants to merge 5 commits into
masterfrom
bump/dependency-refresh-2026-11
Open

maxipavlovic wants to merge 5 commits into
masterfrom
bump/dependency-refresh-2026-11

Conversation

@maxipavlovic

@maxipavlovic maxipavlovic commented Nov 2, 2026 •

Copy link
Copy Markdown
Member

What

  • Python 3.10 is the new minimum: range >=3.10,<4 and test matrix 3.10 and 3.11, because the 3.8 and 3.9 jobs can't start on ubuntu-latest. No other range in pyproject.toml or package.json changes.
  • poetry.lock and package-lock.json move to the newest releases the constraints allow for Python 3.10 and newer.
  • One test assertion on a jq error message is relaxed, in its own commit.
  • Dependabot groups version updates into one PR a month per ecosystem, once a release is 7 days old. Security updates still open as soon as an alert appears, grouped when several are due at once: the monthly schedule, the cooldown and the PR limit don't apply to them.

Why

  • 99 open Dependabot alerts (5 critical, 42 high): 35 on poetry.lock, 62 on package-lock.json, 2 on pyproject.toml. This clears 75 and leaves 24: 69 with the refresh and 6 more with the Python 3.10 floor.

Key decisions

  • The extension's own requirements don't change. That holds back the 19 left on poetry.lock and pyproject.toml:
    • 7: starlette, because connect-eaas-core 28 needs fastapi 0.95.
    • 8: urllib3, because the extension and connect-eaas-core ask for urllib3 < 2. One of them is on pyproject.toml.
    • 2: pytest, capped below 8 in pyproject.toml. One of them is on pyproject.toml.
    • 2: setuptools, whose fixes (83, 84.1) have no pkg_resources. connect-eaas-core 28 imports it at start-up and flake8-commas needs it, so setuptools stays at 81.0.0.
  • 5 are left on npm: serialize-javascript (3), because css-minimizer-webpack-plugin sits under dependencies and the fix needs its 8.x and copy-webpack-plugin 14, both Node 20.9 or newer; deepmerge (1), which has no fixed release; minimatch (1), which eslint and glob pin below 11.
  • connect-openapi-client moves from 29.3 to 34.0, with httpx, httpcore, h11 and pytest-httpx. jq moves from 1.4.1 to 1.13.0, inside the extension's ^1.4.1. It bundles a newer jq that words one error message differently ("line 1, column 393:"). Worth a look at the formula and filter row behaviour before a release.
  • This extension deploys from its lock file, so the new versions reach production with its next release: deploy that release to a test environment first.
  • The Dockerfile (local development) runs poetry update, which ignores the lock and now picks setuptools 84, without pkg_resources. It was not built here.
  • connect_transformations/static is tracked and is not rebuilt.

How it worked before / after

  • Before: 99 alerts, Python 3.8 and newer, no Dependabot configuration.
  • After: 24 alerts, Python 3.10 and newer, one grouped version PR a month per ecosystem, and security PRs only when an alert appears.
  • Locally (Poetry 2.5.1): flake8 passes and 300 tests pass on Python 3.10 and 3.11. On Node 25.4.0 (there is no frontend CI), lint, 5 tests and the build passed before this change; no npm file changes here.

Every locked Python and npm package moves to the newest release the
constraints allow. That clears 12 of the 35 open alerts on poetry.lock and 57
of the 62 on package-lock.json. No requirement of the extension and no
development tool range changes, so Python 3.8 stays supported.

What is left on poetry.lock is held in place:

- starlette (7 alerts) by connect-eaas-core 28, which needs fastapi 0.95;
- urllib3 (7) by the urllib3 < 2 requirement of the extension itself;
- setuptools, pygments, requests, anyio and pytest (8) by the Python 3.8 that
  is still supported, because their fixed releases need Python 3.9 or 3.10;
- h11 (1) by pytest-httpx 0.22, which connect-openapi-client 29.3 asks for on
  Python 3.8.

On package-lock.json, serialize-javascript (3) stays because
css-minimizer-webpack-plugin, which package.json lists under dependencies,
needs the 6.x line, deepmerge (1) has no fixed release, and minimatch (1) is
pinned below 11 by eslint, glob and test-exclude.

jq moves from 1.4.1 to 1.12.0, which words one error message differently. The
test that checked it is adjusted in the next commit.
jq 1.12 reports where a formula goes wrong as "line 1, column 393:" where 1.4
said "line 1:". The test for an undefined variable now checks the part of the
message that both versions share.
The repository had alerts but no Dependabot configuration. Version updates for
pip, npm and GitHub Actions now come as a single monthly pull request per
ecosystem, and security updates as another, and a release has to be a week old
before Dependabot proposes it, which leaves time for a bad one to be pulled
from the registry. The pip and npm updates are limited to two open pull
requests each.
@maxipavlovic
maxipavlovic requested a review from izubkov November 2, 2026 02:13
CloudBlue's minimum Python is now 3.10, and GitHub's ubuntu-latest no
longer provides Python 3.9, so the 3.8 and 3.9 jobs cannot start. The
python range becomes >=3.10,<4 and no other requirement changes. The
test matrix runs on 3.10 and 3.11. The lock file is generated again for
the new range: no locked release changes, only the markers that named
Python 3.8 and 3.9.
Every locked Python package moves to the newest release the constraints
allow for Python 3.10 and newer, except setuptools, which stays at 81.0.0.
From 82 on setuptools no longer contains pkg_resources, which
connect-eaas-core 28 imports when the extension starts and which
flake8-commas (limited to 2.0 by pyproject.toml) imports too, so the
extension and lint would fail with it. The two alerts that need
setuptools 83 or 84.1 stay open until that is dealt with.

connect-openapi-client goes from 29.3 to 34.0, with httpx, httpcore, h11
and pytest-httpx, and jq from 1.12 to 1.13. No requirement of the
extension changes.

This clears 6 of the 25 alerts that were open on poetry.lock and
pyproject.toml after the first refresh: anyio (2), setuptools (1),
Pygments, requests and h11. The 19 that stay open are held in place:

- starlette (7) by connect-eaas-core 28, which needs fastapi 0.95;
- urllib3 (8) by the urllib3 < 2 that the extension and
  connect-eaas-core ask for;
- pytest (2) by the cap below 8 in pyproject.toml, while the fix is in
  9.0.3;
- setuptools (2), see above.
@cloudblue cloudblue deleted a comment from CLAassistant Nov 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant