You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Part of #307. Base branch: ytmusicapi-2. Read the contributor guide from #982 before starting.
The mutating and action endpoints. These currently return the raw YTM response typed as JsonDict, str | JsonDict or similar, which tells a consumer nothing about what they actually got back.
Several return str | JsonDict: a plain id string on success, or the raw response. That union should become something a consumer can actually branch on.
add_playlist_items returns different content depending on duplicates and whether source_playlist was used.
These endpoints are the least covered by tests and the most likely to have undocumented shapes — expect to inspect real responses rather than rely on docstrings.
Part of #307. Base branch:
ytmusicapi-2. Read the contributor guide from #982 before starting.The mutating and action endpoints. These currently return the raw YTM response typed as
JsonDict,str | JsonDictor similar, which tells a consumer nothing about what they actually got back.Scope
mixins/library.py—rate_song,rate_playlist,edit_song_library_status,subscribe_artist,subscribe_artists,unsubscribe_artists,remove_history_itemsmixins/playlists.py—create_playlist,edit_playlist,add_playlist_items,remove_playlist_items,delete_playlist,join_collaborative_playlistmixins/uploads.py—delete_upload_entitymixins/search.py—remove_search_suggestionsWatch out for
str | JsonDict: a plain id string on success, or the raw response. That union should become something a consumer can actually branch on.add_playlist_itemsreturns different content depending onduplicatesand whethersource_playlistwas used.add_history_itemandupload_songreturnrequests.Responseand are explicitly out of scope for Type validation with pydantic #307.Definition of done
mypy --strictclean.