Source code for aiida_vasp.workchains.v2.mixins
"""
Some convenience mixins
"""
[docs]
class WithBuilderUpdater:
[docs]
@classmethod
def get_builder_updater(cls, *args, **kwargs):
"""
Return the corresponding builder updater class for the workchain.
The arguments are passed directly to the underling `BuilderUpdater` constructor.
"""
from .common.builder_updater import (
VaspBandUpdater,
VaspBuilderUpdater,
VaspConvUpdater,
VaspHybridBandUpdater,
VaspNEBUpdater,
VaspRelaxUpdater,
)
if cls.__name__ == 'VaspWorkChain':
return VaspBuilderUpdater(*args, **kwargs)
elif cls.__name__ == 'VaspRelaxWorkChain':
return VaspRelaxUpdater(*args, **kwargs)
elif cls.__name__ == 'VaspBandsWorkChain':
return VaspBandUpdater(*args, **kwargs)
elif cls.__name__ == 'VaspHybridBandsWorkChain':
return VaspHybridBandUpdater(*args, **kwargs)
elif cls.__name__ == 'VaspConvergenceWorkChain':
return VaspConvUpdater(*args, **kwargs)
elif cls.__name__ == 'VaspNEBWorkChain':
return VaspNEBUpdater(*args, **kwargs)
raise NotImplementedError('No builder updater found for workchain {}'.format(cls.__name__))