def __new__(cls, *args, **kwargs):
self = super(Tasks, cls).__new__(cls)
for attr in dir(cls):
attr_value = getattr(cls, attr)
if is_task_object(attr_value):
task_decorator = fab.task(
default=attr_value.is_default,
name=attr_value.name,
aliases=attr_value.aliases,
task_class=attr_value.__class__,
)
bounded_task = functools.partial(attr_value.wrapped, self)
task = task_decorator(functools.wraps(attr_value)(bounded_task))
for wrapped_attr in [
'parallel',
'serial',
'pool_size',
'hosts',
'roles',
]:
if hasattr(attr_value.wrapped, wrapped_attr):
setattr(
task.wrapped,
wrapped_attr,
getattr(attr_value.wrapped, wrapped_attr),
)
setattr(self, attr, task)
return self
评论列表
文章目录