NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #5484 most downloaded on PyPI
PyAirbyte
Last release 2 days ago
03 Oct 2026
Ships on a steady schedule
a new release about every 2 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
188 releases · first in 2024
This release add a new experimental MCP server to PyAirbyte (docs here)
secret_reference::SECRET_NAME) and secrets hydration features (docs here) (#696)Feat: Add support for Snowflake key-pair authentication (#702) - _Thanks, @Alioune05!_
One column per month.
feat: Add support for running manifest-only sources with custom components.py files
feat: Allow configuring dataset location in BigQueryCache (#689) - _Thanks, @honzabilek4!_
<details><summary>Show/Hide</summary>
</details>
fix: Resolve failures when a long-running session would time-out in the DB connection after more than 4+ hours (#676) - _Thanks, @benjaminwilen!_
feat: add ability to override pk and cursor key values
fix: specifying a target version for a source does not actually install that version
fix: resolve issue in Cache.create_source_tables
Cache.create_source_tables (#642)sources/base.py documentation to properly reflect allowed write_strategy arguments - Thanks, @dnxie12! (#581)feat: add `AIRBYTE_PRINT_FULL_ERROR_LOGS` option to auto-print full log file text, enabled by default in CI environments
AIRBYTE_PRINT_FULL_ERROR_LOGS option to auto-print full log file text, enabled by default in CI environments (#637)permission denied errors)request lib (#639)Added Python 3.12 support (#596) 🚀
cli module to api docs (#564)Add check feature for Cloud connectors.
check feature for Cloud connectors. (#562)airbyte.cloud module. (#562)Adds Cloud deploy functionality
^6.9.0 (#552)Fix: Resolve issue where special characters in stream names cause illegal file names (#545) - _Thanks, @tinomerl!_
<details> <summary>Show/Hide</summary>
/test-pr slash command (#283)" @aaronsteers (#551)deptry @aaronsteers (#534)</details>
Handle missing config in CLI validate command for destinations
validate command for destinations (#546)psycopg to ^3.1.19 for macOS <14 compatibility (#538) - Thanks, @niyasrad!Chore(deps): Bump CDK, nltk, and python-ulid to latest @aaronsteers
Adds "Config Write-Back" feature via the new config_change_callback option in get_source() and get_destination() (#440) - _Thanks, @tcboles!_
config_change_callback option in get_source() and get_destination() (#440) - Thanks, @tcboles!Introducing `AIRBYTE_OFFLINE_MODE` for air-gapped environments (#432) - _Thanks, @niyasrad!_
AIRBYTE_OFFLINE_MODE for air-gapped environments (#432) - Thanks, @niyasrad!Add experimental CLI sync command
sync command (#417)sqlalchemy release, resolving conflict with duckdb_engine (#429) - Thanks, @guenp!TYPE_CHECKING clauses (#421) - Thanks, @jx2lee!Add pip_url arg support in CLI validate command
pip_url arg support in CLI validate command (#416)Add new experimental PyAirbyte CLI for connector validation and benchmarking. Run pyairbyte --help or pyab --help for more info. (#411, #415)
pyairbyte --help or pyab --help for more info. (#411, #415)read() operations (#407)Use Airbyte Connector Registry web endpoints to download connector YAML manifests when available, adding support for pinning versions and downloading
More accurate perf metrics for slow-starting streams
Adds `AIRBYTE_TEMP_DIR` override, which allows users to modify how temporary file mounts are handled (#368, #370) - _Thanks, @niyasrad!_
AIRBYTE_TEMP_DIR override, which allows users to modify how temporary file mounts are handled (#368, #370) - Thanks, @niyasrad!Added use_host_network param to `get_destination()` (#364) - _Thanks, @niyasrad!_
use_host_network param to get_destination() (#364) - Thanks, @niyasrad!get_colab_cache() helper function (#361)Add performance stats and logging
The lazy record generator `Source.get_records()` can now be configured to normalize field names and ignore undeclared fields.
Source.get_records() can now be configured to normalize field names and ignore undeclared fields. (#359)'.'), e.g. with source-google-ads (#343) - Thanks, @sukantaroy01!Add performance metrics and mb/s tracking
_future_cdk to shared (#354)File-based logging for PyAirbyte sync progress
airbyte.logs module (#352)Add ability to inspect GSM secret labels and save secret contents directly to files
The 0.17.0 version drops Python 3.9 support in order to be compatible with Python 3.10+ libraries. If you require Python 3.9 support, please use PyAir
0.17.0 version drops Python 3.9 support in order to be compatible with Python 3.10+ libraries. If you require Python 3.9 support, please use PyAirbyte <0.17.0 until you are able to upgrade to Python 3.10 or greater. (#340)Add new configurable env var AIRBYTE_TEMP_FILE_CLEANUP
AIRBYTE_TEMP_FILE_CLEANUP (#336)Improve log file handling for connectors
grpcio (temporarily forces downgrade of grpcio) (#334)Add handling for new "generations" feature: default sync IDs, generation IDs, and min generation IDs
_This release makes destinations easier to use by defaulting to Docker-based executors when no other execution or installation method is provided._
This release makes destinations easier to use by defaulting to Docker-based executors when no other execution or installation method is provided.
More readable and more informative progress display during sync operations
Sources based on Docker have been promoted out of experimental status. 🎉
get_source() args now supports docker_image and source_manifest without importing from the airbyte.experimental module. (#294)_This is a very special release of PyAirbyte - all contributions were provided by our community Hackathon participants! A very big thanks to everyone
This is a very special release of PyAirbyte - all contributions were provided by our community Hackathon participants! A very big thanks to everyone who participated in the Hackathon! 🙏
Dataset.to_arrow() and Cache.get_arrow_dataset() (#281) - Thanks, @avirajsingh7!Source.read() (#282) - Thanks, @avirajsingh7!Source.read() (#288) - Thanks, @vspanxcode!Upgrade to Pydantic 2.0 and Airbyte CDK 2.0
Added use_host_network param to get_source(), allowing Docker containers to use host's network (#277) - _Thanks, @niyasrad!_
use_host_network param to get_source(), allowing Docker containers to use host's network (#277) - Thanks, @niyasrad!Add `install_root` argument for get_source(), allowing users to override their virtualenv base path (#268) - _Thanks, @tqtensor!_
install_root argument for get_source(), allowing users to override their virtualenv base path (#268) - Thanks, @tqtensor!get_source(). The YAML source definitions can be provided inline or automatically downloaded, with no need for a separate installation of the source connector. (#175)NO_LIVE_PROGRESS env variable (#271)'airbyte_raw' in PyAirbyte caches (#259)0.9 to new (stable) v1.x version (#269)Resolve failures in is_interactive() check, resolving failures in ASGI runtimes such as FastAPI (#263) - _Thanks, @rshorser!_
is_interactive() check, resolving failures in ASGI runtimes such as FastAPI (#263) - Thanks, @rshorser!Improved column and table normalization logic, which resolves errors that would occur when processing stream names or property names containing specia
Add support for running Docker sources, via a new `airbyte.experimental.get_source()` method. (#209, #230) - _Thanks, @Tarekk!_
airbyte.experimental.get_source() method. (#209, #230) - Thanks, @Tarekk!
#pyairbyte-public-beta channel in the Airbyte Slack.cryptography package. (#234)CatalogManager refactor: decoupling sql processors, caches, and internal sql backend tables for state and catalog tracking. This also enables us to move some of these classes upstream into the CDK, so they can be used for Python destination connectors. (#220)/poetry-lock slash command to streamline version locking in PRs. (#236)New native merge upserts for Snowflake caches, improving performance for load operations
Source.connector_version property to show what version of a connector is installed (#211)Expand default column size for non-integer number fields to DECIMAL (38, 9), resolves issues with too-large number values
number fields to DECIMAL (38, 9), resolves issues with too-large number values (#194)Add `fetch_connector_secret()` convenience method on GoogleGSMSecretManager.
fetch_connector_secret() convenience method on GoogleGSMSecretManager. (#191)0.10.x features. (#190)Install google secrets library as a main dependency (resolves ImportError).
ImportError). (#189)Resolve failures when loading large dataset by running Snowflake PUT queries sequentially (#188) - _Thanks, @SebastienN15!_
PUT queries sequentially (#188) - Thanks, @SebastienN15!parse_json() convenience method on [SecretHandle](file:///Users/ajsteers/Source/PyAirbyte/docs/generated/airbyte/secrets/base.html#SecretHandle) class. (#182)_This release focuses on broadening the vision of PyAirbyte, adding capabilities for Airbyte Cloud users to orchestrate their syncs using PyAirbyte. S
This release focuses on broadening the vision of PyAirbyte, adding capabilities for Airbyte Cloud users to orchestrate their syncs using PyAirbyte. Secrets management is also significantly expanded. Lastly, we improve record parsing of problematic records thanks to a community contribution from @SebastienN15.
CloudWorkspace.run_sync(), which returns a SyncResult object.CachedDataset objects from completed Airbyte Cloud jobs, and read records from those final tables. (Snowflake and BigQuery only.)CustomSecretsManager.GoogleGSMSecretsManager.json parser (#178) - Thanks, @SebastienN15!!_This release adds new metadata fields to all streams, including a unique record ID (_airbyte_raw_id) and timestamp (_airbyte_extracted_at). This rele
This release adds new metadata fields to all streams, including a unique record ID (_airbyte_raw_id) and timestamp (_airbyte_extracted_at). This release also adds a feature to auto-add new columns if they are missing from cache tables.
StreamRecord class and public records module (#166)Adapt BigQuery classes to be able to use default credentials (#157) - _Thanks, @4sushi!_
Resolve issue where case-sensitive column pruning removes real columns
Source.get_records() and Source.read() now use a shared code path for record parsing and name normalization (#161)Fix cases where tables are incorrectly reported as missing in the Postgres cache during read() (#149) - _Thanks, @tinomerl!_
read() (#149) - Thanks, @tinomerl!orjson to last stable version (#152)Resolve issue where read() would fail if it received unexpected/undeclared top-level properties from a source
read() would fail if it received unexpected/undeclared top-level properties from a source (#131)airbyte-cdk dependency to latest version (#137)Add Source.confic_spec property and Source.print_config_spec() method to get and/or print any connector's configuration spec (#80) - _Thanks, @tinomer
Source.confic_spec property and Source.print_config_spec() method to get and/or print any connector's configuration spec (#80) - Thanks, @tinomerl!REPLACE write strategy (#136)Resolve Windows compatibility issues
_This patch release fills in some blind spots of our telemetry, so that we can better understand the user experience and in turn provide better suppor
This patch release fills in some blind spots of our telemetry, so that we can better understand the user experience and in turn provide better support to our users.
langchain-airbyte) (#125)For more information, please see https://docs.airbyte.com/telemetry
Resolves issue where mixed-case stream properties would result in missing data
array types would fail to parse if the subtype definition was invalid (#113)Resolve Python 3.9 compatibility issues
Refactor anonymous usage stats, ensure errors and record counts are properly reported
Your coding agent can read these notes before it upgrades. Set up the MCP server →