
    Rh	                         d Z ddlZddlZej                  ZddZ G d dej                        Z G d dej                        Z G d d	ej                        Z	 G d
 dej                        Z
d Zy)z
Python 'utf-32' Codec
    Nc                 0    t        j                  | |d      S )NT)codecsutf_32_decode)inputerrorss     '/usr/lib/python3.12/encodings/utf_32.pydecoder	   
   s    vt44    c                   .    e Zd ZddZddZd Zd Zd Zy)	IncrementalEncoderc                 R    t         j                  j                  | |       d | _        y N)r   r   __init__encoderselfr   s     r   r   zIncrementalEncoder.__init__   s    !!**48r
   c                     | j                   dt        j                  || j                        d   }t        j
                  dk(  rt        j                  | _         |S t        j                  | _         |S | j                  || j                        d   S )Nr   little)r   r   utf_32_encoder   sys	byteorderutf_32_le_encodeutf_32_be_encode)r   r   finalresults       r   encodezIncrementalEncoder.encode   su    <<))%=a@F}}(%66 M  &66M||E4;;/22r
   c                 P    t         j                  j                  |        d | _        y r   )r   r   resetr   r   s    r   r   zIncrementalEncoder.reset   s    !!''-r
   c                 "    | j                   dS dS )N   r   )r   r   s    r   getstatezIncrementalEncoder.getstate    s    
 \\)1q1r
   c                     |rd | _         y t        j                  dk(  rt        j                  | _         y t        j
                  | _         y Nr   )r   r   r   r   r   r   r   states     r   setstatezIncrementalEncoder.setstate'   s2    DL}}(%66%66r
   Nstrict)F)__name__
__module____qualname__r   r   r   r"   r'    r
   r   r   r      s    327r
   r   c                   ,    e Zd ZddZd Zd Zd Zd Zy)IncrementalDecoderc                 R    t         j                  j                  | |       d | _        y r   )r   BufferedIncrementalDecoderr   decoderr   s     r   r   zIncrementalDecoder.__init__1   s    ))224@r
   c                 ,   | j                   lt        j                  ||d|      \  }}}|dk(  rt        j                  | _         ||fS |dk(  rt        j                  | _         ||fS |dk\  rt        d      ||fS | j                  || j                  |      S )Nr         %UTF-32 stream does not start with BOM)r2   r   utf_32_ex_decodeutf_32_le_decodeutf_32_be_decodeUnicodeErrorr   )r   r   r   r   outputconsumedr   s          r   _buffer_decodez!IncrementalDecoder._buffer_decode5   s    <<''vq%@ *VXyB%66
 H%%	 a%66 H%% Q"#JKKH%%||E4;;66r
   c                 P    t         j                  j                  |        d | _        y r   )r   r1   r   r2   r   s    r   r   zIncrementalDecoder.resetB   s    ))//5r
   c                     t         j                  j                  |       d   }| j                  |dfS t	        t
        j                  dk(  | j                  t         j                  u k7        }||fS )Nr   r!   big)r   r1   r"   r2   intr   r   r:   )r   r&   addstates      r   r"   zIncrementalDecoder.getstateF   sn     11::4@C
 <<1:.(?(??A Bx  r
   c                 l   t         j                  j                  | |       |d   }|dk(  r?t        j                  dk(  rt         j
                  | _        y t         j                  | _        y |dk(  r?t        j                  dk(  rt         j                  | _        y t         j
                  | _        y d | _        y )Nr5   r   rA   )r   r1   r'   r   r   r:   r9   r2   r%   s     r   r'   zIncrementalDecoder.setstateT   s    ))224?aA:"}}5 #33DL!'!8!8 L aZ"}}5 #33DL!'!8!8 L  DLr
   Nr(   )r*   r+   r,   r   r>   r   r"   r'   r-   r
   r   r/   r/   0   s    7! r
   r/   c                   "    e Zd ZddZd ZddZy)StreamWriterc                 T    d | _         t        j                  j                  | ||       y r   )r   r   rF   r   )r   streamr   s      r   r   zStreamWriter.__init__d   s!    $$T66:r
   c                 P    t         j                  j                  |        d | _        y r   )r   rF   r   r   r   s    r   r   zStreamWriter.reseth   s    !!$'r
   c                     | j                   Wt        j                  ||      }t        j                  dk(  rt        j
                  | _         |S t        j                  | _         |S | j                  ||      S r$   )r   r   r   r   r   r   r   )r   r   r   r   s       r   r   zStreamWriter.encodel   sc    <<))%8F}}(%66 M  &66M<<v..r
   Nr(   )r*   r+   r,   r   r   r   r-   r
   r   rF   rF   c   s    ;	/r
   rF   c                       e Zd Zd ZddZy)StreamReaderc                 f    t         j                  j                  |        	 | `y # t        $ r Y y w xY wr   )r   rL   r   r	   AttributeErrorr   s    r   r   zStreamReader.resety   s2    !!$'	 		s   $ 	00c                     t        j                  ||dd      \  }}}|dk(  rt         j                  | _        ||fS |dk(  rt         j                  | _        ||fS |dk\  rt        d      ||fS )Nr   Fr4   r5   r6   r7   )r   r8   r9   r	   r:   r;   )r   r   r   objectr=   r   s         r   r	   zStreamReader.decode   s    ##E61e< 	&9? 11DK
 !!	 !^ 11DK !! q[FGG!!r
   Nr(   )r*   r+   r,   r   r	   r-   r
   r   rL   rL   w   s    	"r
   rL   c            	      j    t        j                  dt        t        t        t
        t        t              S )Nzutf-32)namer   r	   incrementalencoderincrementaldecoderstreamreaderstreamwriter)r   	CodecInfor   r	   r   r/   rL   rF   r-   r
   r   getregentryrX      s*    --!! r
   r(   )__doc__r   r   r   r   r	   r   r1   r/   rF   rL   rX   r-   r
   r   <module>rZ      sp     
		5!722 !7F1 :: 1 f/6&& /("6&& ",	r
   