Документация класса Difference

このコミットが含まれているのは:
Il`ya 2020-03-22 15:29:38 +03:00
コミット 891893d6a8
2個のファイルの変更47行の追加1行の削除

ファイルの表示

@ -1,6 +1,11 @@
yandex_music.utils.difference.Difference
========================================
.. autoclass:: yandex_music.utils.difference.Operation
:members:
:undoc-members:
:show-inheritance:
.. autoclass:: yandex_music.utils.difference.Difference
:members:
:undoc-members:

ファイルの表示

@ -21,13 +21,41 @@ class Operation(Enum):
class Difference:
"""Класс, представляющий обёртку над созданием данных для запроса изменения плейлиста.
Note:
Результатом является перечень (массив) операций, которые будут применены к плейлисту.
Конечной разницей (набором операций) является JSON, который будет отправлен в теле запроса.
Attributes:
operations (:obj:`list` из :obj:`dict`): Перечень операция для изменения плейлиста.
"""
def __init__(self):
self.operations = []
def to_json(self):
def to_json(self) -> str:
"""Сериализация всех операций над плейлистом.
Returns:
:obj:`str`: Сформированное тело для запроса.
"""
return json.dumps(self.operations, ensure_ascii=not ujson)
def add_delete(self, from_, to):
"""Добавление операции удаления.
Note:
Передаётся диапазон для удаления треков.
Args:
from_ (:obj:`int`): С какого индекса.
to (:obj:`int`): По какой индекс.
Returns:
:obj:`yandex_music.utils.difference.Difference`: Набор операций над плейлистом.
"""
operation = {
'op': Operation.DELETE.value,
'from': from_,
@ -38,6 +66,19 @@ class Difference:
return self
def add_insert(self, at, tracks: Union[dict, List[dict]]):
"""Добавление операции вставки.
Note:
В `tracks` передаётся словарь с двумя ключами: `id`, `album_id`. Это нужно для формирования операции.
Args:
at (:obj:`int`): Индекс для вставки.
tracks (:obj:`dict` | :obj:`list: из :obj:`dict`): Словарь уникальными идентификаторами треков.
Returns:
:obj:`yandex_music.utils.difference.Difference`: Набор операций над плейлистом.
"""
# TODO принимать TrackId, а так же строку и сплитить её по ":". При отсутствии album_id кидать исключение.
if not isinstance(tracks, list):
tracks = [tracks]