dlt 1.31.0 Release Notes Breaking Changes 1. pendulum helpers removed from dlt.common.time; pendulum>=3 required (#4033 @rudolfix) - What changed: the minimum pendulum is now 3.0.0 on all Python versions. dlt still works with pendulum as before. documented usage and pendulum helpers work. Internally pendulum is not used.
dlt 1.30.0 Release Notes Breaking Changes Failed load packages no longer auto-abort ( #3557 @anuunchin ) , auto_abort_on_terminal_error defaults to False . With raise_on_failed_jobs=True the job is now retried and you get a LoadClientJobTerminalRetry instead of LoadClientJobFailed , and the package stays pending.
dlt 1.29.1 Release Notes Core Library Add instance requirement spec for jobs ( #4262 @tetelio ) , Jobs can now declare runner instance requirements via require.instance (an open Dict[str, Any] , e.g. {"size": "medium"} ). The legacy machine key is deprecated , it still works and serializes, but now emits a DltDeprecationWarning pointing to instance .
dlt 1.29.0 Release Notes Highlights ClickHouse staging-optimized replace strategy ( #3927 @filipesilva ) , ClickHouse now supports the staging-optimized replace strategy, performing atomic table swaps via EXCHANGE TABLES so a full replace is instantaneous and never leaves the destination in a half-loaded state.
dlt 1.28.1 Release Notes Python 3.9 EOL Dropped Python 3.9 support ( #4074 @Travior ) , Python 3.9 reached end-of-life on 2025-10-31. dlt no longer tests against or advertises support for 3.9. The ruff / mypy target versions were bumped accordingly. Users still on 3.9 must upgrade to 3.10+ to use this release.
dlt 1.28.0 Release Notes Breaking Changes refresh="drop_data" on Delta and persistent-catalog Iceberg no longer frees storage ( #4051 @rudolfix ) , Truncation is now a transactional delete that keeps the table, schema, version history, and data files (retained for time travel until vacuum ). Previously the files were deleted.