Source code for core_mixins.decorators.repeat
# -*- coding: utf-8 -*-
"""Repeat decorator for executing functions multiple times."""
from functools import wraps
from typing import Callable, Optional
[docs]
def repeat(fcn: Optional[Callable] = None, *, times: int = 2) -> Callable:
"""
Repeat n times the function and return the list of returned values...
:param fcn: The function being decorated.
:type fcn: Callable
:param times: Number of times the function will be invoked.
:type times: int
:return: The wrapped function.
:rtype: Callable
"""
def decorator_repeat(func):
@wraps(func)
def wrapper_repeat(*args, **kwargs):
values = []
for _ in range(times):
values.append(func(*args, **kwargs))
return values
return wrapper_repeat
if not fcn:
return decorator_repeat
return decorator_repeat(fcn)