class_docstr: Wait strategy that applies exponential backoff and jitter.
  
  It allows for a customized initial wait, maximum wait and jitter.
  
  This implements the strategy described here:
  https://cloud.google.com/storage/docs/retry-strategy
  
  The wait time is min(initial * 2**n + random.uniform(0, jitter), maximum)
  where n is the retry count.
class_docstr_tok: ["Wait","strategy","that","applies","exponential","backoff","and","jitter",".","It","allows","for","a","customized","initial","wait",",","maximum","wait","and","jitter",".","This","implements","the","strategy","described","here",":","https",":","\/\/cloud.google.com\/storage\/docs\/retry-strategy","The","wait","time","is","min","(","initial","*","2","*","*","n","+","random.uniform","(","0",",","jitter",")",",","maximum",")","where","n","is","the","retry","count","."]
code: def __call__(self, retry_state: "RetryCallState") -> float:
      jitter = random.uniform(0, self.jitter)
      try:
          exp = self.exp_base ** (retry_state.attempt_number - 1)
          result = self.initial * exp + jitter
      except OverflowError:
          result = self.max
      return max(0, min(result, self.max))
  
imports: import abc
  import random
  import typing
  from tenacity import _utils
label_desc: Use image node_id 2 for calling the wait_exponential_jitter obj's underlying member method code with example usage: obj.__call__(retry_state) and returns: max