
    i+                     2   S SK r S SKrS SK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	  Sr
 S SK
r
 S SKJr  SrSr S SKJrJr  \r\rS SKrS SKJrJrJrJr  S S	KJr  S S
KJr   " S S5      rg! \ a     NGf = f! \ a	    S SKJr   NRf = f! \ a     NMf = f)    N)gaierror)Optional)sleep)random)ConnectionClosedError)Proxyproxy_connect)BinanceWebsocketClosedBinanceWebsocketUnableToConnectBinanceWebsocketQueueOverflowReadLoopClosed)get_loop)WSListenerStatec                       \ rS rSrSrSrSrSrSr      S"S\	S\
\	   S	\	S
\S\
\	   S\4S jjrS\	4S jrS rS rS rS rS rS rS rS rS rS rS rS rS rS\S\4S jrS rS  rS!rg)#ReconnectingWebsocket-      <   皙?
   Nurlpathprefix	is_binaryhttps_proxymax_queue_sizec                 d   [        5       U l        [        R                  " [        5      U l        X l        Xl        XPl        X0l	        SU l
        X@l        S U l        S U l        S U l        [        R                   U l        [$        R&                  " 5       U l        S U l        X`l        Xl        Xpl        g )Nr   )r   _looplogging	getLogger__name___log_path_url
_exit_coro_prefix_reconnects
_is_binary_conn_socketwsr   INITIALISINGws_stateasyncioQueue_queue_handle_read_loop_https_proxy
_ws_kwargsr   )	selfr   r   r   r   	exit_coror   r   kwargss	            \/var/www/html/trading/venv/lib/python3.13/site-packages/binance/ws/reconnecting_websocket.py__init__ReconnectingWebsocket.__init__4   s     Z
%%h/	
	##
8<'44mmo!%' ,    returnc                     [         (       a%  [         R                  " U5      R                  S5      $ [        R                  " U5      $ )Nzutf-8)orjsondumpsdecodejsonr4   msgs     r7   
json_dumps ReconnectingWebsocket.json_dumpsQ   s/    6<<$++G44zz#r:   c                 p    [         (       a  [         R                  " U5      $ [        R                  " U5      $ N)r=   loadsr@   rA   s     r7   
json_loads ReconnectingWebsocket.json_loadsV   s$    6<<$$zz#r:   c                 B   #    U R                  5       I S h  vN   U $  N7frF   )connectr4   s    r7   
__aenter__ ReconnectingWebsocket.__aenter__[   s     lln 	s   c                 F   #    U R                  S S S 5      I S h  vN   g  N7frF   )	__aexit__rL   s    r7   closeReconnectingWebsocket.close_   s     nnT4...s   !!c                 j  #    U R                   R                  SU R                   U R                   U R                   35        U R
                  (       a  U R                  5       I S h  vN   U R                  (       a#  U R                  U R                  5      I S h  vN   U R                  (       a"  U R                  R                  5       I S h  vN   U R                  (       a?  [        U R                  S5      (       a$  U R                  R                  XU5      I S h  vN   S U l        g  N N N` N7f)NzClosing Websocket protocol)r"   debugr$   r&   r#   r1   _kill_read_loopr%   r+   rQ   r)   hasattrrP   )r4   exc_typeexc_valexc_tbs       r7   rP   ReconnectingWebsocket.__aexit__b   s     		,TYYK~djj\RS!!&&(((??//$**---77''--/!!::'$**j99**&&x&AAA )-!AsI   A%D3'D+(3D3D-2D3D/AD3D1D3-D3/D31D3c                   #    U R                   R                  S5        [        R                  U l        U R                  5       I S h  vN   U R                   [        U SS5       [        U SS5       3nU R                  (       a_  [        (       a  [        (       d  [        S5      e[        R                  U R                  5      n[        U4SUS.U R                  D6U l        O([        R                   " U4SS0U R                  D6U l         U R                  R#                  5       I S h  vN U l        [        R(                  U l        S
U l        U R-                  5       I S h  vN   U R.                  (       d>  U R0                  R3                  [4        R6                  U R9                  5       5      U l        g g  GNq N! [$         a:  nU R                   R'                  S	U 35        [        R                  U l        UeS nAff = f N7f)Nz%Establishing new WebSocket connectionr&    r#   zmwebsockets_proxy is not installed, please install it to use a websockets proxy (pip install websockets_proxy)r   )close_timeoutproxyr^   z Failed to connect to websocket: r   )r"   rU   r   RECONNECTINGr-   _before_connectr$   getattrr2   r   r	   ImportErrorfrom_urlr3   r)   r+   rK   rM   	Exceptionerror	STREAMINGr'   _after_connectr1   r   call_soon_threadsafer.   create_task
_read_loop)r4   ws_urlr_   es       r7   rK   ReconnectingWebsocket.connectn   s    		?@'44""$$$ yyk'$	267gr8R7ST 	
 5! D  NN4#4#45E&&):>//DJ FQ#QQDJ	 JJ1133DG
 (11!!###%%%)ZZ%D%D##T__%6&D" &9 	%( 4 	IIOO>qcBC+88DMG	 	$sV   AHF7CHF< )F:*	F< 3/H"H#AH:F< <
H 5G;;H  Hc                    #    [         R                  U l        U R                  (       a&  [	        S5      I S h  vN   U R                  (       a  M&  U R
                  R                  S5        g  N37f)Nr   zFinished killing read_loop)r   EXITINGr-   r1   r   r"   rU   rL   s    r7   rV   %ReconnectingWebsocket._kill_read_loop   sL     '//$$* $$$		45 s   5A-A+A-A-c                    #    g 7frF    rL   s    r7   ra   %ReconnectingWebsocket._before_connect           c                    #    g 7frF   rs   rL   s    r7   rh   $ReconnectingWebsocket._after_connect   ru   rv   c                 N   U R                   (       a   [        R                  " U5      n U R                  U5      $ ! [        [        4 a$  nU R
                  R                  SU 35        e S nAf[         a$  nU R
                  R                  SU 35        e S nAff = f! [         a$  nU R
                  R                  SU 35        e S nAf[         a$  nU R
                  R                  SU 35        e S nAf[         a$  nU R
                  R                  SU 35        e S nAff = f)NzFailed to decompress message: z Unexpected decompression error: z)JSON Value Error parsing message: Error: z(JSON Type Error parsing message. Error: z)Unexpected error parsing message. Error: )
r(   gzip
decompress
ValueErrorOSErrorr"   rf   re   rH   	TypeError)r4   evtrm   s      r7   _handle_message%ReconnectingWebsocket._handle_message   s    ??ooc*
	??3'' ( 		"@! FG 		"BA% HI
  	IIOOGuMN 	IIOOFeLM 	IIOOGuMN	sP   ; B BA**B7BB
D$(CD$C33D$ DD$c                 	  #       U R                   [        R                  :X  a8  U R                  5       I S h  vN   U R                   [        R                  :X  a  M8  U R                   [        R                  :X  a7  U R
                  R                  SU R                   SU R                    35        GOU R                  R                  [        R                  R                  R                  :X  a!  [        R                  " S5      I S h  vN   GM
  U R                  R                  [        R                  R                  R                  :X  a  U R!                  5         [#        S5      eU R                   [        R$                  :X  Ga  U R                  (       d   e[        R&                  " U R                  R)                  5       U R*                  S9I S h  vN nU R-                  U5      nU R
                  R                  SU 35        U(       a  U R.                  R1                  5       U R2                  :  a$  U R.                  R5                  U5      I S h  vN   O3[7        SU R.                  R1                  5        SU R2                   35      eGM  S U l&        SU l'        g  GNf GN N NR! [        R8                   a,    U R
                  R                  S	U R*                   S
35         N[[        R:                   ag  nU R
                  R                  SU 35        U R.                  R5                  SUR<                  R>                   U S.5      I S h  vN     S nAM  S nAf[        R@                  [B        [D        ["        4 a~  nU R
                  RG                  UR<                  R>                   SU S35        U R.                  R5                  SUR<                  R>                   U S.5      I S h  vN     S nAGNpS nAf[H        [6        [J        4 a  nU R
                  RG                  SUR<                  R>                   SU S35        U R.                  R5                  SUR<                  R>                  U S.5      I S h  vN     S nAGM  S nAff = f! [J         aA  nU R
                  RG                  SUR<                  R>                   SU S35         S nAGNMS nAff = f! S U l&        SU l'        f = f7f)Nz_read_loop z break for r   z"Connection closed. Reconnecting...timeoutzReceived message: zMessage queue size z exceeded maximum no message in  secondsz_read_loop cancelled error rf   )rm   typemz ()zUnknown exception: r   )(r-   r   r`   _run_reconnectrp   r"   rU   r#   r+   staterT   StateCLOSINGr.   r   CLOSED
_reconnectr
   rg   wait_forrecvTIMEOUTr   r0   qsizer   putr   TimeoutErrorCancelledError	__class__r!   IncompleteReadErrorr   r   rf   r   re   r1   r'   )r4   resrm   s      r7   rk    ReconnectingWebsocket._read_loop   s    J	!C--?+G+GG"11333 --?+G+GG }}(?(??		)$**[P "++*;*;*C*CC%mmC000 "++*;*;*B*BB)4@  /*C*CC#www$+$4$4 GGLLNDLL%  #2237		*<SE(BC#{{002T5H5HH&*kkooc&: : :&C&9$++:K:K:M9NN`aeatat`u$v'" !"; P &*D" DM 4 1 !;
 ++ MIIOOnT\\N($KL-- IIOO&A!$EF++//$#$;;#7#7"8 !s+   
 //)*	  IIOOq{{';';&<Bqc$CD++//$#$;;#7#7"8 !s+    41  IIOO&9!++:N:N9OrRSQTTU$VW++//$ ! 4 4 !s+   
   	PIIOO1!++2F2F1Gr!ANOO	P &*D" Ds:  S6R 1J' J"J' AJ' /S# 1AJ' J J' R CJ' J#B J' J%J' R 3J' R S6J'  J' #J' %J' '=R$R &R9AMMMR S# 'RA-O;/O20O;5R ;RA-R RRR 
S# RR 
S 6SS# S  S# #S33S6c                   #    U R                  5       I S h  vN   U R                  U R                  :  a  U R                  U R                  5      nU R                  R                  SU R                  U R                  -
   SU 35        [        R                  " U5      I S h  vN    U R                  5       I S h  vN   g U R                  R                  SU R                   S35        [        e N NO N8! [         a
  n S nAg S nAff = f7f)Nzwebsocket reconnecting. z reconnects left - waiting zMax reconnections z	 reached:)before_reconnectr'   MAX_RECONNECTS_get_reconnect_waitr"   rU   r.   r   rK   re   rf   r   )r4   reconnect_waitrm   s      r7   r   $ReconnectingWebsocket._run_reconnect  s     ##%%%d111!55d6F6FGNIIOO*4+>+>AQAQ+Q*R S)*, --///lln$$ IIOO01D1D0EYOP11 	& 0$ sX   DC/B
D!C1"D'C5 :C3;C5 ?1D1D3C5 5
D	?DD		Dc                 t  #    S nU(       de  U R                   (       d  [        S5      e [        R                  " U R                  R                  5       U R                  S9I S h  vN nU(       d  Me  U$  N! [        R                   a,    U R                  R                  SU R                   S35         NLf = f7f)NzaRead loop has been closed, please reset the websocket connection and listen to the message error.r   r   r   )
r1   r   r.   r   r0   getr   r   r"   rU   )r4   r   s     r7   r   ReconnectingWebsocket.recv  s     ))$w I#,,T[[__->UU # 
 V'' I		.h GHIs@   &B8:A5 #A3$A5 (B81B83A5 5=B52B84B55B8c                 0  #    U R                   [        R                  :w  ar  U R                   [        R                  :w  aS  [	        S5      I S h  vN   U R                   [        R                  :w  a!  U R                   [        R                  :w  a  MQ  g g g g  NF7f)Nr   )r-   r   rg   rp   r   rL   s    r7   _wait_for_reconnect)ReconnectingWebsocket._wait_for_reconnect   sn     MM_666!8!88* MM_666!8!88 78 7 s   ABBA BBattemptsc                 l    SU-  n[        [        5       [        U R                  US-
  5      -  S-   5      $ )N      )roundr   minMAX_RECONNECT_SECONDS)r4   r   expos      r7   r   )ReconnectingWebsocket._get_reconnect_wait'  s3    ({VXD$>$>q IIAMNNr:   c                   #    U R                   (       a  S U l         U R                  (       a@  [        U R                  S5      (       a%  U R                  R                  S S S 5      I S h  vN   U =R                  S-  sl        g  N7f)NrT   r   )r+   r)   rW   rP   r'   rL   s    r7   r   &ReconnectingWebsocket.before_reconnect+  s\     77DG::'$**j99**&&tT4888A 9s   A%B'B(Bc                 .    [         R                  U l        g rF   )r   r`   r-   rL   s    r7   r    ReconnectingWebsocket._reconnect4  s    '44r:   )r)   r%   r1   r2   r(   r"   r   r#   r&   r0   r'   r*   r$   r3   r   r+   r-   )Nzws/FNNd   ) r!   
__module____qualname____firstlineno__r   r   MIN_RECONNECT_WAITr   NO_MESSAGE_RECONNECT_TIMEOUTstrr   boolintr8   rC   rH   rM   rQ   rP   rK   rV   ra   rh   r   rk   r   r   r   r   r   r   __static_attributes__rs   r:   r7   r   r   -   s    NG#% 
 #%)!-- sm- 	-
 - c]- -: 

/
"H6,K!Z2$OC OC O5r:   r   )r.   rz   r@   r   socketr   typingr   r   r   r=   rc   websockets.exceptionsr   
websocketsr   r	   websockets_proxyw_Proxyw_proxy_connectr+   binance.exceptionsr
   r   r   r   binance.helpersr   binance.ws.constantsr   r   rs   r:   r7   <module>r      s            
	1;
 		SE#M   % 0H5 H5?  		
  101  		s3   A/ A; B /A87A8;B
	B
BB