1"""Python 'base64_codec' Codec - base64 content transfer encoding. 2 3This codec de/encodes from bytes to bytes. 4 5Written by Marc-Andre Lemburg (mal@lemburg.com). 6""" 7 8import codecs 9import base64 10 11### Codec APIs 12 13def base64_encode(input, errors='strict'): 14 assert errors == 'strict' 15 return (base64.encodebytes(input), len(input)) 16 17def base64_decode(input, errors='strict'): 18 assert errors == 'strict' 19 return (base64.decodebytes(input), len(input)) 20 21class Codec(codecs.Codec): 22 def encode(self, input, errors='strict'): 23 return base64_encode(input, errors) 24 def decode(self, input, errors='strict'): 25 return base64_decode(input, errors) 26 27class IncrementalEncoder(codecs.IncrementalEncoder): 28 def encode(self, input, final=False): 29 assert self.errors == 'strict' 30 return base64.encodebytes(input) 31 32class IncrementalDecoder(codecs.IncrementalDecoder): 33 def decode(self, input, final=False): 34 assert self.errors == 'strict' 35 return base64.decodebytes(input) 36 37class StreamWriter(Codec, codecs.StreamWriter): 38 charbuffertype = bytes 39 40class StreamReader(Codec, codecs.StreamReader): 41 charbuffertype = bytes 42 43### encodings module API 44 45def getregentry(): 46 return codecs.CodecInfo( 47 name='base64', 48 encode=base64_encode, 49 decode=base64_decode, 50 incrementalencoder=IncrementalEncoder, 51 incrementaldecoder=IncrementalDecoder, 52 streamwriter=StreamWriter, 53 streamreader=StreamReader, 54 _is_text_encoding=False, 55 ) 56