Skip to content

Commit

Permalink
Remove removed playlist remove endpoints (#315)
Browse files Browse the repository at this point in the history
  • Loading branch information
felix-hilden committed Jan 28, 2024
1 parent db428c5 commit add1f2a
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 81 deletions.
4 changes: 0 additions & 4 deletions docs/src/reference/client.rst
Expand Up @@ -369,8 +369,6 @@ Playlist API
Spotify.playlist_add
Spotify.playlist_clear
Spotify.playlist_remove
Spotify.playlist_remove_indices
Spotify.playlist_remove_occurrences
Spotify.playlist_reorder
Spotify.playlist_replace

Expand All @@ -388,8 +386,6 @@ for additional information.
.. automethod:: Spotify.playlist_add
.. automethod:: Spotify.playlist_clear
.. automethod:: Spotify.playlist_remove
.. automethod:: Spotify.playlist_remove_indices
.. automethod:: Spotify.playlist_remove_occurrences
.. automethod:: Spotify.playlist_reorder
.. automethod:: Spotify.playlist_replace

Expand Down
8 changes: 8 additions & 0 deletions docs/src/release_notes.rst
Expand Up @@ -3,6 +3,14 @@

Release notes
=============
Unreleased
----------
Fixed
*****
- :ref:`reference`: remove methods ``playlist_remove_indices`` and
``playlist_remove_occurrences``, which were removed from the API
(:issue:`315`)

5.3.0 (2023-12-22)
------------------
Fixed
Expand Down
61 changes: 0 additions & 61 deletions src/tekore/_client/api/playlist/items.py
@@ -1,5 +1,3 @@
from typing import List, Tuple

from tekore._auth import scope

from ...base import SpotifyBase
Expand Down Expand Up @@ -141,62 +139,3 @@ def playlist_remove(
return self._generic_playlist_remove(
playlist_id, {"tracks": items}, snapshot_id
)

@scopes([scope.playlist_modify_public], [scope.playlist_modify_private])
@send_and_process(top_item("snapshot_id"))
def playlist_remove_occurrences(
self, playlist_id: str, refs: List[Tuple[str, int]], snapshot_id: str = None
) -> str:
"""
Remove items by URI and position.
Parameters
----------
playlist_id
playlist ID
refs
a list of tuples containing the URI and index of items to remove
snapshot_id
snapshot ID for the playlist
Returns
-------
str
snapshot ID for the playlist
"""
gathered = {}
for uri, ix in refs:
gathered.setdefault(uri, []).append(ix)

items = [
{"uri": uri, "positions": ix_list} for uri, ix_list in gathered.items()
]
return self._generic_playlist_remove(
playlist_id, {"tracks": items}, snapshot_id
)

@scopes([scope.playlist_modify_public], [scope.playlist_modify_private])
@send_and_process(top_item("snapshot_id"))
def playlist_remove_indices(
self, playlist_id: str, indices: list, snapshot_id: str
) -> str:
"""
Remove items by position.
Parameters
----------
playlist_id
playlist ID
indices
a list of indices of tracks to remove
snapshot_id
snapshot ID for the playlist
Returns
-------
str
snapshot ID for the playlist
"""
return self._generic_playlist_remove(
playlist_id, {"positions": indices}, snapshot_id
)
21 changes: 5 additions & 16 deletions tests/client/playlist.py
Expand Up @@ -193,24 +193,13 @@ def test_playlist_modifications(self, user_client, current_user_id):
items = user_client.playlist_items(playlist.id)
assert items.total == 0

# Add tracks back with duplicates and test removing occurrences
# Add tracks back with duplicates
new_tracks = track_uris + track_uris[::-1]
user_client.playlist_replace(playlist.id, new_tracks)
user_client.playlist_remove_occurrences(
playlist.id, [(uri, ix) for ix, uri in enumerate(track_uris)]
)
# Occurrences removed
assert_items_equal(user_client, playlist.id, track_uris[::-1])

# Add tracks back with duplicates and test removing indices
new_tracks = track_uris + track_uris[::-1]
user_client.playlist_replace(playlist.id, new_tracks)
playlist = user_client.playlist(playlist.id)
user_client.playlist_remove_indices(
playlist.id, list(range(len(track_uris))), playlist.snapshot_id
)
# Indices removed
assert_items_equal(user_client, playlist.id, track_uris[::-1])
user_client.playlist_remove(playlist.id, track_uris)
# All items removed
items = user_client.playlist_items(playlist.id)
assert items.total == 0

# Tracks cleared
user_client.playlist_clear(playlist.id)
Expand Down

0 comments on commit add1f2a

Please sign in to comment.