human
Complete this python program:
def catch_exceptions_if_in_safe_mode(function):
assistant
#Here is the Python code you requested.

    """New implementation of safe_mode. We catch all exceptions at the API level
    and then return a blank Response object with the error field filled. This decorator
    wraps request() in api.py.
    """
    def wrapped(method, url, **kwargs):
        if ((kwargs.get('config') and kwargs.get('config').get('safe_mode')) or (kwargs.get('session') and kwargs.get('session').config.get('safe_mode'))):
            try:
                return function(method, url, **kwargs)
            except (RequestException, ConnectionError, HTTPError, socket.timeout, socket.gaierror) as e:
                r = Response()
                r.error = e
                r.raw = HTTPResponse()
                r.status_code = 0
                return r
        return function(method, url, **kwargs)
    return wrapped