Releases: felix-hilden/tekore
3.2.0 - Quality of life improvements
Added
- Support Python 3.9 (#219)
- Dependency to HTTPX upgraded to include versions
0.15.*
and0.16.*
(#216) - Error messages for
parse_code_from_url
,parse_state_from_url
andCredentials.pkce_user_authorisation
were improved (#218) Spotify
and senders, both synchronous and asynchronous, can now be closed directly withclose
(#220)
3.1.0 - Small improvements
3.0.1 - Bugfix
Fixed
featured_playlists
- allow missing owner inPlaylist
models (#212)
3.0.0 - The next level
The next major iteration of Tekore brings fewer breaking changes than in 2.0, but packs a number of improvements to authorisation and senders. Most notably, PKCE is now provided as an option for user authorisation and Requests is no longer used to perform web requests. HTTPX, which was already in use with async, is used exclusively instead.
Added
- Authorisation - PKCE can be used in user authorisation, providing added security for public clients by removing the need to use a client secret (#189)
UserAuth
- implement user authorisation with security checks, the caller simply provides the resulting URI after redirection (#207)- Senders - Tekore's own
Request
andResponse
wrappers are now used in the sender interface (#139) - Classes now have a readable
repr
(#191) - Dependency to HTTPX upgraded to include version
0.14.*
(#202) gen_state
- generate state for user authorisation (#207)parse_state_from_url
- parse state from URL parameters (#207)
Removed
- Client - methods for playlist tracks and
episodes_as_tracks
argument ofSpotify.playlist
deprecated in 2.0 (#178, #202) - Dependency to Requests dropped in favor of HTTPX (#139)
- Senders -
TransientSender
andSingletonSender
along with their asynchronous variants were removed (#139) - Senders - default sender and keyword argument options were removed (#139)
Changed
- Errors - web exceptions now inherit from
Exception
rather than the underlying HTTP library's top-level exception. They always contain the relevantRequest
andResponse
(#139) - Senders - as the only concrete senders,
PersistentSender
andAsyncPersistentSender
are now implemented inSyncSender
andAsyncSender
, respectively (#139) CachingSender
- argument order is now in line withRetryingSender
(#139)- Senders - clients (
Spotify
andCredentials
) now inherit fromExtendingSender
(#139) - Authorisation - raise a more descriptive error if secret is required but not provided (#210)
Fixed
- Client - fix chunking errors that occurred when passing certain parameters as positional arguments (#205)
2.1.3 - Bugfixes
2.1.2 - Bugfix
Fixed
FullShow
- add undocumentedtotal_episodes
parameter, marktotal_episodes
ofSimpleShow
undocumented (#194)
2.1.1 - Bugfix
Fixed
SimpleShow
- add optional total_episodes
parameter (#190)
2.1.0 - Small improvements
2.0.0 - The future is here
This release significantly improves the overall structure of the library and provides quality of life enhancements to various tasks. Most notably, submodules were removed in favor of a flat structure. Everything is now imported from the top level with the exception of models
.
Removed
Deprecated
- Playlist API - methods specifically for playlist tracks and
episodes_as_tracks
argument ofSpotify.playlist
(#178)
Added
- Authentication - a list of scopes and strings is accepted in
scope
arguments (#81) Scope
operations were expanded to properly handle all combinations ofstr
,scope
andScope
(#177)- Playlist API - new methods to fully support episodes in playlists. The new endpoints are direct counterparts to
playlist_tracks_*
methods. (#178)
Changed
Import structure
Submodules were removed in favor of a flat structure. In addition to simply relocating objects, some changes were made as well. (#81)
- Options for senders and configuration are now set at the top level
AuthorisationScopes
was renamed toscope
, and its aliasscopes
is no longer available- Ready-made scopes
read
,write
andevery
are now accessed via thescope
enumeration
Response models
These changes aim to make models consistent and serialisation clear. (#149)
- The JSON encoder used internally was made private
- Hierarchies and names of model base classes and member types changed
- Instead of using
str
, models are now converted to JSON using theirjson
method - As a result of the change above, the
repr
of models can be viewed simply withprint
. Therepr
of model lists was significantly improved. Viewing attributes of models produces consistent results. - The
asbuiltin
method replacesasdict
for models and was also added for lists of models. Enumerations and timestamps are no longer preserved in the conversion. pprint
output is now compact by default
Playlist items
Boolean attributes of FullTrack
and FullEpisode
on a playlist were previously also available elsewhere, but had None
values. They were removed. The booleans are still available in playlist-related calls with the new FullPlaylistTrack
and FullPlaylistEpisode
. LocalPlaylistTrack
now also provides these booleans. (#170)
Miscellaneous
- Exceptions thrown in authentication now match client. Because of that,
OAuthError
was removed. Errors now inherit from a common base class. (#154) Token.scope
andRefreshingToken.scope
now return aScope
instead of a string. (#177)- Default sender changed from
TransientSender
toPersistentSender
, also affectsClient
behavior (#141)
Fixed
API improvements
This is the first release to feature a streamlined import structure (only top level imports). All old-style imports (from submodules) are still available, a few still needed, but they will be removed in the next major release of Tekore, version 2.0.
Added
- Most imports can be done directly at the top level (#174)
Deprecated
- Importing from submodules, removed in Tekore 2.0 (#81)