
    vKg>d                    n   S SK Jr  S SKrS SKJr  S SK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   )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/highfloat_scraper/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    r/   __repr__PerMessageDeflate.__repr__S   sV    **.*I*I)J K))-)G)G(H I&&*&A&A%B C%%)%?%?$@	C	
r2   )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.   framer8   r@   
max_lengthexcs         r/   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,   compressr@   flushZ_SYNC_FLUSHr=   rB   r?   
memoryviewrF   rG   rH   )r.   rI   r@   s      r/   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
 	
r2   )r'   r-   r*   r,   r&   r$   r%   r#   N)r#   boolr$   rW   r%   intr&   rX   r'   zdict[Any, Any] | NonereturnNone)rY   str)rI   frames.Framer8   
int | NonerY   r\   )rI   r\   rY   r\   )__name__
__module____qualname____firstlineno____doc__r   namer0   r6   rL   rT   __static_attributes__r"   r2   r/   r   r   !   s    
 -.D 48&&$(&& $(&& !$	&&
  #&& 1&& 
&&T
  $	F
F
 	F

 
F
P,
r2   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_bitsNri   )appendr[   )rf   rg   rh   ri   paramss        r/   _build_parametersrl      s     (*F!:;!:;/5K1LMN%67 M 
 /5K1LMNMr2   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.

FNrf   Trg   rh   ri   )r   r
   _MAX_WINDOW_BITS_VALUESrX   r	   )rk   	is_serverrf   rg   rh   ri   rc   values           r/   _extract_parametersrq      s&    (-',)-04//)(..}-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 	#"	 r2   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)
ValueErrorrf   rg   rh   ri   r'   )r.   rf   rg   rh   ri   r'   s         r/   r0   'ClientPerMessageDeflateFactory.__init__B  s     '.!7M2SQS2SNOO"*%-*0b0NOO(W8I-I5 
 +E'*D'&<#&<#!2r2   c                n    [        U R                  U R                  U R                  U R                  5      $ )z
Build request parameters.

)rl   rf   rg   rh   ri   r5   s    r/   get_request_params1ClientPerMessageDeflateFactory.get_request_paramsb  s5    
 !++++''''	
 	
r2   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  R   >#    U H  oR                   TR                   :H  v   M     g 7frV   rc   .0otherr.   s     r/   	<genexpr>IClientPerMessageDeflateFactory.process_response_params.<locals>.<genexpr>y       H4G5zzTYY&4G   $'zreceived duplicate Fro   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   rc   rq   rf   rg   rh   ri   r   r'   r.   rk   accepted_extensionsrf   rg   rh   ri   s   `      r/   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""
 	
r2   )ri   rg   r'   rh   rf   )FFNTN)rf   rW   rg   rW   rh   r]   ri   int | bool | Noner'   dict[str, Any] | NonerY   rZ   )rY   list[ExtensionParameter])rk   Sequence[ExtensionParameter]r   Sequence[Extension]rY   r   )r^   r_   r`   ra   rb   r   rc   r0   rz   r   rd   r"   r2   r/   r   r   (  s    . -.D ,1+0-148373$(3 %)3 !+	3
 !23 13 
3@

g
,g
 1g
 
	g
r2   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  Z   #    U H"  nUR                   [        R                   :H  v   M$     g 7frV   )rc   r   )r   extension_factorys     r/   r   3enable_client_permessage_deflate.<locals>.<genexpr>  s*      !+ 	"@"E"EE!+   )+memLevel   )r'   )r   listr   
extensionss    r/   r   r     sV     
 !+   *%*#-q/)
 


 r2   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)	rt   Nr   r   ru   rv   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)rw   rf   rg   rh   ri   r'   require_client_max_window_bits)r.   rf   rg   rh   ri   r'   r   s          r/   r0   'ServerPerMessageDeflateFactory.__init__  s     '.!7M2SQS2SNOO&.!7M2SQS2SNOO(W8I-I5  ").L> 
 +E'*D'&<#&<#!2.L+r2   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  R   >#    U H  oR                   TR                   :H  v   M     g 7frV   r~   r   s     r/   r   HServerPerMessageDeflateFactory.process_request_params.<locals>.<genexpr>;  r   r   zskipped duplicate Tr   zrequired client_max_window_bitsr   )r   r   rc   rq   rf   rg   rh   ri   r   rl   r   r'   r   s   `      r/   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& **&&	 **&,"&,"&&
 	
r2   )ri   rg   r'   r   rh   rf   )FFNNNF)rf   rW   rg   rW   rh   r]   ri   r]   r'   r   r   rW   rY   rZ   )rk   r   r   r   rY   z2tuple[list[ExtensionParameter], PerMessageDeflate])
r^   r_   r`   ra   rb   r   rc   r0   r   rd   r"   r2   r/   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
r2   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  Z   #    U H"  nUR                   [        R                   :H  v   M$     g 7frV   )rc   r   )r   ext_factorys     r/   r   3enable_server_permessage_deflate.<locals>.<genexpr>  s)      %K 	:???%r      r   r   )rh   ri   r'   )r   r   r   r   s    r/   r   r     s\     
 %   *%*')')#-q/)
 

 r2   )
rf   rW   rg   rW   rh   r]   ri   r   rY   r   )rk   r   ro   rW   rY   z0tuple[bool, bool, int | None, int | bool | None])r   z'Sequence[ClientExtensionFactory] | NonerY   z Sequence[ClientExtensionFactory])r   z'Sequence[ServerExtensionFactory] | NonerY   z Sequence[ServerExtensionFactory])"
__future__r   r(   collections.abcr   typingr    r   
exceptionsr   r	   r
   r   r   r   r   r   baser   r   r   __all__rB   ranger[   rn   r   rl   rq   r   r   r   r   )bitss   0r/   <module>r      s   "  $    7 K K 0 16q">3t9> o
	 o
d $ $ ' .	
 0:(:8<:5:zm
%; m
`7%0o
%; o
d7%I ?s   B2