Skip to content

feat: add Python 3.14 support - #1215

Merged
Aaron ("AJ") Steers (aaronsteers) merged 3 commits into
mainfrom
devin/1791315217-python-3-14-support
Oct 8, 2026
Merged

Aaron ("AJ") Steers (aaronsteers) merged 3 commits into
mainfrom
devin/1791315217-python-3-14-support

Conversation

@aaronsteers

@aaronsteers Aaron ("AJ") Steers (aaronsteers) commented Oct 6, 2026 •

Copy link
Copy Markdown
Member

Overview

👉 TL;DR: Lets the CDK install and run on Python 3.14.

Raises the Python cap to <3.15, the pydantic floor to ^2.13 (its pydantic.v1 shim works on 3.14 from 2.13), relaxes pandas to >=2.2.3,<3.0, widens the pyarrow, python-calamine and tiktoken extras pins to versions with cp314 wheels, and adds 3.14 to the CI matrices.

Unblocks Python 3.14 in PyAirbyte, stacked on PyAirbyte#1337:

Changes

  • python = ">=3.10,<3.15" (was <3.14)
  • pandas = ">=2.2.3,<3.0" (was ==2.2.3, which has no 3.14 wheels). Stays on the stable 2.x line; locks 2.3.3.
  • pydantic = "^2.13" (was ^2.7). pydantic 2.12 on 3.14 raises ConfigError: unable to infer type on pydantic.v1 models such as InternalConfig; 2.13 fixes it. No v1→v2 migration.
  • Extras: pyarrow ^19 → >=19,<24, python-calamine 0.2.3 → >=0.2.3,<0.9, tiktoken 0.8.0 → >=0.8.0,<0.15. Floors stay the same; the old pins have no 3.14 wheels.
  • poetry.lock: re-locked, with targeted poetry update --lock for locked packages that had no cp314 wheels (orjson, serpyco-rs, pyyaml, regex, rapidfuzz, grpcio, markupsafe, memray, plus extras deps such as aiohttp, lxml, pillow, scipy, scikit-learn, matplotlib, fastavro, cramjam). Dev-only pywin32 308 → 312 for Windows 3.14 wheels.
  • pytest_matrix.yml and test-command.yml: added "3.14".
  • airbyte_protocol_serializers.py: explicit Serializer[Model] annotations. serpyco-rs 1.23 types Serializer as generic, so MyPy otherwise flags var-annotated and no-any-return on .load() callers.

Review Spotlight

Reviewers with limited time, please review first:

Risks

  • pydantic.v1 on 3.14+ is documented by Pydantic as unsupported. It works with 2.13, but it isn't guaranteed to keep working. A v2 migration is tech debt, not a blocker.
  • The lock bumps many transitive packages on every Python version, not only 3.14 (for example pyarrow 19→23, orjson, serpyco-rs 1.13→1.23, python-calamine 0.2→0.8). The full CI matrix covers 3.10–3.14.

Test plan

  • poetry install --all-extras on Python 3.14.7: wheels only, no source builds.
  • mypy --config-file mypy.ini airbyte_cdk: clean.
  • CI Pytest (All) passes on 3.10, 3.11, 3.12, 3.13 and 3.14 (5,016 passed, 12 skipped).
  • Connector checks: source-pokeapi, source-intercom and source-hardcoded-records pass. destination-motherduck fails on MotherDuck token auth (Your request is not authenticated). It's a CI credential problem, not this change: the same check fails on every recent CDK PR, including unrelated ones (for example the docs-concurrent-source-timeout-secon… branch).

Link to Devin session: https://app.devin.ai/sessions/11efb22ec9fc43aaaeb1395cb3343306
Open in Devin Desktop: https://app.devin.ai/desktop/session/11efb22ec9fc43aaaeb1395cb3343306?variant=devin
Requested by: Aaron ("AJ") Steers (@aaronsteers)

Co-Authored-By: AJ Steers <aj@airbyte.io>
@devin-ai-integration

Copy link
Copy Markdown
Contributor

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 Oct 6, 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/1791315217-python-3-14-support#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/1791315217-python-3-14-support

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 Oct 6, 2026 •

Copy link
Copy Markdown

PyTest Results (Fast)

5 025 tests  ±0   5 013 ✅ ±0   7m 11s ⏱️ - 3m 53s
    1 suites ±0      12 💤 ±0 
    1 files   ±0       0 ❌ ±0 

Results for commit 6844da4. ± Comparison against base commit 5381b8f.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

PyTest Results (Full)

5 028 tests  ±0   5 016 ✅ ±0   10m 6s ⏱️ - 2m 34s
    1 suites ±0      12 💤 ±0 
    1 files   ±0       0 ❌ ±0 

Results for commit 6844da4. ± Comparison against base commit 5381b8f.

♻️ This comment has been updated with latest results.

@aaronsteers
Aaron ("AJ") Steers (aaronsteers) marked this pull request as ready for review October 8, 2026 05:48

@devin-ai-integration devin-ai-integration Bot left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

✅ Devin resolved the finding on aad9bf1

Fixed by Devin (1)

  • Windows 3.14 development installs fail

View all findings in Devin Review

Devin Review

@aaronsteers
Aaron ("AJ") Steers (aaronsteers) merged commit cae92f4 into main Oct 8, 2026
29 of 30 checks passed
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.

2 participants