1""" Generic Python Character Mapping Codec. 2 3 Use this codec directly rather than through the automatic 4 conversion mechanisms supplied by unicode() and .encode(). 5 6 7Written by Marc-Andre Lemburg (mal@lemburg.com). 8 9(c) Copyright CNRI, All Rights Reserved. NO WARRANTY. 10 11"""#" 12 13import codecs 14 15### Codec APIs 16 17class Codec(codecs.Codec): 18 19 # Note: Binding these as C functions will result in the class not 20 # converting them to methods. This is intended. 21 encode = codecs.charmap_encode 22 decode = codecs.charmap_decode 23 24class IncrementalEncoder(codecs.IncrementalEncoder): 25 def __init__(self, errors='strict', mapping=None): 26 codecs.IncrementalEncoder.__init__(self, errors) 27 self.mapping = mapping 28 29 def encode(self, input, final=False): 30 return codecs.charmap_encode(input, self.errors, self.mapping)[0] 31 32class IncrementalDecoder(codecs.IncrementalDecoder): 33 def __init__(self, errors='strict', mapping=None): 34 codecs.IncrementalDecoder.__init__(self, errors) 35 self.mapping = mapping 36 37 def decode(self, input, final=False): 38 return codecs.charmap_decode(input, self.errors, self.mapping)[0] 39 40class StreamWriter(Codec,codecs.StreamWriter): 41 42 def __init__(self,stream,errors='strict',mapping=None): 43 codecs.StreamWriter.__init__(self,stream,errors) 44 self.mapping = mapping 45 46 def encode(self,input,errors='strict'): 47 return Codec.encode(input,errors,self.mapping) 48 49class StreamReader(Codec,codecs.StreamReader): 50 51 def __init__(self,stream,errors='strict',mapping=None): 52 codecs.StreamReader.__init__(self,stream,errors) 53 self.mapping = mapping 54 55 def decode(self,input,errors='strict'): 56 return Codec.decode(input,errors,self.mapping) 57 58### encodings module API 59 60def getregentry(): 61 return codecs.CodecInfo( 62 name='charmap', 63 encode=Codec.encode, 64 decode=Codec.decode, 65 incrementalencoder=IncrementalEncoder, 66 incrementaldecoder=IncrementalDecoder, 67 streamwriter=StreamWriter, 68 streamreader=StreamReader, 69 ) 70