Skip to content

feat: drop Python 3.10 support; require Python >=3.11 - #1264

Merged
Patrick Nilan (pnilan) merged 3 commits into
mainfrom
devin/1793746454-drop-python-3-10
Nov 4, 2026
Merged

Patrick Nilan (pnilan) merged 3 commits into
mainfrom
devin/1793746454-drop-python-3-10

Conversation

@devin-ai-integration

@devin-ai-integration devin-ai-integration Bot commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

Overview

👉 TL;DR: The CDK still allowed Python 3.10, which is end-of-life and is being dropped by dependencies with security fixes (Pillow 13). This makes Python 3.11 the minimum supported version. Nothing installs a new CDK automatically, so this can ship as a minor release: environments on Python 3.10 keep getting the last compatible version.

Specifically, pyproject.toml now requires python = ">=3.11,<3.15", the pillow <3.11 split from #1260 is collapsed to a single >=13.0.0 constraint, and CI/lint/docs workflows move their minimum to 3.11.

Resolves https://github.com/airbytehq/airbyte-internal-issues/issues/18398:

Close on merge: yes — internally filed, no customer to confirm with.

Changes

  • pyproject.toml: python = ">=3.11,<3.15"; classifiers list 3.11–3.14; [tool.airbyte_ci] python_versions is 3.11–3.14 (adds the missing 3.14); single optional pillow >=13.0.0.
  • poetry.lock: re-locked (Poetry 2.5.1). No package version changes; only the obsolete 3.10-only resolutions are removed and markers simplified.
  • ruff.toml: target-version = "py311", with UP042 ignored (as in PyAirbyte) so enums are never auto-converted to StrEnum.
  • Workflows (pytest_matrix, test-command, pytest_fast, python_lint, pdoc_*, python_dependency_analysis, poetry-lock-command, autofix-command): 3.10 removed from matrices; minimum is 3.11.
  • typing_extensions → typing for Protocol/runtime_checkable/Literal in _job_runner.py and custom_code_compiler.py; reworded the 3.10/3.11 note in requests_native_auth/protocols.py.
  • bin/generate_component_manifest_files.py: generator image python:3.11.
  • New unit_tests/test_python_version_support.py.

Compatibility (not breaking)

  • No consumer picks this up automatically. The SDM image (python-connector-base:4.1.1, Python 3.13), the manifest server (python:3.13.9-slim) and connector images on base 4.x all run Python 3.11+. Every connector in airbytehq/airbyte caps the CDK at a major version (^7, >=7.7,<8) or pins it exactly.
  • pip on Python 3.10 skips this release and installs the last compatible one. Poetry does the same: a project allowing python = ">=3.10,<3.14" with pillow = ">=12" locks pillow 12.3.0 instead of failing (checked with Poetry 2.5.1).
  • The only hard failure happens when a connector explicitly targets the new CDK (exact pin, git ref, poetry add airbyte-cdk@latest) while still allowing Python 3.10. Poetry then refuses to resolve at lock time, and the fix is raising the connector's Python lower bound to ^3.11. The connector migrations are tracked in epic https://github.com/airbytehq/airbyte-internal-issues/issues/18399.

CI note

Check: source-shopify fails for that reason: the check installs this branch's CDK by git ref into a connector that still allows Python 3.10. Check: destination-motherduck fails because of a missing CI secret that also failed on #1260.

Declarative-First Evaluation

Not applicable: packaging/CI change to the CDK itself, no connector components touched.

Test Coverage

unit_tests/test_python_version_support.py asserts the Python floor and that Pillow has no Python-version split. Both tests fail against origin/main's pyproject.toml and pass on this branch. Locally: ruff check/format, mypy, and targeted unit tests pass on 3.12; the full serial run passed 449 tests and stopped on one Docker Hub 429 Too Many Requests in a Docker-image standard test (unrelated). The 3.11–3.14 matrix is left to CI.

Link to Devin session: https://app.devin.ai/sessions/7d5434c328914f5499a4d6512f8d1b62
Open in Devin Desktop: https://app.devin.ai/desktop/session/7d5434c328914f5499a4d6512f8d1b62?variant=devin

Co-Authored-By: bot_apk <apk@cognition.ai>
@devin-ai-integration

Copy link
Copy Markdown
Contributor Author

I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".

  • Disable automatic comment, CI, and merge conflict monitoring

@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown

👋 Greetings, Airbyte Team Member!

Here are some helpful tips and reminders for your convenience.

💡 Show Tips and Tricks

Testing This CDK Version

You 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/1793746454-drop-python-3-10#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/1793746454-drop-python-3-10

PR Slash Commands

Airbyte Maintainers can execute the following slash commands on your PR:

  • /autofix - Fixes most formatting and linting issues
  • /poetry-lock - Updates poetry.lock file
  • /test - Runs connector tests with the updated CDK
  • /prerelease - Triggers a prerelease publish with default arguments
  • /poe build - Regenerate git-committed build artifacts, such as the pydantic models which are generated from the manifest JSON schema in YAML.
  • /poe <command> - Runs any poe command in the CDK environment
📚 Show Repo Guidance

Helpful Resources

📝 Edit this welcome message.

@github-actions

github-actions Bot commented Nov 3, 2026 •

Copy link
Copy Markdown

PyTest Results (Fast)

6 308 tests  +2   6 287 ✅ +2   6m 26s ⏱️ +54s
    1 suites ±0      21 💤 ±0 
    1 files   ±0       0 ❌ ±0 

Results for commit 27c2437. ± Comparison against base commit e97f461.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Nov 3, 2026 •

Copy link
Copy Markdown

PyTest Results (Full)

6 311 tests   6 290 ✅  11m 5s ⏱️
    1 suites     21 💤
    1 files        0 ❌

Results for commit 27c2437.

♻️ This comment has been updated with latest results.

Co-Authored-By: bot_apk <apk@cognition.ai>
@devin-ai-integration devin-ai-integration Bot changed the title feat!: drop Python 3.10 support; require Python >=3.11 feat: drop Python 3.10 support; require Python >=3.11 Nov 3, 2026
Comment thread cdk-migrations.md Resolved
Co-Authored-By: bot_apk <apk@cognition.ai>
@pnilan
Patrick Nilan (pnilan) marked this pull request as ready for review November 3, 2026 23:33
@pnilan
Patrick Nilan (pnilan) requested a review from a team as a code owner November 3, 2026 23:33

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I looked through all the changes and they all look great. I'm glad to see 3.10 dropping off here and it's nice that we can remove some of the workarounds for 3.10 specifically.

The one thing I'll call out is that we need to make sure that the ruleset for the "protect main" rule is updated to not require any 3.10 named checks. I'm happy to do this or I can point somebody in the right direction for cross-training.

@devin-ai-integration

Copy link
Copy Markdown
Contributor Author

Aaron ("AJ") Steers (@aaronsteers) thanks for the review. Agreed: ruleset 2560369 still requires Pytest (All, Python 3.10, Ubuntu). I'd swap it for Pytest (All, Python 3.11, Ubuntu) instead of just removing it, so the new minimum version stays required. Other open PRs already run 3.11, so the swap won't block them. Neither Patrick Nilan (@pnilan) nor my token can edit the ruleset, so your offer to update it (or to point someone to how) would unblock the merge.


Posted by Devin, on behalf of Patrick Nilan (@pnilan).

@pnilan
Patrick Nilan (pnilan) merged commit 4f921fe into main Nov 4, 2026
27 of 29 checks passed
@pnilan
Patrick Nilan (pnilan) deleted the devin/1793746454-drop-python-3-10 branch November 4, 2026 18:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants