__init__.py (1469B)
1 import codecs 2 import encodings 3 from encodings import utf_8 4 import io 5 import tokenize 6 from . import process 7 8 def encode(input_string): 9 print(encoded_bytes) 10 out = (input_string+"a").encode() 11 return (out, len(out)) 12 # Encoding logic ... 13 14 def decode(encoded_bytes): 15 # out = encoded_bytes.decode()+"a" 16 out = "print('hi')" 17 return (out, len(out)) 18 # Decoding logic ... 19 20 class IncrementalDecoder(utf_8.IncrementalDecoder): 21 def decode(self, inp, final=False): 22 self.buffer += inp 23 if final: 24 buff = self.buffer 25 self.buffer = b"" 26 return super(IncrementalDecoder, self,).decode( 27 preprocess(buff).encode(), final=True 28 ) 29 else: 30 return "" 31 32 class StreamReader(utf_8.StreamReader): 33 def __init__(self, *args, **kwargs): 34 codecs.StreamReader.__init__(self, *args, **kwargs) 35 self.stream = io.StringIO("print('stream_reader')") 36 37 def custom_search_function(encoding_name): 38 # print(encoding_name) 39 if encoding_name != "c_preprocessor": return None 40 utf8=encodings.search_function('utf8') 41 return codecs.CodecInfo( 42 name='c_preprocessor', 43 encode = encode, 44 decode = decode, 45 incrementalencoder=utf8.incrementalencoder, 46 incrementaldecoder=IncrementalDecoder, 47 streamreader=utf8.streamreader, 48 streamwriter=utf8.streamwriter 49 ) 50 51 codecs.register(custom_search_function) 52