********************************************************************
* **touch_files_only** option for **pipeline_run**
When the pipeline runs, task functions will not be run. Instead, the output files for
each job (in each task) will be ``touch``\ -ed if necessary.
This can be useful for simulating a pipeline run so that all files look as
if they are up-to-date.
Caveats:
* This may not work correctly where output files are only determined at runtime, e.g. with **split**
* Only the output from pipelined jobs which are currently out-of-date will be ``touch``\ -ed.
In other words, the pipeline runs *as normal*, the only difference is that the
output files are ``touch``\ -ed instead of being created by the python task functions
which would otherwise have been called.
* Parameter substitution for **inputs(...)**
The **inputs(...)** parameter in **transform**, **collate** can now take tasks and ``glob`` s,
and these will be expanded appropriately (after regular expression replacement).
For example::
transform("dir/a.input", regex(r"(.*)\/(.+).input"),
inputs((r"\1/\2.other", r"\1/*.more")), r"elsewhere/\2.output")
def task1(i, o):
"""
Some pipeline task
"""
Is equivalent to calling::
task1(("dir/a.other", "dir/1.more", "dir/2.more"), "elsewhere/a.output")
\
Here::
r"\1/*.more"
is first converted to::
r"dir/*.more"
which matches::
"dir/1.more"
"dir/2.more"
********************************************************************