Skip to content

Changelog

All notable changes to this project are recorded here. The file is maintained by release-please from conventional commit messages.

0.13.1 (2026-10-20)

Documentation

0.13.0 (2026-10-20)

⚠ BREAKING CHANGES

  • Everything after params on job() and task(), after only on run() and start(), and after key on check() is keyword-only. task() gains name=.
  • pytest_databricks_lakeflow.serialise is gone: call run.as_dict(). EphemeralJob.pipelines is pipeline_copies, also as a constructor keyword.
  • Tests that caught LakeflowError for a wrong argument must catch ValueError: a choice outside the listed values, a reserved __pytest_ name, a setup or teardown step the plugin cannot ship, a task_params or for_each_inputs shape, a task_overrides field, a force_conditions outcome, a stub value or output, a trigger value, an environments override, a lint rule name, stop_after longer than its timeout, replay without only, and upstream_from or replay of another job. The teardown_at message reads teardown_at must be one of run, close, got 'x'.

Features

  • add a recipes section to the docs with an "I want to..." index (de95d69)
  • raise ValueError for a wrong argument and LakeflowError for a bundle, job or workspace problem (de95d69)
  • replace serialise(run) with JobRun.as_dict() and EphemeralJob.pipelines with pipeline_copies (de95d69)
  • take the options of job(), task(), run(), start() and check() by keyword (de95d69)

0.12.0 (2026-10-20)

Features

  • add session defaults on Lakeflow for per-call options (#200) (bf20100)
  • add wheel, library, dashed-key and trigger rules to Lakeflow.check (#202) (4f6da3c)
  • close the sweep's notebook and schema gaps and add Lakeflow.sweep() (#204) (0269c70)
  • inline saved queries with saved_queries="inline" so sql_result holds their rows (#206) (8174faf)
  • parse dbt artefacts with dbt_artifacts=True and pass dbt_commands per run (#205) (016c53b)
  • warn once when a workspace overrides PERFORMANCE_OPTIMIZED (#199) (26b6135)

Bug Fixes

  • settle the last for-each and sweep gaps of the backlog pass (#207) (bd39cee)

Documentation

  • say exactly what the sweep leaves for a bundle set up later (#208) (ca221f9)

0.11.0 (2026-10-20)

Features

  • cap active runs per process with --lakeflow-max-concurrent-runs (#194) (8ea383a)
  • collect one check per job template with --lakeflow-check (#193) (264bfce)
  • run a for-each body once with lakeflow.task("job.loop.body", input=...) (#196) (312f56e)
  • surface for-each iterations and stats on TaskRun (#195) (329ba50)

Bug Fixes

  • land the wave 7 and wave 8 review notes (#197) (f429f87)
  • settle the wave 8 for-each gaps: nested task_params, serverless retries in loops and task values that iterations cannot set (#198) (7764d6d)

0.10.0 (2026-10-20)

Features

  • add --lakeflow-live and run(stream=True) to print task progress to the terminal (#185) (03b36be)
  • add Lakeflow.attach(run_id) to rebuild a JobRun from a kept job's run (#186) (be675cf)
  • add teardown_at="close" to run the teardown task when the job closes (fdf6825)
  • refuse an empty dbt command list, keep dbt artefact headers out of report.json and document dbt tasks (#188) (7cffc0d)

Bug Fixes

  • land the wave 6 and wave 7 review notes (#189) (ff08b27)
  • refuse running a disabled task through only= (#190) (725256a)

0.9.0 (2026-10-20)

Features

  • add Lakeflow.check() to lint job templates without running them (#176) (e9fdff8)
  • copy bundle pipelines into a test schema with lakeflow.pipeline() and pipelines="copy" (#178) (be367ef)
  • override for_each_task inputs on the ephemeral copy (#177) (d7b2f8c)
  • simulate trigger context with trigger= on job() and task() (#179) (5a91a4f)

Bug Fixes

  • land the wave 5 and wave 6 review notes (#181) (84dee67)
  • settle the wave 6 bugs in pipeline copies, for-each inputs and trigger references (#182) (be1688b)

0.8.0 (2026-10-20)

Features

  • check permissions and run_as before deploying or creating a copy (#163) (cd5fd42)
  • expose the pipeline update of a pipeline task and cover a full refresh end to end (#161) (a60402d)
  • stub {{tasks.<key>.output.*}} references with Stub(values=, outputs=) (#162) (e76111e)
  • warn when extra_dependencies cannot reach notebook tasks (#167) (ba5b580)
  • write a debug notebook that replays a failed notebook task's resolved parameters (#164) (36cc166)

Bug Fixes

  • file tasks downstream of a disabled task under disabled_tasks and report an all-disabled run honestly (#165) (2e5e011)
  • land the wave 4 and wave 5 review notes and run the integration suite at -n 8 (#170) (6e75576)
  • settle the wave 5 bugs in pipeline, alert and debug notebook reporting and check the host before deploying (#171) (174d65e)
  • spread the workspace client retries of xdist workers that race on the CLI token refresh (#166) (dd2a14e)

Documentation

  • record that a successful saved query task reports no rows (#169) (80cb6f3)

0.7.0 (2026-10-19)

Features

  • accept SQL statements or a notebook file for setup= and teardown= (#153) (09eb4d5)
  • add run(stop_after=) so streaming runs return a cancelled JobRun (#155) (3f5a238)
  • resolve local wheels with extras in extra_dependencies and warn on stale uploads (#154) (90126b4)
  • stub upstream tasks on job() and replay a run's task values into them (#150) (3962ff3)

Bug Fixes

  • land the wave 4 review notes and the wave 3 triage fixes (#156) (3062987)

0.6.0 (2026-10-19)

Features

  • add --lakeflow-report-dir with a report.json per test, raw logs and notebooks (#142) (6513ee2)
  • add task_overrides to job() and task() and lengthen the job timeout for long runs (#145) (aa4f0fb)
  • add task_params to job() and task(), warning on job-parameter collisions (#141) (84bb2f2)
  • widen --lakeflow-sweep to all creators, schemas, notebooks, a dry run, a report and a keep TTL (#144) (9c172d7)

Bug Fixes

  • land the wave 3 review notes and the small fixes from the wave 1 and 2 triage (#147) (67727fe)

0.5.0 (2026-10-19)

Features

  • add per-job serverless environment overrides to job() and task() (#128) (5f9cd3f)
  • add start() and RunHandle, a poll interval and task states on timeout (#130) (3b9ec27)
  • read the rows of a SQL file task into TaskRun.sql_result (#131) (d152151)
  • replay a task test with the task values a previous run captured (#129) (2a8974d)

Bug Fixes

  • validate poll_interval and environment overrides, and land the wave 2 review notes (#132) (9b54e36)

0.4.0 (2026-10-19)

Features

  • add extra_dependencies and a warning for unversioned wheel artifacts (#120) (70b3084)
  • add setup and teardown functions that run on the job's compute (#122) (f3cca22)
  • expose notebook cell outputs and printed text through runs/export (#121) (522c6d5)
  • force an if/else branch in a job copy with force_conditions= (#119) (328476d)

Bug Fixes

  • keep only the stdout stream in notebook stdout and tidy wave 1 review notes (#123) (af2aa78)
  • raise the databricks-sdk floor to 0.100 so alert tasks survive the copy (#118) (7f78c5c)

0.3.0 (2026-10-19)

Features

  • add raise_for_failure, root cause, error code and json output to run results (#76) (0ec51a8)
  • add single_node to run the copy's job clusters on one node (#96) (38e5b3c)
  • add test_marker to declare a __pytest_test_id job parameter on every copy (#99) (1094fb1)
  • build run.task(key).child_run as a JobRun for run job tasks (#97) (425141f)
  • expose condition outcomes and branch states on task and job runs (#87) (02dabe2)
  • expose resolved job and task parameters on run results (#78) (ed7a5fc)
  • expose sql, alert, run-job, dbt, dashboard and clean room task outputs (#90) (54ff46f)
  • expose the timing breakdown and effective performance target (#86) (33909f2)
  • fail clearly on a cli and sdk host mismatch and pass bundle variables (#91) (3964df3)
  • log task state changes while a run is in flight (#88) (8f27f2b)
  • make TaskError.root_cause follow Python chained exceptions (#93) (e73853a)
  • mirror the timeout on the job and expose attempts and timed_out (#82) (0fea9df)
  • pass extra bundle deploy flags and document per-branch test deployments (#89) (ea5d5e1)
  • pass pipeline refresh options through job.run (#94) (4c0b386)
  • pause subscriptions in ephemeral jobs and let tests disable tasks (#84) (ee71149)
  • send an idempotency token, performance_target and queue with run_now (#75) (257a1cd)
  • set permissions on ephemeral jobs and allow run_as to be kept or named (#79) (f3d61d3)
  • show resolved parameters in failure messages and the lakeflow section (#98) (b9eb4cc)
  • tag ephemeral jobs with ci url, user, commit and branch (#80) (47c5570)
  • warn or refuse when a copied job runs a deployed child job (#95) (535c7bf)

Bug Fixes

  • add compute knobs for ephemeral jobs and fix two serverless gaps in sanitise (#83) (6ccd411)
  • read disabled tasks from the job copy and restore the sdk 0.66 floor (#85) (37942ea)
  • read resolved task parameters from each task run (#115) (e454e89)
  • report lakeflow coordinates on every phase and summarise kept jobs (#77) (30a8beb)

Documentation

  • record the code style and test conventions from the simplification pass (#114) (f6dda1f)
  • use Lakeflow variables in the per-branch deployment recipe (#92) (2001268)

0.2.1 (2026-10-18)

Bug Fixes

  • release automatically after the release PR merge (#4) (0d2357f)
  • run the release automation with a GitHub App token (#6) (a257b01)

0.2.0 (2026-10-18)

⚠ BREAKING CHANGES

  • rename task value arguments and attributes (#2)

Features

  • rename task value arguments and attributes (#2) (224d531)

0.1.0 (2026-10-17)

Features

  • First release: job and task tests for Lakeflow Jobs defined in a Databricks Asset Bundle, with temporary schemas, task value stubs and probes, keep and sweep rules, and pytest-xdist support.