# Limite de requisições e retentativa
# Explicação: https://xflowpayments.com/blog/api-pix-python/

import time
from xflow import XflowErro, xflow


def com_retentativa(method, path, tentativas=3, **kwargs):
    for tentativa in range(tentativas):
        try:
            return xflow(method, path, **kwargs)
        except XflowErro as erro:
            if erro.status != 429 or tentativa == tentativas - 1:
                raise
            time.sleep(int(erro.retry_after or 2 ** tentativa))
