From 9d8b58f5c52ac169576824bbcbe0171edba2dcd5 Mon Sep 17 00:00:00 2001 From: Marshal Date: Fri, 27 Dec 2019 16:06:24 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D1=82=D0=B0=D0=B9=D0=BF=20=D1=85=D0=B8=D0=BD?= =?UTF-8?q?=D1=82=D1=8B=20=D0=B4=D0=BB=D1=8F=20Suggestions,=20SearchResult?= =?UTF-8?q?,=20Search,=20Best,=20Value,=20StationResult,=20Station,=20Sequ?= =?UTF-8?q?ence,=20RotorSettings,=20Restrictions,=20Id,=20Enum,=20Discrete?= =?UTF-8?q?Scale,=20Dashboard,=20AdParams?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yandex_music/rotor/ad_params.py | 2 +- yandex_music/rotor/dashboard.py | 6 +-- yandex_music/rotor/discrete_scale.py | 8 ++-- yandex_music/rotor/enum.py | 6 +-- yandex_music/rotor/id.py | 2 +- yandex_music/rotor/restrictions.py | 12 +++--- yandex_music/rotor/rotor_settings.py | 2 +- yandex_music/rotor/sequence.py | 8 ++-- yandex_music/rotor/station.py | 18 ++++----- yandex_music/rotor/station_result.py | 16 ++++---- yandex_music/rotor/value.py | 4 +- yandex_music/search/best.py | 8 ++-- yandex_music/search/search.py | 58 ++++++++++++++++------------ yandex_music/search/search_result.py | 6 +-- yandex_music/search/suggestions.py | 2 +- 15 files changed, 84 insertions(+), 74 deletions(-) diff --git a/yandex_music/rotor/ad_params.py b/yandex_music/rotor/ad_params.py index 01a2f9b..96d2243 100644 --- a/yandex_music/rotor/ad_params.py +++ b/yandex_music/rotor/ad_params.py @@ -33,7 +33,7 @@ class AdParams(YandexMusicObject): self.target_ref, self.other_params, self.ad_volume) @classmethod - def de_json(cls, data: dict, client: 'Client'): + def de_json(cls, data: dict, client: 'Client') -> Optional['AdParams']: if not data: return None diff --git a/yandex_music/rotor/dashboard.py b/yandex_music/rotor/dashboard.py index 722f1fa..0aee59f 100644 --- a/yandex_music/rotor/dashboard.py +++ b/yandex_music/rotor/dashboard.py @@ -1,7 +1,7 @@ -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Optional, List if TYPE_CHECKING: - from yandex_music import Client + from yandex_music import Client, StationResult from yandex_music import YandexMusicObject @@ -9,7 +9,7 @@ from yandex_music import YandexMusicObject class Dashboard(YandexMusicObject): def __init__(self, dashboard_id, - stations, + stations: List['StationResult'], pumpkin, client: Optional['Client'] = None, **kwargs) -> None: diff --git a/yandex_music/rotor/discrete_scale.py b/yandex_music/rotor/discrete_scale.py index 39ac2cd..1836607 100644 --- a/yandex_music/rotor/discrete_scale.py +++ b/yandex_music/rotor/discrete_scale.py @@ -1,7 +1,7 @@ from typing import TYPE_CHECKING, Optional if TYPE_CHECKING: - from yandex_music import Client + from yandex_music import Client, Value from yandex_music import YandexMusicObject @@ -10,8 +10,8 @@ class DiscreteScale(YandexMusicObject): def __init__(self, type_, name, - min_, - max_, + min_: Optional['Value'], + max_: Optional['Value'], client: Optional['Client'] = None, **kwargs) -> None: self.type = type_ @@ -23,7 +23,7 @@ class DiscreteScale(YandexMusicObject): self._id_attrs = (self.type, self.name, self.min, self.max) @classmethod - def de_json(cls, data: dict, client: 'Client'): + def de_json(cls, data: dict, client: 'Client') -> Optional['DiscreteScale']: if not data: return None diff --git a/yandex_music/rotor/enum.py b/yandex_music/rotor/enum.py index 637c7d6..45aa9ad 100644 --- a/yandex_music/rotor/enum.py +++ b/yandex_music/rotor/enum.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, Value from yandex_music import YandexMusicObject @@ -10,7 +10,7 @@ class Enum(YandexMusicObject): def __init__(self, type_, name, - possible_values, + possible_values: List['Value'], client: Optional['Client'] = None, **kwargs) -> None: self.type = type_ @@ -21,7 +21,7 @@ class Enum(YandexMusicObject): self._id_attrs = (self.type, self.name, self.possible_values) @classmethod - def de_json(cls, data: dict, client: 'Client'): + def de_json(cls, data: dict, client: 'Client') -> Optional['Enum']: if not data: return None diff --git a/yandex_music/rotor/id.py b/yandex_music/rotor/id.py index 02cb603..3b1db23 100644 --- a/yandex_music/rotor/id.py +++ b/yandex_music/rotor/id.py @@ -19,7 +19,7 @@ class Id(YandexMusicObject): self._id_attrs = (self.type, self.tag) @classmethod - def de_json(cls, data: dict, client: 'Client'): + def de_json(cls, data: dict, client: 'Client') -> Optional['Id']: if not data: return None diff --git a/yandex_music/rotor/restrictions.py b/yandex_music/rotor/restrictions.py index 033057b..0a7800f 100644 --- a/yandex_music/rotor/restrictions.py +++ b/yandex_music/rotor/restrictions.py @@ -1,4 +1,4 @@ -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Optional, Union if TYPE_CHECKING: from yandex_music import Client @@ -15,10 +15,10 @@ de_json = { class Restrictions(YandexMusicObject): def __init__(self, language, - diversity, - mood=None, - energy=None, - mood_energy=None, + diversity: Optional[Union['Enum', 'DiscreteScale']], + mood: Optional[Union['Enum', 'DiscreteScale']] = None, + energy: Optional[Union['Enum', 'DiscreteScale']] = None, + mood_energy: Optional[Union['Enum', 'DiscreteScale']] = None, client: Optional['Client'] = None, **kwargs) -> None: self.language = language @@ -31,7 +31,7 @@ class Restrictions(YandexMusicObject): self._id_attrs = (self.language, self.diversity) @classmethod - def de_json(cls, data: dict, client: 'Client'): + def de_json(cls, data: dict, client: 'Client') -> Optional['Restrictions']: if not data: return None diff --git a/yandex_music/rotor/rotor_settings.py b/yandex_music/rotor/rotor_settings.py index dcab3f2..f0ccfaf 100644 --- a/yandex_music/rotor/rotor_settings.py +++ b/yandex_music/rotor/rotor_settings.py @@ -26,7 +26,7 @@ class RotorSettings(YandexMusicObject): self._id_attrs = (self.language, self.diversity) @classmethod - def de_json(cls, data: dict, client: 'Client'): + def de_json(cls, data: dict, client: 'Client') -> Optional['RotorSettings']: if not data: return None diff --git a/yandex_music/rotor/sequence.py b/yandex_music/rotor/sequence.py index 3b40129..18c4048 100644 --- a/yandex_music/rotor/sequence.py +++ b/yandex_music/rotor/sequence.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, Track from yandex_music import YandexMusicObject @@ -9,7 +9,7 @@ from yandex_music import YandexMusicObject class Sequence(YandexMusicObject): def __init__(self, type_, - track, + track: Optional['Track'], liked, client: Optional['Client'] = None, **kwargs) -> None: @@ -21,7 +21,7 @@ class Sequence(YandexMusicObject): self._id_attrs = (self.type, self.track, self.liked) @classmethod - def de_json(cls, data: dict, client: 'Client'): + def de_json(cls, data: dict, client: 'Client') -> Optional['Sequence']: if not data: return None @@ -32,7 +32,7 @@ class Sequence(YandexMusicObject): return cls(client=client, **data) @classmethod - def de_list(cls, data: dict, client: 'Client'): + def de_list(cls, data: dict, client: 'Client') -> List['Sequence']: if not data: return [] diff --git a/yandex_music/rotor/station.py b/yandex_music/rotor/station.py index 13b32f1..3dc8219 100644 --- a/yandex_music/rotor/station.py +++ b/yandex_music/rotor/station.py @@ -1,22 +1,22 @@ from typing import TYPE_CHECKING, Optional if TYPE_CHECKING: - from yandex_music import Client + from yandex_music import Client, Id, Icon, Restrictions from yandex_music import YandexMusicObject class Station(YandexMusicObject): def __init__(self, - id_, + id_: Optional['Id'], name, - icon, - mts_icon, - geocell_icon, + icon: Optional['Icon'], + mts_icon: Optional['Icon'], + geocell_icon: Optional['Icon'], id_for_from, - restrictions, - restrictions2, - parent_id=None, + restrictions: Optional['Restrictions'], + restrictions2: Optional['Restrictions'], + parent_id: Optional['Id'] = None, client: Optional['Client'] = None, **kwargs) -> None: self.id = id_ @@ -35,7 +35,7 @@ class Station(YandexMusicObject): self.id_for_from, self.restrictions, self.restrictions2) @classmethod - def de_json(cls, data: dict, client: 'Client'): + def de_json(cls, data: dict, client: 'Client') -> Optional['Station']: if not data: return None diff --git a/yandex_music/rotor/station_result.py b/yandex_music/rotor/station_result.py index 51061ec..e5c31b4 100644 --- a/yandex_music/rotor/station_result.py +++ b/yandex_music/rotor/station_result.py @@ -1,17 +1,17 @@ -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Optional, List if TYPE_CHECKING: - from yandex_music import Client + from yandex_music import Client, Station, RotorSettings, AdParams from yandex_music import YandexMusicObject class StationResult(YandexMusicObject): def __init__(self, - station, - settings, - settings2, - ad_params, + station: Optional['Station'], + settings: Optional['RotorSettings'], + settings2: Optional['RotorSettings'], + ad_params: Optional['AdParams'], explanation=None, prerolls=None, client: Optional['Client'] = None, @@ -27,7 +27,7 @@ class StationResult(YandexMusicObject): self._id_attrs = (self.station, self.settings, self.settings2, self.ad_params) @classmethod - def de_json(cls, data: dict, client: 'Client'): + def de_json(cls, data: dict, client: 'Client') -> Optional['StationResult']: if not data: return None @@ -41,7 +41,7 @@ class StationResult(YandexMusicObject): return cls(client=client, **data) @classmethod - def de_list(cls, data: dict, client: 'Client'): + def de_list(cls, data: dict, client: 'Client') -> List['StationResult']: if not data: return [] diff --git a/yandex_music/rotor/value.py b/yandex_music/rotor/value.py index 42a14f3..8d114e1 100644 --- a/yandex_music/rotor/value.py +++ b/yandex_music/rotor/value.py @@ -19,7 +19,7 @@ class Value(YandexMusicObject): self._id_attrs = (self.value, self.name) @classmethod - def de_json(cls, data: dict, client: 'Client'): + def de_json(cls, data: dict, client: 'Client') -> Optional['Value']: if not data: return None @@ -28,7 +28,7 @@ class Value(YandexMusicObject): return cls(client=client, **data) @classmethod - def de_list(cls, data: dict, client: 'Client'): + def de_list(cls, data: dict, client: 'Client') -> List['Value']: if not data: return [] diff --git a/yandex_music/search/best.py b/yandex_music/search/best.py index 53b1432..02e7436 100644 --- a/yandex_music/search/best.py +++ b/yandex_music/search/best.py @@ -1,4 +1,4 @@ -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Optional, Union if TYPE_CHECKING: from yandex_music import Client @@ -17,9 +17,9 @@ de_json_result = { class Best(YandexMusicObject): def __init__(self, - type_, - result, - text=None, + type_: str, + result: Optional[Union[Track, Artist, Album, Playlist, Video]], + text: Optional[str] = None, client: Optional['Client'] = None, **kwargs) -> None: self.type = type_ diff --git a/yandex_music/search/search.py b/yandex_music/search/search.py index 20c2381..6c3e47b 100644 --- a/yandex_music/search/search.py +++ b/yandex_music/search/search.py @@ -1,7 +1,7 @@ from typing import TYPE_CHECKING, Optional if TYPE_CHECKING: - from yandex_music import Client + from yandex_music import Client, Best, SearchResult from yandex_music import YandexMusicObject @@ -13,11 +13,16 @@ class Search(YandexMusicObject): search_request_id (:obj:`str`): ID запроса. text (:obj:`str`): Текст запроса. best (:obj:`yandex_music.Best`): Объект класса :class:`yandex_music.Best` представляющий лучший результат. - albums (:obj:`yandex_music.SearchResult`): Объект класса :class:`yandex_music.SearchResult` представляющий найденные альбомы. - artists (:obj:`yandex_music.SearchResult`): Объект класса :class:`yandex_music.SearchResult` представляющий найденных исполнителей. - playlists (:obj:`yandex_music.SearchResult`): Объект класса :class:`yandex_music.SearchResult` представляющий найденные плейлисты. - tracks (:obj:`yandex_music.SearchResult`): Объект класса :class:`yandex_music.SearchResult` представляющий найденные треки. - videos (:obj:`yandex_music.SearchResult`): Объект класса :class:`yandex_music.SearchResult` представляющий найденные видео. + albums (:obj:`yandex_music.SearchResult`): Объект класса :class:`yandex_music.SearchResult` представляющий + найденные альбомы. + artists (:obj:`yandex_music.SearchResult`): Объект класса :class:`yandex_music.SearchResult` представляющий + найденных исполнителей. + playlists (:obj:`yandex_music.SearchResult`): Объект класса :class:`yandex_music.SearchResult` представляющий + найденные плейлисты. + tracks (:obj:`yandex_music.SearchResult`): Объект класса :class:`yandex_music.SearchResult` представляющий + найденные треки. + videos (:obj:`yandex_music.SearchResult`): Объект класса :class:`yandex_music.SearchResult` представляющий + найденные видео. misspell_corrected (:obj:`bool`): Был ли исправлен запрос. nocorrect (:obj:`bool`): Было ли отключено исправление результата. client (:obj:`yandex_music.Client`): Объект класса :class:`yandex_music.Client` представляющий клиент Yandex @@ -27,29 +32,34 @@ class Search(YandexMusicObject): search_request_id (:obj:`str`): ID запроса. text (:obj:`str`): Текст запроса. best (:obj:`yandex_music.Best`): Объект класса :class:`yandex_music.Best` представляющий лучший результат. - albums (:obj:`yandex_music.SearchResult`): Объект класса :class:`yandex_music.SearchResult` представляющий найденные альбомы. - artists (:obj:`yandex_music.SearchResult`): Объект класса :class:`yandex_music.SearchResult` представляющий найденных исполнителей. - playlists (:obj:`yandex_music.SearchResult`): Объект класса :class:`yandex_music.SearchResult` представляющий найденные плейлисты. - tracks (:obj:`yandex_music.SearchResult`): Объект класса :class:`yandex_music.SearchResult` представляющий найденные треки. - videos (:obj:`yandex_music.SearchResult`): Объект класса :class:`yandex_music.SearchResult` представляющий найденные видео. + albums (:obj:`yandex_music.SearchResult`): Объект класса :class:`yandex_music.SearchResult` представляющий + найденные альбомы. + artists (:obj:`yandex_music.SearchResult`): Объект класса :class:`yandex_music.SearchResult` представляющий + найденных исполнителей. + playlists (:obj:`yandex_music.SearchResult`): Объект класса :class:`yandex_music.SearchResult` представляющий + найденные плейлисты. + tracks (:obj:`yandex_music.SearchResult`): Объект класса :class:`yandex_music.SearchResult` представляющий + найденные треки. + videos (:obj:`yandex_music.SearchResult`): Объект класса :class:`yandex_music.SearchResult` представляющий + найденные видео. misspell_corrected (:obj:`bool`, optional): Был ли исправлен запрос. nocorrect (:obj:`bool`, optional): Было ли отключено исправление результата. - 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, - search_request_id, - text, - best, - albums, - artists, - playlists, - tracks, - videos, - misspell_corrected=None, - nocorrect=None, + search_request_id: str, + text: str, + best: Optional['Best'], + albums: Optional['SearchResult'], + artists: Optional['SearchResult'], + playlists: Optional['SearchResult'], + tracks: Optional['SearchResult'], + videos: Optional['SearchResult'], + misspell_corrected: Optional[bool] = None, + nocorrect: Optional[bool] = None, client: Optional['Client'] = None, **kwargs) -> None: self.search_request_id = search_request_id @@ -69,7 +79,7 @@ class Search(YandexMusicObject): self.artists, self.playlists, self.tracks, self.videos) @classmethod - def de_json(cls, data: dict, client: 'Client'): + def de_json(cls, data: dict, client: 'Client') -> Optional['Search']: """Десериализация объекта. Args: diff --git a/yandex_music/search/search_result.py b/yandex_music/search/search_result.py index 6ddc533..5ccf597 100644 --- a/yandex_music/search/search_result.py +++ b/yandex_music/search/search_result.py @@ -1,4 +1,4 @@ -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Optional, List, Union if TYPE_CHECKING: from yandex_music import Client @@ -20,7 +20,7 @@ class SearchResult(YandexMusicObject): total, per_page, order, - results, + results: List[Union[Track, Artist, Album, Playlist, Video]], client: Optional['Client'] = None, **kwargs) -> None: self.total = total @@ -32,7 +32,7 @@ class SearchResult(YandexMusicObject): self._id_attrs = (self.total, self.per_page, self.order, self.results) @classmethod - def de_json(cls, data, client, type_=None): + def de_json(cls, data: dict, client: 'Client', type_: str = None) -> Optional['SearchResult']: if not data: return None diff --git a/yandex_music/search/suggestions.py b/yandex_music/search/suggestions.py index 5712c97..4c41dce 100644 --- a/yandex_music/search/suggestions.py +++ b/yandex_music/search/suggestions.py @@ -8,7 +8,7 @@ from yandex_music import YandexMusicObject class Suggestions(YandexMusicObject): def __init__(self, - best, + best: Optional['Best'], suggestions, client: Optional['Client'] = None, **kwargs) -> None: