Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PR: Follow-up to using the requests library for updates #21433

Merged
merged 3 commits into from
Oct 19, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 16 additions & 6 deletions spyder/workers/updates.py
Original file line number Diff line number Diff line change
Expand Up @@ -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__
Expand All @@ -27,16 +27,22 @@
# Logger setup
logger = logging.getLogger(__name__)

CONNECT_ERROR_MSG = _(
'Unable to connect to the Spyder update service.'
'<br><br>Make sure your connection is working properly.'
)

HTTP_ERROR_MSG = _(
'HTTP error {status_code} when checking for updates.'
'<br><br>Make sure your connection is working properly,'
'and try again later.'
)

SSL_ERROR_MSG = _(
'SSL certificate verification failed while checking for Spyder updates.'
'<br><br>Please contact your network administrator for assistance.'
)

CONNECT_ERROR_MSG = _(
'Unable to connect to the internet while checking for Spyder updates.'
'<br><br>Make sure the connection is working properly.'
)


class UpdateDownloadCancelledException(Exception):
"""Download for installer to update was cancelled."""
Expand Down Expand Up @@ -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():
Expand All @@ -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', '<br>').replace(' ', '&nbsp;')
Expand Down
Loading