Добавлены тайп хинты для 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)
@classmethod
def de_json(cls, data: dict, client: 'Client'):
def de_json(cls, data: dict, client: 'Client') -> Optional['AdParams']:
if not data:
return None

ファイルの表示

@ -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:

ファイルの表示

@ -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

ファイルの表示

@ -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

ファイルの表示

@ -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

ファイルの表示

@ -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

ファイルの表示

@ -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

ファイルの表示

@ -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 []

ファイルの表示

@ -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

ファイルの表示

@ -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 []

ファイルの表示

@ -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 []

ファイルの表示

@ -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_

ファイルの表示

@ -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:

ファイルの表示

@ -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

ファイルの表示

@ -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: