Skip to content

Conversation

dbgold17
Copy link
Contributor

@dbgold17 dbgold17 commented Oct 18, 2025

Summary by CodeRabbit

  • Chores

    • Runtime image updated to Python 3.13 (patch-level); no functional or startup changes expected.
    • Core dependency declarations aligned with the newer langchain ecosystem; added langchain_community.
    • Typing/annotation and boolean-handling cleanups plus a minor client configuration tweak to reduce type-checker noise; behavior unchanged.
  • New Features

    • Expanded optional integrations/extras for richer vector DB and LM capabilities.

@Copilot Copilot AI review requested due to automatic review settings October 18, 2025 01:14
Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

Updates the manifest server Docker base image to Python 3.13.

  • Bumps Python version from 3.12 to 3.13.
  • Pins the image to a specific sha256 digest for reproducibility.

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

@github-actions
Copy link

👋 Greetings, Airbyte Team Member!

Here are some helpful tips and reminders for your convenience.

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@dbgold17/update-manifest-server-to-python-3.13#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 dbgold17/update-manifest-server-to-python-3.13

Helpful Resources

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
  • /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

📝 Edit this welcome message.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Oct 18, 2025

📝 Walkthrough

Walkthrough

Updated manifest server Docker base image to a SHA‑pinned Python 3.13 slim image and upgraded langchain-related dependencies in pyproject.toml; several files received only typing-suppression/comment edits or a minor client user_agent argument—no functional control-flow changes.

Changes

Cohort / File(s) Change Summary
Docker base image update
airbyte_cdk/manifest_server/Dockerfile
Replaced base image python:3.12-slim-bookworm with python:3.13.9-slim-bookworm@sha256:4c9fe962f6ce46ecf3633a7e9d0a9fb7f5622121ee00d628eff206da024147c9. Other Dockerfile steps unchanged.
Dependency and extras updates
pyproject.toml
Upgraded langchain / langchain_core to ^0.3.0, added langchain_community ^0.3.0, and updated vector-db-based extras to include langchain_core and langchain_community.
Typing / annotation fixes (no behavior change)
airbyte_cdk/connector_builder/connector_builder_handler.py, airbyte_cdk/manifest_server/command_processor/utils.py, airbyte_cdk/sources/declarative/interpolation/macros.py, airbyte_cdk/sources/file_based/stream/default_file_based_stream.py, airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py
Added # type: ignore[...] comments and explicit bool(...) coercions to silence type-checker warnings; no runtime or control-flow changes.
Client config tweak
airbyte_cdk/destinations/vector_db_based/embedder.py
Passes user_agent="airbyte-cdk" to CohereEmbeddings during initialization; no control-flow change.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested labels

dependencies

Suggested reviewers

  • aaronsteers
  • pnilan
  • brianjlai

Add maxi297 as a reviewer too, wdyt?

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The title "chore: use python 3.13 in connector builder base image" directly and accurately describes the primary change in the pull request: the Dockerfile base image in airbyte_cdk/manifest_server/Dockerfile was upgraded from Python 3.12 to Python 3.13.9. While the PR includes additional changes like dependency updates to langchain and type-checking improvements, these appear to be supporting changes necessary for Python 3.13 compatibility. The title is clear, specific, and highlights the most prominent change without being misleading or vague.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch dbgold17/update-manifest-server-to-python-3.13

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f17be07 and 82b423b.

⛔ Files ignored due to path filters (1)
  • poetry.lock is excluded by !**/*.lock
📒 Files selected for processing (1)
  • pyproject.toml (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • pyproject.toml

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link

github-actions bot commented Oct 18, 2025

PyTest Results (Fast)

3 802 tests  ±0   3 790 ✅ ±0   6m 30s ⏱️ -13s
    1 suites ±0      12 💤 ±0 
    1 files   ±0       0 ❌ ±0 

Results for commit 82b423b. ± Comparison against base commit 20ae208.

♻️ This comment has been updated with latest results.

@github-actions
Copy link

github-actions bot commented Oct 18, 2025

PyTest Results (Full)

3 805 tests   3 793 ✅  10m 52s ⏱️
    1 suites     12 💤
    1 files        0 ❌

Results for commit 82b423b.

♻️ This comment has been updated with latest results.

@dbgold17 dbgold17 requested a review from aaronsteers October 22, 2025 23:46
@dbgold17 dbgold17 changed the title update connector-builder to use python 3.13 base image chore: use python 3.13 in connector builder base image Oct 22, 2025
@github-actions github-actions bot added the chore label Oct 23, 2025
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (1)
airbyte_cdk/connector_builder/connector_builder_handler.py (1)

51-51: Consider explicit bool() casting for consistency with similar code?

I noticed that airbyte_cdk/manifest_server/command_processor/utils.py has nearly identical functions (should_migrate_manifest and should_normalize_manifest at lines 40-57) that use explicit bool() casting instead of type-ignore comments:

return bool(manifest.get(SHOULD_MIGRATE_KEY, False))

The explicit casting approach is a bit more self-documenting and ensures type safety without suppressing warnings. Would you consider aligning these implementations for consistency across the codebase? wdyt?

Apply this diff to use explicit bool casting:

-    return config.get("__should_migrate", False)  # type: ignore[no-any-return]
+    return bool(config.get("__should_migrate", False))
-    return config.get("__should_normalize", False)  # type: ignore[no-any-return]
+    return bool(config.get("__should_normalize", False))

Also applies to: 60-60

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e33f84d and 19dbf7e.

⛔ Files ignored due to path filters (1)
  • poetry.lock is excluded by !**/*.lock
📒 Files selected for processing (5)
  • airbyte_cdk/connector_builder/connector_builder_handler.py (2 hunks)
  • airbyte_cdk/manifest_server/command_processor/utils.py (3 hunks)
  • airbyte_cdk/sources/declarative/interpolation/macros.py (2 hunks)
  • airbyte_cdk/sources/file_based/stream/default_file_based_stream.py (1 hunks)
  • airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py
🧰 Additional context used
🧬 Code graph analysis (1)
airbyte_cdk/sources/file_based/stream/default_file_based_stream.py (2)
airbyte_cdk/sources/streams/concurrent/adapters.py (1)
  • cursor (196-197)
airbyte_cdk/sources/streams/concurrent/default_stream.py (1)
  • cursor (92-93)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (14)
  • GitHub Check: Check: source-pokeapi
  • GitHub Check: Check: source-hardcoded-records
  • GitHub Check: Check: source-shopify
  • GitHub Check: Check: source-intercom
  • GitHub Check: Check: source-google-drive
  • GitHub Check: Check: destination-motherduck
  • GitHub Check: Manifest Server Docker Image Build
  • GitHub Check: SDM Docker Image Build
  • GitHub Check: Pytest (All, Python 3.10, Ubuntu)
  • GitHub Check: Pytest (All, Python 3.12, Ubuntu)
  • GitHub Check: Pytest (All, Python 3.13, Ubuntu)
  • GitHub Check: Pytest (All, Python 3.11, Ubuntu)
  • GitHub Check: Pytest (Fast)
  • GitHub Check: Analyze (python)
🔇 Additional comments (3)
airbyte_cdk/sources/declarative/interpolation/macros.py (1)

14-15: Type-ignore annotations look reasonable for untyped dependencies.

The type: ignore[import-untyped] annotations for pytz and dateutil.parser are appropriate since these are external libraries without complete type stubs. The return annotation on line 93 suppresses the no-any-return warning from astimezone(), which is reasonable given the complexity of the datetime handling.

Also applies to: 93-93

airbyte_cdk/manifest_server/command_processor/utils.py (1)

47-47: Nice! Explicit bool() casting is a solid approach.

The explicit bool() casting ensures these functions always return proper booleans, even if the config contains truthy/falsy non-bool values. This is clearer and safer than type-ignore comments, as it documents the intention and provides runtime guarantees.

Also applies to: 57-57

airbyte_cdk/sources/file_based/stream/default_file_based_stream.py (1)

95-95: Good refinement of the type-ignore annotation.

The updated type: ignore[override] is more specific than the previous generic comment, making it clearer what mypy warning is being suppressed. This helps future maintainers understand the intention.

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.

1 participant