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.
Files changed (90) hide show
  1. {deezer_python_gql-0.13.4/deezer_python_gql.egg-info → deezer_python_gql-0.14.1}/PKG-INFO +2 -2
  2. deezer_python_gql-0.14.1/deezer_python_gql/__init__.py +19 -0
  3. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/__init__.py +14 -0
  4. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/client.py +52 -7
  5. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/fragments.py +0 -1
  6. deezer_python_gql-0.14.1/deezer_python_gql/generated/get_similar_artists.py +42 -0
  7. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1/deezer_python_gql.egg-info}/PKG-INFO +2 -2
  8. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql.egg-info/SOURCES.txt +1 -0
  9. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql.egg-info/requires.txt +1 -1
  10. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/pyproject.toml +2 -2
  11. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/tests/test_client.py +18 -0
  12. deezer_python_gql-0.13.4/deezer_python_gql/__init__.py +0 -5
  13. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/LICENSE +0 -0
  14. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/MANIFEST.in +0 -0
  15. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/README.md +0 -0
  16. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/base_client.py +0 -0
  17. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/add_album_to_favorite.py +0 -0
  18. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/add_artist_to_favorite.py +0 -0
  19. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/add_audiobook_to_favorite.py +0 -0
  20. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/add_playlist_to_favorite.py +0 -0
  21. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/add_podcast_to_favorite.py +0 -0
  22. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/add_track_to_favorite.py +0 -0
  23. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/add_tracks_to_playlist.py +0 -0
  24. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/base_client.py +0 -0
  25. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/base_model.py +0 -0
  26. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/bookmark_podcast_episode.py +0 -0
  27. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/create_playlist.py +0 -0
  28. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/delete_playlist.py +0 -0
  29. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/enums.py +0 -0
  30. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_album.py +0 -0
  31. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_artist.py +0 -0
  32. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_artist_mix.py +0 -0
  33. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_audiobook.py +0 -0
  34. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_audiobook_chapter.py +0 -0
  35. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_charts.py +0 -0
  36. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_favorite_albums.py +0 -0
  37. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_favorite_artists.py +0 -0
  38. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_favorite_audiobooks.py +0 -0
  39. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_favorite_playlists.py +0 -0
  40. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_favorite_podcasts.py +0 -0
  41. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_favorite_tracks.py +0 -0
  42. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_flow.py +0 -0
  43. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_flow_batch.py +0 -0
  44. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_flow_config_tracks.py +0 -0
  45. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_flow_configs.py +0 -0
  46. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_livestream.py +0 -0
  47. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_made_for_me.py +0 -0
  48. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_me.py +0 -0
  49. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_music_together_affinity.py +0 -0
  50. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_music_together_group.py +0 -0
  51. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_music_together_groups.py +0 -0
  52. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_personal_tracks.py +0 -0
  53. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_playlist.py +0 -0
  54. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_podcast.py +0 -0
  55. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_podcast_episode.py +0 -0
  56. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_podcast_episode_bookmarks.py +0 -0
  57. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_podcast_episodes_by_ids.py +0 -0
  58. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_recently_played.py +0 -0
  59. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_recommendations.py +0 -0
  60. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_similar_tracks.py +0 -0
  61. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_smart_tracklist.py +0 -0
  62. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_track.py +0 -0
  63. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_track_mix.py +0 -0
  64. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_user_charts.py +0 -0
  65. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/get_user_playlists.py +0 -0
  66. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/input_types.py +0 -0
  67. {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
  68. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/mark_as_played_podcast_episode.py +0 -0
  69. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/music_together_create_group.py +0 -0
  70. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/music_together_generate_group_name.py +0 -0
  71. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/music_together_join_group.py +0 -0
  72. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/music_together_leave_group.py +0 -0
  73. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/music_together_refresh_suggested_tracklist.py +0 -0
  74. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/music_together_update_group_settings.py +0 -0
  75. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/remove_album_from_favorite.py +0 -0
  76. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/remove_artist_from_favorite.py +0 -0
  77. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/remove_audiobook_from_favorite.py +0 -0
  78. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/remove_playlist_from_favorite.py +0 -0
  79. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/remove_podcast_from_favorite.py +0 -0
  80. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/remove_track_from_favorite.py +0 -0
  81. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/remove_tracks_from_playlist.py +0 -0
  82. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/search.py +0 -0
  83. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/search_flows.py +0 -0
  84. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/unbookmark_podcast_episode.py +0 -0
  85. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/generated/update_playlist.py +0 -0
  86. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql/py.typed +0 -0
  87. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql.egg-info/dependency_links.txt +0 -0
  88. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql.egg-info/not-zip-safe +0 -0
  89. {deezer_python_gql-0.13.4 → deezer_python_gql-0.14.1}/deezer_python_gql.egg-info/top_level.txt +0 -0
  90. {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.13.4
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.0.0; extra == "test"
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
+ ]
@@ -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
  }
@@ -64,7 +64,6 @@ class ArtistFieldsPicture(BaseModel):
64
64
 
65
65
 
66
66
  class ArtistFieldsBio(BaseModel):
67
- summary: Optional[str]
68
67
  full: str
69
68
 
70
69
 
@@ -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.13.4
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.0.0; extra == "test"
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"
@@ -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
@@ -6,7 +6,7 @@ ariadne-codegen[subscriptions]
6
6
 
7
7
  [test]
8
8
  codespell==2.4.2
9
- mypy==2.0.0
9
+ mypy==2.1.0
10
10
  pre-commit==4.6.0
11
11
  pre-commit-hooks==6.0.0
12
12
  pytest==9.0.3
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "deezer-python-gql"
3
- version = "0.13.4"
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.0.0",
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")
@@ -1,5 +0,0 @@
1
- """Async typed Python client for Deezer's Pipe GraphQL API."""
2
-
3
- from deezer_python_gql.generated.client import DeezerGQLClient
4
-
5
- __all__ = ["DeezerGQLClient"]