всем исключениям добавлен суффикс Error;

добавлено новое исключение NotFoundError при 404.
このコミットが含まれているのは:
Il'ya (Marshal) 2022-02-20 22:15:27 +01:00
コミット b6c29573b9
6個のファイルの変更44行の追加37行の削除

ファイルの表示

@ -42,7 +42,7 @@ from yandex_music import (
__license__,
__version__,
)
from yandex_music.exceptions import BadRequest
from yandex_music.exceptions import BadRequestError
from yandex_music.utils.difference import Difference
from yandex_music.utils.request import Request
@ -765,7 +765,7 @@ class Client(YandexMusicObject):
result = self._request.get(url, params, timeout=timeout, *args, **kwargs)
if isinstance(result, str):
raise BadRequest(result)
raise BadRequestError(result)
return Search.de_json(result, self)

ファイルの表示

@ -46,7 +46,7 @@ from yandex_music import (
__license__,
__version__,
)
from yandex_music.exceptions import BadRequest
from yandex_music.exceptions import BadRequestError
from yandex_music.utils.difference import Difference
from yandex_music.utils.request_async import Request
@ -771,7 +771,7 @@ class ClientAsync(YandexMusicObject):
result = await self._request.get(url, params, timeout=timeout, *args, **kwargs)
if isinstance(result, str):
raise BadRequest(result)
raise BadRequestError(result)
return Search.de_json(result, self)

ファイルの表示

@ -1,16 +1,14 @@
# TODO (MarshalX) все исключения должны заканчиваться на Error
class YandexMusicError(Exception):
"""Базовый класс, представляющий исключения общего характера."""
class Unauthorized(YandexMusicError):
class UnauthorizedError(YandexMusicError):
"""Класс исключения, вызываемого для случаев ошибок
аутентификации и авторизации.
"""
class InvalidBitrate(YandexMusicError):
class InvalidBitrateError(YandexMusicError):
"""Класс исключения, вызываемого при попытке загрузки трека
с недоступным битрейтом.
"""
@ -22,11 +20,16 @@ class NetworkError(YandexMusicError):
"""
class BadRequest(NetworkError):
class BadRequestError(NetworkError):
"""Класс исключения, вызываемый в случае отправки неправильного запроса."""
class TimedOut(NetworkError):
class NotFoundError(NetworkError):
"""Класс исключения, вызываемый в случае ответа от сервера со статус кодом 404."""
# TimeoutError builtin. И не знаю хотим ли использовать его для синк и asyncio.TimeoutError для асинк
class TimedOutError(NetworkError):
"""Класс исключения, вызываемого для случаев истечения времени ожидания."""
def __init__(self):

ファイルの表示

@ -2,7 +2,7 @@ from typing import TYPE_CHECKING, Optional, List, Union
from yandex_music import YandexMusicObject
from yandex_music.utils import model
from yandex_music.exceptions import InvalidBitrate
from yandex_music.exceptions import InvalidBitrateError
if TYPE_CHECKING:
from yandex_music import (
@ -208,7 +208,7 @@ class Track(YandexMusicObject):
bitrate_in_kbps (:obj:`int`, optional): Битрейт из доступных в `self.download_info` для данного кодека.
Raises:
:class:`yandex_music.exceptions.InvalidBitrate`: Если в `self.download_info` не найден подходящий трек.
:class:`yandex_music.exceptions.InvalidBitrateError`: Если в `self.download_info` не найден подходящий трек.
"""
if self.download_info is None:
self.get_download_info()
@ -218,7 +218,7 @@ class Track(YandexMusicObject):
info.download(filename)
break
else:
raise InvalidBitrate('Unavailable bitrate')
raise InvalidBitrateError('Unavailable bitrate')
async def download_async(self, filename: str, codec: str = 'mp3', bitrate_in_kbps: int = 192) -> None:
"""Загрузка трека.
@ -234,7 +234,7 @@ class Track(YandexMusicObject):
bitrate_in_kbps (:obj:`int`, optional): Битрейт из доступных в `self.download_info` для данного кодека.
Raises:
:class:`yandex_music.exceptions.InvalidBitrate`: Если в `self.download_info` не найден подходящий трек.
:class:`yandex_music.exceptions.InvalidBitrateError`: Если в `self.download_info` не найден подходящий трек.
"""
if self.download_info is None:
await self.get_download_info_async()
@ -244,7 +244,7 @@ class Track(YandexMusicObject):
await info.download_async(filename)
break
else:
raise InvalidBitrate('Unavailable bitrate')
raise InvalidBitrateError('Unavailable bitrate')
def like(self, *args, **kwargs) -> bool:
"""Сокращение для::

ファイルの表示

@ -13,11 +13,12 @@ import requests
from yandex_music.utils.response import Response
from yandex_music.exceptions import (
Unauthorized,
BadRequest,
UnauthorizedError,
BadRequestError,
NetworkError,
YandexMusicError,
TimedOut,
TimedOutError,
NotFoundError,
)
if TYPE_CHECKING:
@ -181,9 +182,9 @@ class Request:
:obj:`bytes`: Тело ответа.
Raises:
:class:`yandex_music.exceptions.TimedOut`: При превышении времени ожидания.
:class:`yandex_music.exceptions.Unauthorized`: При невалидном токене, долгом ожидании прямой ссылки на файл.
:class:`yandex_music.exceptions.BadRequest`: При неправильном запросе.
:class:`yandex_music.exceptions.TimedOutError`: При превышении времени ожидания.
:class:`yandex_music.exceptions.UnauthorizedError`: При невалидном токене, долгом ожидании прямой ссылки на файл.
:class:`yandex_music.exceptions.BadRequestError`: При неправильном запросе.
:class:`yandex_music.exceptions.NetworkError`: При проблемах с сетью.
"""
if 'headers' not in kwargs:
@ -194,7 +195,7 @@ class Request:
try:
resp = requests.request(*args, **kwargs)
except requests.Timeout:
raise TimedOut()
raise TimedOutError()
except requests.RequestException as e:
raise NetworkError(e)
@ -208,11 +209,12 @@ class Request:
message = 'Unknown HTTPError'
if resp.status_code in (401, 403):
raise Unauthorized(message)
raise UnauthorizedError(message)
elif resp.status_code == 400:
raise BadRequest(message)
elif resp.status_code in (404, 409, 413):
# TODO (MarshalX) было бы удобнее при 404 выбрасывать NotFoundError. Наследник NetworkError
raise BadRequestError(message)
elif resp.status_code == 404:
raise NotFoundError(message)
elif resp.status_code in (409, 413):
raise NetworkError(message)
elif resp.status_code == 502:

ファイルの表示

@ -19,11 +19,12 @@ import aiofiles
from yandex_music.utils.response import Response
from yandex_music.exceptions import (
Unauthorized,
BadRequest,
UnauthorizedError,
BadRequestError,
NetworkError,
YandexMusicError,
TimedOut,
TimedOutError,
NotFoundError,
)
if TYPE_CHECKING:
@ -187,9 +188,9 @@ class Request:
:obj:`bytes`: Тело ответа.
Raises:
:class:`yandex_music.exceptions.TimedOut`: При превышении времени ожидания.
:class:`yandex_music.exceptions.Unauthorized`: При невалидном токене, долгом ожидании прямой ссылки на файл.
:class:`yandex_music.exceptions.BadRequest`: При неправильном запросе.
:class:`yandex_music.exceptions.TimedOutError`: При превышении времени ожидания.
:class:`yandex_music.exceptions.UnauthorizedError`: При невалидном токене, долгом ожидании прямой ссылки на файл.
:class:`yandex_music.exceptions.BadRequestError`: При неправильном запросе.
:class:`yandex_music.exceptions.NetworkError`: При проблемах с сетью.
"""
if 'headers' not in kwargs:
@ -202,7 +203,7 @@ class Request:
resp = _resp
content = await resp.content.read()
except asyncio.TimeoutError:
raise TimedOut()
raise TimedOutError()
except aiohttp.ClientError as e:
raise NetworkError(e)
@ -216,11 +217,12 @@ class Request:
message = 'Unknown HTTPError'
if resp.status in (401, 403):
raise Unauthorized(message)
raise UnauthorizedError(message)
elif resp.status == 400:
raise BadRequest(message)
elif resp.status in (404, 409, 413):
# TODO (MarshalX) было бы удобнее при 404 выбрасывать NotFoundError. Наследник NetworkError
raise BadRequestError(message)
elif resp.status == 404:
raise NotFoundError(message)
elif resp.status in (409, 413):
raise NetworkError(message)
elif resp.status == 502: