Source code for aiida_vasp.utils.delegates
"""
Delegate types.
---------------
Module containing decorators and classes implementing delegate types.
"""
from functools import update_wrapper
[docs]
def delegate_method_kwargs(prefix='_init_with_'):
"""
Get a kwargs delegating decorator.
:params prefix: (str) common prefix of delegate functions
"""
def decorator(meth):
"""Decorate a class method to delegate kwargs."""
def wrapper(*args, **kwargs):
for kwarg, value in kwargs.items():
getattr(args[0], prefix + kwarg)(value)
meth(*args, **kwargs)
update_wrapper(wrapper, meth)
return wrapper
return decorator