\d%dZddlZddZddZGddejZGdd ejZGd d ejZGd d ejZdZ dS)a Python 'utf-8-sig' Codec This work similar to UTF-8 with the following changes: * On encoding/writing a UTF-8 encoded BOM will be prepended/written as the first three bytes. * On decoding/reading if the first three bytes are a UTF-8 encoded BOM, these bytes will be skipped. Nstrictcptjtj||dzt|fSNr)codecsBOM_UTF8 utf_8_encodelen)inputerrorss $..\python\lib\encodings\utf_8_sig.pyencoder s1 Of1%@@C C JJ cd}|ddtjkr |dd}d}tj||d\}}|||zfS)NrT)rr utf_8_decode)r r prefixoutputconsumeds r decodersV F RaRyFO##abb ,UFDAAVX HVO $$rc0eZdZd dZd dZdZdZdZdS) IncrementalEncoderrcTtj||d|_dSN)rr__init__firstselfr s r rzIncrementalEncoder.__init__s&!**4888 rFc|jr4d|_tjtj||jdzStj||jdSr)rrrrr )rr finals r r zIncrementalEncoder.encodesU : >DJ?&udk::1=> >&udk::1= =rcRtj|d|_dSr)rrresetrrs r r"zIncrementalEncoder.reset's$!''--- rc|jSNrr#s r getstatezIncrementalEncoder.getstate+s zrc||_dSr%r&rstates r setstatezIncrementalEncoder.setstate.s  rNr)F)__name__ __module__ __qualname__rr r"r'r+rr rrsi>>>>rrc.eZdZddZdZdZdZdZdS) IncrementalDecoderrcTtj||d|_dSr)rBufferedIncrementalDecoderrrrs r rzIncrementalDecoder.__init__2s&)224@@@ rcB|jrt|dkr)tj|rdSd|_nGd|_|ddtjkr(tj|dd||\}}||dzfStj|||S)Nrrr)rr rr startswithr)rr r r rrs r _buffer_decodez!IncrementalDecoder._buffer_decode6s : 05zzA~~?--e44##7!"DJJ !9//*59feDD'VX"HQJ//"5&%888rcRtj|d|_dSr)rr4r"rr#s r r"zIncrementalDecoder.resetGs$)//555 rc^tj|}|d|jfSr)rr4r'rr)s r r'zIncrementalDecoder.getstateKs)1::4@@a$*%%rc`tj|||d|_dSr)rr4r+rr)s r r+zIncrementalDecoder.setstatePs*)224???1X rNr,)r-r.r/rr9r"r'r+r0rr r2r21sd999"&&& rr2ceZdZdZddZdS) StreamWritercltj| |`dS#t$rYdSwxYwr%)rr>r"r AttributeErrorr#s r r"zStreamWriter.resetVI!!$'''      DD  % 33rcDtj|_t||Sr%)rrr )rr r s r r zStreamWriter.encode]s) eV$$$rNr,)r-r.r/r"r r0rr r>r>Us7%%%%%%rr>ceZdZdZddZdS) StreamReadercltj| |`dS#t$rYdSwxYwr%)rrEr"rr@r#s r r"zStreamReader.resetbrArBrcXt|dkr"tj|rdSnP|ddtjkr8tj|_tj|dd|\}}||dzfStj|_tj||S)Nrr6)r rrr8rr)rr r rrs r rzStreamReader.decodeis u::>>))%00 w 2A2Y&/ ) ) -DK!'!4U122Yv!F!F VXHQJ' ') "5&111rNr,)r-r.r/r"rr0rr rErEas7 2 2 2 2 2 2rrEc ttjdtttt t tS)Nz utf-8-sig)namer rincrementalencoderincrementaldecoder streamreader streamwriter)r CodecInfor rrr2rEr>r0rr getregentryrOys1   --!!   rr,) __doc__rr rrr4r2r>rErOr0rr rQs %%%%2.""""":"""H % % % % %6& % % %222226&2220     r