Добавлены тайп хинты для Block, BlockEntity, Char, CharItem, MixLink, PersonalPlaylistsData, PlayContext, PlayContextsData, Promotion, TrackId, TrackShortOld, AlbumsLikes, ArtistsLikes, PlaylistsLikes, CaseForms, MadeFor, PlayCounter, PlaylistAbsence, PlaylistId, User
このコミットが含まれているのは:
コミット
7a0ff6c32e
|
@ -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 []
|
||||
|
||||
|
|
|
@ -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 []
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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 []
|
||||
|
||||
|
|
|
@ -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 []
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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 []
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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 []
|
||||
|
||||
|
|
|
@ -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 []
|
||||
|
||||
|
|
|
@ -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 []
|
||||
|
||||
|
|
|
@ -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 []
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
読み込み中…
新しいイシューから参照