Добавлены тайп хинты для Suggestions, SearchResult, Search, Best, Value, StationResult, Station, Sequence, RotorSettings, Restrictions, Id, Enum, DiscreteScale, Dashboard, AdParams

このコミットが含まれているのは:
Marshal 2019-12-27 16:06:24 +03:00
コミット 9d8b58f5c5
15個のファイルの変更84行の追加74行の削除

ファイルの表示

@ -33,7 +33,7 @@ class AdParams(YandexMusicObject):
self.target_ref, self.other_params, self.ad_volume) self.target_ref, self.other_params, self.ad_volume)
@classmethod @classmethod
def de_json(cls, data: dict, client: 'Client'): def de_json(cls, data: dict, client: 'Client') -> Optional['AdParams']:
if not data: if not data:
return None return None

ファイルの表示

@ -1,7 +1,7 @@
from typing import TYPE_CHECKING, Optional from typing import TYPE_CHECKING, Optional, List
if TYPE_CHECKING: if TYPE_CHECKING:
from yandex_music import Client from yandex_music import Client, StationResult
from yandex_music import YandexMusicObject from yandex_music import YandexMusicObject
@ -9,7 +9,7 @@ from yandex_music import YandexMusicObject
class Dashboard(YandexMusicObject): class Dashboard(YandexMusicObject):
def __init__(self, def __init__(self,
dashboard_id, dashboard_id,
stations, stations: List['StationResult'],
pumpkin, pumpkin,
client: Optional['Client'] = None, client: Optional['Client'] = None,
**kwargs) -> None: **kwargs) -> None:

ファイルの表示

@ -1,7 +1,7 @@
from typing import TYPE_CHECKING, Optional from typing import TYPE_CHECKING, Optional
if TYPE_CHECKING: if TYPE_CHECKING:
from yandex_music import Client from yandex_music import Client, Value
from yandex_music import YandexMusicObject from yandex_music import YandexMusicObject
@ -10,8 +10,8 @@ class DiscreteScale(YandexMusicObject):
def __init__(self, def __init__(self,
type_, type_,
name, name,
min_, min_: Optional['Value'],
max_, max_: Optional['Value'],
client: Optional['Client'] = None, client: Optional['Client'] = None,
**kwargs) -> None: **kwargs) -> None:
self.type = type_ self.type = type_
@ -23,7 +23,7 @@ class DiscreteScale(YandexMusicObject):
self._id_attrs = (self.type, self.name, self.min, self.max) self._id_attrs = (self.type, self.name, self.min, self.max)
@classmethod @classmethod
def de_json(cls, data: dict, client: 'Client'): def de_json(cls, data: dict, client: 'Client') -> Optional['DiscreteScale']:
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, Value
from yandex_music import YandexMusicObject from yandex_music import YandexMusicObject
@ -10,7 +10,7 @@ class Enum(YandexMusicObject):
def __init__(self, def __init__(self,
type_, type_,
name, name,
possible_values, possible_values: List['Value'],
client: Optional['Client'] = None, client: Optional['Client'] = None,
**kwargs) -> None: **kwargs) -> None:
self.type = type_ self.type = type_
@ -21,7 +21,7 @@ class Enum(YandexMusicObject):
self._id_attrs = (self.type, self.name, self.possible_values) self._id_attrs = (self.type, self.name, self.possible_values)
@classmethod @classmethod
def de_json(cls, data: dict, client: 'Client'): def de_json(cls, data: dict, client: 'Client') -> Optional['Enum']:
if not data: if not data:
return None return None

ファイルの表示

@ -19,7 +19,7 @@ class Id(YandexMusicObject):
self._id_attrs = (self.type, self.tag) self._id_attrs = (self.type, self.tag)
@classmethod @classmethod
def de_json(cls, data: dict, client: 'Client'): def de_json(cls, data: dict, client: 'Client') -> Optional['Id']:
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, Union
if TYPE_CHECKING: if TYPE_CHECKING:
from yandex_music import Client from yandex_music import Client
@ -15,10 +15,10 @@ de_json = {
class Restrictions(YandexMusicObject): class Restrictions(YandexMusicObject):
def __init__(self, def __init__(self,
language, language,
diversity, diversity: Optional[Union['Enum', 'DiscreteScale']],
mood=None, mood: Optional[Union['Enum', 'DiscreteScale']] = None,
energy=None, energy: Optional[Union['Enum', 'DiscreteScale']] = None,
mood_energy=None, mood_energy: Optional[Union['Enum', 'DiscreteScale']] = None,
client: Optional['Client'] = None, client: Optional['Client'] = None,
**kwargs) -> None: **kwargs) -> None:
self.language = language self.language = language
@ -31,7 +31,7 @@ class Restrictions(YandexMusicObject):
self._id_attrs = (self.language, self.diversity) self._id_attrs = (self.language, self.diversity)
@classmethod @classmethod
def de_json(cls, data: dict, client: 'Client'): def de_json(cls, data: dict, client: 'Client') -> Optional['Restrictions']:
if not data: if not data:
return None return None

ファイルの表示

@ -26,7 +26,7 @@ class RotorSettings(YandexMusicObject):
self._id_attrs = (self.language, self.diversity) self._id_attrs = (self.language, self.diversity)
@classmethod @classmethod
def de_json(cls, data: dict, client: 'Client'): def de_json(cls, data: dict, client: 'Client') -> Optional['RotorSettings']:
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, Track
from yandex_music import YandexMusicObject from yandex_music import YandexMusicObject
@ -9,7 +9,7 @@ from yandex_music import YandexMusicObject
class Sequence(YandexMusicObject): class Sequence(YandexMusicObject):
def __init__(self, def __init__(self,
type_, type_,
track, track: Optional['Track'],
liked, liked,
client: Optional['Client'] = None, client: Optional['Client'] = None,
**kwargs) -> None: **kwargs) -> None:
@ -21,7 +21,7 @@ class Sequence(YandexMusicObject):
self._id_attrs = (self.type, self.track, self.liked) self._id_attrs = (self.type, self.track, self.liked)
@classmethod @classmethod
def de_json(cls, data: dict, client: 'Client'): def de_json(cls, data: dict, client: 'Client') -> Optional['Sequence']:
if not data: if not data:
return None return None
@ -32,7 +32,7 @@ class Sequence(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['Sequence']:
if not data: if not data:
return [] return []

ファイルの表示

@ -1,22 +1,22 @@
from typing import TYPE_CHECKING, Optional from typing import TYPE_CHECKING, Optional
if TYPE_CHECKING: if TYPE_CHECKING:
from yandex_music import Client from yandex_music import Client, Id, Icon, Restrictions
from yandex_music import YandexMusicObject from yandex_music import YandexMusicObject
class Station(YandexMusicObject): class Station(YandexMusicObject):
def __init__(self, def __init__(self,
id_, id_: Optional['Id'],
name, name,
icon, icon: Optional['Icon'],
mts_icon, mts_icon: Optional['Icon'],
geocell_icon, geocell_icon: Optional['Icon'],
id_for_from, id_for_from,
restrictions, restrictions: Optional['Restrictions'],
restrictions2, restrictions2: Optional['Restrictions'],
parent_id=None, parent_id: Optional['Id'] = None,
client: Optional['Client'] = None, client: Optional['Client'] = None,
**kwargs) -> None: **kwargs) -> None:
self.id = id_ self.id = id_
@ -35,7 +35,7 @@ class Station(YandexMusicObject):
self.id_for_from, self.restrictions, self.restrictions2) self.id_for_from, self.restrictions, self.restrictions2)
@classmethod @classmethod
def de_json(cls, data: dict, client: 'Client'): def de_json(cls, data: dict, client: 'Client') -> Optional['Station']:
if not data: if not data:
return None return None

ファイルの表示

@ -1,17 +1,17 @@
from typing import TYPE_CHECKING, Optional from typing import TYPE_CHECKING, Optional, List
if TYPE_CHECKING: if TYPE_CHECKING:
from yandex_music import Client from yandex_music import Client, Station, RotorSettings, AdParams
from yandex_music import YandexMusicObject from yandex_music import YandexMusicObject
class StationResult(YandexMusicObject): class StationResult(YandexMusicObject):
def __init__(self, def __init__(self,
station, station: Optional['Station'],
settings, settings: Optional['RotorSettings'],
settings2, settings2: Optional['RotorSettings'],
ad_params, ad_params: Optional['AdParams'],
explanation=None, explanation=None,
prerolls=None, prerolls=None,
client: Optional['Client'] = None, client: Optional['Client'] = None,
@ -27,7 +27,7 @@ class StationResult(YandexMusicObject):
self._id_attrs = (self.station, self.settings, self.settings2, self.ad_params) self._id_attrs = (self.station, self.settings, self.settings2, self.ad_params)
@classmethod @classmethod
def de_json(cls, data: dict, client: 'Client'): def de_json(cls, data: dict, client: 'Client') -> Optional['StationResult']:
if not data: if not data:
return None return None
@ -41,7 +41,7 @@ class StationResult(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['StationResult']:
if not data: if not data:
return [] return []

ファイルの表示

@ -19,7 +19,7 @@ class Value(YandexMusicObject):
self._id_attrs = (self.value, self.name) self._id_attrs = (self.value, self.name)
@classmethod @classmethod
def de_json(cls, data: dict, client: 'Client'): def de_json(cls, data: dict, client: 'Client') -> Optional['Value']:
if not data: if not data:
return None return None
@ -28,7 +28,7 @@ class Value(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['Value']:
if not data: if not data:
return [] return []

ファイルの表示

@ -1,4 +1,4 @@
from typing import TYPE_CHECKING, Optional from typing import TYPE_CHECKING, Optional, Union
if TYPE_CHECKING: if TYPE_CHECKING:
from yandex_music import Client from yandex_music import Client
@ -17,9 +17,9 @@ de_json_result = {
class Best(YandexMusicObject): class Best(YandexMusicObject):
def __init__(self, def __init__(self,
type_, type_: str,
result, result: Optional[Union[Track, Artist, Album, Playlist, Video]],
text=None, text: Optional[str] = None,
client: Optional['Client'] = None, client: Optional['Client'] = None,
**kwargs) -> None: **kwargs) -> None:
self.type = type_ self.type = type_

ファイルの表示

@ -1,7 +1,7 @@
from typing import TYPE_CHECKING, Optional from typing import TYPE_CHECKING, Optional
if TYPE_CHECKING: if TYPE_CHECKING:
from yandex_music import Client from yandex_music import Client, Best, SearchResult
from yandex_music import YandexMusicObject from yandex_music import YandexMusicObject
@ -13,11 +13,16 @@ class Search(YandexMusicObject):
search_request_id (:obj:`str`): ID запроса. search_request_id (:obj:`str`): ID запроса.
text (:obj:`str`): Текст запроса. text (:obj:`str`): Текст запроса.
best (:obj:`yandex_music.Best`): Объект класса :class:`yandex_music.Best` представляющий лучший результат. best (:obj:`yandex_music.Best`): Объект класса :class:`yandex_music.Best` представляющий лучший результат.
albums (: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` представляющий найденные плейлисты. artists (: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` представляющий найденные видео. 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`): Был ли исправлен запрос. misspell_corrected (:obj:`bool`): Был ли исправлен запрос.
nocorrect (:obj:`bool`): Было ли отключено исправление результата. nocorrect (:obj:`bool`): Было ли отключено исправление результата.
client (:obj:`yandex_music.Client`): Объект класса :class:`yandex_music.Client` представляющий клиент Yandex client (:obj:`yandex_music.Client`): Объект класса :class:`yandex_music.Client` представляющий клиент Yandex
@ -27,29 +32,34 @@ class Search(YandexMusicObject):
search_request_id (:obj:`str`): ID запроса. search_request_id (:obj:`str`): ID запроса.
text (:obj:`str`): Текст запроса. text (:obj:`str`): Текст запроса.
best (:obj:`yandex_music.Best`): Объект класса :class:`yandex_music.Best` представляющий лучший результат. best (:obj:`yandex_music.Best`): Объект класса :class:`yandex_music.Best` представляющий лучший результат.
albums (: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` представляющий найденные плейлисты. artists (: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` представляющий найденные видео. 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): Был ли исправлен запрос. misspell_corrected (:obj:`bool`, optional): Был ли исправлен запрос.
nocorrect (:obj:`bool`, optional): Было ли отключено исправление результата. nocorrect (:obj:`bool`, optional): Было ли отключено исправление результата.
client (:obj:`yandex_music.Client`, optional): Объект класса :class:`yandex_music.Client` представляющий клиент Yandex client (:obj:`yandex_music.Client`, optional): Объект класса :class:`yandex_music.Client` представляющий клиент
Music. Yandex Music.
**kwargs: Произвольные ключевые аргументы полученные от API. **kwargs: Произвольные ключевые аргументы полученные от API.
""" """
def __init__(self, def __init__(self,
search_request_id, search_request_id: str,
text, text: str,
best, best: Optional['Best'],
albums, albums: Optional['SearchResult'],
artists, artists: Optional['SearchResult'],
playlists, playlists: Optional['SearchResult'],
tracks, tracks: Optional['SearchResult'],
videos, videos: Optional['SearchResult'],
misspell_corrected=None, misspell_corrected: Optional[bool] = None,
nocorrect=None, nocorrect: Optional[bool] = None,
client: Optional['Client'] = None, client: Optional['Client'] = None,
**kwargs) -> None: **kwargs) -> None:
self.search_request_id = search_request_id self.search_request_id = search_request_id
@ -69,7 +79,7 @@ class Search(YandexMusicObject):
self.artists, self.playlists, self.tracks, self.videos) self.artists, self.playlists, self.tracks, self.videos)
@classmethod @classmethod
def de_json(cls, data: dict, client: 'Client'): def de_json(cls, data: dict, client: 'Client') -> Optional['Search']:
"""Десериализация объекта. """Десериализация объекта.
Args: Args:

ファイルの表示

@ -1,4 +1,4 @@
from typing import TYPE_CHECKING, Optional from typing import TYPE_CHECKING, Optional, List, Union
if TYPE_CHECKING: if TYPE_CHECKING:
from yandex_music import Client from yandex_music import Client
@ -20,7 +20,7 @@ class SearchResult(YandexMusicObject):
total, total,
per_page, per_page,
order, order,
results, results: List[Union[Track, Artist, Album, Playlist, Video]],
client: Optional['Client'] = None, client: Optional['Client'] = None,
**kwargs) -> None: **kwargs) -> None:
self.total = total self.total = total
@ -32,7 +32,7 @@ class SearchResult(YandexMusicObject):
self._id_attrs = (self.total, self.per_page, self.order, self.results) self._id_attrs = (self.total, self.per_page, self.order, self.results)
@classmethod @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: if not data:
return None return None

ファイルの表示

@ -8,7 +8,7 @@ from yandex_music import YandexMusicObject
class Suggestions(YandexMusicObject): class Suggestions(YandexMusicObject):
def __init__(self, def __init__(self,
best, best: Optional['Best'],
suggestions, suggestions,
client: Optional['Client'] = None, client: Optional['Client'] = None,
**kwargs) -> None: **kwargs) -> None: