deezer-python-gql 0.13.4__tar.gz → 0.14.1__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.13.4/deezer_python_gql.egg-info → deezer_python_gql-0.14.1}/PKG-INFO +2 -2
- deezer_python_gql-0.14.1/deezer_python_gql/__init__.py +19 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/__init__.py +14 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/client.py +52 -7
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/fragments.py +0 -1
- deezer_python_gql-0.14.1/deezer_python_gql/generated/get_similar_artists.py +42 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1/deezer_python_gql.egg-info}/PKG-INFO +2 -2
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql.egg-info/SOURCES.txt +1 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql.egg-info/requires.txt +1 -1
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/pyproject.toml +2 -2
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/tests/test_client.py +18 -0
- deezer_python_gql-0.13.4/deezer_python_gql/__init__.py +0 -5
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/LICENSE +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/MANIFEST.in +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/README.md +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/base_client.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/add_album_to_favorite.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/add_artist_to_favorite.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/add_audiobook_to_favorite.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/add_playlist_to_favorite.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/add_podcast_to_favorite.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/add_track_to_favorite.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/add_tracks_to_playlist.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/base_client.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/base_model.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/bookmark_podcast_episode.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/create_playlist.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/delete_playlist.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/enums.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_album.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_artist.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_artist_mix.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_audiobook.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_audiobook_chapter.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_charts.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_favorite_albums.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_favorite_artists.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_favorite_audiobooks.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_favorite_playlists.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_favorite_podcasts.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_favorite_tracks.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_flow.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_flow_batch.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_flow_config_tracks.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_flow_configs.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_livestream.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_made_for_me.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_me.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_music_together_affinity.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_music_together_group.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_music_together_groups.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_personal_tracks.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_playlist.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_podcast.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_podcast_episode.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_podcast_episode_bookmarks.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_podcast_episodes_by_ids.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_recently_played.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_recommendations.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_similar_tracks.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_smart_tracklist.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_track.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_track_mix.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_user_charts.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_user_playlists.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/input_types.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/mark_as_not_played_podcast_episode.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/mark_as_played_podcast_episode.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/music_together_create_group.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/music_together_generate_group_name.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/music_together_join_group.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/music_together_leave_group.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/music_together_refresh_suggested_tracklist.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/music_together_update_group_settings.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/remove_album_from_favorite.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/remove_artist_from_favorite.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/remove_audiobook_from_favorite.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/remove_playlist_from_favorite.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/remove_podcast_from_favorite.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/remove_track_from_favorite.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/remove_tracks_from_playlist.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/search.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/search_flows.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/unbookmark_podcast_episode.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/update_playlist.py +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/py.typed +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql.egg-info/dependency_links.txt +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql.egg-info/not-zip-safe +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql.egg-info/top_level.txt +0 -0
- {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/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.14.1
|
|
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
|
|
@@ -15,7 +15,7 @@ Requires-Dist: httpx>=0.27.0
|
|
|
15
15
|
Requires-Dist: pydantic>=2.0.0
|
|
16
16
|
Provides-Extra: test
|
|
17
17
|
Requires-Dist: codespell==2.4.2; extra == "test"
|
|
18
|
-
Requires-Dist: mypy==2.
|
|
18
|
+
Requires-Dist: mypy==2.1.0; extra == "test"
|
|
19
19
|
Requires-Dist: pre-commit==4.6.0; extra == "test"
|
|
20
20
|
Requires-Dist: pre-commit-hooks==6.0.0; extra == "test"
|
|
21
21
|
Requires-Dist: pytest==9.0.3; extra == "test"
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"""Async typed Python client for Deezer's Pipe GraphQL API."""
|
|
2
|
+
|
|
3
|
+
from deezer_python_gql.generated.base_client import (
|
|
4
|
+
GraphQLClientError,
|
|
5
|
+
GraphQLClientGraphQLError,
|
|
6
|
+
GraphQLClientGraphQLMultiError,
|
|
7
|
+
GraphQLClientHttpError,
|
|
8
|
+
GraphQLClientInvalidResponseError,
|
|
9
|
+
)
|
|
10
|
+
from deezer_python_gql.generated.client import DeezerGQLClient
|
|
11
|
+
|
|
12
|
+
__all__ = [
|
|
13
|
+
"DeezerGQLClient",
|
|
14
|
+
"GraphQLClientError",
|
|
15
|
+
"GraphQLClientGraphQLError",
|
|
16
|
+
"GraphQLClientGraphQLMultiError",
|
|
17
|
+
"GraphQLClientHttpError",
|
|
18
|
+
"GraphQLClientInvalidResponseError",
|
|
19
|
+
]
|
{deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/__init__.py
RENAMED
|
@@ -423,6 +423,14 @@ from .get_recommendations import (
|
|
|
423
423
|
GetRecommendationsMeRecommendationsPlaylistsEdgesNode,
|
|
424
424
|
GetRecommendationsMeRecommendationsPlaylistsPageInfo,
|
|
425
425
|
)
|
|
426
|
+
from .get_similar_artists import (
|
|
427
|
+
GetSimilarArtists,
|
|
428
|
+
GetSimilarArtistsArtist,
|
|
429
|
+
GetSimilarArtistsArtistRelatedArtist,
|
|
430
|
+
GetSimilarArtistsArtistRelatedArtistEdges,
|
|
431
|
+
GetSimilarArtistsArtistRelatedArtistEdgesNode,
|
|
432
|
+
GetSimilarArtistsArtistRelatedArtistPageInfo,
|
|
433
|
+
)
|
|
426
434
|
from .get_similar_tracks import (
|
|
427
435
|
GetSimilarTracks,
|
|
428
436
|
GetSimilarTracksTrack,
|
|
@@ -945,6 +953,12 @@ __all__ = [
|
|
|
945
953
|
"GetRecommendationsMeRecommendationsPlaylistsEdges",
|
|
946
954
|
"GetRecommendationsMeRecommendationsPlaylistsEdgesNode",
|
|
947
955
|
"GetRecommendationsMeRecommendationsPlaylistsPageInfo",
|
|
956
|
+
"GetSimilarArtists",
|
|
957
|
+
"GetSimilarArtistsArtist",
|
|
958
|
+
"GetSimilarArtistsArtistRelatedArtist",
|
|
959
|
+
"GetSimilarArtistsArtistRelatedArtistEdges",
|
|
960
|
+
"GetSimilarArtistsArtistRelatedArtistEdgesNode",
|
|
961
|
+
"GetSimilarArtistsArtistRelatedArtistPageInfo",
|
|
948
962
|
"GetSimilarTracks",
|
|
949
963
|
"GetSimilarTracksTrack",
|
|
950
964
|
"GetSimilarTracksTrackRecommendedTracks",
|
|
@@ -90,6 +90,7 @@ from .get_podcast_episodes_by_ids import (
|
|
|
90
90
|
)
|
|
91
91
|
from .get_recently_played import GetRecentlyPlayed, GetRecentlyPlayedMe
|
|
92
92
|
from .get_recommendations import GetRecommendations, GetRecommendationsMe
|
|
93
|
+
from .get_similar_artists import GetSimilarArtists, GetSimilarArtistsArtist
|
|
93
94
|
from .get_similar_tracks import GetSimilarTracks, GetSimilarTracksTrack
|
|
94
95
|
from .get_smart_tracklist import GetSmartTracklist, GetSmartTracklistSmartTracklist
|
|
95
96
|
from .get_track import GetTrack, GetTrackTrack
|
|
@@ -755,7 +756,6 @@ class DeezerGQLClient(DeezerBaseClient):
|
|
|
755
756
|
fansCount
|
|
756
757
|
isFavorite
|
|
757
758
|
bio {
|
|
758
|
-
summary
|
|
759
759
|
full
|
|
760
760
|
}
|
|
761
761
|
}
|
|
@@ -1146,7 +1146,6 @@ class DeezerGQLClient(DeezerBaseClient):
|
|
|
1146
1146
|
fansCount
|
|
1147
1147
|
isFavorite
|
|
1148
1148
|
bio {
|
|
1149
|
-
summary
|
|
1150
1149
|
full
|
|
1151
1150
|
}
|
|
1152
1151
|
}
|
|
@@ -1322,7 +1321,6 @@ class DeezerGQLClient(DeezerBaseClient):
|
|
|
1322
1321
|
fansCount
|
|
1323
1322
|
isFavorite
|
|
1324
1323
|
bio {
|
|
1325
|
-
summary
|
|
1326
1324
|
full
|
|
1327
1325
|
}
|
|
1328
1326
|
}
|
|
@@ -1978,7 +1976,6 @@ class DeezerGQLClient(DeezerBaseClient):
|
|
|
1978
1976
|
fansCount
|
|
1979
1977
|
isFavorite
|
|
1980
1978
|
bio {
|
|
1981
|
-
summary
|
|
1982
1979
|
full
|
|
1983
1980
|
}
|
|
1984
1981
|
}
|
|
@@ -2773,7 +2770,6 @@ class DeezerGQLClient(DeezerBaseClient):
|
|
|
2773
2770
|
fansCount
|
|
2774
2771
|
isFavorite
|
|
2775
2772
|
bio {
|
|
2776
|
-
summary
|
|
2777
2773
|
full
|
|
2778
2774
|
}
|
|
2779
2775
|
}
|
|
@@ -2910,7 +2906,6 @@ class DeezerGQLClient(DeezerBaseClient):
|
|
|
2910
2906
|
fansCount
|
|
2911
2907
|
isFavorite
|
|
2912
2908
|
bio {
|
|
2913
|
-
summary
|
|
2914
2909
|
full
|
|
2915
2910
|
}
|
|
2916
2911
|
}
|
|
@@ -2986,6 +2981,57 @@ class DeezerGQLClient(DeezerBaseClient):
|
|
|
2986
2981
|
data = self.get_data(response)
|
|
2987
2982
|
return GetRecommendations.model_validate(data).me
|
|
2988
2983
|
|
|
2984
|
+
async def get_similar_artists(
|
|
2985
|
+
self,
|
|
2986
|
+
artist_id: str,
|
|
2987
|
+
first: Union[Optional[int], UnsetType] = UNSET,
|
|
2988
|
+
**kwargs: Any,
|
|
2989
|
+
) -> Optional[GetSimilarArtistsArtist]:
|
|
2990
|
+
query = gql("""
|
|
2991
|
+
query GetSimilarArtists($artistId: String!, $first: Int = 25) {
|
|
2992
|
+
artist(artistId: $artistId) {
|
|
2993
|
+
relatedArtist(first: $first) {
|
|
2994
|
+
edges {
|
|
2995
|
+
node {
|
|
2996
|
+
...ArtistFields
|
|
2997
|
+
}
|
|
2998
|
+
}
|
|
2999
|
+
pageInfo {
|
|
3000
|
+
...PageInfoFields
|
|
3001
|
+
}
|
|
3002
|
+
}
|
|
3003
|
+
}
|
|
3004
|
+
}
|
|
3005
|
+
|
|
3006
|
+
fragment ArtistFields on Artist {
|
|
3007
|
+
id
|
|
3008
|
+
name
|
|
3009
|
+
picture {
|
|
3010
|
+
id
|
|
3011
|
+
urls(pictureRequest: {width: 264, height: 264})
|
|
3012
|
+
}
|
|
3013
|
+
fansCount
|
|
3014
|
+
isFavorite
|
|
3015
|
+
bio {
|
|
3016
|
+
full
|
|
3017
|
+
}
|
|
3018
|
+
}
|
|
3019
|
+
|
|
3020
|
+
fragment PageInfoFields on PageInfo {
|
|
3021
|
+
hasNextPage
|
|
3022
|
+
endCursor
|
|
3023
|
+
}
|
|
3024
|
+
""")
|
|
3025
|
+
variables: dict[str, object] = {"artistId": artist_id, "first": first}
|
|
3026
|
+
response = await self.execute(
|
|
3027
|
+
query=query,
|
|
3028
|
+
operation_name="GetSimilarArtists",
|
|
3029
|
+
variables=variables,
|
|
3030
|
+
**kwargs,
|
|
3031
|
+
)
|
|
3032
|
+
data = self.get_data(response)
|
|
3033
|
+
return GetSimilarArtists.model_validate(data).artist
|
|
3034
|
+
|
|
2989
3035
|
async def get_similar_tracks(
|
|
2990
3036
|
self, track_id: str, nb: Union[Optional[int], UnsetType] = UNSET, **kwargs: Any
|
|
2991
3037
|
) -> Optional[GetSimilarTracksTrack]:
|
|
@@ -3357,7 +3403,6 @@ class DeezerGQLClient(DeezerBaseClient):
|
|
|
3357
3403
|
fansCount
|
|
3358
3404
|
isFavorite
|
|
3359
3405
|
bio {
|
|
3360
|
-
summary
|
|
3361
3406
|
full
|
|
3362
3407
|
}
|
|
3363
3408
|
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Generated by ariadne-codegen
|
|
2
|
+
# Source: queries
|
|
3
|
+
|
|
4
|
+
from typing import Optional
|
|
5
|
+
|
|
6
|
+
from pydantic import Field
|
|
7
|
+
|
|
8
|
+
from .base_model import BaseModel
|
|
9
|
+
from .fragments import ArtistFields, PageInfoFields
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class GetSimilarArtists(BaseModel):
|
|
13
|
+
artist: Optional["GetSimilarArtistsArtist"]
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class GetSimilarArtistsArtist(BaseModel):
|
|
17
|
+
related_artist: Optional["GetSimilarArtistsArtistRelatedArtist"] = Field(
|
|
18
|
+
alias="relatedArtist"
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class GetSimilarArtistsArtistRelatedArtist(BaseModel):
|
|
23
|
+
edges: list["GetSimilarArtistsArtistRelatedArtistEdges"]
|
|
24
|
+
page_info: "GetSimilarArtistsArtistRelatedArtistPageInfo" = Field(alias="pageInfo")
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class GetSimilarArtistsArtistRelatedArtistEdges(BaseModel):
|
|
28
|
+
node: Optional["GetSimilarArtistsArtistRelatedArtistEdgesNode"]
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class GetSimilarArtistsArtistRelatedArtistEdgesNode(ArtistFields):
|
|
32
|
+
pass
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class GetSimilarArtistsArtistRelatedArtistPageInfo(PageInfoFields):
|
|
36
|
+
pass
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
GetSimilarArtists.model_rebuild()
|
|
40
|
+
GetSimilarArtistsArtist.model_rebuild()
|
|
41
|
+
GetSimilarArtistsArtistRelatedArtist.model_rebuild()
|
|
42
|
+
GetSimilarArtistsArtistRelatedArtistEdges.model_rebuild()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: deezer-python-gql
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.14.1
|
|
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
|
|
@@ -15,7 +15,7 @@ Requires-Dist: httpx>=0.27.0
|
|
|
15
15
|
Requires-Dist: pydantic>=2.0.0
|
|
16
16
|
Provides-Extra: test
|
|
17
17
|
Requires-Dist: codespell==2.4.2; extra == "test"
|
|
18
|
-
Requires-Dist: mypy==2.
|
|
18
|
+
Requires-Dist: mypy==2.1.0; extra == "test"
|
|
19
19
|
Requires-Dist: pre-commit==4.6.0; extra == "test"
|
|
20
20
|
Requires-Dist: pre-commit-hooks==6.0.0; extra == "test"
|
|
21
21
|
Requires-Dist: pytest==9.0.3; extra == "test"
|
{deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql.egg-info/SOURCES.txt
RENAMED
|
@@ -57,6 +57,7 @@ deezer_python_gql/generated/get_podcast_episode_bookmarks.py
|
|
|
57
57
|
deezer_python_gql/generated/get_podcast_episodes_by_ids.py
|
|
58
58
|
deezer_python_gql/generated/get_recently_played.py
|
|
59
59
|
deezer_python_gql/generated/get_recommendations.py
|
|
60
|
+
deezer_python_gql/generated/get_similar_artists.py
|
|
60
61
|
deezer_python_gql/generated/get_similar_tracks.py
|
|
61
62
|
deezer_python_gql/generated/get_smart_tracklist.py
|
|
62
63
|
deezer_python_gql/generated/get_track.py
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "deezer-python-gql"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.14.1"
|
|
4
4
|
description = "Async typed Python client for Deezer's Pipe GraphQL API."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.12"
|
|
@@ -23,7 +23,7 @@ text = "Apache-2.0"
|
|
|
23
23
|
[project.optional-dependencies]
|
|
24
24
|
test = [
|
|
25
25
|
"codespell==2.4.2",
|
|
26
|
-
"mypy==2.
|
|
26
|
+
"mypy==2.1.0",
|
|
27
27
|
"pre-commit==4.6.0",
|
|
28
28
|
"pre-commit-hooks==6.0.0",
|
|
29
29
|
"pytest==9.0.3",
|
|
@@ -73,6 +73,7 @@ from deezer_python_gql.generated.get_podcast_episodes_by_ids import (
|
|
|
73
73
|
)
|
|
74
74
|
from deezer_python_gql.generated.get_recently_played import GetRecentlyPlayed
|
|
75
75
|
from deezer_python_gql.generated.get_recommendations import GetRecommendations
|
|
76
|
+
from deezer_python_gql.generated.get_similar_artists import GetSimilarArtists
|
|
76
77
|
from deezer_python_gql.generated.get_similar_tracks import GetSimilarTracks
|
|
77
78
|
from deezer_python_gql.generated.get_smart_tracklist import GetSmartTracklist
|
|
78
79
|
from deezer_python_gql.generated.get_track import GetTrack
|
|
@@ -226,6 +227,7 @@ def test_client_has_generated_methods() -> None:
|
|
|
226
227
|
"get_artist_mix",
|
|
227
228
|
"get_track_mix",
|
|
228
229
|
"get_similar_tracks",
|
|
230
|
+
"get_similar_artists",
|
|
229
231
|
"get_audiobook",
|
|
230
232
|
"get_audiobook_chapter",
|
|
231
233
|
"get_favorite_audiobooks",
|
|
@@ -1290,6 +1292,22 @@ def test_smoke_get_similar_tracks() -> None:
|
|
|
1290
1292
|
assert recs[2].contributors.edges[0].node.name == "Third Artist"
|
|
1291
1293
|
|
|
1292
1294
|
|
|
1295
|
+
def test_smoke_get_similar_artists() -> None:
|
|
1296
|
+
"""Verify GetSimilarArtists fixture parses with ArtistFields."""
|
|
1297
|
+
data = _load_fixture("get_similar_artists.json")
|
|
1298
|
+
artist = GetSimilarArtists.model_validate(data).artist
|
|
1299
|
+
assert artist is not None
|
|
1300
|
+
assert artist.related_artist is not None
|
|
1301
|
+
nodes = [e.node for e in artist.related_artist.edges if e.node is not None]
|
|
1302
|
+
assert len(nodes) == 3
|
|
1303
|
+
assert nodes[0].id == "101"
|
|
1304
|
+
assert nodes[0].name == "Related Artist One"
|
|
1305
|
+
assert nodes[0].fans_count == 500000
|
|
1306
|
+
assert nodes[1].is_favorite is True
|
|
1307
|
+
assert nodes[2].bio is not None
|
|
1308
|
+
assert nodes[2].bio.full == "Full bio text here"
|
|
1309
|
+
|
|
1310
|
+
|
|
1293
1311
|
def test_smoke_get_favorite_audiobooks() -> None:
|
|
1294
1312
|
"""Verify GetFavoriteAudiobooks fixture parses with raw audiobook IDs."""
|
|
1295
1313
|
data = _load_fixture("get_favorite_audiobooks.json")
|
|
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.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/base_client.py
RENAMED
|
File without changes
|
{deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/base_model.py
RENAMED
|
File without changes
|
|
File without changes
|
{deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/create_playlist.py
RENAMED
|
File without changes
|
{deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/delete_playlist.py
RENAMED
|
File without changes
|
|
File without changes
|
{deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_album.py
RENAMED
|
File without changes
|
{deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_artist.py
RENAMED
|
File without changes
|
{deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_artist_mix.py
RENAMED
|
File without changes
|
{deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_audiobook.py
RENAMED
|
File without changes
|
|
File without changes
|
{deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_charts.py
RENAMED
|
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.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_flow.py
RENAMED
|
File without changes
|
{deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_flow_batch.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_livestream.py
RENAMED
|
File without changes
|
{deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_made_for_me.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_playlist.py
RENAMED
|
File without changes
|
{deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/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.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_track.py
RENAMED
|
File without changes
|
{deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_track_mix.py
RENAMED
|
File without changes
|
{deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_user_charts.py
RENAMED
|
File without changes
|
|
File without changes
|
{deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/search_flows.py
RENAMED
|
File without changes
|
|
File without changes
|
{deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/update_playlist.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql.egg-info/not-zip-safe
RENAMED
|
File without changes
|
{deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|