
    ,h+                         d Z ddlZddlmZmZmZ ddlmZmZm	Z	m
Z
mZ  G d d      Z G d d	e      Zej                  eiZy)
z>
wsproto/extensions
~~~~~~~~~~~~~~~~~~

WebSocket extensions.
    N)OptionalTupleUnion   )CloseReasonFrameDecoderFrameProtocolOpcodeRsvBitsc                       e Zd ZU eed<   defdZdeeef   fdZdede	eeef      fdZ
deddfdZd	eeef   d
edededeeef   f
dZd	eeef   dedeeef   fdZd	eeef   dedeeedf   fdZd	eeef   d
ededededeeef   fdZy)	Extensionnamereturnc                      yNF selfs    T/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/wsproto/extensions.pyenabledzExtension.enabled   s        c                      y Nr   r   s    r   offerzExtension.offer       r   r   c                      y r   r   r   r   s     r   acceptzExtension.accept   r   r   Nc                      y r   r   r   s     r   finalizezExtension.finalize   r   r   protoopcodersvpayload_lengthc                     t        ddd      S r   )r   )r   r!   r"   r#   r$   s        r   frame_inbound_headerzExtension.frame_inbound_header   s     ueU++r   datac                     |S r   r   r   r!   r'   s      r   frame_inbound_payload_dataz$Extension.frame_inbound_payload_data&   s	     r   finc                      y r   r   )r   r!   r+   s      r   frame_inbound_completez Extension.frame_inbound_complete+   s     	r   c                 
    ||fS r   r   )r   r!   r"   r#   r'   r+   s         r   frame_outboundzExtension.frame_outbound0   s     T{r   )__name__
__module____qualname__str__annotations__boolr   r   r   r   r   r    r   r	   r
   r   intr   r&   bytesr*   r-   r   r/   r   r   r   r   r      s[   
I uT3Y' C HU49-=$> c d ,\=01, , 	,
 , 
{G#	$,<67?D	uk!	"
<67>B	uk4'	(
\=01  	
   
w~	r   r   c                      e Zd ZdZdZdZ	 	 	 	 d"dedee   dedee   ddf
d	Z	e
defd
       Zej                  deddfd       Ze
defd       Zej                  deddfd       ZdedefdZdefdZdeeef   fdZdeddfdZdedeee   ee   f   fdZdedeedef   fdZdeeef   dedededeeef   f
dZdeeef   dedeeef   fdZdeeef   dedeeedf   fdZdeeef   dededededeeef   fd Z defd!Z!y)#PerMessageDeflatezpermessage-deflate   Nclient_no_context_takeoverclient_max_window_bitsserver_no_context_takeoverserver_max_window_bitsr   c                     || _         || _        | j                  | _        | j                  | _        ||| _        ||| _        d | _        d | _	        d | _
        d | _        d| _        y r   )r;   r=   DEFAULT_CLIENT_MAX_WINDOW_BITS_client_max_window_bitsDEFAULT_SERVER_MAX_WINDOW_BITS_server_max_window_bitsr<   r>   _compressor_decompressor_inbound_is_compressible_inbound_compressed_enabled)r   r;   r<   r=   r>   s        r   __init__zPerMessageDeflate.__init__A   sv     +E'*D''+'J'J$'+'J'J$!-*@D'!-*@D'599=8<% 48 r   c                     | j                   S r   )rA   r   s    r   r<   z(PerMessageDeflate.client_max_window_bits\       +++r   valuec                 <    |dk  s|dkD  rt        d      || _        y N	   r:   z.Window size must be between 9 and 15 inclusive)
ValueErrorrA   r   rL   s     r   r<   z(PerMessageDeflate.client_max_window_bits`   #    19
MNN',$r   c                     | j                   S r   )rC   r   s    r   r>   z(PerMessageDeflate.server_max_window_bitsf   rK   r   c                 <    |dk  s|dkD  rt        d      || _        y rN   )rP   rC   rQ   s     r   r>   z(PerMessageDeflate.server_max_window_bitsj   rR   r   r"   c                 d    |t         j                  t         j                  t         j                  fv S r   )r
   TEXTBINARYCONTINUATION)r   r"   s     r   _compressible_opcodez&PerMessageDeflate._compressible_opcodep   s"    &++v}}f6I6IJJJr   c                     | j                   S r   )rH   r   s    r   r   zPerMessageDeflate.enableds   s    }}r   c                     d| j                   z  d| j                  z  g}| j                  r|j                  d       | j                  r|j                  d       dj                  |      S )Nclient_max_window_bits=%dserver_max_window_bits=%dr;   r=   ; )r<   r>   r;   appendr=   join)r   
parameterss     r   r   zPerMessageDeflate.offerv   sf    '$*E*EE'$*E*EE


 **:;**:;yy$$r   r   c                    |j                  d      D cg c]  }|j                          }}|dd  D ]  }|j                  d      rd| _        |j                  d      rd| _        5|j                  d      r2t        |j                  dd      d   j                               | _        x|j                  d      st        |j                  dd      d   j                               | _         d| _        y c c}w 	N;r   r;   Tr=   r<   =r>   )	splitstrip
startswithr;   r=   r6   r<   r>   rH   )r   r   bbitsbits        r   r    zPerMessageDeflate.finalize   s    #(;;s#34a	448 	PC~~:;26/ <=26/ 89.1#))C2CA2F2L2L2N.O+ 89.1#))C2CA2F2L2L2N.O+	P  5s   C7paramsc                 (   d }d }|j                  d      D cg c]  }|j                          }}|dd  D ]  }|j                  d      rd| _        |j                  d      rd| _        5|j                  d      r>d|v r-t        |j                  dd      d   j                               }w| j                  }|j                  d      sd|v r-t        |j                  dd      d   j                               }| j                  } ||fS c c}w rc   )rf   rg   rh   r;   r=   r6   r<   r>   )r   rl   r<   r>   ri   rj   rk   s          r   _parse_paramszPerMessageDeflate._parse_params   s   !%!%#)<<#45a	558 	IC~~:;26/ <=26/ 89#:-031B11E1K1K1M-N*-1-H-H* 89#:-031B11E1K1K1M-N*-1-H-H*	I  &'===# 6s   Dc                 f   | j                  |      \  }}g }| j                  r|j                  d       | j                  r|j                  d       	 ||j                  d|z         || _        ||j                  d|z         || _        d| _        dj                  |      S # t        $ r Y y w xY w)Nr;   r=   r\   r]   Tr^   )	rn   r;   r_   r=   r<   r>   rH   r`   rP   )r   r   r<   r>   ra   s        r   r   zPerMessageDeflate.accept   s    9=9K9KE9R6 6
**:;**:;	)%1!!"=@V"VW.D+%1!!"=@V"VW.D+ !DM99Z((	  		s   :B$ $	B0/B0r!   r#   r$   c                    |j                   r |j                         rt        j                  S |j                   r"|t        j
                  u rt        j                  S | j                  |      | _        | j                  |j                   | _        | j                  rc| j                  sJ |j                  r| j                  }n| j                  }| j                  $t        j                  t        |             | _        t!        ddd      S )NTF)rsv1	iscontrolr   PROTOCOL_ERRORr
   rX   rY   rF   rG   clientr>   r<   rE   zlibdecompressobjr6   r   )r   r!   r"   r#   r$   rj   s         r   r&   z&PerMessageDeflate.frame_inbound_header   s     88((*---88&"5"55---(,(A(A&(I%##+'*xxD$''444<<66D66D%%-)-););SYJ)GD&tUE**r   r'   c                     | j                   r| j                  s|S | j                  J 	 | j                  j                  t	        |            S # t
        j                  $ r t        j                  cY S w xY wr   )	rG   rF   rE   
decompressr7   ru   errorr   INVALID_FRAME_PAYLOAD_DATAr)   s      r   r*   z,PerMessageDeflate.frame_inbound_payload_data   sh     ''t/L/LK!!--	:%%00t==zz 	:999	:s   #A #A43A4r+   c                    |sy | j                   sd | _        y | j                  sd | _        y | j                  J 	 | j                  j                  d      }|| j                  j	                         z  }|j                  r| j                  }n| j                  }|rd | _        d | _        |S # t
        j                  $ r t        j                  cY S w xY w)Ns     )rF   rG   rE   rx   flushru   ry   r   rz   rt   r=   r;   )r   r!   r+   r'   no_context_takeovers        r   r-   z(PerMessageDeflate.frame_inbound_complete   s     ,,'+D$'''+D$!!--	:%%001DEDD&&,,..D <<"&"A"A"&"A"A!%D#'  zz 	:999	:s   8B* *#CCc                    | j                  |      s||fS |t        j                  urt        dg|dd   }| j                  {|t        j                  usJ |j
                  r| j                  }n| j                  }t        j                  t        j                  t        j                  t        |             | _        | j                  j                  t        |            }|r_|| j                  j                  t        j                         z  }|d d }|j
                  r| j"                  }n| j$                  }|rd | _        ||fS )NTr   )rY   r
   rX   r   rD   rt   r<   r>   ru   compressobjZ_DEFAULT_COMPRESSIONDEFLATEDr6   compressr7   r|   Z_SYNC_FLUSHr;   r=   )r   r!   r"   r#   r'   r+   rj   r}   s           r   r/   z PerMessageDeflate.frame_outbound  s"    ((0;,,,$)QR)C#!4!444||2222#//**DMMCI: D ((t5D$$**4+<+<==D9D||&*&E&E#&*&E&E#"#' T{r   c                 <   d| j                   z  g}| j                  r|j                  d       |j                  d| j                  z         | j                  r|j                  d       dj                  | j                  j                  dj                  |            S )Nr\   r;   r]   r=   z<{} {}>r^   )	r<   r;   r_   r>   r=   format	__class__r0   r`   )r   descrs     r   __repr__zPerMessageDeflate.__repr__,  s    ,t/J/JJK**LL56043N3NNO**LL56 7 759IJJr   )FNFN)"r0   r1   r2   r   r@   rB   r5   r   r6   rI   propertyr<   setterr>   r
   rY   r   r   r3   r   r    r   rn   r   r   r	   r   r   r&   r7   r*   r-   r/   r   r   r   r   r9   r9   ;   s   D%'"%'" ,104+004$( !) %)	
 !) 
6 , , , ""-C -D - #-
 , , , ""-C -D - #-
K6 Kd K %uT3Y' %c d >C >E(3-#2N,O >.)C )E$c/$: ),+\=01+ + 	+
 + 
{G#	$+6
:<67
:?D
:	uk!	"
:<67>B	uk4'	(>&\=01& & 	&
 & & 
w~	&PK# Kr   r9   )__doc__ru   typingr   r   r   frame_protocolr   r   r	   r
   r   r   r9   r   SUPPORTED_EXTENSIONSr   r   r   <module>r      sK     ) ) U U* *ZyK	 yK@ *..0AB r   