Resets all unlocked steps of a pipeline (or a subset of steps defined by a
view) to state "new" and clears their outputs, so a subsequent
pip_run() re-executes the cleaned steps from scratch.
Any pending restart counters are cleared, but parameters, tags, and
locked flags are left unchanged.
Details
Locked steps are skipped: their state and output are preserved. If all selected steps are locked, a warning is issued and nothing is changed.
Examples
p <- pip_new() |>
pip_add("load", \(n = 3) seq_len(n)) |>
pip_add("square", \(x = ~load) x^2)
pip_run(p)
#> info [2026-10-02 18:37:07.730 UTC]: Starting run of pipeflow 'pipe'
#> info [2026-10-02 18:37:07.730 UTC]: Step 1/2 load
#> info [2026-10-02 18:37:07.731 UTC]: Step 2/2 square
#> info [2026-10-02 18:37:07.732 UTC]: Finished run of pipeflow 'pipe'
p[["state"]] # "done", "done"
#> load square
#> "done" "done"
# Locked steps keep their state and output when resetting
pip_lock(pip_view(p, step = "square"))
pip_reset(p)
p
#> <pipeflow> pipe (2 steps)
#> -------------------------
#> step params depends state out locked
#> 1: load n new [NULL] FALSE
#> 2: square x load done 1,4,9 TRUE
#> -------------------------
#> <ready> last run: never
p[["state"]] # "new", "done"
#> load square
#> "new" "done"
p[["out"]] # NULL, (x^2 result)
#> $load
#> NULL
#>
#> $square
#> [1] 1 4 9
#>
pip_unlock(p)
pip_reset(p)
p
#> <pipeflow> pipe (2 steps)
#> -------------------------
#> step params depends state
#> 1: load n new
#> 2: square x load new
#> -------------------------
#> <ready> last run: never
p[["state"]] # "new", "new"
#> load square
#> "new" "new"
p[["out"]] # NULL, NULL
#> $load
#> NULL
#>
#> $square
#> NULL
#>
