
    8'hG                         d dl mZ d dlZd dlmZmZmZmZmZ dZ	 G d de
      Z G d dee      Z G d	 d
ee      Z G d dee      Z G d dee      Z G d dee      Zy)    )absolute_importN)PerMessageCompressOfferPerMessageCompressOfferAcceptPerMessageCompressResponse PerMessageCompressResponseAcceptPerMessageCompress)PerMessageBzip2MixinPerMessageBzip2OfferPerMessageBzip2OfferAcceptPerMessageBzip2ResponsePerMessageBzip2ResponseAcceptPerMessageBzip2c                       e Zd ZdZdZ	 g dZy)r	   z)
    Mixin class for this extension.
    zpermessage-bzip2)	                        	   N)__name__
__module____qualname____doc__EXTENSION_NAME!COMPRESS_LEVEL_PERMISSIBLE_VALUES     ]/var/www/html/trade_iq/venv/lib/python3.12/site-packages/autobahn/websocket/compress_bzip2.pyr	   r	   /   s!     (N )D%r    r	   c                   >    e Zd ZdZed        Z	 	 ddZd Zd Zd Z	y)	r
   zu
    Set of extension parameters for `permessage-bzip2` WebSocket extension
    offered by a client to a server.
    c                    d}d}|D ]  }t        ||         dkD  rt        d|d| j                  d      ||   d   }|dk(  r&|durt        d	|d
|d| j                  d      d}c|dk(  r@	 t        |      }|t        j
                  vrt        d	|d
|d| j                  d      |}t        d|d| j                  d        | ||      }|S #  t        d	|d
|d| j                  d      xY w)aQ  
        Parses a WebSocket extension offer for `permessage-bzip2` provided by a client to a server.

        :param params: Output from :func:`autobahn.websocket.WebSocketProtocol._parseExtensionsHeader`.
        :type params: list

        :returns: object -- A new instance of :class:`autobahn.compress.PerMessageBzip2Offer`.
        Fr   r   ,multiple occurrence of extension parameter '' for extension ''client_max_compress_levelT#illegal extension parameter value '' for parameter '' of extension 'server_max_compress_levelillegal extension parameter 'len	Exceptionr   intr	   r   )clsparamsaccept_max_compress_levelrequest_max_compress_levelpvaloffers          r!   parsezPerMessageBzip2Offer.parseE   sf    %*!%&"  	qA6!9~!hiknk}k} ~)A,C//d?#uxz{  ~A  ~P  ~P  %Q  R  R04-11Rc(C 2TTT#uxz{  ~A  ~P  ~P  %Q  R  R14.  YZ\_\n\n opp3	q6 -.0R#uxz{  ~A  ~P  ~P  %Q  R  Rs   0C!C8c                     t        |      t        k7  rt        dt        |      z        || _        |dk7  r)|| j                  vrt        d|d| j                        || _        y)a_  
        Constructor.

        :param accept_max_compress_level: Iff true, client accepts "maximum compression level" parameter.
        :type accept_max_compress_level: bool
        :param request_max_compress_level: Iff non-zero, client requests given "maximum compression level" - must be 1-9.
        :type request_max_compress_level: int
        z-invalid type %s for accept_max_compress_levelr   invalid value 5 for request_max_compress_level - permissible values N)typeboolr/   r3   r   r4   )selfr3   r4   s      r!   __init__zPerMessageBzip2Offer.__init__s   s     )*d2KdSlNmmnn)B&%*/IQUQwQw/w  jD  FJ  Fl  Fl  m  n  n*D'r    c                     | j                   }| j                  r|dz  }| j                  dk7  r|d| j                  z  z  }|S )
        Returns the WebSocket extension configuration string as sent to the server.

        :returns: PMCE configuration string.
        :rtype: str
        z; client_max_compress_levelr   ; server_max_compress_level=%dr   r3   r4   r>   pmce_strings     r!   get_extension_stringz)PerMessageBzip2Offer.get_extension_string   sM     ))))88K**a/;d>]>]]]Kr    c                 J    | j                   | j                  | j                  dS )
        Returns a JSON serializable object representation.

        :returns: JSON serializable representation.
        :rtype: dict
        )	extensionr3   r4   rC   r>   s    r!   __json__zPerMessageBzip2Offer.__json__   s+     "00-1-K-K.2.M.MO 	Or    c                 <    d| j                   d| j                  dS )
        Returns Python object representation that can be eval'ed to reconstruct the object.

        :returns: Python string representation.
        :rtype: str
        z1PerMessageBzip2Offer(accept_max_compress_level = , request_max_compress_level = ))r3   r4   rJ   s    r!   __repr__zPerMessageBzip2Offer.__repr__   s8     ko  kI  kI  KO  Kj  Kj  k  	kr    N)Tr   )
r   r   r   r   classmethodr8   r?   rF   rK   rP   r   r    r!   r
   r
   ?   s;    
 + +\ ,0,-E*	Okr    r
   c                   .    e Zd ZdZ	 	 ddZd Zd Zd Zy)r   zk
    Set of parameters with which to accept an `permessage-bzip2` offer
    from a client by a server.
    Nc                    t        |t              st        dt        |      z        || _        |dk7  r)|| j
                  vrt        d|d| j
                        |dk7  r|j                  st        d|z        || _        |U|| j
                  vrt        d|d| j
                        |j                  dk7  r||j                  kD  rt        d|z        || _        y)	a  
        Constructor.

        :param offer: The offer being accepted.
        :type offer: Instance of :class:`autobahn.compress.PerMessageBzip2Offer`.
        :param request_max_compress_level: Iff non-zero, server requests given "maximum compression level" - must be 1-9.
        :type request_max_compress_level: int
        :param compress_level: Override server ("server-to-client direction") compress level (this must be compatible with offer).
        :type compress_level: int
        zinvalid type %s for offerr   r:   r;   zOinvalid value %s for request_max_compress_level - feature unsupported by clientN) for compress_level - permissible values zJinvalid value %s for compress_level - client requested lower maximum value)	
isinstancer
   r/   r<   r7   r   r3   r4   compress_level)r>   r7   r4   rV   s       r!   r?   z#PerMessageBzip2OfferAccept.__init__   s    %!567$u+EFF
%*/IQUQwQw/w  jD  FJ  Fl  Fl  m  n  n%*53R3Rm  qK  K  L  L*D'%T%K%KKaoqu  rX  rX  !Y  Z  Z//14%JjJj9j lo} }~~,r    c                     | j                   }| j                  j                  dk7  r|d| j                  j                  z  z  }| j                  dk7  r|d| j                  z  z  }|S )rA   r   rB   z; client_max_compress_level=%d)r   r7   r4   rD   s     r!   rF   z/PerMessageBzip2OfferAccept.get_extension_string   se     ))::00A5;djj>c>cccK**a/;d>]>]]]Kr    c                 |    | j                   | j                  j                         | j                  | j                  dS )rH   )rI   r7   r4   rV   )r   r7   rK   r4   rV   rJ   s    r!   rK   z#PerMessageBzip2OfferAccept.__json__   s9     "00,,..2.M.M"&"5"57 	7r    c                 r    d| j                   j                         d| j                  d| j                  dS )rM   zPerMessageBzip2Accept(offer = rN   , compress_level = rO   )r7   rP   r4   rV   rJ   s    r!   rP   z#PerMessageBzip2OfferAccept.__repr__   sR     mqlvlvll  mB  DH  Dc  Dc  ei  ex  ex  y  	yr    )r   N)r   r   r   r   r?   rF   rK   rP   r   r    r!   r   r      s%     -. $"-H
7yr    r   c                   2    e Zd ZdZed        Zd Zd Zd Zy)r   zG
    Set of parameters for `permessage-bzip2` responded by server.
    c                 r   d}d}|D ]  }t        ||         dkD  rt        d|d| j                  d      ||   d   }|dk(  r@	 t        |      }|t        j
                  vrt        d|d|d	| j                  d      |}}|d
k(  r@	 t        |      }|t        j
                  vrt        d|d|d	| j                  d      |}t        d|d| j                  d        | ||      }|S #  t        d|d|d	| j                  d      xY w#  t        d|d|d	| j                  d      xY w)aa  
        Parses a WebSocket extension response for `permessage-bzip2` provided by a server to a client.

        :param params: Output from :func:`autobahn.websocket.WebSocketProtocol._parseExtensionsHeader`.
        :type params: list

        :returns: A new instance of :class:`autobahn.compress.PerMessageBzip2Response`.
        :rtype: obj
        r   r   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   )r1   r2   r'   r+   r5   r6   responses          r!   r8   zPerMessageBzip2Response.parse   s    %&!$%! 	qA6!9~!hiknk}k} ~)A,C//Rc(C 2TTT#uxz{  ~A  ~P  ~P  %Q  R  R03-11Rc(C 2TTT#uxz{  ~A  ~P  ~P  %Q  R  R03-  YZ\_\n\n opp9	q< 002-R#uxz{  ~A  ~P  ~P  %Q  R  RR#uxz{  ~A  ~P  ~P  %Q  R  Rs   C1
D1!D!D6c                      || _         || _        y Nr'   r+   )r>   r'   r+   s      r!   r?   z PerMessageBzip2Response.__init__.  s     *C&)B&r    c                 J    | j                   | j                  | j                  dS )rH   )rI   r'   r+   )r   r'   r+   rJ   s    r!   rK   z PerMessageBzip2Response.__json__4  s+     "00-1-K-K-1-K-KM 	Mr    c                 <    d| j                   d| j                  dS )rM   z4PerMessageBzip2Response(client_max_compress_level = , server_max_compress_level = rO   r`   rJ   s    r!   rP   z PerMessageBzip2Response.__repr__?  s8     mq  mK  mK  MQ  Mk  Mk  l  	lr    N)	r   r   r   r   rQ   r8   r?   rK   rP   r   r    r!   r   r      s.     - -^C	Mlr    r   c                   &    e Zd ZdZ	 ddZd Zd Zy)r   zn
    Set of parameters with which to accept an `permessage-bzip2` response
    from a server by a client.
    Nc                    t        |t              st        dt        |      z        || _        |U|| j
                  vrt        d|d| j
                        |j                  dk7  r||j                  kD  rt        d|z        || _        y)a@  

        :param response: The response being accepted.
        :type response: Instance of :class:`autobahn.compress.PerMessageBzip2Response`.
        :param compress_level: Override client ("client-to-server direction") compress level (this must be compatible with response).
        :type compress_level: int
        zinvalid type %s for responseNr:   rT   r   zJinvalid value %s for compress_level - server requested lower maximum value)rU   r   r/   r<   r]   r   r'   rV   )r>   r]   rV   s      r!   r?   z&PerMessageBzip2ResponseAccept.__init__O  s     ($;<:T(^KLL %T%K%KKaoqu  rX  rX  !Y  Z  Z11Q6>HLnLn;n lo} }~~,r    c                 f    | j                   | j                  j                         | j                  dS )rH   )rI   r]   rV   )r   r]   rK   rV   rJ   s    r!   rK   z&PerMessageBzip2ResponseAccept.__json__g  s0     "00 MM224"&"5"57 	7r    c                 X    d| j                   j                         d| j                  dS )rM   z)PerMessageBzip2ResponseAccept(response = rZ   rO   )r]   rP   rV   rJ   s    r!   rP   z&PerMessageBzip2ResponseAccept.__repr__r  s5     W[VcVcVlVlVnpt  qD  qD  E  	Er    r_   )r   r   r   r   r?   rK   rP   r   r    r!   r   r   I  s     !%-0	7Er    r   c                   j    e Zd ZdZdZed        Zed        Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zy)r   z;
    `permessage-bzip2` WebSocket extension processor.
    r   c                      | ||j                   j                  |j                  |j                        }|S |j                   j                        }|S r_   )r]   r+   rV   r'   r1   	is_serveracceptpmces       r!   create_from_response_acceptz+PerMessageBzip2.create_from_response_accept  sY    9??<<,2,A,A,M6((~  TZSbSbS|S|~ r    c                      | ||j                   |j                   n|j                  j                  |j                        }|S r_   )rV   r7   r4   rj   s       r!   create_from_offer_acceptz(PerMessageBzip2.create_from_offer_accept  sA    9,2,A,A,M6((SYS_S_SzSz446 r    c                     || _         d | _        d | _        |dk7  r|n| j                  | _        |dk7  r|| _        y | j                  | _        y )Nr   )	_isServer_compressor_decompressorDEFAULT_COMPRESS_LEVELr+   r'   )r>   rk   r+   r'   s       r!   r?   zPerMessageBzip2.__init__  sd     #!F_cdFd)Bjn  kF  kF&F_cdFd)B&jn  kF  kF&r    c                 `    | j                   | j                  | j                  | j                  dS )N)rI   isServerr+   r'   )r   rr   r+   r'   rJ   s    r!   rK   zPerMessageBzip2.__json__  s0    !00 NN-1-K-K-1-K-KM 	Mr    c                 V    d| j                   d| j                  d| j                  dS )NzPerMessageBzip2(isServer = rc   z, client_max_compress_level = rO   )rr   r+   r'   rJ   s    r!   rP   zPerMessageBzip2.__repr__  sI    sw  tB  tB  DH  Db  Db  dh  dB  dB  C  	Cr    c                     | j                   r2| j                  %t        j                  | j                        | _        y y | j                  %t        j                  | j
                        | _        y y r_   )rr   rs   bz2BZ2Compressorr+   r'   rJ   s    r!   start_compress_messagez&PerMessageBzip2.start_compress_message  s_    >>'#&#4#4T5S5S#T  ( '#&#4#4T5S5S#T  (r    c                 8    | j                   j                  |      S r_   )rs   compressr>   datas     r!   compress_message_dataz%PerMessageBzip2.compress_message_data  s    ((..r    c                 H    | j                   j                         }d | _         |S r_   )rs   flushr   s     r!   end_compress_messagez$PerMessageBzip2.end_compress_message  s%    %%'  r    c                 P    | j                   t        j                         | _         y y r_   )rt   rz   BZ2DecompressorrJ   s    r!   start_decompress_messagez(PerMessageBzip2.start_decompress_message  s$    %!$!4!4!6D &r    c                 8    | j                   j                  |      S r_   )rt   
decompressr   s     r!   decompress_message_dataz'PerMessageBzip2.decompress_message_data  s    !!,,T22r    c                     d | _         y r_   )rt   rJ   s    r!   end_decompress_messagez&PerMessageBzip2.end_decompress_message  s
    !r    N)r   r   r   r   ru   rQ   rn   rp   r?   rK   rP   r|   r   r   r   r   r   r   r    r!   r   r   |  sf        	FMCU/73"r    r   )
__future__r   rz    autobahn.websocket.compress_baser   r   r   r   r   __all__objectr	   r
   r   r   r   r   r   r    r!   <module>r      s   6 ' 
 6  ik24H ikXKy!>@T Ky\Ml8:N Ml`0E$DFZ 0EfD"(*> D"r    