Mercurial > repos > yating-l > jbrowsearchivecreator
comparison test/lib/python2.7/encodings/quopri_codec.py @ 3:7d1a9a91b989 draft
planemo upload for repository https://github.com/Yating-L/jbrowse-archive-creator.git commit d583ac16a6c6942730ea536eb59cc37941816030-dirty
author | yating-l |
---|---|
date | Thu, 18 May 2017 18:37:28 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
2:3e2160197902 | 3:7d1a9a91b989 |
---|---|
1 """Codec for quoted-printable encoding. | |
2 | |
3 Like base64 and rot13, this returns Python strings, not Unicode. | |
4 """ | |
5 | |
6 import codecs, quopri | |
7 try: | |
8 from cStringIO import StringIO | |
9 except ImportError: | |
10 from StringIO import StringIO | |
11 | |
12 def quopri_encode(input, errors='strict'): | |
13 """Encode the input, returning a tuple (output object, length consumed). | |
14 | |
15 errors defines the error handling to apply. It defaults to | |
16 'strict' handling which is the only currently supported | |
17 error handling for this codec. | |
18 | |
19 """ | |
20 assert errors == 'strict' | |
21 # using str() because of cStringIO's Unicode undesired Unicode behavior. | |
22 f = StringIO(str(input)) | |
23 g = StringIO() | |
24 quopri.encode(f, g, quotetabs=True) | |
25 output = g.getvalue() | |
26 return (output, len(input)) | |
27 | |
28 def quopri_decode(input, errors='strict'): | |
29 """Decode the input, returning a tuple (output object, length consumed). | |
30 | |
31 errors defines the error handling to apply. It defaults to | |
32 'strict' handling which is the only currently supported | |
33 error handling for this codec. | |
34 | |
35 """ | |
36 assert errors == 'strict' | |
37 f = StringIO(str(input)) | |
38 g = StringIO() | |
39 quopri.decode(f, g) | |
40 output = g.getvalue() | |
41 return (output, len(input)) | |
42 | |
43 class Codec(codecs.Codec): | |
44 | |
45 def encode(self, input,errors='strict'): | |
46 return quopri_encode(input,errors) | |
47 def decode(self, input,errors='strict'): | |
48 return quopri_decode(input,errors) | |
49 | |
50 class IncrementalEncoder(codecs.IncrementalEncoder): | |
51 def encode(self, input, final=False): | |
52 return quopri_encode(input, self.errors)[0] | |
53 | |
54 class IncrementalDecoder(codecs.IncrementalDecoder): | |
55 def decode(self, input, final=False): | |
56 return quopri_decode(input, self.errors)[0] | |
57 | |
58 class StreamWriter(Codec, codecs.StreamWriter): | |
59 pass | |
60 | |
61 class StreamReader(Codec,codecs.StreamReader): | |
62 pass | |
63 | |
64 # encodings module API | |
65 | |
66 def getregentry(): | |
67 return codecs.CodecInfo( | |
68 name='quopri', | |
69 encode=quopri_encode, | |
70 decode=quopri_decode, | |
71 incrementalencoder=IncrementalEncoder, | |
72 incrementaldecoder=IncrementalDecoder, | |
73 streamwriter=StreamWriter, | |
74 streamreader=StreamReader, | |
75 _is_text_encoding=False, | |
76 ) |