Description
The templating feature currently admits little flexibility for stage keys (e.g. deps
) that expect lists. As a result, foreach
stages cannot be given a variable number of dependencies. Causing lists to be flattened would make templating more powerful. For example, you could give extra dependencies to certain templated stages:
stages:
build:
foreach:
us:
deps:
uk:
deps:
- uk_data
do:
cmd: myscript ${key}
deps:
- myscript
- ${item.deps}
I have implemented the change at https://github.com/itcarroll/dvc/blob/feature/flattened-deps/dvc/dependency/__init__.py#L52, by (non-recursive) list flattening in dvc.dependency.loads_from
. I am sure it's not the right way to do it, and probably has unintended consequences, but it demonstrates the concept (and no tests failed).
I don't know how templating responds to missing keys, but not having to include the empty list for us
would be even more better.