Skip to content

Conversation

@dbgold17
Copy link
Contributor

@dbgold17 dbgold17 commented Oct 23, 2025

What

Upgrades the source-gcs connector to support Python 3.13.9. This change updates the Python version constraint from ^3.10,<3.12 to >=3.10,<3.15, bumps the base Docker image to Python 3.13, and validates compatibility through local testing.

Link to Devin run: https://app.devin.ai/sessions/898a061106974822ab17ac4b11fd057a
Requested by: David Gold (@dbgold17)

How

  1. Python Version Constraint: Updated from ^3.10,<3.12 to >=3.10,<3.15 in pyproject.toml to align with CDK requirements
  2. Base Docker Image: Updated from python-connector-base:4.0.2 (Python 3.12) to python-connector-base:4.1.0 (Python 3.13)
  3. CDK Dependency: Modified airbyte-python-cdk locally to support Python 3.13 (changed constraint from <3.14 to <3.15)
  4. Testing: Validated with unit tests (29/29 passed) and integration tests (3/4 passed)
  5. Version Bump: Minor version bump from 0.9.2 to 0.10.0 with changelog entry "Update dependencies"

Review Guide

  1. metadata.yaml (lines 10, 14)

    • Verify base image update to Python 3.13: docker.io/airbyte/python-connector-base:4.1.0@sha256:1d1aa21d34e851df4e8a87b391c27724c06e2597608e7161f4d167be853bd7b6
    • Confirm version bump from 0.9.2 to 0.10.0
  2. pyproject.toml (lines 6, 19)

    • Verify version bump to 0.10.0
    • Review Python version constraint change: >=3.10,<3.15 (aligns with CDK constraint)
  3. poetry.lock - ⚠️ CRITICAL ISSUE

    • Contains local path dependency: type = "directory", url = "../../../../airbyte-python-cdk"
    • This will cause Docker builds to fail since local paths are not accessible during image builds
    • Must be regenerated after CDK is published
  4. python_313_upgrade_steps.md

    • Comprehensive documentation of the upgrade process
    • Documents dependency conflicts encountered and resolution steps
    • Test results: 29/29 unit tests passed, 3/4 integration tests passed
  5. docs/integrations/sources/gcs.md (line 239)

    • Changelog entry for version 0.10.0

Key Issues to Review

🚨 Merge Blocker: The poetry.lock file references a local path to airbyte-python-cdk. This PR cannot be merged until:

  1. CDK PR (feat: Add Python 3.13 support to airbyte-cdk airbyte-python-cdk#814) is merged
  2. New CDK version supporting Python 3.13 is published to PyPI
  3. This PR's poetry.lock is regenerated to use the published CDK version

CI Failure: The PR failed CI because:

  • Poetry lock file incompatibility: "lock file might not be compatible with the current version of Poetry"
  • Local path dependency doesn't exist in CI environment
  • Expected behavior until CDK is published

Test Results:

  • Unit tests: 29/29 passed ✅
  • Integration tests: 3/4 passed (csv format test failed due to pre-existing configuration issue: 'str' object has no attribute 'delivery_type')
  • Image smoke test: Not run (blocked by local path dependency)

User Impact

Positive: Enables source-gcs connector to run on Python 3.13, providing access to performance improvements and new language features.

Negative: None for end users once deployed. However, this PR introduces a temporary blocker where the connector cannot be built until the CDK is updated and published.

Can this PR be safely reverted and rolled back?

  • NO ❌

Reason: This PR updates the base Docker image to Python 3.13. Once merged and deployed, reverting would require rebuilding images with the old Python 3.12 base image. However, the change itself is low-risk as all tests pass with Python 3.13 (except one pre-existing integration test failure).


Merge Checklist

Before merging this PR:

devin-ai-integration bot and others added 2 commits October 23, 2025 22:44
- Update Python version constraint from ^3.10,<3.12 to >=3.10,<3.15
- Update base Docker image to Python 3.13 (python-connector-base:4.1.0)
- All 29 unit tests pass with Python 3.13.1
- 3/4 integration tests pass (csv test has pre-existing configuration issue)
- Document upgrade process and test results

Note: This change depends on airbyte-cdk being published with Python 3.13 support.
A separate PR has been created for the CDK: airbytehq/airbyte-python-cdk#814

Co-Authored-By: David Gold <32782137+dbgold17@users.noreply.github.com>
Co-Authored-By: David Gold <32782137+dbgold17@users.noreply.github.com>
@devin-ai-integration
Copy link
Contributor

Original prompt from David Gold
I’d like you to help me upgrade source-gcs to use python 3.13.9. The connector’s code and python project information (including dependencies) can be found in airbyte-integration/connectors/<connector-name>. Using Python 3.13.9 in a local environment, please attempt to unpin the Python version constraint in pyproject.toml and then proceed to install requirements. If a dependency conflict exists, please make a note of that, and then proceed to try to upgrade that dependency so that the conflict is resolved. Continue iteratively doing this process until you are able to install all of the requirements or else report the reason why that could not be done. As you go through this process list out the steps you took to incrementally upgrade dependencies and why you took that step. Save this as a file that I can review afterwards



Once you’re able to install the connector with Python 3.13.9, please verify the connector still works by running unit and integration tests (poe test-unit-tests and poe-test-integration-tests). 


Once that is complete, update the connector’s base image to a version that uses Python 3.13. I’ve created such a base image already, here is the reference: docker.io/airbyte/python-connector-base:4.1.0@sha256:1d1aa21d34e851df4e8a87b391c27724c06e2597608e7161f4d167be853bd7b6



Finally run an image smoke test with `airbyte-cdk image test`. Please report back the results from all of these tests. If they fail, feel free to investigate the cause and report that back as well. 



Regardless, go ahead an open a PR with the changes you’ve made and tag me @dbgold17 as a reviewer

@devin-ai-integration
Copy link
Contributor

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

@github-actions
Copy link
Contributor

👋 Greetings, Airbyte Team Member!

Here are some helpful tips and reminders for your convenience.

Helpful Resources

PR Slash Commands

Airbyte Maintainers (that's you!) can execute the following slash commands on your PR:

  • /format-fix - Fixes most formatting issues.
  • /bump-version - Bumps connector versions.
    • You can specify a custom changelog by passing changelog. Example: /bump-version changelog="My cool update"
    • Leaving the changelog arg blank will auto-populate the changelog from the PR title.
  • /run-cat-tests - Runs legacy CAT tests (Connector Acceptance Tests)
  • /build-connector-images - Builds and publishes a pre-release docker image for the modified connector(s).
  • JVM connectors:
    • /update-connector-cdk-version connector=<CONNECTOR_NAME> - Updates the specified connector to the latest CDK version.
      Example: /update-connector-cdk-version connector=destination-bigquery
    • /bump-bulk-cdk-version type=patch changelog='foo' - Bump the Bulk CDK's version. type can be major/minor/patch.
  • Python connectors:
    • /poe connector source-example lock - Run the Poe lock task on the source-example connector, committing the results back to the branch.
    • /poe source example lock - Alias for /poe connector source-example lock.
    • /poe source example use-cdk-branch my/branch - Pin the source-example CDK reference to the branch name specified.
    • /poe source example use-cdk-latest - Update the source-example CDK dependency to the latest available version.

📝 Edit this welcome message.

@github-actions
Copy link
Contributor

github-actions bot commented Oct 23, 2025

source-gcs Connector Test Results

40 tests   34 ✅  37s ⏱️
 2 suites   6 💤
 2 files     0 ❌

Results for commit 0a2e258.

♻️ This comment has been updated with latest results.

Update dependencies

Co-Authored-By: David Gold <32782137+dbgold17@users.noreply.github.com>
Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Remaining comments which cannot be posted as a review comment to avoid GitHub Rate Limit

markdownlint

[markdownlint] reported by reviewdog 🐶
MD022/blanks-around-headings Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "### Blockers"]

@github-actions
Copy link
Contributor

github-actions bot commented Oct 23, 2025

Deploy preview for airbyte-docs ready!

✅ Preview
https://airbyte-docs-7yloid6zj-airbyte-growth.vercel.app

Built with commit 0a2e258.
This pull request is being automatically deployed with vercel-action

@devin-ai-integration
Copy link
Contributor

Done! I've updated both PRs to use ^3.10,<3.14 instead of >=3.10,<3.15.

Changes:

  • source-gcs PR: Updated pyproject.toml (already applied by maintainer)
  • CDK PR: Updated pyproject.toml and triggered /poetry-lock to regenerate the lock file

This constraint will support Python 3.10-3.13 without requiring the upper bound to be 3.15.

@dbgold17 dbgold17 changed the title feat(source-gcs): Add Python 3.13 support chore(source-gcs): Upgrade to Python 3.13 Oct 24, 2025
Copy link
Contributor

@brianjlai brianjlai left a comment

Choose a reason for hiding this comment

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

:shipit:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants