Skip to content
Closed
Show file tree
Hide file tree
Changes from 8 commits
Commits
Show all changes
13 commits
Select commit Hold shift + click to select a range
c9285f8
feat(destinations): add universal destination using PyAirbyte caches
devin-ai-integration[bot] Jan 29, 2026
dbe9884
refactor: move universal destination to airbyte/cli/universal_connect…
devin-ai-integration[bot] Jan 29, 2026
561093b
feat(sources): add universal source connector using PyAirbyte
devin-ai-integration[bot] Jan 29, 2026
9e19587
fix: add spec() method to destination and fix source read() for CLI p…
devin-ai-integration[bot] Jan 29, 2026
4e326cd
ci: add TK-TODO comment for STATE handling and import TK-TODO CI check
devin-ai-integration[bot] Jan 29, 2026
bc64448
Merge remote-tracking branch 'origin/main' into devin/1769653021-dest…
devin-ai-integration[bot] Feb 26, 2026
ab6ed52
fix: add resource cleanup (try/finally) to check() and write() methods
devin-ai-integration[bot] Feb 26, 2026
74dbb59
fix: use record's original emitted_at timestamp instead of current time
devin-ai-integration[bot] Feb 26, 2026
f405021
refactor: rename CLI entrypoints to destination-smoke-test and source…
devin-ai-integration[bot] Feb 26, 2026
a3ebe6e
fix: update Dockerfile entrypoint to destination-smoke-test
devin-ai-integration[bot] Feb 26, 2026
ef338c4
revert: restore CLI entrypoints to destination-pyairbyte/source-pyair…
devin-ai-integration[bot] Feb 26, 2026
60c502b
feat(connectors): add smoke test source for destination regression te…
aaronsteers Feb 26, 2026
271673c
docs: add experimental warning to universal connector modules
devin-ai-integration[bot] Feb 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions .github/workflows/tk-todo-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: TK-TODO Check # IGNORE:TK - this workflow checks for TK-TODO markers

on:
push:
branches:
- main
pull_request: {}

permissions:
contents: read

jobs:
tk-todo-check: # IGNORE:TK
name: Check for TK-TODO markers # IGNORE:TK
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v6

- name: Check for TK-TODO markers # IGNORE:TK
run: |
# Find all TK-TODO markers (case-insensitive) that don't have IGNORE:TK on the same line # IGNORE:TK
# Exit with error if any are found

echo "Checking for TK-TODO markers..." # IGNORE:TK

# Use git ls-files to only check tracked files (excludes gitignored files like sdks/)
# grep -i for case-insensitive matching
# grep -v for excluding lines with IGNORE:TK
# grep -n for line numbers

FOUND_TODOS=$(git ls-files | xargs grep -i -n "TK-TODO" 2>/dev/null | grep -i -v "IGNORE:TK" || true) # IGNORE:TK

if [ -n "$FOUND_TODOS" ]; then
echo ""
echo "ERROR: Found TK-TODO markers that must be resolved before merge:" # IGNORE:TK
echo ""
echo "$FOUND_TODOS"
echo ""
echo "To suppress a TK-TODO, add 'IGNORE:TK' (case-insensitive) on the same line." # IGNORE:TK
echo ""
exit 1
else
echo "No unresolved TK-TODO markers found." # IGNORE:TK
fi
2 changes: 2 additions & 0 deletions airbyte/cli/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Copyright (c) 2024 Airbyte, Inc., all rights reserved.
"""CLI modules for PyAirbyte."""
11 changes: 11 additions & 0 deletions airbyte/cli/universal_connector/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
FROM docker.io/airbyte/python-connector-base:4.0.2@sha256:9fdb1888c4264cf6fee473649ecb593f56f58e5d0096a87ee0b231777e2e3e73

WORKDIR /airbyte/integration_code

COPY pyproject.toml uv.lock ./
COPY airbyte ./airbyte

RUN pip install --no-cache-dir .

ENV AIRBYTE_ENTRYPOINT="destination-pyairbyte"
ENTRYPOINT ["destination-pyairbyte"]
11 changes: 11 additions & 0 deletions airbyte/cli/universal_connector/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Copyright (c) 2024 Airbyte, Inc., all rights reserved.
"""Universal connectors using PyAirbyte as backends."""

from airbyte.cli.universal_connector.destination import DestinationPyAirbyteUniversal
from airbyte.cli.universal_connector.source import SourcePyAirbyteUniversal


__all__ = [
"DestinationPyAirbyteUniversal",
"SourcePyAirbyteUniversal",
]
Loading
Loading