dlt 1.29.1 Release Notes
Core Library
- Add
instancerequirement spec for jobs (#4262 @tetelio) — Jobs can now declare runner instance requirements viarequire.instance(an openDict[str, Any], e.g.{"size": "medium"}). The legacymachinekey is deprecated — it still works and serializes, but now emits aDltDeprecationWarningpointing toinstance. Fully backward compatible. - Fix: use case-sensitive identifiers in sqlglot schema (#4269 @rudolfix) — sqlglot 30.13.0 began case-folding identifiers in more cases; case folding is now explicitly prevented when building the sqlglot schema.
- Fix: preserve REST paginator stop conditions on
has_more=true(#4227 @mattfaltyn) — An API returninghas_more=truecan no longer re-enable a paginator that already hit a stop condition (maximum_offset/maximum_page, response total, or a missing cursor), preventing requests past a hard limit or without a valid cursor. Fixes #4225. - Fix: handle non-scalar total in REST range paginator (#4186 @anxkhn) — A
total_pathresolving to a JSON object or array now raises the paginator's clear "not an integer"ValueErrorinstead of escaping as an opaqueTypeError. - Fix: allow JWT auth without scopes (#4235 @mattfaltyn) —
OAuthJWTAuthwith the defaultscopes=Noneno longer raisesTypeError; thescopeclaim is omitted when no scopes are configured. Fixes #4234. - Fix: pass load id column name to
remove_columnsas a sequence (#4241 @chuenchen309) —add_dlt_load_id_columnno longer dropsRecordBatchcolumns whose name is a substring of_dlt_load_id(e.g.id,load), which previously produced silent NULLs or a crash. Fixes #4240.
Docs
- Replace dead playground link in README with the dlt + Hugging Face marimo notebook demo (#4267 @elviskahoro)
- Remove an outdated IP address from the docs (#4238 @VioletM)
Chores
- fix(ci): preserve dependency resolution across test jobs (#4264 @Travior) — Propagates matrix resolution settings via
UV_SYNC_ARGS, preventsuv runfrom resyncing prepared CI environments (UV_NO_SYNC), bumps the GitPython minimum, and keeps the SQLGlot compatibility test green across versions. - test(ci): rerun remote destinations on transient connection errors (#4243 @burnash) — Widens
pytest-rerunfailuresfilters so transient ODBC/Azure SQL and Databricks connection errors get retried instead of failing the run, while benign assertion failures still fail fast.
New Contributors
- @chuenchen309 made their first contribution in #4241
- @anxkhn made their first contribution in #4186