Source code for aiida_vasp.workchains.v2.mixins
"""
Some convenience mixins
"""
# ruff: noqa: PLC0415
from __future__ import annotations
import warnings
from typing import Any
[docs]
class WithBuilderUpdater:
[docs]
@classmethod
def get_builder_updater(cls, *args: Any, **kwargs: Any) -> Any:
"""
Return the corresponding builder updater class for the workchain.
The arguments are passed directly to the underling `BuilderUpdater` constructor.
"""
warnings.warn(
'The BuilderUpdater functionality is deprecated and will be removed in a future version. '
'Please use the InputGenerator classes from `aiida_vasp.protocols.generator` instead. '
'Example: from aiida_vasp.protocols.generator import VaspInputGenerator',
DeprecationWarning,
stacklevel=2,
)
from aiida_vasp.common.builder_updater import (
VaspBandUpdater,
VaspBuilderUpdater,
VaspConvUpdater,
VaspHybridBandUpdater,
VaspMultiStageRelaxUpdater,
VaspNEBUpdater,
VaspRelaxUpdater,
)
if cls.__name__ == 'VaspWorkChain':
return VaspBuilderUpdater(*args, **kwargs)
elif cls.__name__ == 'VaspRelaxWorkChain':
return VaspRelaxUpdater(*args, **kwargs)
elif cls.__name__ == 'VaspMultiStageRelaxWorkChain':
return VaspMultiStageRelaxUpdater(*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__))