deezer-python-gql 0.17.2__tar.gz → 0.18.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {deezer_python_gql-0.17.2/deezer_python_gql.egg-info → deezer_python_gql-0.18.0}/PKG-INFO +2 -2
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/add_audiobook_to_favorite.py +1 -3
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/add_podcast_to_favorite.py +1 -3
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/bookmark_podcast_episode.py +2 -2
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/client.py +1 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/fragments.py +4 -4
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_audiobook_chapter.py +2 -2
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_favorite_albums.py +2 -2
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_favorite_artists.py +2 -2
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_favorite_audiobooks.py +2 -2
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_favorite_playlists.py +2 -2
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_favorite_podcasts.py +2 -2
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_favorite_tracks.py +2 -2
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_music_together_group.py +4 -4
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_music_together_groups.py +4 -4
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_playlist.py +1 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_podcast_episode_bookmarks.py +2 -2
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_track.py +3 -3
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/mark_as_played_podcast_episode.py +2 -2
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/music_together_create_group.py +2 -2
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/search.py +2 -2
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0/deezer_python_gql.egg-info}/PKG-INFO +2 -2
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql.egg-info/requires.txt +1 -1
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/pyproject.toml +5 -2
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/tests/test_client.py +11 -1
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/LICENSE +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/MANIFEST.in +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/README.md +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/__init__.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/base_client.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/__init__.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/add_album_to_favorite.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/add_artist_to_favorite.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/add_playlist_to_favorite.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/add_track_to_favorite.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/add_tracks_to_playlist.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/base_client.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/base_model.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/create_playlist.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/delete_playlist.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/enums.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_album.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_artist.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_artist_mix.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_audiobook.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_charts.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_flow.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_flow_batch.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_flow_config_tracks.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_flow_configs.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_livestream.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_made_for_me.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_me.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_music_together_affinity.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_personal_tracks.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_podcast.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_podcast_episode.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_podcast_episodes_by_ids.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_recently_played.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_recommendations.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_similar_artists.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_similar_tracks.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_smart_tracklist.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_track_mix.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_user_charts.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_user_playlists.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/input_types.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/mark_as_not_played_podcast_episode.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/music_together_generate_group_name.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/music_together_join_group.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/music_together_leave_group.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/music_together_refresh_suggested_tracklist.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/music_together_update_group_settings.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/remove_album_from_favorite.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/remove_artist_from_favorite.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/remove_audiobook_from_favorite.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/remove_playlist_from_favorite.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/remove_podcast_from_favorite.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/remove_track_from_favorite.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/remove_tracks_from_playlist.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/search_flows.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/unbookmark_podcast_episode.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/update_playlist.py +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/py.typed +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql.egg-info/SOURCES.txt +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql.egg-info/dependency_links.txt +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql.egg-info/not-zip-safe +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql.egg-info/top_level.txt +0 -0
- {deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: deezer-python-gql
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.18.0
|
|
4
4
|
Summary: Async typed Python client for Deezer's Pipe GraphQL API.
|
|
5
5
|
Author-email: Julian Daberkow <jdaberkow@users.noreply.github.com>
|
|
6
6
|
License: Apache-2.0
|
|
@@ -22,7 +22,7 @@ Requires-Dist: pre-commit-hooks==6.0.0; extra == "test"
|
|
|
22
22
|
Requires-Dist: pytest==9.1.1; extra == "test"
|
|
23
23
|
Requires-Dist: pytest-asyncio==1.4.0; extra == "test"
|
|
24
24
|
Requires-Dist: pytest-cov==7.1.0; extra == "test"
|
|
25
|
-
Requires-Dist: ruff==0.16.
|
|
25
|
+
Requires-Dist: ruff==0.16.8; extra == "test"
|
|
26
26
|
Provides-Extra: dev
|
|
27
27
|
Requires-Dist: ariadne-codegen[subscriptions]; extra == "dev"
|
|
28
28
|
Dynamic: license-file
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
# Generated by ariadne-codegen
|
|
2
2
|
# Source: queries
|
|
3
3
|
|
|
4
|
-
from typing import Any
|
|
5
|
-
|
|
6
4
|
from pydantic import Field
|
|
7
5
|
|
|
8
6
|
from .base_model import BaseModel
|
|
@@ -16,7 +14,7 @@ class AddAudiobookToFavorite(BaseModel):
|
|
|
16
14
|
|
|
17
15
|
class AddAudiobookToFavoriteAddAudiobookToFavorite(BaseModel):
|
|
18
16
|
id: str
|
|
19
|
-
favorited_at:
|
|
17
|
+
favorited_at: str = Field(alias="favoritedAt")
|
|
20
18
|
|
|
21
19
|
|
|
22
20
|
AddAudiobookToFavorite.model_rebuild()
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
# Generated by ariadne-codegen
|
|
2
2
|
# Source: queries
|
|
3
3
|
|
|
4
|
-
from typing import Any
|
|
5
|
-
|
|
6
4
|
from pydantic import Field
|
|
7
5
|
|
|
8
6
|
from .base_model import BaseModel
|
|
@@ -16,7 +14,7 @@ class AddPodcastToFavorite(BaseModel):
|
|
|
16
14
|
|
|
17
15
|
class AddPodcastToFavoriteAddPodcastToFavorite(BaseModel):
|
|
18
16
|
podcast: "AddPodcastToFavoriteAddPodcastToFavoritePodcast"
|
|
19
|
-
favorited_at:
|
|
17
|
+
favorited_at: str = Field(alias="favoritedAt")
|
|
20
18
|
|
|
21
19
|
|
|
22
20
|
class AddPodcastToFavoriteAddPodcastToFavoritePodcast(BaseModel):
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Generated by ariadne-codegen
|
|
2
2
|
# Source: queries
|
|
3
3
|
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Optional
|
|
5
5
|
|
|
6
6
|
from pydantic import Field
|
|
7
7
|
|
|
@@ -22,7 +22,7 @@ class BookmarkPodcastEpisodeBookmarkPodcastEpisode(BaseModel):
|
|
|
22
22
|
class BookmarkPodcastEpisodeBookmarkPodcastEpisodeBookmark(BaseModel):
|
|
23
23
|
position: int
|
|
24
24
|
is_played: bool = Field(alias="isPlayed")
|
|
25
|
-
bookmarked_at:
|
|
25
|
+
bookmarked_at: str = Field(alias="bookmarkedAt")
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
BookmarkPodcastEpisode.model_rebuild()
|
{deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/fragments.py
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Generated by ariadne-codegen
|
|
2
2
|
# Source: queries
|
|
3
3
|
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Literal, Optional, Union
|
|
5
5
|
|
|
6
6
|
from pydantic import Field
|
|
7
7
|
|
|
@@ -20,7 +20,7 @@ class AlbumFields(BaseModel):
|
|
|
20
20
|
type_: AlbumType = Field(alias="type")
|
|
21
21
|
cover: Optional["AlbumFieldsCover"]
|
|
22
22
|
contributors: "AlbumFieldsContributors"
|
|
23
|
-
release_date: Optional[
|
|
23
|
+
release_date: Optional[str] = Field(alias="releaseDate")
|
|
24
24
|
is_explicit: Optional[bool] = Field(alias="isExplicit")
|
|
25
25
|
is_favorite: Optional[bool] = Field(alias="isFavorite")
|
|
26
26
|
fans_count: int = Field(alias="fansCount")
|
|
@@ -88,7 +88,7 @@ class AudiobookFields(BaseModel):
|
|
|
88
88
|
cover: Optional["AudiobookFieldsCover"]
|
|
89
89
|
description: Optional[str]
|
|
90
90
|
duration: int
|
|
91
|
-
release_date: Optional[
|
|
91
|
+
release_date: Optional[str] = Field(alias="releaseDate")
|
|
92
92
|
fans_count: int = Field(alias="fansCount")
|
|
93
93
|
is_explicit: bool = Field(alias="isExplicit")
|
|
94
94
|
is_favorite: Optional[bool] = Field(alias="isFavorite")
|
|
@@ -179,7 +179,7 @@ class PodcastEpisodeFields(BaseModel):
|
|
|
179
179
|
description: Optional[str]
|
|
180
180
|
duration: int
|
|
181
181
|
cover: Optional["PodcastEpisodeFieldsCover"]
|
|
182
|
-
publication_date: Optional[
|
|
182
|
+
publication_date: Optional[str] = Field(alias="publicationDate")
|
|
183
183
|
media: "PodcastEpisodeFieldsMedia"
|
|
184
184
|
|
|
185
185
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Generated by ariadne-codegen
|
|
2
2
|
# Source: queries
|
|
3
3
|
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Optional
|
|
5
5
|
|
|
6
6
|
from pydantic import Field
|
|
7
7
|
|
|
@@ -37,7 +37,7 @@ class GetAudiobookChapterAudiobookChapterMedia(BaseModel):
|
|
|
37
37
|
|
|
38
38
|
class GetAudiobookChapterAudiobookChapterMediaToken(BaseModel):
|
|
39
39
|
payload: str
|
|
40
|
-
expires_at:
|
|
40
|
+
expires_at: str = Field(alias="expiresAt")
|
|
41
41
|
|
|
42
42
|
|
|
43
43
|
class GetAudiobookChapterAudiobookChapterMediaEstimatedSizes(BaseModel):
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Generated by ariadne-codegen
|
|
2
2
|
# Source: queries
|
|
3
3
|
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Optional
|
|
5
5
|
|
|
6
6
|
from pydantic import Field
|
|
7
7
|
|
|
@@ -30,7 +30,7 @@ class GetFavoriteAlbumsMeUserFavoritesAlbums(BaseModel):
|
|
|
30
30
|
|
|
31
31
|
class GetFavoriteAlbumsMeUserFavoritesAlbumsEdges(BaseModel):
|
|
32
32
|
cursor: str
|
|
33
|
-
favorited_at:
|
|
33
|
+
favorited_at: str = Field(alias="favoritedAt")
|
|
34
34
|
node: Optional["GetFavoriteAlbumsMeUserFavoritesAlbumsEdgesNode"]
|
|
35
35
|
|
|
36
36
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Generated by ariadne-codegen
|
|
2
2
|
# Source: queries
|
|
3
3
|
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Optional
|
|
5
5
|
|
|
6
6
|
from pydantic import Field
|
|
7
7
|
|
|
@@ -30,7 +30,7 @@ class GetFavoriteArtistsMeUserFavoritesArtists(BaseModel):
|
|
|
30
30
|
|
|
31
31
|
class GetFavoriteArtistsMeUserFavoritesArtistsEdges(BaseModel):
|
|
32
32
|
cursor: str
|
|
33
|
-
favorited_at:
|
|
33
|
+
favorited_at: str = Field(alias="favoritedAt")
|
|
34
34
|
node: Optional["GetFavoriteArtistsMeUserFavoritesArtistsEdgesNode"]
|
|
35
35
|
|
|
36
36
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Generated by ariadne-codegen
|
|
2
2
|
# Source: queries
|
|
3
3
|
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Optional
|
|
5
5
|
|
|
6
6
|
from pydantic import Field
|
|
7
7
|
|
|
@@ -24,7 +24,7 @@ class GetFavoriteAudiobooksMeFavorites(BaseModel):
|
|
|
24
24
|
|
|
25
25
|
class GetFavoriteAudiobooksMeFavoritesRawAudiobooks(BaseModel):
|
|
26
26
|
id: str
|
|
27
|
-
favorited_at:
|
|
27
|
+
favorited_at: str = Field(alias="favoritedAt")
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
GetFavoriteAudiobooks.model_rebuild()
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Generated by ariadne-codegen
|
|
2
2
|
# Source: queries
|
|
3
3
|
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Optional
|
|
5
5
|
|
|
6
6
|
from pydantic import Field
|
|
7
7
|
|
|
@@ -30,7 +30,7 @@ class GetFavoritePlaylistsMeUserFavoritesPlaylists(BaseModel):
|
|
|
30
30
|
|
|
31
31
|
class GetFavoritePlaylistsMeUserFavoritesPlaylistsEdges(BaseModel):
|
|
32
32
|
cursor: str
|
|
33
|
-
favorited_at:
|
|
33
|
+
favorited_at: str = Field(alias="favoritedAt")
|
|
34
34
|
node: Optional["GetFavoritePlaylistsMeUserFavoritesPlaylistsEdgesNode"]
|
|
35
35
|
|
|
36
36
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Generated by ariadne-codegen
|
|
2
2
|
# Source: queries
|
|
3
3
|
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Optional
|
|
5
5
|
|
|
6
6
|
from pydantic import Field
|
|
7
7
|
|
|
@@ -30,7 +30,7 @@ class GetFavoritePodcastsMeUserFavoritesPodcasts(BaseModel):
|
|
|
30
30
|
|
|
31
31
|
class GetFavoritePodcastsMeUserFavoritesPodcastsEdges(BaseModel):
|
|
32
32
|
cursor: str
|
|
33
|
-
favorited_at:
|
|
33
|
+
favorited_at: str = Field(alias="favoritedAt")
|
|
34
34
|
node: Optional["GetFavoritePodcastsMeUserFavoritesPodcastsEdgesNode"]
|
|
35
35
|
|
|
36
36
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Generated by ariadne-codegen
|
|
2
2
|
# Source: queries
|
|
3
3
|
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Optional
|
|
5
5
|
|
|
6
6
|
from pydantic import Field
|
|
7
7
|
|
|
@@ -30,7 +30,7 @@ class GetFavoriteTracksMeUserFavoritesTracks(BaseModel):
|
|
|
30
30
|
|
|
31
31
|
class GetFavoriteTracksMeUserFavoritesTracksEdges(BaseModel):
|
|
32
32
|
cursor: str
|
|
33
|
-
favorited_at:
|
|
33
|
+
favorited_at: str = Field(alias="favoritedAt")
|
|
34
34
|
node: Optional["GetFavoriteTracksMeUserFavoritesTracksEdgesNode"]
|
|
35
35
|
|
|
36
36
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Generated by ariadne-codegen
|
|
2
2
|
# Source: queries
|
|
3
3
|
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Optional
|
|
5
5
|
|
|
6
6
|
from pydantic import Field
|
|
7
7
|
|
|
@@ -21,8 +21,8 @@ class GetMusicTogetherGroupMusicTogetherGroup(BaseModel):
|
|
|
21
21
|
is_ready: bool = Field(alias="isReady")
|
|
22
22
|
is_family: bool = Field(alias="isFamily")
|
|
23
23
|
estimated_members_count: int = Field(alias="estimatedMembersCount")
|
|
24
|
-
created_at:
|
|
25
|
-
updated_at:
|
|
24
|
+
created_at: str = Field(alias="createdAt")
|
|
25
|
+
updated_at: str = Field(alias="updatedAt")
|
|
26
26
|
members: "GetMusicTogetherGroupMusicTogetherGroupMembers"
|
|
27
27
|
suggested_tracklist: Optional[
|
|
28
28
|
"GetMusicTogetherGroupMusicTogetherGroupSuggestedTracklist"
|
|
@@ -41,7 +41,7 @@ class GetMusicTogetherGroupMusicTogetherGroupMembers(BaseModel):
|
|
|
41
41
|
|
|
42
42
|
class GetMusicTogetherGroupMusicTogetherGroupMembersEdges(BaseModel):
|
|
43
43
|
cursor: str
|
|
44
|
-
joined_at:
|
|
44
|
+
joined_at: str = Field(alias="joinedAt")
|
|
45
45
|
node: Optional["GetMusicTogetherGroupMusicTogetherGroupMembersEdgesNode"]
|
|
46
46
|
affinity: Optional["GetMusicTogetherGroupMusicTogetherGroupMembersEdgesAffinity"]
|
|
47
47
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Generated by ariadne-codegen
|
|
2
2
|
# Source: queries
|
|
3
3
|
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Optional
|
|
5
5
|
|
|
6
6
|
from pydantic import Field
|
|
7
7
|
|
|
@@ -38,8 +38,8 @@ class GetMusicTogetherGroupsMeMusicTogetherGroupsEdgesNode(BaseModel):
|
|
|
38
38
|
is_ready: bool = Field(alias="isReady")
|
|
39
39
|
is_family: bool = Field(alias="isFamily")
|
|
40
40
|
estimated_members_count: int = Field(alias="estimatedMembersCount")
|
|
41
|
-
created_at:
|
|
42
|
-
updated_at:
|
|
41
|
+
created_at: str = Field(alias="createdAt")
|
|
42
|
+
updated_at: str = Field(alias="updatedAt")
|
|
43
43
|
members: "GetMusicTogetherGroupsMeMusicTogetherGroupsEdgesNodeMembers"
|
|
44
44
|
|
|
45
45
|
|
|
@@ -52,7 +52,7 @@ class GetMusicTogetherGroupsMeMusicTogetherGroupsEdgesNodeMembers(BaseModel):
|
|
|
52
52
|
|
|
53
53
|
class GetMusicTogetherGroupsMeMusicTogetherGroupsEdgesNodeMembersEdges(BaseModel):
|
|
54
54
|
cursor: str
|
|
55
|
-
joined_at:
|
|
55
|
+
joined_at: str = Field(alias="joinedAt")
|
|
56
56
|
node: Optional[
|
|
57
57
|
"GetMusicTogetherGroupsMeMusicTogetherGroupsEdgesNodeMembersEdgesNode"
|
|
58
58
|
]
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Generated by ariadne-codegen
|
|
2
2
|
# Source: queries
|
|
3
3
|
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Optional
|
|
5
5
|
|
|
6
6
|
from pydantic import Field
|
|
7
7
|
|
|
@@ -35,7 +35,7 @@ class GetPodcastEpisodeBookmarksMePodcastEpisodeBookmarksEdgesNode(BaseModel):
|
|
|
35
35
|
episode: "GetPodcastEpisodeBookmarksMePodcastEpisodeBookmarksEdgesNodeEpisode"
|
|
36
36
|
position: int
|
|
37
37
|
is_played: bool = Field(alias="isPlayed")
|
|
38
|
-
bookmarked_at:
|
|
38
|
+
bookmarked_at: str = Field(alias="bookmarkedAt")
|
|
39
39
|
|
|
40
40
|
|
|
41
41
|
class GetPodcastEpisodeBookmarksMePodcastEpisodeBookmarksEdgesNodeEpisode(
|
{deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_track.py
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Generated by ariadne-codegen
|
|
2
2
|
# Source: queries
|
|
3
3
|
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Literal, Optional, Union
|
|
5
5
|
|
|
6
6
|
from pydantic import Field
|
|
7
7
|
|
|
@@ -25,7 +25,7 @@ class GetTrackTrack(BaseModel):
|
|
|
25
25
|
album: Optional["GetTrackTrackAlbum"]
|
|
26
26
|
contributors: "GetTrackTrackContributors"
|
|
27
27
|
is_atmos: bool = Field(alias="isAtmos")
|
|
28
|
-
release_date: Optional[
|
|
28
|
+
release_date: Optional[str] = Field(alias="releaseDate")
|
|
29
29
|
media: Optional["GetTrackTrackMedia"]
|
|
30
30
|
lyrics: Optional["GetTrackTrackLyrics"]
|
|
31
31
|
|
|
@@ -73,7 +73,7 @@ class GetTrackTrackMedia(BaseModel):
|
|
|
73
73
|
|
|
74
74
|
class GetTrackTrackMediaToken(BaseModel):
|
|
75
75
|
payload: str
|
|
76
|
-
expires_at:
|
|
76
|
+
expires_at: str = Field(alias="expiresAt")
|
|
77
77
|
|
|
78
78
|
|
|
79
79
|
class GetTrackTrackMediaEstimatedSizes(BaseModel):
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Generated by ariadne-codegen
|
|
2
2
|
# Source: queries
|
|
3
3
|
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Optional
|
|
5
5
|
|
|
6
6
|
from pydantic import Field
|
|
7
7
|
|
|
@@ -22,7 +22,7 @@ class MarkAsPlayedPodcastEpisodeMarkAsPlayedPodcastEpisode(BaseModel):
|
|
|
22
22
|
class MarkAsPlayedPodcastEpisodeMarkAsPlayedPodcastEpisodeBookmark(BaseModel):
|
|
23
23
|
position: int
|
|
24
24
|
is_played: bool = Field(alias="isPlayed")
|
|
25
|
-
bookmarked_at:
|
|
25
|
+
bookmarked_at: str = Field(alias="bookmarkedAt")
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
MarkAsPlayedPodcastEpisode.model_rebuild()
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Generated by ariadne-codegen
|
|
2
2
|
# Source: queries
|
|
3
3
|
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Literal, Optional, Union
|
|
5
5
|
|
|
6
6
|
from pydantic import Field
|
|
7
7
|
|
|
@@ -30,7 +30,7 @@ class MusicTogetherCreateGroupMusicTogetherCreateGroupMusicTogetherCreateGroupOu
|
|
|
30
30
|
is_ready: bool = Field(alias="isReady")
|
|
31
31
|
is_family: bool = Field(alias="isFamily")
|
|
32
32
|
estimated_members_count: int = Field(alias="estimatedMembersCount")
|
|
33
|
-
created_at:
|
|
33
|
+
created_at: str = Field(alias="createdAt")
|
|
34
34
|
|
|
35
35
|
|
|
36
36
|
class MusicTogetherCreateGroupMusicTogetherCreateGroupMusicTogetherCreateGroupError(
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Generated by ariadne-codegen
|
|
2
2
|
# Source: queries
|
|
3
3
|
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Literal, Optional, Union
|
|
5
5
|
|
|
6
6
|
from pydantic import Field
|
|
7
7
|
|
|
@@ -108,7 +108,7 @@ class SearchSearchResultsAlbumsEdgesNode(BaseModel):
|
|
|
108
108
|
type_: AlbumType = Field(alias="type")
|
|
109
109
|
cover: Optional["SearchSearchResultsAlbumsEdgesNodeCover"]
|
|
110
110
|
contributors: "SearchSearchResultsAlbumsEdgesNodeContributors"
|
|
111
|
-
release_date: Optional[
|
|
111
|
+
release_date: Optional[str] = Field(alias="releaseDate")
|
|
112
112
|
is_explicit: Optional[bool] = Field(alias="isExplicit")
|
|
113
113
|
is_favorite: Optional[bool] = Field(alias="isFavorite")
|
|
114
114
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: deezer-python-gql
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.18.0
|
|
4
4
|
Summary: Async typed Python client for Deezer's Pipe GraphQL API.
|
|
5
5
|
Author-email: Julian Daberkow <jdaberkow@users.noreply.github.com>
|
|
6
6
|
License: Apache-2.0
|
|
@@ -22,7 +22,7 @@ Requires-Dist: pre-commit-hooks==6.0.0; extra == "test"
|
|
|
22
22
|
Requires-Dist: pytest==9.1.1; extra == "test"
|
|
23
23
|
Requires-Dist: pytest-asyncio==1.4.0; extra == "test"
|
|
24
24
|
Requires-Dist: pytest-cov==7.1.0; extra == "test"
|
|
25
|
-
Requires-Dist: ruff==0.16.
|
|
25
|
+
Requires-Dist: ruff==0.16.8; extra == "test"
|
|
26
26
|
Provides-Extra: dev
|
|
27
27
|
Requires-Dist: ariadne-codegen[subscriptions]; extra == "dev"
|
|
28
28
|
Dynamic: license-file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "deezer-python-gql"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.18.0"
|
|
4
4
|
description = "Async typed Python client for Deezer's Pipe GraphQL API."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.12"
|
|
@@ -30,7 +30,7 @@ test = [
|
|
|
30
30
|
"pytest==9.1.1",
|
|
31
31
|
"pytest-asyncio==1.4.0",
|
|
32
32
|
"pytest-cov==7.1.0",
|
|
33
|
-
"ruff==0.16.
|
|
33
|
+
"ruff==0.16.8",
|
|
34
34
|
]
|
|
35
35
|
dev = [
|
|
36
36
|
"ariadne-codegen[subscriptions]",
|
|
@@ -68,6 +68,9 @@ plugins = [
|
|
|
68
68
|
"ariadne_codegen.contrib.shorter_results.ShorterResultsPlugin",
|
|
69
69
|
]
|
|
70
70
|
|
|
71
|
+
[tool.ariadne-codegen.scalars.Date]
|
|
72
|
+
type = "str"
|
|
73
|
+
|
|
71
74
|
[tool.codespell]
|
|
72
75
|
skip = "*.json,schema.graphql"
|
|
73
76
|
|
|
@@ -20,6 +20,7 @@ from unittest.mock import AsyncMock, MagicMock, patch
|
|
|
20
20
|
|
|
21
21
|
import pytest
|
|
22
22
|
from aiohttp import ClientSession, CookieJar
|
|
23
|
+
from pydantic import ValidationError
|
|
23
24
|
from yarl import URL
|
|
24
25
|
|
|
25
26
|
from deezer_python_gql import DeezerGQLClient
|
|
@@ -960,7 +961,7 @@ def test_smoke_get_artist() -> None:
|
|
|
960
961
|
|
|
961
962
|
|
|
962
963
|
def test_smoke_get_playlist() -> None:
|
|
963
|
-
"""Verify GetPlaylist fixture parses with owner and
|
|
964
|
+
"""Verify GetPlaylist fixture parses with owner, paginated tracks and add dates."""
|
|
964
965
|
data = _load_fixture("get_playlist.json")
|
|
965
966
|
playlist = GetPlaylist.model_validate(data).playlist
|
|
966
967
|
assert playlist is not None
|
|
@@ -968,6 +969,7 @@ def test_smoke_get_playlist() -> None:
|
|
|
968
969
|
assert playlist.title
|
|
969
970
|
assert playlist.owner is not None
|
|
970
971
|
assert len(playlist.tracks.edges) > 0
|
|
972
|
+
assert playlist.tracks.edges[0].added_at == "2026-09-18T07:30:12.000Z"
|
|
971
973
|
|
|
972
974
|
|
|
973
975
|
def test_smoke_search() -> None:
|
|
@@ -1192,6 +1194,14 @@ def test_smoke_get_favorite_tracks() -> None:
|
|
|
1192
1194
|
assert tracks.page_info.has_next_page is True
|
|
1193
1195
|
|
|
1194
1196
|
|
|
1197
|
+
def test_date_scalar_rejects_non_strings() -> None:
|
|
1198
|
+
"""Date scalar fields are typed as ISO 8601 strings, so other values fail validation."""
|
|
1199
|
+
data = _load_fixture("get_favorite_tracks.json")
|
|
1200
|
+
data["me"]["userFavorites"]["tracks"]["edges"][0]["favoritedAt"] = 1749945600
|
|
1201
|
+
with pytest.raises(ValidationError, match="favoritedAt"):
|
|
1202
|
+
GetFavoriteTracks.model_validate(data)
|
|
1203
|
+
|
|
1204
|
+
|
|
1195
1205
|
def test_smoke_get_favorite_playlists() -> None:
|
|
1196
1206
|
"""Verify GetFavoritePlaylists fixture parses with pagination."""
|
|
1197
1207
|
data = _load_fixture("get_favorite_playlists.json")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/base_client.py
RENAMED
|
File without changes
|
{deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/base_model.py
RENAMED
|
File without changes
|
{deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/create_playlist.py
RENAMED
|
File without changes
|
{deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/delete_playlist.py
RENAMED
|
File without changes
|
|
File without changes
|
{deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_album.py
RENAMED
|
File without changes
|
{deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_artist.py
RENAMED
|
File without changes
|
{deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_artist_mix.py
RENAMED
|
File without changes
|
{deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_audiobook.py
RENAMED
|
File without changes
|
{deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_charts.py
RENAMED
|
File without changes
|
{deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_flow.py
RENAMED
|
File without changes
|
{deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_flow_batch.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_livestream.py
RENAMED
|
File without changes
|
{deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_made_for_me.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_podcast.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_track_mix.py
RENAMED
|
File without changes
|
{deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/get_user_charts.py
RENAMED
|
File without changes
|
|
File without changes
|
{deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/input_types.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/search_flows.py
RENAMED
|
File without changes
|
|
File without changes
|
{deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql/generated/update_playlist.py
RENAMED
|
File without changes
|
|
File without changes
|
{deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql.egg-info/not-zip-safe
RENAMED
|
File without changes
|
{deezer_python_gql-0.17.2 → deezer_python_gql-0.18.0}/deezer_python_gql.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|