Releases: spotipy-dev/spotipy
Releases · spotipy-dev/spotipy
2.25: Deprecated methods & misc. updates
Added
- Added unit tests for queue functions
- Added detailed function docstrings to 'util.py', including descriptions and special sections that lists arguments, returns, and raises.
- Updated order of instructions for Python and pip package manager installation in TUTORIAL.md
- Updated TUTORIAL.md instructions to match current layout of Spotify Developer Dashboard
- Added test_artist_id, test_artist_url, and test_artists_mixed_ids to non_user_endpoints test.py
- Added rate/request limit to FAQ
- Added custom
urllib3.Retry
class for printing a warning when a rate/request limit is reached. - Added
personalized_playlist.py
,track_recommendations.py
, andaudio_features_analysis.py
to/examples
. - Discord badge in README
- Added
SpotifyBaseException
and moved all exceptions toexceptions.py
- Marked the following methods as deprecated:
- artist_related_artists
- recommendations
- audio_features
- audio_analysis
- featured_playlists
- category_playlists
- Added FAQ entry for inaccessible playlists
Fixed
- Audiobook integration tests
- Edited docstrings for certain functions in client.py for functions that are no longer in use and have been replaced.
current_user_unfollow_playlist()
now supports playlist IDs, URLs, and URIs rather than previously where it only supported playlist IDs.
Removed
mock
no longer listed as a test dependency. Only built-inunittest.mock
is actually used.
Full Changelog: 2.24.0...2.25.0
2.24: Audiobooks support
Added
- Added
MemcacheCacheHandler
, a cache handler that stores the token info using pymemcache. - Added support for audiobook endpoints:
get_audiobook
,get_audiobooks
, andget_audiobook_chapters
. - Added integration tests for audiobook endpoints.
- Added
update
field tocurrent_user_follow_playlist
.
Changed
- Fixed error obfuscation when Spotify class is being inherited and an error is raised in the Child's
__init__
- Replaced
artist_albums(album_type=...)
withartist_albums(include_groups=...)
due to an API change. - Updated
_regex_spotify_url
to ignore/intl-<countrycode>
in Spotify links - Improved README, docs and examples
Fixed
- Readthedocs build
- Split
test_current_user_save_and_save_tracks
unit test
Full Changelog: 2.23.0...2.24.0
2.23: Misc. updates
Added
- Added optional
encoder_cls
argument toCacheFileHandler
, which overwrite default encoder for token before writing to disk #941 by @shawncruz - Integration tests for searching multiple types in multiple markets (non-user endpoints) #901 by @rngolam
- Publish to PyPI action #958 by @stephanebruckert
Fixed
2.22.1: CVE-2023-23608
Fixed
- CVE-2023-23608: fixed path traversal vulnerability that may lead to type confusion in URI handling code. Can prevent a potential XSS attack.
- Upgrade if your app is user-facing and it allows user inputs for any type of Spotify IDs/URIs/URLs that may be forwarded to the Spotify API. Thanks to @Shaderbug for finding and fixing this bug b1db0b6
Changed
- Modified docstring for deprecated
playlist_add_items()
to accept "only URIs or URLs", with intended fix for IDs in v3.
2.22: Get queue endpoint
Added
- Integration tests via GHA (non-user endpoints)
- Unit tests for new releases, passing limit parameter with minimum and maximum values of 1 and 50
- Unit tests for categories, omitting country code to test global releases
- Added
CODE_OF_CONDUCT.md
Fixed
- Incorrect
category_id
input for test_category - Assertion value for
test_categories_limit_low
andtest_categories_limit_high
- Pin Github Actions Runner to Ubuntu 20 for Py27
- Fixed potential error where
found
variable intest_artist_related_artists
is undefined if for loop never evaluates to true - Fixed false positive test
test_new_releases
which looks up the wrong property of the JSON response object and always evaluates to true
2.21: Flask cache handler
Added
- Added
market
parameter toalbum
andalbums
to address #753 by @ivyadam - Added 'show_featured_artists.py' to 'examples'.
- Expanded contribution and license sections of the documentation.
- Added
FlaskSessionCacheHandler
, a cache handler that stores the token info in a flask session. - Added Python 3.10 in GitHub Actions
Fixed
2.20: Redis cache handler
Added
- Added
RedisCacheHandler
, a cache handler that stores the token info in Redis. - Changed URI handling in
client.Spotify._get_id()
to remove qureies if provided by error. - Added a new parameter to
RedisCacheHandler
to allow custom keys (instead of the defaulttoken_info
key) - Simplify check for existing token in
RedisCacheHandler
Changed
- Removed Python 3.5 and added Python 3.9 in Github Action
2.19: Memory and Django cache handlers
Added
- Added
MemoryCacheHandler
, a cache handler that simply stores the token info in memory as an instance attribute of this class. - If a network request returns an error status code but the response body cannot be decoded into JSON, then fall back on decoding the body into a string.
- Added
DjangoSessionCacheHandler
, a cache handler that stores the token in the session framework provided by Django. Web apps using spotipy with Django can directly use this for cache handling.
Fixed
- Fixed a bug in
CacheFileHandler.__init__
: The documentation says that the username will be retrieved from the environment, but it wasn't. - Fixed a bug in the initializers for the auth managers that produced a spurious warning message if you provide a cache handler and you set a value for the "SPOTIPY_CLIENT_USERNAME" environment variable.
- Use generated MIT license and fix license type in
pip show
2.18: Saved episodes endpoints
Added
- Enabled using both short and long IDs for playlist_change_details
- Added a cache handler to
SpotifyClientCredentials
- Added the following endpoints
Spotify.current_user_saved_episodes
Spotify.current_user_saved_episodes_add
Spotify.current_user_saved_episodes_delete
Spotify.current_user_saved_episodes_contains
Spotify.available_markets
Changed
- Add support for a list of scopes rather than just a comma separated string of scopes
Fixed
- Fixed the bugs in
SpotifyOAuth.refresh_access_token
andSpotifyPKCE.refresh_access_token
which raised the incorrect exception upon receiving an error response from the server. This addresses #645. - Fixed a bug in
RequestHandler.do_GET
in which the non-existentstate
attribute ofSpotifyOauthError
is accessed. This bug occurs when the user clicks "cancel" in the permissions dialog that opens in the browser. - Cleaned up the documentation for
SpotifyClientCredentials.__init__
,SpotifyOAuth.__init__
, andSpotifyPKCE.__init__
.
2.17.1: Custom cache handlers (fixed dep)
Fixed
allowed_methods
requires urllib3>=1.26.0