Тайп хинты для Label, TrackPosition, Artist, ArtistAlbums, ArtistTracks, BriefInfo, Counts, Description, Link, Ratings, Vinyl, AlbumEvent, ArtistEvent, Day, Event, GeneratedPlaylist, TrackWithAds, Genre, Images, Title

このコミットが含まれているのは:
Marshal 2019-12-28 14:38:59 +03:00
コミット 510b37bb32
20個のファイルの変更98行の追加98行の削除

ファイルの表示

@ -17,13 +17,13 @@ class Label(YandexMusicObject):
Args: Args:
id_ (:obj:`int`): Идентификатор альбома. id_ (:obj:`int`): Идентификатор альбома.
name (:obj:`str`): Название альбома. name (:obj:`str`): Название альбома.
client (:obj:`yandex_music.Client`, optional): Объект класса :class:`yandex_music.Client` представляющий клиент client (:obj:`yandex_music.Client`, optional): Объект класса :class:`yandex_music.Client` представляющий
Yandex Music. клиент Yandex Music.
**kwargs: Произвольные ключевые аргументы полученные от API. **kwargs: Произвольные ключевые аргументы полученные от API.
""" """
def __init__(self, def __init__(self,
id_, id_: int,
name, name: str,
client: Optional['Client'] = None, client: Optional['Client'] = None,
**kwargs) -> None: **kwargs) -> None:
self.id = id_ self.id = id_
@ -33,7 +33,7 @@ class Label(YandexMusicObject):
self._id_attrs = (self.id, self.name) self._id_attrs = (self.id, self.name)
@classmethod @classmethod
def de_json(cls, data: dict, client: 'Client'): def de_json(cls, data: dict, client: 'Client') -> Optional['Label']:
"""Десериализация объекта. """Десериализация объекта.
Args: Args:
@ -51,13 +51,13 @@ class Label(YandexMusicObject):
return cls(client=client, **data) return cls(client=client, **data)
@classmethod @classmethod
def de_list(cls, data: dict, client: 'Client'): def de_list(cls, data: dict, client: 'Client') -> List['Label']:
"""Десериализация списка объектов. """Десериализация списка объектов.
Args: Args:
data (:obj:`list`): Список словарей с полями и значениями десериализуемого объекта. data (:obj:`list`): Список словарей с полями и значениями десериализуемого объекта.
client (:obj:`yandex_music.Client`): Объект класса :class:`yandex_music.Client` представляющий клиент Yandex client (:obj:`yandex_music.Client`): Объект класса :class:`yandex_music.Client` представляющий клиент
Music. Yandex Music.
Returns: Returns:
:obj:`list` из :obj:`yandex_music.Label`: Список объектов класса :class:`yandex_music.Label`. :obj:`list` из :obj:`yandex_music.Label`: Список объектов класса :class:`yandex_music.Label`.
""" """

ファイルの表示

@ -19,7 +19,7 @@ class TrackPosition(YandexMusicObject):
self._id_attrs = (self.volume, self.index) self._id_attrs = (self.volume, self.index)
@classmethod @classmethod
def de_json(cls, data: dict, client: 'Client'): def de_json(cls, data: dict, client: 'Client') -> Optional['TrackPosition']:
if not data: if not data:
return None return None

ファイルの表示

@ -1,7 +1,7 @@
from typing import TYPE_CHECKING, Optional, List from typing import TYPE_CHECKING, Optional, List
if TYPE_CHECKING: if TYPE_CHECKING:
from yandex_music import Client from yandex_music import Client, Cover, Ratings, Counts, Link, Track, Description, ArtistTracks, ArtistAlbums
from yandex_music import YandexMusicObject from yandex_music import YandexMusicObject
@ -10,23 +10,23 @@ class Artist(YandexMusicObject):
def __init__(self, def __init__(self,
id_, id_,
name, name,
cover, cover: Optional['Cover'],
various=None, various=None,
composer=None, composer=None,
genres=None, genres=None,
op_image=None, op_image=None,
no_pictures_from_search=None, no_pictures_from_search=None,
counts=None, counts: Optional['Counts'] = None,
available=None, available=None,
ratings=None, ratings: Optional['Ratings'] = None,
links=None, links: List['Link'] = None,
tickets_available=None, tickets_available=None,
likes_count=None, likes_count=None,
popular_tracks=None, popular_tracks: List['Track'] = None,
regions=None, regions=None,
decomposed=None, decomposed=None,
full_names=None, full_names=None,
description=None, description: Optional['Description'] = None,
countries=None, countries=None,
en_wikipedia_link=None, en_wikipedia_link=None,
db_aliases=None, db_aliases=None,
@ -67,7 +67,7 @@ class Artist(YandexMusicObject):
self.client = client self.client = client
self._id_attrs = (self.id, self.name, self.cover) self._id_attrs = (self.id, self.name, self.cover)
def download_op_image(self, filename, size='200x200'): def download_op_image(self, filename: str, size: str = '200x200') -> None:
"""Загрузка обложки. """Загрузка обложки.
Используйте это только когда нет self.cover! Используйте это только когда нет self.cover!
@ -79,28 +79,28 @@ class Artist(YandexMusicObject):
self.client.request.download(f'https://{self.op_image.replace("%%", size)}', filename) self.client.request.download(f'https://{self.op_image.replace("%%", size)}', filename)
def like(self, *args, **kwargs): def like(self, *args, **kwargs) -> bool:
"""Сокращение для:: """Сокращение для::
client.users_likes_artists_add(artist.id, user.id *args, **kwargs) client.users_likes_artists_add(artist.id, user.id *args, **kwargs)
""" """
return self.client.users_likes_artists_add(self.id, self.client.me.account.uid, *args, **kwargs) return self.client.users_likes_artists_add(self.id, self.client.me.account.uid, *args, **kwargs)
def dislike(self, *args, **kwargs): def dislike(self, *args, **kwargs) -> bool:
"""Сокращение для:: """Сокращение для::
client.users_likes_artists_remove(artist.id, user.id *args, **kwargs) client.users_likes_artists_remove(artist.id, user.id *args, **kwargs)
""" """
return self.client.users_likes_artists_remove(self.id, self.client.me.account.uid, *args, **kwargs) return self.client.users_likes_artists_remove(self.id, self.client.me.account.uid, *args, **kwargs)
def get_tracks(self, page=0, page_size=20, *args, **kwargs): def get_tracks(self, page=0, page_size=20, *args, **kwargs) -> Optional['ArtistTracks']:
"""Сокращение для:: """Сокращение для::
client.artists_tracks(artist.id, page, page_size, *args, **kwargs) client.artists_tracks(artist.id, page, page_size, *args, **kwargs)
""" """
return self.client.artists_tracks(self.id, page, page_size, *args, **kwargs) return self.client.artists_tracks(self.id, page, page_size, *args, **kwargs)
def get_albums(self, page=0, page_size=20, sort_by='year', *args, **kwargs): def get_albums(self, page=0, page_size=20, sort_by='year', *args, **kwargs) -> Optional['ArtistAlbums']:
"""Сокращение для:: """Сокращение для::
client.artists_direct_albums(artist.id, page, page_size, sort_by, *args, **kwargs) client.artists_direct_albums(artist.id, page, page_size, sort_by, *args, **kwargs)
@ -108,7 +108,7 @@ class Artist(YandexMusicObject):
return self.client.artists_direct_albums(self.id, page, page_size, sort_by, *args, **kwargs) return self.client.artists_direct_albums(self.id, page, page_size, sort_by, *args, **kwargs)
@classmethod @classmethod
def de_json(cls, data: dict, client: 'Client'): def de_json(cls, data: dict, client: 'Client') -> Optional['Artist']:
if not data: if not data:
return None return None
@ -125,7 +125,7 @@ class Artist(YandexMusicObject):
return cls(client=client, **data) return cls(client=client, **data)
@classmethod @classmethod
def de_list(cls, data: dict, client: 'Client'): def de_list(cls, data: dict, client: 'Client') -> List['Artist']:
if not data: if not data:
return [] return []

ファイルの表示

@ -1,7 +1,7 @@
from typing import TYPE_CHECKING, Optional, List from typing import TYPE_CHECKING, Optional, List
if TYPE_CHECKING: if TYPE_CHECKING:
from yandex_music import Client from yandex_music import Client, Album, Pager
from yandex_music import YandexMusicObject from yandex_music import YandexMusicObject
@ -24,8 +24,8 @@ class ArtistAlbums(YandexMusicObject):
""" """
def __init__(self, def __init__(self,
albums, albums: List['Album'],
pager, pager: Optional['Pager'],
client: Optional['Client'] = None, client: Optional['Client'] = None,
**kwargs) -> None: **kwargs) -> None:
self.albums = albums self.albums = albums
@ -35,7 +35,7 @@ class ArtistAlbums(YandexMusicObject):
self._id_attrs = (self.pager, self.albums) self._id_attrs = (self.pager, self.albums)
@classmethod @classmethod
def de_json(cls, data: dict, client: 'Client'): def de_json(cls, data: dict, client: 'Client') -> Optional['ArtistAlbums']:
"""Десериализация объекта. """Десериализация объекта.
Args: Args:

ファイルの表示

@ -1,7 +1,7 @@
from typing import TYPE_CHECKING, Optional, List from typing import TYPE_CHECKING, Optional, List
if TYPE_CHECKING: if TYPE_CHECKING:
from yandex_music import Client from yandex_music import Client, Track, Pager
from yandex_music import YandexMusicObject from yandex_music import YandexMusicObject
@ -24,8 +24,8 @@ class ArtistTracks(YandexMusicObject):
""" """
def __init__(self, def __init__(self,
tracks, tracks: List['Track'],
pager, pager: Optional['Pager'],
client: Optional['Client'] = None, client: Optional['Client'] = None,
**kwargs) -> None: **kwargs) -> None:
self.tracks = tracks self.tracks = tracks
@ -35,7 +35,7 @@ class ArtistTracks(YandexMusicObject):
self._id_attrs = (self.pager, self.tracks) self._id_attrs = (self.pager, self.tracks)
@classmethod @classmethod
def de_json(cls, data: dict, client: 'Client'): def de_json(cls, data: dict, client: 'Client') -> Optional['ArtistTracks']:
"""Десериализация объекта. """Десериализация объекта.
Args: Args:

ファイルの表示

@ -1,26 +1,26 @@
from typing import TYPE_CHECKING, Optional, List from typing import TYPE_CHECKING, Optional, List
if TYPE_CHECKING: if TYPE_CHECKING:
from yandex_music import Client from yandex_music import Client, Artist, Track, Album, Cover, PlaylistId, Video, Chart, Vinyl
from yandex_music import YandexMusicObject from yandex_music import YandexMusicObject
class BriefInfo(YandexMusicObject): class BriefInfo(YandexMusicObject):
def __init__(self, def __init__(self,
artist, artist: Optional['Artist'],
albums, albums: List['Album'],
also_albums, also_albums: List['Album'],
last_release_ids, last_release_ids,
popular_tracks, popular_tracks: List['Track'],
similar_artists, similar_artists: List['Artist'],
all_covers, all_covers: List['Cover'],
concerts, concerts,
videos, videos: List['Video'],
vinyls, vinyls: List['Vinyl'],
has_promotions, has_promotions,
playlist_ids, playlist_ids: List['PlaylistId'],
tracks_in_chart=None, tracks_in_chart: List['Chart'] = None,
client: Optional['Client'] = None, client: Optional['Client'] = None,
**kwargs) -> None: **kwargs) -> None:
self.artist = artist self.artist = artist
@ -44,7 +44,7 @@ class BriefInfo(YandexMusicObject):
self.has_promotions, self.playlist_ids) self.has_promotions, self.playlist_ids)
@classmethod @classmethod
def de_json(cls, data: dict, client: 'Client'): def de_json(cls, data: dict, client: 'Client') -> Optional['BriefInfo']:
"""Десериализация объекта. """Десериализация объекта.
Args: Args:

ファイルの表示

@ -23,7 +23,7 @@ class Counts(YandexMusicObject):
self._id_attrs = (self.tracks, self.direct_albums, self.also_albums, self.also_tracks) self._id_attrs = (self.tracks, self.direct_albums, self.also_albums, self.also_tracks)
@classmethod @classmethod
def de_json(cls, data: dict, client: 'Client'): def de_json(cls, data: dict, client: 'Client') -> Optional['Counts']:
if not data: if not data:
return None return None

ファイルの表示

@ -19,7 +19,7 @@ class Description(YandexMusicObject):
self._id_attrs = (self.text, self.url) self._id_attrs = (self.text, self.url)
@classmethod @classmethod
def de_json(cls, data: dict, client: 'Client'): def de_json(cls, data: dict, client: 'Client') -> Optional['Description']:
"""Десериализация объекта. """Десериализация объекта.
Args: Args:

ファイルの表示

@ -24,7 +24,7 @@ class Link(YandexMusicObject):
self._id_attrs = (self.title, self.href, self.type) self._id_attrs = (self.title, self.href, self.type)
@classmethod @classmethod
def de_json(cls, data: dict, client: 'Client'): def de_json(cls, data: dict, client: 'Client') -> Optional['Link']:
if not data: if not data:
return None return None
@ -33,7 +33,7 @@ class Link(YandexMusicObject):
return cls(client=client, **data) return cls(client=client, **data)
@classmethod @classmethod
def de_list(cls, data: dict, client: 'Client'): def de_list(cls, data: dict, client: 'Client') -> List['Link']:
if not data: if not data:
return [] return []

ファイルの表示

@ -22,7 +22,7 @@ class Ratings(YandexMusicObject):
self._id_attrs = (self.week, self.month) self._id_attrs = (self.week, self.month)
@classmethod @classmethod
def de_json(cls, data: dict, client: 'Client'): def de_json(cls, data: dict, client: 'Client') -> Optional['Ratings']:
if not data: if not data:
return None return None

ファイルの表示

@ -27,7 +27,7 @@ class Vinyl(YandexMusicObject):
self._id_attrs = (self.title, self.price, self.year, self.url, self.price, self.media) self._id_attrs = (self.title, self.price, self.year, self.url, self.price, self.media)
@classmethod @classmethod
def de_json(cls, data: dict, client: 'Client'): def de_json(cls, data: dict, client: 'Client') -> Optional['Vinyl']:
"""Десериализация объекта. """Десериализация объекта.
Args: Args:
@ -47,7 +47,7 @@ class Vinyl(YandexMusicObject):
return cls(client=client, **data) return cls(client=client, **data)
@classmethod @classmethod
def de_list(cls, data: dict, client: 'Client'): def de_list(cls, data: dict, client: 'Client') -> List['Vinyl']:
"""Десериализация списка объектов. """Десериализация списка объектов.
Args: Args:

ファイルの表示

@ -1,15 +1,15 @@
from typing import TYPE_CHECKING, Optional, List from typing import TYPE_CHECKING, Optional, List
if TYPE_CHECKING: if TYPE_CHECKING:
from yandex_music import Client from yandex_music import Client, Album, Track
from yandex_music import YandexMusicObject from yandex_music import YandexMusicObject
class AlbumEvent(YandexMusicObject): class AlbumEvent(YandexMusicObject):
def __init__(self, def __init__(self,
album, album: Optional['Album'],
tracks, tracks: List['Track'],
client: Optional['Client'] = None, client: Optional['Client'] = None,
**kwargs) -> None: **kwargs) -> None:
self.album = album self.album = album
@ -19,7 +19,7 @@ class AlbumEvent(YandexMusicObject):
self._id_attrs = (self.album, self.tracks) self._id_attrs = (self.album, self.tracks)
@classmethod @classmethod
def de_json(cls, data: dict, client: 'Client'): def de_json(cls, data: dict, client: 'Client') -> Optional['AlbumEvent']:
if not data: if not data:
return None return None
@ -31,7 +31,7 @@ class AlbumEvent(YandexMusicObject):
return cls(client=client, **data) return cls(client=client, **data)
@classmethod @classmethod
def de_list(cls, data: dict, client: 'Client'): def de_list(cls, data: dict, client: 'Client') -> List['AlbumEvent']:
if not data: if not data:
return [] return []

ファイルの表示

@ -1,16 +1,16 @@
from typing import TYPE_CHECKING, Optional, List from typing import TYPE_CHECKING, Optional, List
if TYPE_CHECKING: if TYPE_CHECKING:
from yandex_music import Client from yandex_music import Client, Artist, Track
from yandex_music import YandexMusicObject from yandex_music import YandexMusicObject
class ArtistEvent(YandexMusicObject): class ArtistEvent(YandexMusicObject):
def __init__(self, def __init__(self,
artist, artist: Optional['Artist'],
tracks, tracks: List['Track'],
similar_to_artists_from_history, similar_to_artists_from_history: List['Artist'],
client: Optional['Client'] = None, client: Optional['Client'] = None,
**kwargs) -> None: **kwargs) -> None:
self.artist = artist self.artist = artist
@ -21,7 +21,7 @@ class ArtistEvent(YandexMusicObject):
self._id_attrs = (self.artist, self.tracks, self.similar_to_artists_from_history) self._id_attrs = (self.artist, self.tracks, self.similar_to_artists_from_history)
@classmethod @classmethod
def de_json(cls, data: dict, client: 'Client'): def de_json(cls, data: dict, client: 'Client') -> Optional['ArtistEvent']:
if not data: if not data:
return None return None
@ -34,7 +34,7 @@ class ArtistEvent(YandexMusicObject):
return cls(client=client, **data) return cls(client=client, **data)
@classmethod @classmethod
def de_list(cls, data: dict, client: 'Client'): def de_list(cls, data: dict, client: 'Client') -> List['ArtistEvent']:
if not data: if not data:
return [] return []

ファイルの表示

@ -1,7 +1,7 @@
from typing import TYPE_CHECKING, Optional, List from typing import TYPE_CHECKING, Optional, List
if TYPE_CHECKING: if TYPE_CHECKING:
from yandex_music import Client from yandex_music import Client, Event, Track, TrackWithAds
from yandex_music import YandexMusicObject from yandex_music import YandexMusicObject
@ -9,9 +9,9 @@ from yandex_music import YandexMusicObject
class Day(YandexMusicObject): class Day(YandexMusicObject):
def __init__(self, def __init__(self,
day, day,
events, events: List['Event'],
tracks_to_play_with_ads, tracks_to_play_with_ads: List['TrackWithAds'],
tracks_to_play, tracks_to_play: List['Track'],
client: Optional['Client'] = None, client: Optional['Client'] = None,
**kwargs) -> None: **kwargs) -> None:
self.day = day self.day = day
@ -23,7 +23,7 @@ class Day(YandexMusicObject):
self._id_attrs = (self.day, self.events, self.tracks_to_play_with_ads, self.tracks_to_play) self._id_attrs = (self.day, self.events, self.tracks_to_play_with_ads, self.tracks_to_play)
@classmethod @classmethod
def de_json(cls, data: dict, client: 'Client'): def de_json(cls, data: dict, client: 'Client') -> Optional['Day']:
if not data: if not data:
return None return None
@ -36,7 +36,7 @@ class Day(YandexMusicObject):
return cls(client=client, **data) return cls(client=client, **data)
@classmethod @classmethod
def de_list(cls, data: dict, client: 'Client'): def de_list(cls, data: dict, client: 'Client') -> List['Day']:
if not data: if not data:
return [] return []

ファイルの表示

@ -1,7 +1,7 @@
from typing import TYPE_CHECKING, Optional, List from typing import TYPE_CHECKING, Optional, List
if TYPE_CHECKING: if TYPE_CHECKING:
from yandex_music import Client from yandex_music import Client, Track, AlbumEvent, ArtistEvent
from yandex_music import YandexMusicObject from yandex_music import YandexMusicObject
@ -12,9 +12,9 @@ class Event(YandexMusicObject):
type_, type_,
type_for_from=None, type_for_from=None,
title=None, title=None,
tracks=None, tracks: List['Track'] = None,
artists=None, artists: List['ArtistEvent'] = None,
albums=None, albums: List['AlbumEvent'] = None,
message=None, message=None,
device=None, device=None,
tracks_count=None, tracks_count=None,
@ -36,7 +36,7 @@ class Event(YandexMusicObject):
self._id_attrs = (self.id, self.type) self._id_attrs = (self.id, self.type)
@classmethod @classmethod
def de_json(cls, data: dict, client: 'Client'): def de_json(cls, data: dict, client: 'Client') -> Optional['Event']:
if not data: if not data:
return None return None
@ -49,7 +49,7 @@ class Event(YandexMusicObject):
return cls(client=client, **data) return cls(client=client, **data)
@classmethod @classmethod
def de_list(cls, data: dict, client: 'Client'): def de_list(cls, data: dict, client: 'Client') -> List['Event']:
if not data: if not data:
return [] return []

ファイルの表示

@ -1,7 +1,7 @@
from typing import TYPE_CHECKING, Optional, List from typing import TYPE_CHECKING, Optional, List
if TYPE_CHECKING: if TYPE_CHECKING:
from yandex_music import Client from yandex_music import Client, Playlist
from yandex_music import YandexMusicObject from yandex_music import YandexMusicObject
@ -11,7 +11,7 @@ class GeneratedPlaylist(YandexMusicObject):
type_, type_,
ready, ready,
notify, notify,
data, data: Optional['Playlist'],
client: Optional['Client'] = None, client: Optional['Client'] = None,
**kwargs) -> None: **kwargs) -> None:
self.type = type_ self.type = type_
@ -23,7 +23,7 @@ class GeneratedPlaylist(YandexMusicObject):
self._id_attrs = (self.type, self.ready, self.notify, self.data) self._id_attrs = (self.type, self.ready, self.notify, self.data)
@classmethod @classmethod
def de_json(cls, data: dict, client: 'Client'): def de_json(cls, data: dict, client: 'Client') -> Optional['GeneratedPlaylist']:
if not data: if not data:
return None return None
@ -34,7 +34,7 @@ class GeneratedPlaylist(YandexMusicObject):
return cls(client=client, **data) return cls(client=client, **data)
@classmethod @classmethod
def de_list(cls, data: dict, client: 'Client'): def de_list(cls, data: dict, client: 'Client') -> List['GeneratedPlaylist']:
if not data: if not data:
return [] return []

ファイルの表示

@ -1,15 +1,15 @@
from typing import TYPE_CHECKING, Optional, List from typing import TYPE_CHECKING, Optional, List
if TYPE_CHECKING: if TYPE_CHECKING:
from yandex_music import Client from yandex_music import Client, Track
from yandex_music import YandexMusicObject from yandex_music import YandexMusicObject
class TrackWithAds(YandexMusicObject): class TrackWithAds(YandexMusicObject):
def __init__(self, def __init__(self,
type_, type_: str,
track, track: Optional['Track'],
client: Optional['Client'] = None, client: Optional['Client'] = None,
**kwargs) -> None: **kwargs) -> None:
self.type = type_ self.type = type_
@ -19,7 +19,7 @@ class TrackWithAds(YandexMusicObject):
self._id_attrs = (self.type, self.track) self._id_attrs = (self.type, self.track)
@classmethod @classmethod
def de_json(cls, data: dict, client: 'Client'): def de_json(cls, data: dict, client: 'Client') -> Optional['TrackWithAds']:
if not data: if not data:
return None return None
@ -30,7 +30,7 @@ class TrackWithAds(YandexMusicObject):
return cls(client=client, **data) return cls(client=client, **data)
@classmethod @classmethod
def de_list(cls, data: dict, client: 'Client'): def de_list(cls, data: dict, client: 'Client') -> List['TrackWithAds']:
if not data: if not data:
return [] return []

ファイルの表示

@ -1,7 +1,7 @@
from typing import TYPE_CHECKING, Optional, List from typing import TYPE_CHECKING, Optional, List, Dict
if TYPE_CHECKING: if TYPE_CHECKING:
from yandex_music import Client from yandex_music import Client, Title, Icon, Images
from yandex_music import YandexMusicObject from yandex_music import YandexMusicObject
@ -12,14 +12,14 @@ class Genre(YandexMusicObject):
weight, weight,
composer_top, composer_top,
title, title,
titles, titles: Dict[str, Optional['Title']],
images, images: Optional['Images'],
show_in_menu, show_in_menu,
full_title=None, full_title=None,
url_part=None, url_part=None,
color=None, color=None,
radio_icon=None, radio_icon: Optional['Icon'] = None,
sub_genres=None, sub_genres: List['Genre'] = None,
hide_in_regions=None, hide_in_regions=None,
client: Optional['Client'] = None, client: Optional['Client'] = None,
**kwargs) -> None: **kwargs) -> None:
@ -42,7 +42,7 @@ class Genre(YandexMusicObject):
self._id_attrs = (self.id, self.weight, self.composer_top, self.title, self.images, self.show_in_menu) self._id_attrs = (self.id, self.weight, self.composer_top, self.title, self.images, self.show_in_menu)
@classmethod @classmethod
def de_json(cls, data: dict, client: 'Client'): def de_json(cls, data: dict, client: 'Client') -> Optional['Genre']:
if not data: if not data:
return None return None
@ -56,7 +56,7 @@ class Genre(YandexMusicObject):
return cls(client=client, **data) return cls(client=client, **data)
@classmethod @classmethod
def de_list(cls, data: dict, client: 'Client'): def de_list(cls, data: dict, client: 'Client') -> List['Genre']:
if not data: if not data:
return [] return []

ファイルの表示

@ -8,8 +8,8 @@ from yandex_music import YandexMusicObject
class Images(YandexMusicObject): class Images(YandexMusicObject):
def __init__(self, def __init__(self,
_208x208=None, _208x208: Optional[str] = None,
_300x300=None, _300x300: Optional[str] = None,
client: Optional['Client'] = None, client: Optional['Client'] = None,
**kwargs) -> None: **kwargs) -> None:
self._208x208 = _208x208 self._208x208 = _208x208
@ -17,7 +17,7 @@ class Images(YandexMusicObject):
self.client = client self.client = client
def download_208x208(self, filename): def download_208x208(self, filename: str) -> None:
"""Загрузка изображения 208x208. """Загрузка изображения 208x208.
Args: Args:
@ -26,7 +26,7 @@ class Images(YandexMusicObject):
self.client.request.download(self._208x208, filename) self.client.request.download(self._208x208, filename)
def download_300x300(self, filename): def download_300x300(self, filename: str) -> None:
"""Загрузка изображения 300x300. """Загрузка изображения 300x300.
Args: Args:
@ -36,7 +36,7 @@ class Images(YandexMusicObject):
self.client.request.download(self._300x300, filename) self.client.request.download(self._300x300, filename)
@classmethod @classmethod
def de_json(cls, data: dict, client: 'Client'): def de_json(cls, data: dict, client: 'Client') -> Optional['Images']:
if not data: if not data:
return None return None

ファイルの表示

@ -1,4 +1,4 @@
from typing import TYPE_CHECKING, Optional from typing import TYPE_CHECKING, Optional, Dict
if TYPE_CHECKING: if TYPE_CHECKING:
from yandex_music import Client from yandex_music import Client
@ -19,7 +19,7 @@ class Title(YandexMusicObject):
self._id_attrs = (self.title, self.full_title) self._id_attrs = (self.title, self.full_title)
@classmethod @classmethod
def de_json(cls, data: dict, client: 'Client'): def de_json(cls, data: dict, client: 'Client') -> Optional['Title']:
if not data: if not data:
return None return None
@ -28,7 +28,7 @@ class Title(YandexMusicObject):
return cls(client=client, **data) return cls(client=client, **data)
@classmethod @classmethod
def de_dict(cls, data, client): def de_dict(cls, data, client) -> Dict[str, Optional['Title']]:
if not data: if not data:
return {} return {}