
    j*iod                    t   S SK Jr  S SKrS SKJr  S SKJrJr  SSKJ	r	  SSK
JrJrJrJrJrJr  SSKJrJr  S	S
KJrJrJr  / SQrSr\" SS5       V s/ s H  n \" U 5      PM     sn r " S S\5      r          SS jr      SS jr " S S\5      r    SS jr  " S S\5      r!    SS jr"gs  sn f )    )annotationsN)Sequence)AnyLiteral   )frames)DuplicateParameterInvalidParameterNameInvalidParameterValueNegotiationErrorPayloadTooBigProtocolError)ExtensionNameExtensionParameter   )ClientExtensionFactory	ExtensionServerExtensionFactory)PerMessageDeflateClientPerMessageDeflateFactory enable_client_permessage_deflateServerPerMessageDeflateFactory enable_server_permessage_deflates           c                  ~    \ rS rSrSr\" S5      r S           SS jjrSS jrSS.     SS jjr	SS	 jr
S
rg)r   !   z!
Per-Message Deflate extension.

permessage-deflateNc                   Uc  0 nUS;   d   eUS;   d   eSUs=::  a  S::  d   e   eSUs=::  a  S::  d   e   eSU;  d   eXl         X l        X0l        X@l        XPl        U R                   (       d$  [
        R                  " U R                  * S9U l        U R                  (       d2  [
        R                  " SSU R                  * 0U R                  D6U l	        SU l
        g)	z/
Configure the Per-Message Deflate extension.

N)FTr      wbitsr!   F )remote_no_context_takeoverlocal_no_context_takeoverremote_max_window_bitslocal_max_window_bitscompress_settingszlibdecompressobjdecodercompressobjencoderdecode_cont_data)selfr$   r%   r&   r'   r(   s         h/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/websockets/extensions/permessage_deflate.py__init__PerMessageDeflate.__init__)   s     $ ")]:::(M999*0b00000)/R/////////*D')B&&<#%:"!2..--T5P5P4PQDL--++ 111((DL !&    c           	     p    SU R                    SU R                   SU R                   SU R                   S3	$ )Nz-PerMessageDeflate(remote_no_context_takeover=z, local_no_context_takeover=z, remote_max_window_bits=z, local_max_window_bits=))r$   r%   r&   r'   r/   s    r0   __repr__PerMessageDeflate.__repr__S   sV    **.*I*I)J K))-)G)G(H I&&*&A&A%B C%%)%?%?$@	C	
r3   )max_sizec                  UR                   [        R                  ;   a  U$ UR                   [        R                  L a,  U R                  (       d  U$ UR
                  (       a  SU l        O`UR                  (       d  U$ UR
                  (       d  SU l        U R                  (       a$  [        R                  " U R                  * S9U l        UR
                  (       a6  [        UR                  5      S:  a  [        UR                  5      [        -   nOUR                  nUc  SOUn U R                  R!                  X45      nU R                  R"                  (       a  Uc   e[%        SU5      eUR
                  (       a8  [        UR                  5      S:  a  U R                  R!                  [        5        UR
                  (       a  U R                  (       a  U ?[        R*                  " UR                   UUR
                  SUR,                  UR.                  5      $ ! [        R&                   a  n[)        S5      UeSnAff = f)z
Decode an incoming frame.

FTr"   i  Nr   zdecompression failed)opcoder   CTRL_OPCODESOP_CONTr.   finrsv1r$   r)   r*   r&   r+   lendatabytes_EMPTY_UNCOMPRESSED_BLOCK
decompressunconsumed_tailr   errorr   Framersv2rsv3)r/   framer9   rA   
max_lengthexcs         r0   decodePerMessageDeflate.decode\   s    <<6...L
 <<6>>)((yy(-% ::99(,% ..#119T9T8TU
 99UZZ4/ $'@@D::D"*Q
		A<<**4<D||+++++#D(33yyS_4''(AB
 9988||LLIIJJJJ
 	
 zz 	A 67S@	As   %BH I0H<<Ic                (   UR                   [        R                  ;   a  U$ UR                   [        R                  LaC  U R                  (       a2  [
        R                  " SSU R                  * 0U R                  D6U l	        U R                  R                  UR                  5      U R                  R                  [
        R                  5      -   nUR                  (       a2  USS [        :X  d   e[!        U5      S:  a  USS nO[#        U5      SS nUR                  (       a  U R                  (       a  U ?	[        R$                  " UR                   UUR                  UR                   [        R                  LUR&                  UR(                  5      $ )z
Encode an outgoing frame.

r!   Ni   r#   )r;   r   r<   r=   r%   r)   r,   r'   r(   r-   compressrA   flushZ_SYNC_FLUSHr>   rC   r@   
memoryviewrG   rH   rI   )r/   rJ   rA   s      r0   encodePerMessageDeflate.encode   s7    <<6...L
 <<v~~---#//  555 ,,  ||$$UZZ04<<3E3EdFWFW3XX99 9 99994y4CRy!$', 9977||LLIILL.JJJJ
 	
r3   )r(   r.   r+   r-   r'   r%   r&   r$   N)r$   boolr%   rX   r&   intr'   rY   r(   zdict[Any, Any] | NonereturnNone)rZ   str)rJ   frames.Framer9   
int | NonerZ   r]   )rJ   r]   rZ   r]   )__name__
__module____qualname____firstlineno____doc__r   namer1   r7   rM   rU   __static_attributes__r#   r3   r0   r   r   !   s    
 -.D 48&&$(&& $(&& !$	&&
  #&& 1&& 
&&T
  $	F
F
 	F

 
F
P,
r3   r   c                &   / nU (       a  UR                  S5        U(       a  UR                  S5        U(       a  UR                  S[        U5      45        USL a  UR                  S5        U$ U(       a  UR                  S[        U5      45        U$ )zK
Build a list of ``(name, value)`` pairs for some compression parameters.

)server_no_context_takeoverN)client_no_context_takeoverNserver_max_window_bitsT)client_max_window_bitsNrj   )appendr\   )rg   rh   ri   rj   paramss        r0   _build_parametersrm      s     (*F!:;!:;/5K1LMN%67 M 
 /5K1LMNMr3   c                  SnSnSnSnU  H  u  pgUS:X  a$  U(       a  [        U5      eUc  SnM$  [        Xg5      eUS:X  a$  U(       a  [        U5      eUc  SnMN  [        Xg5      eUS:X  a0  Ub  [        U5      eU[        ;   a  [        U5      nM  [        Xg5      eUS:X  a>  Ub  [        U5      eU(       a  Uc  SnM  U[        ;   a  [        U5      nM  [        Xg5      e[	        U5      e   UUUU4$ )z
Extract compression parameters from a list of ``(name, value)`` pairs.

If ``is_server`` is :obj:`True`, ``client_max_window_bits`` may be
provided without a value. This is only allowed in handshake requests.

FNrg   Trh   ri   rj   )r	   r   _MAX_WINDOW_BITS_VALUESrY   r
   )rl   	is_serverrg   rh   ri   rj   rd   values           r0   _extract_parametersrr      s&    (-',)-9=//)(..}-1*+D8811)(..}-1*+D88--%1(..//),U&+D88--%1(..U])-&11),U&+D88 't,,I N 	#"	 r3   c                  v    \ rS rSrSr\" S5      r     S	           S
S jjrSS jr      SS jr	Sr
g)r   i(  a  
Client-side extension factory for the Per-Message Deflate extension.

Parameters behave as described in `section 7.1 of RFC 7692`_.

.. _section 7.1 of RFC 7692: https://datatracker.ietf.org/doc/html/rfc7692#section-7.1

Set them to :obj:`True` to include them in the negotiation offer without a
value or to an integer value to include them with this value.

Args:
    server_no_context_takeover: Prevent server from using context takeover.
    client_no_context_takeover: Prevent client from using context takeover.
    server_max_window_bits: Maximum size of the server's LZ77 sliding window
        in bits, between 8 and 15.
    client_max_window_bits: Maximum size of the client's LZ77 sliding window
        in bits, between 8 and 15, or :obj:`True` to indicate support without
        setting a limit.
    compress_settings: Additional keyword arguments for :func:`zlib.compressobj`,
        excluding ``wbits``.

r   Nc                    Ub  SUs=::  a  S::  d  O  [        S5      eUb  USL d  SUs=::  a  S::  d  O  [        S5      eUb  SU;   a  [        S5      eXl        X l        X0l        X@l        XPl        g)	7
Configure the Per-Message Deflate extension factory.

Nr   r    /server_max_window_bits must be between 8 and 15T/client_max_window_bits must be between 8 and 15r!   zLcompress_settings must not include wbits, set client_max_window_bits instead)
ValueErrorrg   rh   ri   rj   r(   )r/   rg   rh   ri   rj   r(   s         r0   r1   'ClientPerMessageDeflateFactory.__init__B  s     '.!7M2SQS2SNOO"*%-*0b0NOO(W8I-I5 
 +E'*D'&<#&<#!2r3   c                n    [        U R                  U R                  U R                  U R                  5      $ )z
Build request parameters.

)rm   rg   rh   ri   rj   r6   s    r0   get_request_params1ClientPerMessageDeflateFactory.get_request_paramsb  s5    
 !++++''''	
 	
r3   c                r  ^  [        U 4S jU 5       5      (       a  [        ST R                   35      e[        USS9u  nnnnT R                  (       a  U(       d  [        S5      eT R
                  (       a	  U(       d  SnT R                  c  O)Uc  [        S5      eUT R                  :  a  [        S5      eT R                  c  Ub  [        S	5      eO;T R                  SL a  O+Uc  T R                  nOUT R                  :  a  [        S
5      e[        UUU=(       d    SU=(       d    ST R                  5      $ )z>
Process response parameters.

Return an extension instance.

c              3  T   >#    U  H  oR                   TR                   :H  v   M     g 7frW   rd   .0otherr/   s     r0   	<genexpr>IClientPerMessageDeflateFactory.process_response_params.<locals>.<genexpr>y       H4G5zzTYY&4G   %(zreceived duplicate Frp   z#expected server_no_context_takeoverTzexpected server_max_window_bitsz"unsupported server_max_window_bitsz!unexpected client_max_window_bitsz"unsupported client_max_window_bitsr    )
anyr   rd   rr   rg   rh   ri   rj   r   r(   r/   rl   accepted_extensionsrg   rh   ri   rj   s   `      r0   process_response_params6ClientPerMessageDeflateFactory.process_response_paramsn  sJ    H4GHHH"%8#DEE  %8	
&&"" **-&'LMM **--1* &&. &-&'HII'$*E*EE&'KLL &&.%1&'JKK 2 ((D0 &-)-)D)D&'$*E*EE&'KLL &&"(b"(b""
 	
r3   )rj   rh   r(   ri   rg   )FFNTN)rg   rX   rh   rX   ri   r^   rj   int | Literal[True] | Noner(   dict[str, Any] | NonerZ   r[   )rZ   Sequence[ExtensionParameter])rl   r   r   Sequence[Extension]rZ   r   )r_   r`   ra   rb   rc   r   rd   r1   r{   r   re   r#   r3   r0   r   r   (  s    . -.D ,1+0-1=A373$(3 %)3 !+	3
 !;3 13 
3@

g
,g
 1g
 
	g
r3   r   c                n    U c  / n [        S U  5       5      (       d  [        U 5      [        SS0S9/-   n U $ )z
Enable Per-Message Deflate with default settings in client extensions.

If the extension is already present, perhaps with non-default settings,
the configuration isn't changed.

c              3  \   #    U  H"  nUR                   [        R                   :H  v   M$     g 7frW   )rd   r   )r   extension_factorys     r0   r   3enable_client_permessage_deflate.<locals>.<genexpr>  s*      !+ 	"@"E"EE!+   *,memLevel   )r(   )r   listr   
extensionss    r0   r   r     sV     
 !+   *%*#-q/)
 


 r3   c                  r    \ rS rSrSr\" S5      r      S             S	S jjr      S
S jrSr	g)r   i  aS  
Server-side extension factory for the Per-Message Deflate extension.

Parameters behave as described in `section 7.1 of RFC 7692`_.

.. _section 7.1 of RFC 7692: https://datatracker.ietf.org/doc/html/rfc7692#section-7.1

Set them to :obj:`True` to include them in the negotiation offer without a
value or to an integer value to include them with this value.

Args:
    server_no_context_takeover: Prevent server from using context takeover.
    client_no_context_takeover: Prevent client from using context takeover.
    server_max_window_bits: Maximum size of the server's LZ77 sliding window
        in bits, between 8 and 15.
    client_max_window_bits: Maximum size of the client's LZ77 sliding window
        in bits, between 8 and 15.
    compress_settings: Additional keyword arguments for :func:`zlib.compressobj`,
        excluding ``wbits``.
    require_client_max_window_bits: Do not enable compression at all if
        client doesn't advertise support for ``client_max_window_bits``;
        the default behavior is to enable compression without enforcing
        ``client_max_window_bits``.

r   Nc                   Ub  SUs=::  a  S::  d  O  [        S5      eUb  SUs=::  a  S::  d  O  [        S5      eUb  SU;   a  [        S5      eUc  U(       a  [        S5      eXl        X l        X0l        X@l        XPl        X`l        g)	ru   Nr   r    rv   rw   r!   zLcompress_settings must not include wbits, set server_max_window_bits insteadzVrequire_client_max_window_bits is enabled, but client_max_window_bits isn't configured)rx   rg   rh   ri   rj   r(   require_client_max_window_bits)r/   rg   rh   ri   rj   r(   r   s          r0   r1   'ServerPerMessageDeflateFactory.__init__  s     '.!7M2SQS2SNOO&.!7M2SQS2SNOO(W8I-I5  ").L> 
 +E'*D'&<#&<#!2.L+r3   c                  ^  [        U 4S jU 5       5      (       a  [        ST R                   35      e[        USS9u  nnnnT R                  (       a	  U(       d  SnT R
                  (       a	  U(       d  SnT R                  c  O,Uc  T R                  nOUT R                  :  a  T R                  nT R                  c  USL a  T R                  nONUc  T R                  (       a  [        S5      eO.USL a  T R                  nOT R                  U:  a  T R                  n[        UUUU5      [        UUU=(       d    SU=(       d    ST R                  5      4$ )zQ
Process request parameters.

Return response params and an extension instance.

c              3  T   >#    U  H  oR                   TR                   :H  v   M     g 7frW   r   r   s     r0   r   HServerPerMessageDeflateFactory.process_request_params.<locals>.<genexpr>;  r   r   zskipped duplicate Tr   zrequired client_max_window_bitsr    )r   r   rd   rr   rg   rh   ri   rj   r   rm   r   r(   r   s   `      r0   process_request_params5ServerPerMessageDeflateFactory.process_request_params0  so    H4GHHH"%7		{#CDD  $7	
&&""" **--1* **--1* &&. &-)-)D)D&'$*E*EE)-)D)D& &&.%-)-)D)D& &-66*+LMM 7'4/)-)D)D&,,/EE)-)D)D& **&&	 **&,"&,"&&
 	
r3   )rj   rh   r(   r   ri   rg   )FFNNNF)rg   rX   rh   rX   ri   r^   rj   r^   r(   r   r   rX   rZ   r[   )rl   r   r   r   rZ   z2tuple[list[ExtensionParameter], PerMessageDeflate])
r_   r`   ra   rb   rc   r   rd   r1   r   re   r#   r3   r0   r   r     s    4 -.D ,1+0-1-137/4!M$(!M %)!M !+	!M
 !+!M 1!M )-!M 
!MFo
,o
 1o
 
<	o
r3   r   c                r    U c  / n [        S U  5       5      (       d  [        U 5      [        SSSS0S9/-   n U $ )z
Enable Per-Message Deflate with default settings in server extensions.

If the extension is already present, perhaps with non-default settings,
the configuration isn't changed.

c              3  \   #    U  H"  nUR                   [        R                   :H  v   M$     g 7frW   )rd   r   )r   ext_factorys     r0   r   3enable_server_permessage_deflate.<locals>.<genexpr>  s)      %K 	:???%r      r   r   )ri   rj   r(   )r   r   r   r   s    r0   r   r     s\     
 %   *%*')')#-q/)
 

 r3   )
rg   rX   rh   rX   ri   r^   rj   r   rZ   zlist[ExtensionParameter])rl   r   rp   rX   rZ   z9tuple[bool, bool, int | None, int | Literal[True] | None])r   z'Sequence[ClientExtensionFactory] | NonerZ   z Sequence[ClientExtensionFactory])r   z'Sequence[ServerExtensionFactory] | NonerZ   z Sequence[ServerExtensionFactory])#
__future__r   r)   collections.abcr   typingr   r    r   
exceptionsr	   r
   r   r   r   r   r   r   baser   r   r   __all__rC   ranger\   ro   r   rm   rr   r   r   r   r   )bitss   0r0   <module>r      s   "  $    7 K K 0 16q">3t9> o
	 o
d $ $ ' 7	
 0:(:8<:>:zm
%; m
`7%0o
%; o
d7%I ?s   B5