î j f% ã @ s¤ d Z d d l Z d d d „ Z d d d „ Z Gd d „ d e j ƒ Z Gd d „ d e j ƒ Z Gd d „ d e j ƒ Z Gd d „ d e j ƒ Z d d „ Z d S)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. é NÚstrictc C s' t j t j | | ƒ d t | ƒ f S)Nr )ÚcodecsÚBOM_UTF8Úutf_8_encodeÚlen)ÚinputÚerrors© r ú8/opt/alt/python34/lib64/python3.4/encodings/utf_8_sig.pyÚencode s r c C sa d } | d d … t j k r8 | d d … } d } n t j | | d ƒ \ } } | | | f S)Nr é T)r r Úutf_8_decode)r r ÚprefixÚoutputÚconsumedr r r Údecode s r c @ sR e Z d Z d d d „ Z d d d „ Z d d „ Z d d „ Z d d „ Z d S)ÚIncrementalEncoderr c C s t j j | | ƒ d | _ d S)Né )r r Ú__init__Úfirst)Úselfr r r r r s zIncrementalEncoder.__init__Fc C sK | j r0 d | _ t j t j | | j ƒ d St j | | j ƒ d Sd S)Nr )r r r r r )r r Úfinalr r r r s zIncrementalEncoder.encodec C s t j j | ƒ d | _ d S)Nr )r r Úresetr )r r r r r ' s zIncrementalEncoder.resetc C s | j S)N)r )r r r r Úgetstate+ s zIncrementalEncoder.getstatec C s | | _ d S)N)r )r Ústater r r Úsetstate. s zIncrementalEncoder.setstateN)Ú__name__Ú __module__Ú__qualname__r r r r r r r r r r s r c @ sO e Z d Z d d d „ Z d d „ Z d d „ Z d d „ Z d d „ Z d S) ÚIncrementalDecoderr c C s t j j | | ƒ d | _ d S)Nr )r ÚBufferedIncrementalDecoderr r )r r r r r r 2 s zIncrementalDecoder.__init__c C s¨ | j r• t | ƒ d k r= t j j | ƒ r1 d Sd | _ q• d | _ | d d … t j k r• t j | d d … | | ƒ \ } } | | d f Sn t j | | | ƒ S)Nr Ú r )r! r )r r r r Ú startswithr )r r r r r r r r r Ú_buffer_decode6 s %z!IncrementalDecoder._buffer_decodec C s t j j | ƒ d | _ d S)Nr )r r r r )r r r r r G s zIncrementalDecoder.resetc C s# t j j | ƒ } | d | j f S)Nr )r r r r )r r r r r r K s zIncrementalDecoder.getstatec C s$ t j j | | ƒ | d | _ d S)Nr )r r r r )r r r r r r P s zIncrementalDecoder.setstateN)r r r r r# r r r r r r r r 1 s r c @ s+ e Z d Z d d „ Z d d d „ Z d S)ÚStreamWriterc C s3 t j j | ƒ y | ` Wn t k r. Yn Xd S)N)r r$ r r ÚAttributeError)r r r r r V s zStreamWriter.resetr c C s t j | _ t | | ƒ S)N)r r r )r r r r r r r ] s zStreamWriter.encodeN)r r r r r r r r r r$ U s r$ c @ s+ e Z d Z d d „ Z d d d „ Z d S)ÚStreamReaderc C s3 t j j | ƒ y | ` Wn t k r. Yn Xd S)N)r r&