"""Exception utils.""" import json def raise_exception( exception_class, *exception_class_args, **exception_class_kwargs): """Raise an exception.""" raise exception_class(*exception_class_args, **exception_class_kwargs) def reraise_exception(e): """Re-raise an exception.""" raise e class RetryableError(Exception): """RetryableError.""" pass def raise_exception_if_request_failed( request_params, response_status=None, response_text=None, response=None, ): """Raise exception if request failed.""" if response is not None: response_status = response.status_code if response_status in range(200, 300): return if response is not None: response_text = response.text if response_status in [401, *range(500, 600)]: raise_exception( RetryableError, json.dumps({ 'request_params': request_params, 'response_status': response_status, 'response_text': response_text })) return raise_exception( Exception, json.dumps({ 'request_params': request_params, 'response_status': response_status, 'response_text': response_text })) return