"""Классы-исключения"""


class ServerError(Exception):
    """Исключение - ошибка сервера."""
    def __init__(self, text):
        self.text = text

    def __str__(self):
        return self.text


class NonDictError(Exception):
    """Исключение - аргумент функции не словарь."""
    def __str__(self):
        return 'Аргумент функции должен быть словарём.'


class NonStrError(Exception):
    """Исключение - аргумент функции не строка."""
    def __str__(self):
        return 'Аргумент функции должен быть строкой.'


class NonBytesError(Exception):
    """Исключение - аргумент функции не bytes."""
    def __str__(self):
        return 'Аргумент функции должен быть bytes.'


class ReqFieldMissingError(Exception):
    """Ошибка - отсутствует обязательное поле в принятом словаре."""
    def __init__(self, missing_field):
        self.missing_field = missing_field

    def __str__(self):
        return f'В принятом словаре отсутствует \
                 обязательное поле {self.missing_field}.'


class AccountNameNotUniq(Exception):
    """Ошибка - не уникальное имя пользователя."""
    def __str__(self):
        return 'Имя пользователя уже используется.'
