diff --git a/spyder/workers/updates.py b/spyder/workers/updates.py index 7c3fe1ae962..2b1a914e7f0 100644 --- a/spyder/workers/updates.py +++ b/spyder/workers/updates.py @@ -14,7 +14,7 @@ # Third party imports from qtpy.QtCore import QObject, Signal import requests -from requests.adapters import ConnectionError, SSLError +from requests.exceptions import ConnectionError, HTTPError, SSLError # Local imports from spyder import __version__ @@ -27,16 +27,22 @@ # Logger setup logger = logging.getLogger(__name__) +CONNECT_ERROR_MSG = _( + 'Unable to connect to the Spyder update service.' + '

Make sure your connection is working properly.' +) + +HTTP_ERROR_MSG = _( + 'HTTP error {status_code} when checking for updates.' + '

Make sure your connection is working properly,' + 'and try again later.' +) + SSL_ERROR_MSG = _( 'SSL certificate verification failed while checking for Spyder updates.' '

Please contact your network administrator for assistance.' ) -CONNECT_ERROR_MSG = _( - 'Unable to connect to the internet while checking for Spyder updates.' - '

Make sure the connection is working properly.' -) - class UpdateDownloadCancelledException(Exception): """Download for installer to update was cancelled.""" @@ -121,6 +127,7 @@ def start(self): try: logger.debug(f"Checking for updates from {self.url}") page = requests.get(self.url) + page.raise_for_status() data = page.json() if is_pynsist() or running_in_mac_app(): @@ -146,6 +153,9 @@ def start(self): except ConnectionError as err: error_msg = CONNECT_ERROR_MSG logger.debug(err, stack_info=True) + except HTTPError as err: + error_msg = HTTP_ERROR_MSG.format(page.status_code) + logger.debug(err, stack_info=True) except Exception as err: error = traceback.format_exc() formatted_error = error.replace('\n', '
').replace(' ', ' ')