code: def check_for_error(func):
      
  
      @functools.wraps(func)
      def wrapper(*args, **kwargs):
          try:
              response = func(*args, **kwargs)
              status_code = response.status_code
              if status_code in range(200, 204):
                  return response
              if status_code == 204:
                  return
              data = response.json()
              e = {
                  400: BadRequest,
                  401: Unauthorized,
                  403: Forbidden,
                  404: NotFound,
                  405: MethodNotAllowed,
                  408: RequestTimeout,
                  409: Conflict,
                  429: TooManyRequests,
                  500: ServerError,
                  503: ServiceUnavailable,
              }.get(status_code, SbgError)()
              if 'message' in data:
                  e.message = data['message']
              if 'code' in data:
                  e.code = data['code']
              if 'status' in data:
                  e.status = data['status']
              if 'more_info' in data:
                  e.more_info = data['more_info']
              raise e
          except requests.RequestException as e:
              raise SbgError(message=six.text_type(e))
          except JSONDecodeError:
              message = (
                  'Service might be unavailable. Can also occur by providing '
                  'too many query parameters.'
              )
              raise_from(
                  ServiceUnavailable(message=six.text_type(message)), None
              )
          except ValueError as e:
              raise SbgError(message=six.text_type(e))
  
      return wrapper
docs: Executes the wrapped function and inspects the response object
      for specific errors.