Source code for aiida_wannier90_workflows.utils.workflows
"""Utility functions for manipulating nodes."""
from aiida import orm
[docs]def get_last_calcjob(workchain: orm.WorkChainNode) -> orm.CalcJobNode:
"""Return the last CalcJob of a WorkChain."""
calcs = []
for called_descendant in workchain.called_descendants:
if not isinstance(called_descendant, orm.CalcJobNode):
continue
calcs.append(called_descendant)
if len(calcs) == 0:
return None
# Sort by PK to get latest calcjob
calcs.sort(key=lambda _: _.pk)
last_calcjob = calcs[-1]
return last_calcjob