-
Notifications
You must be signed in to change notification settings - Fork 71
Description
Summary
PyAirbyte cannot use any manifest-only connector that requires custom Python components (56 connectors affected). The root cause is a format mismatch between the Airbyte connector registry and PyAirbyte's download logic.
Root Cause
The registry (connectors.airbyte.com) uploads custom components as components.zip — see gcs_upload.py in airbytehq/airbyte.
PyAirbyte tries to download raw components.py — see DEFAULT_COMPONENTS_URL:
DEFAULT_COMPONENTS_URL = (
"https://connectors.airbyte.com/files/metadata/airbyte/{source_name}/{version}/components.py"
)This always 404s because the file on GCS is components.zip, not components.py. PyAirbyte silently treats the 404 as "no components needed" and proceeds without them, causing runtime failures.
Reproduction
import airbyte as ab
source = ab.get_source("source-slack", config={
"credentials": {
"option_title": "API Token Credentials",
"api_token": "xoxb-test",
},
"start_date": "2024-01-01T00:00:00Z",
"lookback_window": 7,
"join_channels": False,
})
source.get_available_streams()
# AirbyteConnectorFailedError: The path from `authenticator_selection_path` is not found in the config.Evidence
# Registry has components.zip (200) but not components.py (404)
$ curl -so /dev/null -w "%{http_code}" "https://connectors.airbyte.com/files/metadata/airbyte/source-slack/3.1.12/components.zip"
200
$ curl -so /dev/null -w "%{http_code}" "https://connectors.airbyte.com/files/metadata/airbyte/source-slack/3.1.12/components.py"
404This affects all 56 connectors with pythonComponents: required: true in their metadata — none have a raw components.py on the CDN:
Full list of affected connectors
source-alpha-vantage, source-amazon-seller-partner, source-amplitude, source-apify-dataset, source-aws-cloudtrail, source-bamboo-hr, source-bing-ads, source-braze, source-chargebee, source-fastbill, source-gitlab, source-gnews, source-google-analytics-data-api, source-google-search-console, source-google-sheets, source-greenhouse, source-hubspot, source-instagram, source-instatus, source-intercom, source-jira, source-klaviyo, source-linkedin-ads, source-mailchimp, source-monday, source-my-hours, source-nexus-datasets, source-notion, source-orb, source-outreach, source-paypal-transaction, source-pinterest, source-pipedrive, source-pocket, source-prestashop, source-qualaroo, source-railz, source-recurly, source-retently, source-salesloft, source-sharepoint-lists-enterprise, source-slack, source-the-guardian-api, source-tiktok-marketing, source-trello, source-twilio, source-typeform, source-us-census, source-workday, source-xero, source-younium, source-youtube-analytics, source-zendesk-chat, source-zendesk-support, source-zendesk-talk, source-zoom
Suggested Fix
In _try_get_manifest_connector_files, download components.zip instead of components.py, unzip it, and extract the components.py content:
DEFAULT_COMPONENTS_URL = (
"https://connectors.airbyte.com/files/metadata/airbyte/{source_name}/{version}/components.zip"
)Then unzip and read components.py from the archive before passing it to DeclarativeExecutor.
Environment
- PyAirbyte: 0.38.0 (also verified on
main— same URL template) - Python: 3.11
- OS: Linux