
    yiH                        U d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZmZm	Z	m
Z
mZmZ d dlZd dlmZ ddlmZ ddlmZ ddlmZmZ ddlmZmZmZmZmZmZmZmZm Z m!Z!m"Z" dd	l#m$Z$ dd
l%m&Z&m'Z' ddl(m)Z)m*Z* ddl+m,Z,m-Z- ddl.m/Z/ ddl0m1Z1 ejd                  dk\  rd dl Z3nd dl3Z3dZ4dZ5ee6   e7d<    ejp                  ddd       G d d             Z9 G d de1      Z:y)    N)AnyFinalIterableOptionalTuplecast)CIMultiDict   )hdrs)AbstractStreamWriter)
call_later
set_result)WS_CLOSED_MESSAGEWS_CLOSING_MESSAGEWS_KEYWebSocketErrorWebSocketReaderWebSocketWriterWSCloseCode	WSMessage	WSMsgType
ws_ext_genws_ext_parse)	ws_logger)	EofStreamFlowControlDataQueue)JSONDecoderJSONEncoder)HTTPBadRequestHTTPException)BaseRequest)StreamResponse)      )WebSocketResponseWebSocketReadyr      THRESHOLD_CONNLOST_ACCESST)auto_attribsfrozenslotsc                   4    e Zd ZU eed<   ee   ed<   defdZy)r&   okprotocolreturnc                     | j                   S N)r-   selfs    I/root/polymarket_arb/.venv/lib/python3.12/site-packages/aiohttp/web_ws.py__bool__zWebSocketReady.__bool__6   s    ww    N)__name__
__module____qualname__bool__annotations__r   strr5    r6   r4   r&   r&   1   s    Hsm$ r6   r&   c                   .    e Zd ZdZdddddddddded	ee   d
ededee   dee   dede	ddf fdZ
dCdZdCdZdCdZdCdZdedef fdZdededeeef   fdZdedeeef   fdZdedededdfdZdedefdZedefd       Zedee	   fd        Zedee   fd!       Zedefd"       ZdDd#ed$edefd%Zdee    fd&Z!dEd(e"ddfd)Z#dEd(e"ddfd*Z$dDd+edee   ddfd,Z%dDd+e"dee   ddfd-Z&	 dDe'jP                  d.d+edee   d/e)ddfd0Z*dCd1Z+e,jZ                  d'dd2d3e	d(e"d4edefd5Z.d3e,ddfd6Z/dDdee   de0fd7Z1dd8dee   defd9Z2dd8dee   de"fd:Z3e'jh                  dd;d<e5dee   defd=Z6d+e"ddfd>Z7dFd?Z8de0fd@Z9dAe ddfdBZ: xZ;S )Gr%   Fg      $@NTr=   i  @ )timeoutreceive_timeout	autocloseautoping	heartbeat	protocolscompressmax_msg_sizer?   r@   rA   rB   rC   rD   rE   rF   r/   c                V   t         	|   d       || _        d | _        d | _        d | _        d| _        d| _        d| _        d | _	        d | _
        d | _        d | _        || _        || _        || _        || _        || _        d | _        |
|dz  | _        d | _        || _        || _        y )Ne   )statusFr   g       @)super__init__
_protocols_ws_protocol_writer_reader_closed_closing
_conn_lost_close_code_loop_waiting
_exception_timeout_receive_timeout
_autoclose	_autoping
_heartbeat_heartbeat_cb_pong_heartbeat_pong_response_cb	_compress_max_msg_size)
r3   r?   r@   rA   rB   rC   rD   rE   rF   	__class__s
            r4   rK   zWebSocketResponse.__init__>   s     	$#+/26BF*.:>
8<37 /#!#<@ #,s?D @D!)r6   c                     | j                   !| j                   j                          d | _         | j                  "| j                  j                          d | _        y y r1   )r^   cancelr\   r2   s    r4   _cancel_heartbeatz#WebSocketResponse._cancel_heartbeatb   sS    !!-""))+%)D")%%'!%D *r6   c                    | j                          | j                  m| j                  J t        | j                  | j                  | j                  | j
                   | j
                  j                  j                  nd      | _        y y Nr'   )timeout_ceil_threshold)	rd   r[   rT   r   _send_heartbeat_req	_protocol_timeout_ceil_thresholdr\   r2   s    r4   _reset_heartbeatz"WebSocketResponse._reset_heartbeatk   ss     ??&::)))!+$$

99( (,yy':':'R'R"D 'r6   c                    | j                   | j                  s| j                  J | j                  j                  | j                  j                                | j                  | j                  j                          t        | j                  | j                  | j                  | j                   | j                  j                  j                  nd      | _        y y y rf   )r[   rP   rT   create_taskrN   pingr^   rc   r   _pong_not_receivedr]   ri   rj   rk   r2   s    r4   rh   z!WebSocketResponse._send_heartbeaty   s    ??&t||::))) JJ""4<<#4#4#67%%1&&--/%/''$$

99( (,yy':':'R'R&D" 0<&r6   c                     | j                   W| j                   j                  @d| _        | j                  t        j
                         t        j                         | _        y y y )NT)	ri   	transportrP   _set_code_close_transportr   ABNORMAL_CLOSUREasyncioTimeoutErrorrV   r2   s    r4   rp   z$WebSocketResponse._pong_not_received   sO    99 TYY%8%8%DDL**;+G+GH%224DO &E r6   requestc                    K   | j                   | j                   S | j                  |      \  }}t        |   |       d {   }|J | j	                  |||       |j                          d {    |S 7 57 wr1   )_payload_writer
_pre_startrJ   prepare_post_startdrain)r3   rw   r.   writerpayload_writerra   s        r4   r{   zWebSocketResponse.prepare   s     +'''??73&$ww77)))(F3""$$$	 8 	%s#   ?A<A8.A<1A:2A<:A<zCIMultiDict[str]c                    |j                   }d|j                  t        j                  d      j	                         j                         k7  r8t        dj                  |j                  t        j                                    d|j                  t        j                  d      j	                         vr8t        dj                  |j                  t        j                                    d }t        j                  |v r|t        j                     j                  d      D cg c]  }t        |j                                }}|D ]  }|| j                  v s|} n" t        j                  d|| j                         |j                  t        j                  d      }|d	vrt        d
|       |j                  t        j                         }	 |r!t#        t%        j&                  |            dk7  rt        d|      	 t%        j,                  t/        j0                  |j3                         t4        z         j7                               j9                         }t;        t        j                  dt        j                  dt        j<                  |i      }	d}
d}| j>                  rR|j                  t        j@                        }tC        |d      \  }}
|r!tE        |d|
      }||	t        j@                  <   |r||	t        j                  <   |	|||
fS c c}w # t(        j*                  $ r t        d|      d w xY w)N	websocket z@No WebSocket UPGRADE hdr: {}
 Can "Upgrade" only to "WebSocket".)textupgradezNo CONNECTION upgrade hdr: {},u8   Client protocols %r don’t overlap server-known ones %r)1387zUnsupported version:    zHandshake error: Fr   T)isserver)rE   r   server_notakeover)#headersgetr   UPGRADElowerstripr   format
CONNECTIONSEC_WEBSOCKET_PROTOCOLsplitr<   rL   r   warningSEC_WEBSOCKET_VERSIONSEC_WEBSOCKET_KEYlenbase64	b64decodebinasciiError	b64encodehashlibsha1encoder   digestdecoder	   SEC_WEBSOCKET_ACCEPTr_   SEC_WEBSOCKET_EXTENSIONSr   r   )r3   rw   r   r.   protoreq_protocolsversionkey
accept_valresponse_headers
notakeoverrE   
extensions
enabledexts                 r4   
_handshakezWebSocketResponse._handshake   s    //'++dllB7==?EEGG 5&T\\23	  GKK<BBDD 4;;KK0  &&'1 %T%@%@AGGL EKKM"M 
 ' 
DOO+$H
 !!N!OO ++d88"=** (=gY&GHH kk$001	M#f..s34:$,=cW*EFF ;
 %%LL./668

&( 	 'k)):
 
>> T%B%BCJ $0
T#J Hj'%

 CM !>!>?<DT889	
 	
q6 ~~ 	M (9#&ABL	Ms   $ L2L $M c                 D   |j                   | _         | j                  |      \  }}}}| j                  d       | j                  j	                  |       | j                          || _        |j                  j                  }|J t        |j                  |||      }||fS )NrH   )rE   r   )
rT   r   
set_statusr   updateforce_closer_   rj   rr   r   )r3   rw   r   r.   rE   r   rr   r~   s           r4   rz   zWebSocketResponse._pre_start   s    ]]
26//'2J/8ZG$!%%//	$$$ y8

 r6   r.   r~   c                 Z   || _         || _        | j                          | j                  }|J t	        |j
                  d|      | _        |j                  j                  t        | j                  | j                  | j                               |j                  j                  d       y )Ni   )looprE   F)rM   rN   rl   rT   r   rj   rO   r.   
set_parserr   r`   r_   
keep_alive)r3   rw   r.   r~   r   s        r4   r|   zWebSocketResponse._post_start  s     %zz+G,=,=u4P##DLL$*<*<t~~V	
 	##E*r6   c                     | j                   t        d      	 | j                  |      \  }}}}t        d|      S # t        $ r t        dd       cY S w xY w)NzAlready startedTF)rN   RuntimeErrorr   r&   r    )r3   rw   _r.   s       r4   can_preparezWebSocketResponse.can_prepare  sa    <<#011	2 $ 8AxA "$11  	/!%..	/s   ; AAc                     | j                   S r1   )rP   r2   s    r4   closedzWebSocketResponse.closed  s    ||r6   c                     | j                   S r1   )rS   r2   s    r4   
close_codezWebSocketResponse.close_code#  s    r6   c                     | j                   S r1   )rM   r2   s    r4   ws_protocolzWebSocketResponse.ws_protocol'  s       r6   c                     | j                   S r1   )r_   r2   s    r4   rE   zWebSocketResponse.compress+  s    ~~r6   namedefaultc                 f    | j                   }||S |j                  }||S |j                  ||      S )z}Get optional transport information.

        If no value associated with ``name`` is found, ``default`` is returned.
        )rN   rr   get_extra_info)r3   r   r   r~   rr   s        r4   r   z WebSocketResponse.get_extra_info/  s@    
 >N$$	N''g66r6   c                     | j                   S r1   )rV   r2   s    r4   	exceptionzWebSocketResponse.exception<  s    r6   r6   messagec                    K   | j                   t        d      | j                   j                  |       d {    y 7 wNCall .prepare() first)rN   r   ro   r3   r   s     r4   ro   zWebSocketResponse.ping?  s4     <<677ll(((   6A >A c                    K   | j                   t        d      | j                   j                  |       d {    y 7 wr   )rN   r   pongr   s     r4   r   zWebSocketResponse.pongD  s4     <<677ll(((r   datac                    K   | j                   t        d      t        |t              st	        dt        |      z        | j                   j                  |d|       d {    y 7 w)Nr   zdata argument must be str (%r)FbinaryrE   )rN   r   
isinstancer<   	TypeErrortypesendr3   r   rE   s      r4   send_strzWebSocketResponse.send_strJ  sZ     <<677$$<tDzIJJllUXFFFs   A A*"A(#A*c                    K   | j                   t        d      t        |t        t        t
        f      st        dt        |      z        | j                   j                  |d|       d {    y 7 w)Nr   z#data argument must be byte-ish (%r)Tr   )	rN   r   r   bytes	bytearray
memoryviewr   r   r   r   s      r4   
send_byteszWebSocketResponse.send_bytesQ  sa     <<677$	: >?ADJNOOllTHEEEs   A+A5-A3.A5)dumpsr   c                R   K   | j                   ||      |       d {    y 7 w)Nr   )r   )r3   r   rE   r   s       r4   	send_jsonzWebSocketResponse.send_jsonX  s"      mmE$K(m;;;s   '%'c                    K   | j                   ry | j                  t        d      | j                          d {    d| _         y 7 w)NzResponse has not been startedT)	_eof_sentry   r   closer2   s    r4   	write_eofzWebSocketResponse.write_eofa  sC     >>'>??jjl 	s   8A	AA	)coder   r}   r   r}   c                  K   | j                   t        d      | j                          | j                  }|J | j                  6| j
                  s*|j                  t        d       | j                   d{    | j
                  ryd| _        	 | j                   j                  ||       d{    | j                  }|J |r|j                          d{    | j&                  ry| j                  }|J 	 t)        j*                  | j,                        4 d{    |j/                          d{   }ddd      d{    j0                  t2        j4                  k(  r| j                  |j6                         y| j                  t        j                          t        j                         | _        y7 H7 7 # t        j                  t        j                  f$ r! | j                  t        j                           t"        $ r0}|| _        | j                  t        j                          Y d}~yd}~ww xY w7 %7 7 # 1 d{  7  sw Y   xY w# t        j                  $ r! | j                  t        j                           t"        $ r0}|| _        | j                  t        j                          Y d}~yd}~ww xY ww)zClose websocket connection.Nr   r   FT)rN   r   rd   rO   rU   rP   	feed_datar   r   ry   r}   ru   CancelledErrorrv   rs   r   rt   	ExceptionrV   rQ   async_timeoutr?   rW   readr   r   CLOSEr   )r3   r   r   r}   readerr~   excmsgs           r4   r   zWebSocketResponse.closej  sQ     <<677 !!! ==$T\\/3--<<	,,$$T7333))F%%%lln$$ ==!!!		$,,T]]; * *"KKM)* * 88y&**3884&&{'C'CD!..0U   4 %&&(<(<= 	**;+G+GH 	!DO**;+G+GH	*)* * * *%% 	**;+G+GH 	!DO**;+G+GH	s   A5K7F?8KG 0G1)G GG K=#I$  I!I$ $I8I9I=I$ I	I$ A3KG G AI&H=8K=IKI$ II$ I!II!I$ $;K&K
K
KKc                     || _         | j                  <| j                  j                  %| j                  j                  j                          yyy)z+Set the close code and close the transport.N)rS   ri   rr   r   )r3   r   s     r4   rs   z+WebSocketResponse._set_code_close_transport  sB    99 TYY%8%8%DII%%' &E r6   c                   K   | j                   t        d      | j                  }|J 	 | j                  t        d      | j                  r9| xj
                  dz  c_        | j
                  t        k\  rt        d      t        S | j                  rt        S 	 |j                         | _        	 t        j                  |xs | j                        4 d {    | j                   j                          d {   }d d d       d {    | j                          | j                  }t!        |d       d | _        	 jF                  t8        jH                  k(  rLd| _        |jJ                  | _        | j                  s&| jL                  r| j5                  d       d {    |S |jF                  t8        jN                  k(  r	d| _        |S |jF                  t8        jP                  k(  r1| jR                  r%| jU                  |jJ                         d {    |jF                  t8        jV                  k(  r| jR                  r|S 7 q7 R7 E# 1 d {  7  sw Y   VxY w# | j                  }t!        |d       d | _        w xY w# t"        j$                  t"        j&                  f$ r! | j)                  t*        j,                          t.        $ rL t*        j0                  | _        | j5                          d {  7   t7        t8        j:                  d d       cY S t<        $ r[}|j>                  | _        | j5                  |j>                         d {  7   t7        t8        j@                  |d       cY d }~S d }~wtB        $ ra}|| _"        d| _        t*        j,                  | _        | j5                          d {  7   t7        t8        j@                  |d       cY d }~S d }~ww xY w7 O7 ޭw)	Nr   Tz+Concurrent call to receive() is not allowedr
   zWebSocket connection is closed.)r   F)r}   ),rO   r   rT   rU   rP   rR   r(   r   rQ   r   create_futurer   r?   rX   r   rl   r   ru   r   rv   rs   r   rt   r   OKrS   r   r   r   CLOSEDr   r   ERRORr   rV   r   r   r   rY   CLOSINGPINGrZ   r   PONG)r3   r?   r   r   waiterr   s         r4   receivezWebSocketResponse.receive  s    <<677zz}}("#PQQ||1$??&??&'HII(())= $ 2 2 4),44W5U@U@UV 8 8$(LL$5$5$778 8))+!]]Fvt,$(DM& xx9??* $#&88 ||
 **5*111 J Y... $ J Y^^+ii)))Y^^+JW878 8 8 8 "]]Fvt,$(DM**G,@,@A ..{/K/KL ?#.>> jjl"" !1!14>>! =#&88 jjchhj/// #t<< ="% $#.#?#? jjl"" #t<<=  2 *s  BO5J 0'I' II' I9I:I>I' 	I
I' J =A#O5 O/!A3O5O23O5I' II' I$II$I' '!JJ A3O,>L? O,O5!O,)0M?MM?9O,:O5?O,6O'OO'!O,"O5'O,,O52O5r?   c                  K   | j                  |       d {   }|j                  t        j                  k7  r/t	        dj                  |j                  |j                              t        t        |j                        S 7 jw)Nz.Received message {}:{!r} is not WSMsgType.TEXT)	r   r   r   TEXTr   r   r   r   r<   r3   r?   r   s      r4   receive_strzWebSocketResponse.receive_str  sg     LL))88y~~%@GGHHchh 
 C"" *s   BBA+Bc                   K   | j                  |       d {   }|j                  t        j                  k7  r&t	        d|j                   d|j
                  d      t        t        |j
                        S 7 aw)NzReceived message :z is not bytes)r   r   r   BINARYr   r   r   r   r   s      r4   receive_byteszWebSocketResponse.receive_bytes  sb     LL))88y'''/z388,mTUUE388$$ *s   A;A9A"A;)loadsr?   r  c                R   K   | j                  |       d {   } ||      S 7 w)Nr   )r  )r3   r  r?   r   s       r4   receive_jsonzWebSocketResponse.receive_json  s-      %%g%66T{ 7s   '%'c                     K   t        d      w)Nz"Cannot call .write() for websocket)r   )r3   r   s     r4   writezWebSocketResponse.write  s     ?@@s   c                     | S r1   r=   r2   s    r4   	__aiter__zWebSocketResponse.__aiter__  s    r6   c                    K   | j                          d {   }|j                  t        j                  t        j                  t        j
                  fv rt        |S 7 Gwr1   )r   r   r   r   r   r   StopAsyncIteration)r3   r   s     r4   	__anext__zWebSocketResponse.__anext__	  sG     LLN"88	):):I<L<LMM$$
 #s   A AAA r   c                 T    | j                   | j                   j                  |       y y r1   )rO   set_exception)r3   r   s     r4   _cancelzWebSocketResponse._cancel  s#    <<#LL&&s+ $r6   )r/   Nr1   )r6   )r/   r%   )<r7   r8   r9   _length_checkfloatr   r:   r   r<   intrK   rd   rl   rh   rp   r!   r   r{   r   r   r   rz   r|   r&   r   propertyr   r   r   rE   r   r   BaseExceptionr   r   ro   r   r   r   jsonr   r   r   r   r   r   r   rs   r   r   r  r  r  r   r  r
  r  r  r  __classcell__)ra   s   @r4   r%   r%   :   s   M
 +/%)#%+"* "* "%	"*
 "* "* E?"* C="* "* "* 
"*H&&5
[ 
5I 
S
"S
	!3d2	3S
j +  %_8L2M  "+"+.1+;J+	+"2; 2> 2     HSM     !Xc] ! ! $  73 7 7 78M2 )% )$ )
)% )$ )G3 G(4. GD GFU Fhtn FPT F $(<
 "ZZ<< 4.<
 < 
< )^^cQU996;9JN9	9v(k (d (@Xe_ @	 @D ?C #HUO #s # AE %huo % % '+jjT#;CE?	A A$ A ,= ,T ,r6   r%   );ru   r   r   r   r  systypingr   r   r   r   r   r   attr	multidictr	   r   r   abcr   helpersr   r   httpr   r   r   r   r   r   r   r   r   r   r   logr   streamsr   r   typedefsr   r   web_exceptionsr   r    web_requestr!   web_responser"   version_infor   __all__r(   r  r;   sr&   r%   r=   r6   r4   <module>r*     s         
 > >  !  % +     4 . 9 $ (w# )* 5: ) T$d3  4W, W,r6   