# Path: tabun_api/compat.py
# PY2 = sys.version_info.major == 2


import warnings
from .compat import PY2, text


__all__ = ['TabunError', 'TabunResultError']


class TabunError(Exception):
    """Общее для библиотеки исключение.
    Содержит атрибут code с всякими разными циферками для разных типов исключения,
    обычно совпадает с HTTP-кодом ошибки при запросе.
    А в атрибуте ``message`` или текст, или снова код ошибки.

    Если возможно (например, при ошибке ввода-вывода), присутствует атрибут ``exc``
    с оригинальным исключением. Если это ``HTTPError``, то можно, например, вызвать
    ``exc.read()`` или ``user.saferead(exc)``.

    Для ошибки 404 в ``data`` содержатся первые 8192 байта ответа, которые нужно было
    прочитать библиотеке для своих нужд.
    """

    URL_ERROR = -50
    HTTP_ERROR = -40
    IO_ERROR = -30
    TIMEOUT = -20
    STATIC_404 = -404

    def __init__(self, message=None, code=0, data=None, exc=None, msg=None):
        if msg is not None:
            assert message is None
            warnings.warn('TabunError(msg=...) is deprecated; use TabunError(message=...) instead of it', FutureWarning, stacklevel=2)
            message = msg

# Path: tabun_api/compat.py
# PY2 = sys.version_info.major == 2


# Path: tabun_api/errors.py
import warnings
from .compat import PY2, text



__all__ = ['TabunError', 'TabunResultError']


class TabunError(Exception):
    """Общее для библиотеки исключение.
    Содержит атрибут code с всякими разными циферками для разных типов исключения,
    обычно совпадает с HTTP-кодом ошибки при запросе.
    А в атрибуте ``message`` или текст, или снова код ошибки.

    Если возможно (например, при ошибке ввода-вывода), присутствует атрибут ``exc``
    с оригинальным исключением. Если это ``HTTPError``, то можно, например, вызвать
    ``exc.read()`` или ``user.saferead(exc)``.

    Для ошибки 404 в ``data`` содержатся первые 8192 байта ответа, которые нужно было
    прочитать библиотеке для своих нужд.
    """

    URL_ERROR = -50
    HTTP_ERROR = -40
    IO_ERROR = -30
    TIMEOUT = -20
    STATIC_404 = -404

    def __init__(self, message=None, code=0, data=None, exc=None, msg=None):
        if msg is not None:
            assert message is None
            warnings.warn('TabunError(msg=...) is deprecated; use TabunError(message=...) instead of it', FutureWarning, stacklevel=2)
            message = msg

        message = text(message) if message else text(code)