diff --git a/yandex_music/landing/block.py b/yandex_music/landing/block.py index 07158ba..9405474 100644 --- a/yandex_music/landing/block.py +++ b/yandex_music/landing/block.py @@ -1,7 +1,7 @@ -from typing import TYPE_CHECKING, Optional, List +from typing import TYPE_CHECKING, Optional, List, Union if TYPE_CHECKING: - from yandex_music import Client + from yandex_music import Client, BlockEntity, PersonalPlaylistsData, PlayContextsData from yandex_music import YandexMusicObject @@ -12,9 +12,9 @@ class Block(YandexMusicObject): type_, type_for_from, title, - entities, + entities: List['BlockEntity'], description=None, - data=None, + data: Optional[Union[PersonalPlaylistsData, PlayContextsData]] = None, client: Optional['Client'] = None, **kwargs) -> None: @@ -30,11 +30,11 @@ class Block(YandexMusicObject): self.client = client self._id_attrs = (self.id, self.type, self.type_for_from, self.title, self.entities) - def __getitem__(self, item): + def __getitem__(self, item: int) -> 'BlockEntity': return self.entities[item] @classmethod - def de_json(cls, data: dict, client: 'Client'): + def de_json(cls, data: dict, client: 'Client') -> Optional['Block']: if not data: return None @@ -51,7 +51,7 @@ class Block(YandexMusicObject): return cls(client=client, **data) @classmethod - def de_list(cls, data: dict, client: 'Client'): + def de_list(cls, data: dict, client: 'Client') -> List['Block']: if not data: return [] diff --git a/yandex_music/landing/block_entity.py b/yandex_music/landing/block_entity.py index b87a0b8..5a7304d 100644 --- a/yandex_music/landing/block_entity.py +++ b/yandex_music/landing/block_entity.py @@ -1,4 +1,4 @@ -from typing import TYPE_CHECKING, Optional, List +from typing import TYPE_CHECKING, Optional, List, Union if TYPE_CHECKING: from yandex_music import Client @@ -21,8 +21,9 @@ de_json = { class BlockEntity(YandexMusicObject): def __init__(self, id_, - type_, - data, + type_: str, + data: Optional[Union['GeneratedPlaylist', 'Promotion', 'Album', + 'Playlist', 'ChartItem', 'PlayContext', 'MixLink']], client: Optional['Client'] = None, **kwargs) -> None: @@ -34,7 +35,7 @@ class BlockEntity(YandexMusicObject): self._id_attrs = (self.id, self.type, self.data) @classmethod - def de_json(cls, data: dict, client: 'Client'): + def de_json(cls, data: dict, client: 'Client') -> Optional['BlockEntity']: if not data: return None @@ -44,7 +45,7 @@ class BlockEntity(YandexMusicObject): return cls(client=client, **data) @classmethod - def de_list(cls, data: dict, client: 'Client'): + def de_list(cls, data: dict, client: 'Client') -> List['BlockEntity']: if not data: return [] diff --git a/yandex_music/landing/chart.py b/yandex_music/landing/chart.py index 7aea861..196fdec 100644 --- a/yandex_music/landing/chart.py +++ b/yandex_music/landing/chart.py @@ -1,7 +1,7 @@ from typing import TYPE_CHECKING, Optional, List if TYPE_CHECKING: - from yandex_music import Client + from yandex_music import Client, TrackId from yandex_music import YandexMusicObject @@ -12,7 +12,7 @@ class Chart(YandexMusicObject): progress, listeners, shift, - track_id=None, + track_id: Optional['TrackId'] = None, client: Optional['Client'] = None, **kwargs) -> None: self.position = position @@ -26,7 +26,7 @@ class Chart(YandexMusicObject): self._id_attrs = (self.position, self.progress, self.listeners, self.shift, self.track_id) @classmethod - def de_json(cls, data: dict, client: 'Client'): + def de_json(cls, data: dict, client: 'Client') -> Optional['Chart']: """Десериализация объекта. Args: @@ -48,7 +48,7 @@ class Chart(YandexMusicObject): return cls(client=client, **data) @classmethod - def de_list(cls, data: dict, client: 'Client'): + def de_list(cls, data: dict, client: 'Client') -> List['Chart']: """Десериализация списка объектов. Args: diff --git a/yandex_music/landing/chart_item.py b/yandex_music/landing/chart_item.py index b776c54..926b983 100644 --- a/yandex_music/landing/chart_item.py +++ b/yandex_music/landing/chart_item.py @@ -1,15 +1,15 @@ from typing import TYPE_CHECKING, Optional, List if TYPE_CHECKING: - from yandex_music import Client + from yandex_music import Client, Track, Chart from yandex_music import YandexMusicObject class ChartItem(YandexMusicObject): def __init__(self, - track, - chart, + track: Optional['Track'], + chart: Optional['Chart'], client: Optional['Client'] = None, **kwargs) -> None: self.track = track @@ -19,7 +19,7 @@ class ChartItem(YandexMusicObject): self._id_attrs = (self.track, self.chart) @classmethod - def de_json(cls, data: dict, client: 'Client'): + def de_json(cls, data: dict, client: 'Client') -> Optional['ChartItem']: if not data: return None @@ -31,7 +31,7 @@ class ChartItem(YandexMusicObject): return cls(client=client, **data) @classmethod - def de_list(cls, data: dict, client: 'Client'): + def de_list(cls, data: dict, client: 'Client') -> List['ChartItem']: if not data: return [] diff --git a/yandex_music/landing/mix_link.py b/yandex_music/landing/mix_link.py index 0bb3012..4c9eb8a 100644 --- a/yandex_music/landing/mix_link.py +++ b/yandex_music/landing/mix_link.py @@ -29,7 +29,7 @@ class MixLink(YandexMusicObject): self._id_attrs = (self.url, self.title, self.url_scheme, self.text_color, self.background_color, self.background_image_uri, self.cover_white) - def download_background_image(self, filename, size='200x200'): + def download_background_image(self, filename: str, size: str = '200x200') -> None: """Загрузка заднего фона. Args: @@ -40,7 +40,7 @@ class MixLink(YandexMusicObject): self.client.request.download(f'https://{self.background_image_uri.replace("%%", size)}', filename) @classmethod - def de_json(cls, data: dict, client: 'Client'): + def de_json(cls, data: dict, client: 'Client') -> Optional['MixLink']: if not data: return None @@ -49,7 +49,7 @@ class MixLink(YandexMusicObject): return cls(client=client, **data) @classmethod - def de_list(cls, data: dict, client: 'Client'): + def de_list(cls, data: dict, client: 'Client') -> List['MixLink']: if not data: return [] diff --git a/yandex_music/landing/personal_playlists_data.py b/yandex_music/landing/personal_playlists_data.py index 4980d90..4d57775 100644 --- a/yandex_music/landing/personal_playlists_data.py +++ b/yandex_music/landing/personal_playlists_data.py @@ -8,7 +8,7 @@ from yandex_music import YandexMusicObject class PersonalPlaylistsData(YandexMusicObject): def __init__(self, - is_wizard_passed, + is_wizard_passed: bool, client: Optional['Client'] = None, **kwargs) -> None: self.is_wizard_passed = is_wizard_passed @@ -17,7 +17,7 @@ class PersonalPlaylistsData(YandexMusicObject): self._id_attrs = (self.is_wizard_passed,) @classmethod - def de_json(cls, data: dict, client: 'Client'): + def de_json(cls, data: dict, client: 'Client') -> Optional['PersonalPlaylistsData']: if not data: return None diff --git a/yandex_music/landing/play_context.py b/yandex_music/landing/play_context.py index bd945c4..6f69bdb 100644 --- a/yandex_music/landing/play_context.py +++ b/yandex_music/landing/play_context.py @@ -1,7 +1,7 @@ from typing import TYPE_CHECKING, Optional, List if TYPE_CHECKING: - from yandex_music import Client + from yandex_music import Client, TrackShortOld from yandex_music import YandexMusicObject @@ -11,7 +11,7 @@ class PlayContext(YandexMusicObject): client_, context, context_item, - tracks, + tracks: List['TrackShortOld'], client: Optional['Client'] = None, **kwargs) -> None: self.client_ = client_ @@ -23,7 +23,7 @@ class PlayContext(YandexMusicObject): self._id_attrs = (self.client_, self.context_item, self.context_item, self.tracks) @classmethod - def de_json(cls, data: dict, client: 'Client'): + def de_json(cls, data: dict, client: 'Client') -> Optional['PlayContext']: if not data: return None diff --git a/yandex_music/landing/play_contexts_data.py b/yandex_music/landing/play_contexts_data.py index 0145326..ce469d2 100644 --- a/yandex_music/landing/play_contexts_data.py +++ b/yandex_music/landing/play_contexts_data.py @@ -1,14 +1,14 @@ from typing import TYPE_CHECKING, Optional, List if TYPE_CHECKING: - from yandex_music import Client + from yandex_music import Client, TrackShortOld from yandex_music import YandexMusicObject class PlayContextsData(YandexMusicObject): def __init__(self, - other_tracks, + other_tracks: List['TrackShortOld'], client: Optional['Client'] = None, **kwargs) -> None: self.other_tracks = other_tracks @@ -17,7 +17,7 @@ class PlayContextsData(YandexMusicObject): self._id_attrs = (self.other_tracks,) @classmethod - def de_json(cls, data: dict, client: 'Client'): + def de_json(cls, data: dict, client: 'Client') -> Optional['PlayContextsData']: if not data: return None diff --git a/yandex_music/landing/promotion.py b/yandex_music/landing/promotion.py index 2f65d22..19450da 100644 --- a/yandex_music/landing/promotion.py +++ b/yandex_music/landing/promotion.py @@ -34,7 +34,7 @@ class Promotion(YandexMusicObject): self.url, self.url_scheme, self.text_color, self.gradient, self.image) @classmethod - def de_json(cls, data: dict, client: 'Client'): + def de_json(cls, data: dict, client: 'Client') -> Optional['Promotion']: if not data: return None @@ -43,7 +43,7 @@ class Promotion(YandexMusicObject): return cls(client=client, **data) @classmethod - def de_list(cls, data: dict, client: 'Client'): + def de_list(cls, data: dict, client: 'Client') -> List['Promotion']: if not data: return [] diff --git a/yandex_music/landing/track_id.py b/yandex_music/landing/track_id.py index 590361e..ec9287c 100644 --- a/yandex_music/landing/track_id.py +++ b/yandex_music/landing/track_id.py @@ -19,7 +19,7 @@ class TrackId(YandexMusicObject): self._id_attrs = (self.id, self.album_id) @classmethod - def de_json(cls, data: dict, client: 'Client'): + def de_json(cls, data: dict, client: 'Client') -> Optional['TrackId']: if not data: return None diff --git a/yandex_music/landing/track_short_old.py b/yandex_music/landing/track_short_old.py index 9f06616..2971638 100644 --- a/yandex_music/landing/track_short_old.py +++ b/yandex_music/landing/track_short_old.py @@ -1,14 +1,14 @@ from typing import TYPE_CHECKING, Optional, List if TYPE_CHECKING: - from yandex_music import Client + from yandex_music import Client, TrackId from yandex_music import YandexMusicObject class TrackShortOld(YandexMusicObject): def __init__(self, - track_id, + track_id: Optional['TrackId'], timestamp, client: Optional['Client'] = None, **kwargs) -> None: @@ -19,7 +19,7 @@ class TrackShortOld(YandexMusicObject): self._id_attrs = (self.track_id,) @classmethod - def de_json(cls, data: dict, client: 'Client'): + def de_json(cls, data: dict, client: 'Client') -> Optional['TrackShortOld']: if not data: return None @@ -30,7 +30,7 @@ class TrackShortOld(YandexMusicObject): return cls(client=client, **data) @classmethod - def de_list(cls, data: dict, client: 'Client'): + def de_list(cls, data: dict, client: 'Client') -> List['TrackShortOld']: if not data: return [] diff --git a/yandex_music/likes/albums_likes.py b/yandex_music/likes/albums_likes.py index 6c27533..8701146 100644 --- a/yandex_music/likes/albums_likes.py +++ b/yandex_music/likes/albums_likes.py @@ -1,7 +1,7 @@ from typing import TYPE_CHECKING, Optional, List if TYPE_CHECKING: - from yandex_music import Client + from yandex_music import Client, Album from yandex_music import YandexMusicObject @@ -10,7 +10,7 @@ class AlbumsLikes(YandexMusicObject): def __init__(self, timestamp, id_=None, - album=None, + album: Optional['Album'] = None, client: Optional['Client'] = None, **kwargs) -> None: self.id = id_ @@ -21,7 +21,7 @@ class AlbumsLikes(YandexMusicObject): self._id_attrs = (self.id, self.album) @classmethod - def de_json(cls, data: dict, client: 'Client'): + def de_json(cls, data: dict, client: 'Client') -> Optional['AlbumsLikes']: if not data: return None @@ -32,7 +32,7 @@ class AlbumsLikes(YandexMusicObject): return cls(client=client, **data) @classmethod - def de_list(cls, data: dict, client: 'Client'): + def de_list(cls, data: dict, client: 'Client') -> List['AlbumsLikes']: if not data: return [] diff --git a/yandex_music/likes/artists_likes.py b/yandex_music/likes/artists_likes.py index 488cc95..28ee261 100644 --- a/yandex_music/likes/artists_likes.py +++ b/yandex_music/likes/artists_likes.py @@ -1,7 +1,7 @@ from typing import TYPE_CHECKING, Optional, List if TYPE_CHECKING: - from yandex_music import Client + from yandex_music import Client, Artist from yandex_music import YandexMusicObject @@ -9,7 +9,7 @@ from yandex_music import YandexMusicObject class ArtistsLikes(YandexMusicObject): def __init__(self, id_=None, - artist=None, + artist: Optional['Artist'] = None, timestamp=None, client: Optional['Client'] = None, **kwargs) -> None: @@ -21,7 +21,7 @@ class ArtistsLikes(YandexMusicObject): self._id_attrs = (self.id, self.artist) @classmethod - def de_json(cls, data: dict, client: 'Client'): + def de_json(cls, data: dict, client: 'Client') -> Optional['ArtistsLikes']: if not data: return None @@ -37,7 +37,7 @@ class ArtistsLikes(YandexMusicObject): return cls(client=client, **data) @classmethod - def de_list(cls, data: dict, client: 'Client'): + def de_list(cls, data: dict, client: 'Client') -> List['ArtistsLikes']: if not data: return [] diff --git a/yandex_music/likes/playlists_likes.py b/yandex_music/likes/playlists_likes.py index 3b9946f..7677d21 100644 --- a/yandex_music/likes/playlists_likes.py +++ b/yandex_music/likes/playlists_likes.py @@ -1,7 +1,7 @@ from typing import TYPE_CHECKING, Optional, List if TYPE_CHECKING: - from yandex_music import Client + from yandex_music import Client, Playlist from yandex_music import YandexMusicObject @@ -10,7 +10,7 @@ class PlaylistsLikes(YandexMusicObject): def __init__(self, timestamp, id_=None, - playlist=None, + playlist: Optional['Playlist'] = None, client: Optional['Client'] = None, **kwargs) -> None: self.id = id_ @@ -21,7 +21,7 @@ class PlaylistsLikes(YandexMusicObject): self._id_attrs = (self.id, self.playlist) @classmethod - def de_json(cls, data: dict, client: 'Client'): + def de_json(cls, data: dict, client: 'Client') -> Optional['PlaylistsLikes']: if not data: return None @@ -32,7 +32,7 @@ class PlaylistsLikes(YandexMusicObject): return cls(client=client, **data) @classmethod - def de_list(cls, data: dict, client: 'Client'): + def de_list(cls, data: dict, client: 'Client') -> List['PlaylistsLikes']: if not data: return [] diff --git a/yandex_music/playlist/case_forms.py b/yandex_music/playlist/case_forms.py index 43732d5..838d13a 100644 --- a/yandex_music/playlist/case_forms.py +++ b/yandex_music/playlist/case_forms.py @@ -28,7 +28,7 @@ class CaseForms(YandexMusicObject): self.accusative, self.instrumental, self.prepositional) @classmethod - def de_json(cls, data: dict, client: 'Client'): + def de_json(cls, data: dict, client: 'Client') -> Optional['CaseForms']: if not data: return None diff --git a/yandex_music/playlist/made_for.py b/yandex_music/playlist/made_for.py index bb5d57b..b6d1cf9 100644 --- a/yandex_music/playlist/made_for.py +++ b/yandex_music/playlist/made_for.py @@ -1,15 +1,15 @@ from typing import TYPE_CHECKING, Optional if TYPE_CHECKING: - from yandex_music import Client + from yandex_music import Client, User, CaseForms from yandex_music import YandexMusicObject class MadeFor(YandexMusicObject): def __init__(self, - user_info, - case_forms, + user_info: Optional['User'], + case_forms: Optional['CaseForms'], client: Optional['Client'] = None, **kwargs) -> None: self.user_info = user_info @@ -19,7 +19,7 @@ class MadeFor(YandexMusicObject): self._id_attrs = (self.user_info, self.case_forms) @classmethod - def de_json(cls, data: dict, client: 'Client'): + def de_json(cls, data: dict, client: 'Client') -> Optional['MadeFor']: if not data: return None diff --git a/yandex_music/playlist/play_counter.py b/yandex_music/playlist/play_counter.py index efceae2..c5703c3 100644 --- a/yandex_music/playlist/play_counter.py +++ b/yandex_music/playlist/play_counter.py @@ -21,7 +21,7 @@ class PlayCounter(YandexMusicObject): self._id_attrs = (self.value, self.description, self.updated) @classmethod - def de_json(cls, data: dict, client: 'Client'): + def de_json(cls, data: dict, client: 'Client') -> Optional['PlayCounter']: if not data: return None diff --git a/yandex_music/playlist/playlist_absence.py b/yandex_music/playlist/playlist_absence.py index 3aaec71..3290cbb 100644 --- a/yandex_music/playlist/playlist_absence.py +++ b/yandex_music/playlist/playlist_absence.py @@ -24,8 +24,8 @@ class PlaylistAbsence(YandexMusicObject): """ def __init__(self, - kind, - reason, + kind: int, + reason: str, client: Optional['Client'] = None, **kwargs) -> None: self.kind = kind @@ -35,7 +35,7 @@ class PlaylistAbsence(YandexMusicObject): self._id_attrs = (self.kind, self.reason) @classmethod - def de_json(cls, data: dict, client: 'Client'): + def de_json(cls, data: dict, client: 'Client') -> Optional['PlaylistAbsence']: """Десериализация объекта. Args: diff --git a/yandex_music/playlist/playlist_id.py b/yandex_music/playlist/playlist_id.py index 65a8af5..871d5b7 100644 --- a/yandex_music/playlist/playlist_id.py +++ b/yandex_music/playlist/playlist_id.py @@ -19,7 +19,7 @@ class PlaylistId(YandexMusicObject): self._id_attrs = (self.uid, self.kind) @classmethod - def de_json(cls, data: dict, client: 'Client'): + def de_json(cls, data: dict, client: 'Client') -> Optional['PlaylistId']: """Десериализация объекта. Args: @@ -39,7 +39,7 @@ class PlaylistId(YandexMusicObject): return cls(client=client, **data) @classmethod - def de_list(cls, data: dict, client: 'Client'): + def de_list(cls, data: dict, client: 'Client') -> List['PlaylistId']: """Десериализация списка объектов. Args: diff --git a/yandex_music/playlist/user.py b/yandex_music/playlist/user.py index a019a13..14ac693 100644 --- a/yandex_music/playlist/user.py +++ b/yandex_music/playlist/user.py @@ -15,7 +15,8 @@ class User(YandexMusicObject): name (:obj:`str`): Имя пользователя. sex (:obj:`str`): Пол пользователя. verified (:obj:`bool`): Участвует ли пользователь в генерации плейлистов дня и т.д., и т.п. - client (:obj:`yandex_music.Client`): Объект класса :class:`yandex_music.Client` представляющий клиент Yandex Music. + client (:obj:`yandex_music.Client`): Объект класса :class:`yandex_music.Client` представляющий клиент Yandex + Music. Args: uid (:obj:`int`): Идентификатор пользователя. @@ -23,16 +24,17 @@ class User(YandexMusicObject): name (:obj:`str`): Имя пользователя. sex (:obj:`str`): Пол пользователя. verified (:obj:`bool`): Участвует ли пользователь в генерации плейлистов дня и т.д., и т.п. - client (:obj:`yandex_music.Client`, optional): Объект класса :class:`yandex_music.Client` представляющий клиент Yandex Music. + client (:obj:`yandex_music.Client`, optional): Объект класса :class:`yandex_music.Client` представляющий клиент + Yandex Music. **kwargs: Произвольные ключевые аргументы полученные от API. """ def __init__(self, - uid, - login, - name, - sex, - verified, + uid: int, + login: str, + name: str, + sex: str, + verified: bool, client: Optional['Client'] = None, **kwargs) -> None: self.uid = uid @@ -44,7 +46,7 @@ class User(YandexMusicObject): self.client = client self._id_attrs = (self.uid, self.login) - def download_avatar(self, filename, format_='normal'): + def download_avatar(self, filename: str, format_: str = 'normal') -> None: """Загрузка изображения пользователя. Args: @@ -55,7 +57,7 @@ class User(YandexMusicObject): self.client.request.download(f'https://upics.yandex.net/{self.uid}/{format_}', filename) @classmethod - def de_json(cls, data: dict, client: 'Client'): + def de_json(cls, data: dict, client: 'Client') -> Optional['User']: """Десериализация объекта. Args: