From b3f308d2894d0d90538d5dc604a648ad1a9ca849 Mon Sep 17 00:00:00 2001 From: Shawn Cruz Date: Sun, 12 Feb 2023 17:58:55 -0500 Subject: [PATCH] Add encoder_cls argument to CacheFileHandler (#941) Fixes --- CHANGELOG.md | 2 ++ spotipy/cache_handler.py | 9 ++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f1f7617..76d4879 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +- Added optional `encoder_cls` argument to `CacheFileHandler`, which overwrite default encoder for token before writing to disk + ### Added ### Fixed diff --git a/spotipy/cache_handler.py b/spotipy/cache_handler.py index 2645f25..9a6d703 100644 --- a/spotipy/cache_handler.py +++ b/spotipy/cache_handler.py @@ -50,15 +50,18 @@ class CacheFileHandler(CacheHandler): def __init__(self, cache_path=None, - username=None): + username=None, + encoder_cls=None): """ Parameters: * cache_path: May be supplied, will otherwise be generated (takes precedence over `username`) * username: May be supplied or set as environment variable (will set `cache_path` to `.cache-{username}`) + * encoder_cls: May be supplied as a means of overwriting the + default serializer used for writing tokens to disk """ - + self.encoder_cls = encoder_cls if cache_path: self.cache_path = cache_path else: @@ -88,7 +91,7 @@ class CacheFileHandler(CacheHandler): def save_token_to_cache(self, token_info): try: f = open(self.cache_path, "w") - f.write(json.dumps(token_info)) + f.write(json.dumps(token_info, cls=self.encoder_cls)) f.close() except IOError: logger.warning('Couldn\'t write token to cache at: %s',