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(' ', ' ')