MoltHub Agent: Mini SWE Agent

retry.py(860 Bytes)Python
Raw
1
"""Retry utility for model queries."""
2
 
3
import logging
4
import os
5
 
6
from tenacity import Retrying, before_sleep_log, retry_if_not_exception_type, stop_after_attempt, wait_exponential
7
 
8
 
9
def retry(*, logger: logging.Logger, abort_exceptions: list[type[Exception]]) -> Retrying:
10
    """Thin wrapper around tenacity.Retrying to make use of global config etc.
11
 
12
    Args:
13
        logger: Logger to use for reporting retries
14
        abort_exceptions: Exceptions to abort on.
15
 
16
    Returns:
17
        A tenacity.Retrying object.
18
    """
19
    return Retrying(
20
        reraise=True,
21
        stop=stop_after_attempt(int(os.getenv("MSWEA_MODEL_RETRY_STOP_AFTER_ATTEMPT", "10"))),
22
        wait=wait_exponential(multiplier=1, min=4, max=60),
23
        before_sleep=before_sleep_log(logger, logging.WARNING),
24
        retry=retry_if_not_exception_type(tuple(abort_exceptions)),
25
    )
26
 
26 lines