
    h	/                    J   d Z ddlmZ ddlZddlZddlZddlZddlmZ 	 ddl	Z	n# e
$ r 	 ddlZ	n# e
$ r dZ	Y nw xY wY nw xY w	 ddlZn# e
$ r dZY nw xY w G d d          Z G d d	e          Z G d
 de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d          Z G d d          Z G d d          Z G d d          ZeeeeedZe	e                    d           ee                    d           dS dS )zq
Handlers for Content-Encoding.

See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding
    )annotationsN   )DecodingErrorc                      e Zd ZddZddZdS )	ContentDecoderdatabytesreturnc                    t                      NNotImplementedErrorselfr   s     Q/var/www/html/prod/cognitive/venv/lib/python3.11/site-packages/httpx/_decoders.pydecodezContentDecoder.decode%       !###    c                    t                      r   r   r   s    r   flushzContentDecoder.flush(   r   r   Nr   r	   r
   r	   r
   r	   )__name__
__module____qualname__r   r    r   r   r   r   $   s<        $ $ $ $$ $ $ $ $ $r   r   c                  "    e Zd ZdZddZd	dZdS )
IdentityDecoderz 
    Handle unencoded data.
    r   r	   r
   c                    |S r   r   r   s     r   r   zIdentityDecoder.decode1   s    r   c                    dS Nr   r   r   s    r   r   zIdentityDecoder.flush4   s    sr   Nr   r   )r   r   r   __doc__r   r   r   r   r   r   r   ,   sF                 r   r   c                  *    e Zd ZdZd
dZddZddZd	S )DeflateDecoderzZ
    Handle 'deflate' decoding.

    See: https://stackoverflow.com/questions/1838699
    r
   Nonec                D    d| _         t          j                    | _        d S NT)first_attemptzlibdecompressobjdecompressorr   s    r   __init__zDeflateDecoder.__init__?   s!    ! .00r   r   r	   c                <   | j         }d| _         	 | j                            |          S # t          j        $ rb}|r>t          j        t          j                   | _        |                     |          cY d }~S t          t          |                    |d }~ww xY wNF)
r)   r,   
decompressr*   errorr+   	MAX_WBITSr   r   str)r   r   was_first_attemptexcs       r   r   zDeflateDecoder.decodeC   s     ."	3$//555z 	3 	3 	3  )$($6$G$G!{{4((((((((C))s2		3s    * B:B3B9BBc                    	 | j                                         S # t          j        $ r"}t	          t          |                    |d }~ww xY wr   r,   r   r*   r1   r   r3   r   r5   s     r   r   zDeflateDecoder.flushN   S    	3$**,,,z 	3 	3 	3C))s2	3    AAANr
   r&   r   r   r   r   r   r#   r-   r   r   r   r   r   r%   r%   8   sZ         1 1 1 1	3 	3 	3 	33 3 3 3 3 3r   r%   c                  *    e Zd ZdZd
dZddZddZd	S )GZipDecoderzW
    Handle 'gzip' decoding.

    See: https://stackoverflow.com/questions/1838699
    r
   r&   c                R    t          j        t           j        dz            | _        d S )N   )r*   r+   r2   r,   r   s    r   r-   zGZipDecoder.__init__\   s"     .t~/BCCr   r   r	   c                    	 | j                             |          S # t          j        $ r"}t	          t          |                    |d }~ww xY wr   )r,   r0   r*   r1   r   r3   r   r   r5   s      r   r   zGZipDecoder.decode_   sU    	3$//555z 	3 	3 	3C))s2	3s    AAAc                    	 | j                                         S # t          j        $ r"}t	          t          |                    |d }~ww xY wr   r7   r8   s     r   r   zGZipDecoder.flushe   r9   r:   Nr;   r   r   r<   r   r   r   r>   r>   U   s^         D D D D3 3 3 33 3 3 3 3 3r   r>   c                  *    e Zd ZdZd
dZddZddZd	S )BrotliDecoderaT  
    Handle 'brotli' decoding.

    Requires `pip install brotlipy`. See: https://brotlipy.readthedocs.io/
        or   `pip install brotli`. See https://github.com/google/brotli
    Supports both 'brotlipy' and 'Brotli' packages since they share an import
    name. The top branches are for 'brotlipy' and bottom branches for 'Brotli'
    r
   r&   c                    t           t          d          d t          j                    | _        d| _        |  t          | j        d          r| j        j        | _        d S | j        j        | _        d S )NzUsing 'BrotliDecoder', but neither of the 'brotlicffi' or 'brotli' packages have been installed. Make sure to install httpx using `pip install httpx[brotli]`.Fr0   )	brotliImportErrorDecompressorr,   	seen_datahasattrr0   _decompressprocessr   s    r   r-   zBrotliDecoder.__init__v   s    >P  	 #/1194$l33 	9#0;D  $08Dr   r   r	   c                    |sdS d| _         	 |                     |          S # t          j        $ r"}t	          t          |                    |d }~ww xY wNr   T)rJ   rL   rG   r1   r   r3   rB   s      r   r   zBrotliDecoder.decode   sf     	3	3##D)))| 	3 	3 	3C))s2	3s   " AAAc                    | j         sdS 	 t          | j        d          r| j                                         dS # t          j        $ r"}t          t          |                    |d }~ww xY w)Nr   finish)rJ   rK   r,   rQ   rG   r1   r   r3   r8   s     r   r   zBrotliDecoder.flush   s~    ~ 	3
	3t((33 + !((***3| 	3 	3 	3C))s2	3s   .; A,
A''A,Nr;   r   r   r<   r   r   r   rE   rE   l   sZ         9 9 9 9$3 3 3 33 3 3 3 3 3r   rE   c                  *    e Zd ZdZd
dZddZddZd	S )ZStandardDecoderz
    Handle 'zstd' RFC 8878 decoding.

    Requires `pip install zstandard`.
    Can be installed as a dependency of httpx using `pip install httpx[zstd]`.
    r
   r&   c                    t           t          d          d t          j                                                    | _        d| _        d S )NzXUsing 'ZStandardDecoder', ...Make sure to install httpx using `pip install httpx[zstd]`.F)	zstandardrH   ZstdDecompressorr+   r,   rJ   r   s    r   r-   zZStandardDecoder.__init__   sO    N  
 &688FFHHr   r   r	   c                \   t           J d| _        t          j                    }	 |                    | j                            |                     | j        j        r| j        j        r{| j        j        }t          j	                    
                                | _        |                    | j                            |                     | j        j        r| j        j        {n4# t           j        $ r"}t          t          |                    |d }~ww xY w|                                S r(   )rU   rJ   ioBytesIOwriter,   r0   eofunused_datarV   r+   	ZstdErrorr   r3   getvalue)r   r   outputr\   r5   s        r   r   zZStandardDecoder.decode   s   $$$	3LL*55d;;<<<#' HD,=,I H"/;$-$>$@$@$N$N$P$P!T.99+FFGGG #' HD,=,I H " 	3 	3 	3C))s2	3   s   C C& &D5DDc                    | j         sdS | j                                        }| j        j        st	          d          t          |          S )Nr   zZstandard data is incomplete)rJ   r,   r   r[   r   r	   )r   rets     r   r   zZStandardDecoder.flush   sO    ~ 	3%%'' $ 	@ >???Szzr   Nr;   r   r   r<   r   r   r   rS   rS      sZ            ! ! ! !     r   rS   c                  *    e Zd ZdZddZdd	Zdd
ZdS )MultiDecoderzE
    Handle the case where multiple encodings have been applied.
    childrentyping.Sequence[ContentDecoder]r
   r&   c                H    t          t          |                    | _        dS )zm
        'children' should be a sequence of decoders in the order in which
        each was applied.
        N)listreversedrd   )r   rd   s     r   r-   zMultiDecoder.__init__   s     Xh//00r   r   r	   c                D    | j         D ]}|                    |          }|S r   )rd   r   r   r   childs      r   r   zMultiDecoder.decode   s+    ] 	& 	&E<<%%DDr   c                r    d}| j         D ],}|                    |          |                                z   }-|S r"   )rd   r   r   rj   s      r   r   zMultiDecoder.flush   s=    ] 	6 	6E<<%%5DDr   N)rd   re   r
   r&   r   r   r<   r   r   r   rc   rc      sZ         1 1 1 1   
     r   rc   c                  ,    e Zd ZdZdddZddZddZdS )ByteChunkerz>
    Handles returning byte content in fixed-size chunks.
    N
chunk_size
int | Noner
   r&   c                D    t          j                    | _        || _        d S r   )rX   rY   _buffer_chunk_sizer   ro   s     r   r-   zByteChunker.__init__   s    z||%r   contentr	   list[bytes]c                     j         |r|gng S  j                            |            j                                         j         k    r j                                         fdt          dt                     j                   D             }t          |d                    j         k    r5 j                            d            j                                         |S  j                            d            j                            |d                     j                                         |d d         S g S )Nc                4    g | ]}||j         z            S r   rs   .0ir   values     r   
<listcomp>z&ByteChunker.decode.<locals>.<listcomp>   ;        a!d.../  r   r   	rs   rr   rZ   tellr^   rangelenseektruncater   ru   chunksr}   s   `  @r   r   zByteChunker.decode   E   # '/G99R/7###<$"222L))++E    q#e**d.>??  F 6":$"222!!!$$$%%'''!!!$$$""6":...%%'''crc{"Ir   c                    | j                                         }| j                             d           | j                                          |r|gng S Nr   rr   r^   r   r   r   r}   s     r   r   zByteChunker.flush  P    %%''!'wwR'r   r   ro   rp   r
   r&   )ru   r	   r
   rv   )r
   rv   r<   r   r   r   rn   rn      _         & & & & &   .( ( ( ( ( (r   rn   c                  ,    e Zd ZdZdddZddZddZdS )TextChunkerz>
    Handles returning text content in fixed-size chunks.
    Nro   rp   r
   r&   c                D    t          j                    | _        || _        d S r   )rX   StringIOrr   rs   rt   s     r   r-   zTextChunker.__init__  s    {}}%r   ru   r3   	list[str]c                     j         |r|gng S  j                            |            j                                         j         k    r j                                         fdt          dt                     j                   D             }t          |d                    j         k    r5 j                            d            j                                         |S  j                            d            j                            |d                     j                                         |d d         S g S )Nc                4    g | ]}||j         z            S r   ry   rz   s     r   r~   z&TextChunker.decode.<locals>.<listcomp>  r   r   r   r   r   r   s   `  @r   r   zTextChunker.decode  r   r   c                    | j                                         }| j                             d           | j                                          |r|gng S r   r   r   s     r   r   zTextChunker.flush+  r   r   r   r   )ru   r3   r
   r   r
   r   r<   r   r   r   r   r     r   r   r   c                  ,    e Zd ZdZdddZdd
ZddZdS )TextDecoderz8
    Handles incrementally decoding bytes into text
    utf-8encodingr3   r
   r&   c                L     t          j        |          d          | _        d S )Nreplace)errors)codecsgetincrementaldecoderdecoder)r   r   s     r   r-   zTextDecoder.__init__7  s%    =v3H==YOOOr   r   r	   c                6    | j                             |          S r   r   r   r   s     r   r   zTextDecoder.decode:  s    |""4(((r   c                8    | j                             dd          S rO   r   r   s    r   r   zTextDecoder.flush=  s    |""3---r   N)r   )r   r3   r
   r&   )r   r	   r
   r3   )r
   r3   r<   r   r   r   r   r   2  sd         P P P P P) ) ) ). . . . . .r   r   c                  *    e Zd ZdZddZddZdd	Zd
S )LineDecoderz
    Handles incrementally reading lines from text.

    Has the same behaviour as the stdllib splitlines,
    but handling the input iteratively.
    r
   r&   c                "    g | _         d| _        d S r/   )buffertrailing_crr   s    r   r-   zLineDecoder.__init__I  s    !#!&r   textr3   r   c                   d}| j         rd|z   }d| _         |                    d          rd| _         |d d         }|sg S |d         |v }|                                }t          |          dk    r$|s"| j                            |d                    g S | j        r6d                    | j                  |d         z   g|dd          z   }g | _        |s|                                g| _        |S )	Nu   
  FTr   r   r    )r   endswith
splitlinesr   r   appendjoinpop)r   r   NEWLINE_CHARStrailing_newlineliness        r   r   zLineDecoder.decodeM  s   B  	%$;D$D== 	#D9D 	 I8}4!!u::??#3?KuQx(((I; 	 WWT[))E!H45abb	AEDK 	( !99;;-DKr   c                x    | j         s	| j        sg S d                    | j                   g}g | _         d| _        |S )Nr   F)r   r   r   )r   r   s     r   r   zLineDecoder.flushs  sE    { 	4#3 	I%%& r   Nr;   )r   r3   r
   r   r   r<   r   r   r   r   r   A  s[         ' ' ' '$ $ $ $L     r   r   )identitygzipdeflatebrzstdr   r   )r#   
__future__r   r   rX   typingr*   _exceptionsr   rG   rH   
brotlicffirU   r   r   r%   r>   rE   rS   rc   rn   r   r   r   SUPPORTED_DECODERSr   r   r   r   <module>r      s"    # " " " " "  				   & & & & & &	MMMM    	$####      III$ $ $ $ $ $ $ $	 	 	 	 	n 	 	 	3 3 3 3 3^ 3 3 3:3 3 3 3 3. 3 3 3.23 23 23 23 23N 23 23 23j' ' ' ' '~ ' ' 'T    >   2$( $( $( $( $( $( $( $(N$( $( $( $( $( $( $( $(N. . . . . . . .9 9 9 9 9 9 9 9z  
   
>4   6""""" s;   % A 0A :A :A A A	 	AA