aiidateam / aiida-workgraph

Efficiently design and manage flexible workflows with AiiDA, featuring an interactive GUI, checkpoints, provenance tracking, and remote execution capabilities.
https://aiida-workgraph.readthedocs.io/en/latest/
MIT License
10 stars 5 forks source link

Pass list of names for task input/output directly #343

Closed GeigerJ2 closed 1 week ago

GeigerJ2 commented 1 week ago

So far, one would always have to pass a list of dictionaries, specifying at least the "name" identifier to a Tasks inputs/outputs, such as:

SeekpathTask = build_task(
    seekpath_structure_analysis,
    outputs=[
        {"name": "primitive_structure"},
        {"name": "explicit_kpoints"},
    ],
)

With this PR, it is now possible to just directly specify a list of strings, which will internally be automatically converted to a list of dictionaries, with the "name" key assigned to it. With this, it is now possible to write the above function call shorter, as:

SeekpathTask = build_task(
    seekpath_structure_analysis,
    outputs=["primitive_structure", "explicit_kpoints"]
)

To avoid confusion, I only allow either a list of str, or a list of dict, but not of mixed types. I added tests for the validate_task_inout function, as well as one test for the full call to build_graph.