Сообщить об ошибке.

Интерфейс базового класса Codec модуля codecs в Python

Модуль codecs определяет набор базовых классов, которые определяют интерфейсы для работы с объектами Codec, а также могут быть использованы в качестве основы для пользовательских реализаций кодеков.

Каждый кодек должен определить четыре интерфейса, чтобы сделать его пригодным для использования в качестве кодека в Python:

Устройства чтения и записи потока обычно повторно используют кодер/декодер без состояния для реализации файловых протоколов. Авторы кодека также должны определить, как кодек будет обрабатывать ошибки кодирования и декодирования.

Базовый класс codecs.Codec() определяет эти методы (но не реализует!), которые также определяют функциональные интерфейсы кодера и декодера без состояния:

class Codec:

    def encode(self, input, errors='strict'):
        raise NotImplementedError

    def decode(self, input, errors='strict'):
        raise NotImplementedError

Codec.encode(input[, errors]):

Метод Codec.encode() кодирует входные данные объекта и возвращает кортеж типа (output object, length consumed). Например текстовое кодирование преобразует строковый объект в байтовый объект с использованием определенной кодировки набора символов (например cp1252 или iso-8859-1).

Аргумент errors определяет применяемую обработку ошибок. По умолчанию используется 'strict' обработка.

Метод не может хранить состояние в экземпляре Codec. Используйте StreamWriter для кодеков, которые должны сохранять состояние, чтобы сделать кодирование эффективным.

Кодировщик должен быть способен обрабатывать вход нулевой длины и возвращать пустой объект типа объекта вывода в этой ситуации.

Codec.decode(input[, errors]):

Метод Codec.decode() декодирует входные данные объекта и возвращает кортеж типа (output object, length consumed). Например для кодирования текста декодирование преобразует объект байтов, закодированный с использованием конкретной кодировки набора символов, в строковый объект.

Для кодировок текста и байтовых кодеков входные данные должны быть байтовыми объектами или объектами, которые предоставляют буферный интерфейс только для чтения. Например объекты буфера и файлы отображения памяти.

Аргумент errors определяет применяемую обработку ошибок. По умолчанию используется 'strict' обработка.

Метод не может хранить состояние в экземпляре Codec. Используйте StreamReader для кодеков, которые должны сохранять состояние, чтобы сделать кодирование эффективным.

Кодировщик должен быть способен обрабатывать вход нулевой длины и возвращать пустой объект типа объекта вывода в этой ситуации.