Repository navigation
feat: drop Python 3.10 support; require Python >=3.11 - #1264
Conversation
Co-Authored-By: bot_apk <apk@cognition.ai>
|
I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".
|
👋 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/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-10PR Slash CommandsAirbyte Maintainers can execute the following slash commands on your PR:
|
PyTest Results (Full)6 311 tests 6 290 ✅ 11m 5s ⏱️ Results for commit 27c2437. ♻️ This comment has been updated with latest results. |
Co-Authored-By: bot_apk <apk@cognition.ai>
Co-Authored-By: bot_apk <apk@cognition.ai>
Aaron ("AJ") Steers (aaronsteers)
left a comment
There was a problem hiding this comment.
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.
|
Aaron ("AJ") Steers (@aaronsteers) thanks for the review. Agreed: ruleset 2560369 still requires Posted by Devin, on behalf of Patrick Nilan (@pnilan). |
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.tomlnow requirespython = ">=3.11,<3.15", thepillow<3.11split from #1260 is collapsed to a single>=13.0.0constraint, 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_versionsis 3.11–3.14 (adds the missing 3.14); single optionalpillow >=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", withUP042ignored (as in PyAirbyte) so enums are never auto-converted toStrEnum.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→typingforProtocol/runtime_checkable/Literalin_job_runner.pyandcustom_code_compiler.py; reworded the 3.10/3.11 note inrequests_native_auth/protocols.py.bin/generate_component_manifest_files.py: generator imagepython:3.11.unit_tests/test_python_version_support.py.Compatibility (not breaking)
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 inairbytehq/airbytecaps the CDK at a major version (^7,>=7.7,<8) or pins it exactly.python = ">=3.10,<3.14"withpillow = ">=12"lockspillow 12.3.0instead of failing (checked with Poetry 2.5.1).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-shopifyfails for that reason: the check installs this branch's CDK by git ref into a connector that still allows Python 3.10.Check: destination-motherduckfails 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.pyasserts the Python floor and that Pillow has no Python-version split. Both tests fail againstorigin/main'spyproject.tomland 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 Hub429 Too Many Requestsin 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