コード例 #1
0
def make_retry_state(previous_attempt_number,
                     delay_since_first_attempt,
                     last_result=None):
    """Construct RetryCallState for given attempt number & delay.

    Only used in testing and thus is extra careful about timestamp arithmetics.
    """
    required_parameter_unset = (previous_attempt_number is _unset
                                or delay_since_first_attempt is _unset)
    if required_parameter_unset:
        missing = []
        if previous_attempt_number is _unset:
            missing.append('previous_attempt_number')
        if delay_since_first_attempt is _unset:
            missing.append('delay_since_first_attempt')
        missing_str = ', '.join(repr(s) for s in missing)
        raise TypeError('wait func missing parameters: ' + missing_str)

    from tenacity import RetryCallState
    retry_state = RetryCallState(None, None, (), {})
    retry_state.attempt_number = previous_attempt_number
    if last_result is not None:
        retry_state.outcome = last_result
    else:
        retry_state.set_result(None)
    # Ensure outcome_timestamp - start_time is *exactly* equal to the delay to
    # avoid complexity in test code.
    retry_state.start_time = Fraction(retry_state.start_time)
    retry_state.outcome_timestamp = (retry_state.start_time +
                                     Fraction(delay_since_first_attempt))
    assert retry_state.seconds_since_start == delay_since_first_attempt
    return retry_state
コード例 #2
0
ファイル: compat.py プロジェクト: tyong920/tenacity
 def new_fn(self, attempt=_unset, retry_state=None):
     if retry_state is None:
         from tenacity import RetryCallState
         if attempt is _unset:
             raise _make_unset_exception('retry', attempt=attempt)
         retry_state_passed_as_non_kwarg = (
             attempt is not _unset and
             isinstance(attempt, RetryCallState))
         if retry_state_passed_as_non_kwarg:
             retry_state = attempt
         else:
             warn_about_dunder_non_retry_state_deprecation(fn, stacklevel=2)
             retry_state = RetryCallState(None, None, (), {})
             retry_state.outcome = attempt
     return fn(self, retry_state=retry_state)
コード例 #3
0
def _make_wait_call_state(previous_attempt_number,
                          delay_since_first_attempt,
                          last_result=None):
    required_parameter_unset = (previous_attempt_number is _unset
                                or delay_since_first_attempt is _unset)
    if required_parameter_unset:
        missing = []
        if previous_attempt_number is _unset:
            missing.append('previous_attempt_number')
        if delay_since_first_attempt is _unset:
            missing.append('delay_since_first_attempt')
        missing_str = ', '.join(repr(s) for s in missing)
        raise TypeError('wait func missing parameters: ' + missing_str)

    from tenacity import RetryCallState
    call_state = RetryCallState(None, (), {})
    call_state.attempt_number = previous_attempt_number
    call_state.outcome_timestamp = (call_state.start_time +
                                    delay_since_first_attempt)
    call_state.outcome = last_result
    return call_state
コード例 #4
0
ファイル: compat.py プロジェクト: tyong920/tenacity
def make_retry_state(previous_attempt_number, delay_since_first_attempt,
                     last_result=None):
    """Construct RetryCallState for given attempt number & delay.

    Only used in testing and thus is extra careful about timestamp arithmetics.
    """
    required_parameter_unset = (previous_attempt_number is _unset or
                                delay_since_first_attempt is _unset)
    if required_parameter_unset:
        raise _make_unset_exception(
            'wait/stop',
            previous_attempt_number=previous_attempt_number,
            delay_since_first_attempt=delay_since_first_attempt)

    from tenacity import RetryCallState
    retry_state = RetryCallState(None, None, (), {})
    retry_state.attempt_number = previous_attempt_number
    if last_result is not None:
        retry_state.outcome = last_result
    else:
        retry_state.set_result(None)
    _set_delay_since_start(retry_state, delay_since_first_attempt)
    return retry_state
コード例 #5
0
 def retry_state(self):
     retry_state = RetryCallState(object(), lambda x: x, (), {})
     retry_state.outcome = Future(attempt_number=1)
     return retry_state