class_docstr: Base Rate Limiter class for both sync and async versions.
code: def __init__(
      self,
      *,
      min_delay_seconds,
      max_retries,
      swallow_exceptions,
      return_value_on_exception,
  ):
      self.min_delay_seconds = min_delay_seconds
      self.max_retries = max_retries
      self.swallow_exceptions = swallow_exceptions
      self.return_value_on_exception = return_value_on_exception
      assert max_retries >= 0
  
      # State:
      self._lock = threading.Lock()
      self._last_call = None
  
imports: import asyncio
  import inspect
  import threading
  from itertools import chain, count
  from time import sleep
  from timeit import default_timer
  from geopy.exc import GeocoderServiceError
  from geopy.util import logger
label_desc: Use image node_id 1 to create a new BaseRateLimiter object  with example: obj = BaseRateLimiter()