fix(deps): allow setuptools >=83 to remediate CVE-2026-59890 - #1119
fix(deps): allow setuptools >=83 to remediate CVE-2026-59890#1119devin-ai-integration[bot] wants to merge 1 commit into
Conversation
Co-Authored-By: bot_apk <apk@cognition.ai>
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
👋 Greetings, Airbyte Team Member!Here are some helpful tips and reminders for your convenience. 💡 Show Tips and TricksTesting This CDK VersionYou can test this version of the CDK using the following: # Run the CLI from this branch:
uvx 'git+https://github.com/airbytehq/airbyte-python-cdk.git@devin/1786897778-setuptools-cve-2026-59890#egg=airbyte-python-cdk[dev]' --help
# Update a connector to use the CDK from this branch ref:
cd airbyte-integrations/connectors/source-example
poe use-cdk-branch devin/1786897778-setuptools-cve-2026-59890PR Slash CommandsAirbyte Maintainers can execute the following slash commands on your PR:
|
There was a problem hiding this comment.
Pull request overview
Updates the Airbyte Python CDK’s dependency constraints to unblock downstream resolvers from selecting a non-vulnerable setuptools version (>= 83.0.0) that remediates CVE-2026-59890, without requiring any CDK code changes.
Changes:
- Raises the
setuptoolsconstraint from^80.9.0to>=83.0.0to ensure vulnerable versions cannot be resolved through the CDK dependency graph. - Refreshes
poetry.lockto reflect resolution tosetuptools84.0.0 and associated metadata updates.
Reviewed changes
Copilot reviewed 1 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| pyproject.toml | Updates setuptools dependency constraint to >=83.0.0 to permit/ensure remediation of CVE-2026-59890 downstream. |
| poetry.lock | Lockfile refresh reflecting setuptools upgrade (to 84.0.0) and updated lock metadata hash. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Summary
The CDK's caret constraint on
setuptoolsexpands to>=80.9.0,<81.0.0, so no downstream lockfile that depends onairbyte-cdkcan select asetuptoolsversion with CVE-2026-59890 (GHSA-h35f-9h28-mq5c) fixed — the advisory's fixed version is83.0.0. This is purely a resolver-level upper bound; the CDK does not importsetuptoolsanywhere.Reproduction of the conflict on the released CDK:
Does this guarantee remediation, or merely permit it? It guarantees it. Raising the floor to
>=83.0.0(rather than only widening the upper bound) means no consumer can resolve a vulnerable80.x/82.xversion through the CDK — widening the upper bound alone would still let existing lockfiles keep resolving a flagged version until each consumer explicitly bumped.Why no upper bound? The CDK carries
setuptoolsonly because some connectors use it as an undeclared transitive dependency (e.g.source-shopifyimportssetuptools.command.alias). Since no CDK code imports it, an upper bound buys no protection for the CDK itself and recreates exactly this downstream resolver conflict the next time an advisory lands.poetry.lockresolves to84.0.0(current latest).Compatibility risk verified
setuptools82.0.0 removedpkg_resourcesand 81.0.0 removedsetup.py --dry-run, so the widened floor was checked against both:pkg_resourcesordistutilsimports exist underairbyte_cdk/orunit_tests/onmain.--all-extras), onlypytz,pytestandwerkzeugreferencepkg_resources, and all three do so from lazy/optional code paths rather than at import time. The full unit test suite passes againstsetuptools84.0.0 (4230 passed, 2 skipped).from setuptools.command.alias import alias— the symbolsource-shopifyrelies on — still resolves in 84.0.0.setuptools83.0.0 requires Python>=3.10, which is already the CDK's floor (python = ">=3.10,<3.14"), so the constraint is satisfiable on every supported interpreter.Note that a CDK release is required before downstream consumers can pick this up.
Test Coverage
No test was added: the change is a dependency constraint plus the resulting
poetry.lockrefresh, with no CDK code path to exercise. The relevant verification is that the existing suite still passes withsetuptools84.0.0 installed, plus thepkg_resourcesaudit above.Ran locally with Poetry 2.1.4 (matching the
lock-version = "2.1"lockfile format used onmain):poetry lock→ onlysetuptoolschanges (20-line lockfile diff)poetry install --all-extraspoetry run ruff check .— passedpoetry run ruff format --check .— passedpoetry run pytest unit_tests/ -x -q— 4230 passed, 2 skippedFollow-up (not in this PR)
airbyte-integrations/connectors/source-shopify/source_shopify/shopify_graphql/bulk/query.pyinairbytehq/airbytehasfrom setuptools.command.alias import alias, which appears to be unused (the otheralias=occurrences in that file aregraphql_query.Fieldkeyword arguments). If that is the only consumer relying on the CDK'ssetuptools, removing it would let the CDK drop the dependency entirely. Worth a separate connector PR rather than bundling here.Related to https://github.com/airbytehq/oncall/issues/13315:
Reported upstream by Andrew (@foiseworth) in #1118.
Link to Devin session: https://app.devin.ai/sessions/6a924111e09f48dba70eef51ae481d37