1
"""Python 'hex_codec' Codec - 2-digit hex content transfer encoding.
3
This codec de/encodes from bytes to bytes.
5
Written by Marc-Andre Lemburg (mal@lemburg.com).
13
def hex_encode(input, errors='strict'):
14
assert errors == 'strict'
15
return (binascii.b2a_hex(input), len(input))
17
def hex_decode(input, errors='strict'):
18
assert errors == 'strict'
19
return (binascii.a2b_hex(input), len(input))
21
class Codec(codecs.Codec):
22
def encode(self, input, errors='strict'):
23
return hex_encode(input, errors)
24
def decode(self, input, errors='strict'):
25
return hex_decode(input, errors)
27
class IncrementalEncoder(codecs.IncrementalEncoder):
28
def encode(self, input, final=False):
29
assert self.errors == 'strict'
30
return binascii.b2a_hex(input)
32
class IncrementalDecoder(codecs.IncrementalDecoder):
33
def decode(self, input, final=False):
34
assert self.errors == 'strict'
35
return binascii.a2b_hex(input)
37
class StreamWriter(Codec, codecs.StreamWriter):
38
charbuffertype = bytes
40
class StreamReader(Codec, codecs.StreamReader):
41
charbuffertype = bytes
43
### encodings module API
46
return codecs.CodecInfo(
50
incrementalencoder=IncrementalEncoder,
51
incrementaldecoder=IncrementalDecoder,
52
streamwriter=StreamWriter,
53
streamreader=StreamReader,
54
_is_text_encoding=False,