Добавлены тайп хинты для Suggestions, SearchResult, Search, Best, Value, StationResult, Station, Sequence, RotorSettings, Restrictions, Id, Enum, DiscreteScale, Dashboard, AdParams
このコミットが含まれているのは:
コミット
9d8b58f5c5
|
@ -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:
|
||||
|
|
読み込み中…
新しいイシューから参照