Очевидно, что решение состоит в том, чтобы использовать rules.some_rule_one.output[0]
и rules.some_rule_two.output[0]
.
Однако, если выходы some_rule
названы, они могут использоваться как есть.
rule some_rule_one:
input: 'some_input_one'
output: 'some_output_one'
shell: ...
rule some_rule_two:
input: 'some_input_two'
output:
foo = 'some_output_two'
shell: ...
rule my_rule:
input:
in_one = rules.some_rule_one.output[0],
in_two = rules.some_rule_two.output.foo,
output: some_output
run:
with open(input.in_one, 'rt') as f:
## do_something
Возможно, просто для интереса, это не проблема, когда my_rule
использует shell:
вместо run:
, то есть rules.some_rule_one.output
будет отлично работать с shell: