From d920f777139d5396b3be42c082df59a77fd7cd1c Mon Sep 17 00:00:00 2001 From: Peter Schorn Date: Wed, 11 Nov 2020 17:44:05 -0600 Subject: [PATCH] Suppress warnings when cache path does not exist. (#608) * Added an exception clause that catches `FileNotFoundError` and logs a debug message in `SpotifyOAuth.get_cached_token`, `SpotifyPKCE.get_cached_token` and `SpotifyImplicitGrant.get_cached_token`. * Changed docs for `auth` parameter of `Spotify.init` to `access token` instead of `authorization token`. In issue #599, a user confused the access token with the authorization code. * Updated CHANGELOG.md * Removed `FileNotFoundError` because it does not exist in python 2.7 (*sigh*) and replaced it with a call to `os.path.exists`. * Replaced ` os.path.exists` with `error.errno == errno.ENOENT` to supress errors when the cache file does not exist. --- CHANGELOG.md | 3 +++ spotipy/client.py | 2 +- spotipy/oauth2.py | 25 ++++++++++++++++--------- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 010cc74..af8ed08 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased ### Changed + - moved os.remove(session_cache_path()) inside try block to avoid TypeError on app.py example file +- A warning will no longer be emitted when the cache file does not exist at the specified path +- The docs for the `auth` parameter of `Spotify.init` use the term "access token" instead of "authorization token" ## [2.16.1] - 2020-10-24 diff --git a/spotipy/client.py b/spotipy/client.py index fbb719a..6b0d97f 100644 --- a/spotipy/client.py +++ b/spotipy/client.py @@ -114,7 +114,7 @@ class Spotify(object): """ Creates a Spotify API client. - :param auth: An authorization token (optional) + :param auth: An access token (optional) :param requests_session: A Requests session object or a truthy value to create one. A falsy value disables sessions. diff --git a/spotipy/oauth2.py b/spotipy/oauth2.py index 802e58b..c2eb8d6 100644 --- a/spotipy/oauth2.py +++ b/spotipy/oauth2.py @@ -11,6 +11,7 @@ __all__ = [ ] import base64 +import errno import json import logging import os @@ -305,9 +306,11 @@ class SpotifyOAuth(SpotifyAuthBase): token_info = self.refresh_access_token( token_info["refresh_token"] ) - - except IOError: - logger.warning("Couldn't read cache at: %s", self.cache_path) + except IOError as error: + if error.errno == errno.ENOENT: + logger.debug("cache does not exist at: %s", self.cache_path) + else: + logger.warning("Couldn't read cache at: %s", self.cache_path) return token_info @@ -784,9 +787,11 @@ class SpotifyPKCE(SpotifyAuthBase): token_info = self.refresh_access_token( token_info["refresh_token"] ) - - except IOError: - logger.warning("Couldn't read cache at: %s", self.cache_path) + except IOError as error: + if error.errno == errno.ENOENT: + logger.debug("cache does not exist at: %s", self.cache_path) + else: + logger.warning("Couldn't read cache at: %s", self.cache_path) return token_info @@ -1029,9 +1034,11 @@ class SpotifyImplicitGrant(SpotifyAuthBase): if self.is_token_expired(token_info): return None - - except IOError: - logger.warning("Couldn't read cache at: %s", self.cache_path) + except IOError as error: + if error.errno == errno.ENOENT: + logger.debug("cache does not exist at: %s", self.cache_path) + else: + logger.warning("Couldn't read cache at: %s", self.cache_path) return token_info