'''
Trying to be declarative, but then workflow.add(...) might need to be
workflow.jobs(Job(...)) to be consistent. Don't like how the function names
aren't verbs.
'''
job = workflow.add(Job(transformation, arguments))\
.profiles(namespace, "key", "value")\
.metadata({"time": "60"})\
.metadata({"key": "value"})\
.hooks(ShellHook(args))\
.inputs(a)\
.outputs(b1, b2, stage_out=True)
'''
Verbose, explicitly stating operations on job.
The following two assignments are the same.
'''
job = workflow.add_job(transformation, arguments...)\
.add_profile(namespace, "key", "value")\
.add_metadata(**{"time": "60", "key": "value"})\
.add_shell_hook(args)\
.add_inputs(a)\
.add_outputs(b1, b2, stage_out=True)
job = workflow.add_job(Job(transformation, args))\
.add_profile(Profile(namespace, "key", "value"))\
.add_metadata(*[Metadata("time", "60"), Metadata("key", "value")])\
.add_shell_hook(args)\
.add_inputs(a)\
.add_outputs(b1, b2, stage_out=True)
'''
List/Set semantics.Can't chain as job.<member>.add(something) won't
return back a ref to the job (unless we make it but that would look awkward)
'''
job = workflow.add(Job(transformation, arguments))
# List semantics for (job.profiles.add(namespace, "key", "value")args)
job.arguments.append("A")
job.metadataarguments.addextend({ ["timeA":, "60"}B"] )
# Set semantics for (job.profiles)
job.metadataprofiles.add({namespace, "key":, "value"})
# Dict semantics for job.hooks.add(ShellHook(args))
job.inputs.add(a)
job.outputs.add(b1, {<namespace>,metadata}.*
job.env.key = "value"
job.env["key"] = "value"
job.env.update( {"key1": "value1", "key2": "value2"} )
job.metadata.add({"time": "60"})
job.metadata.add({"key": "value"})
job.hooks.add(ShellHook(args))
job.inputs.add(a)
job.outputs.add(b1, b2, stage_out=True)
|