
    A>qj                       d dl mZ 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Zd dl	m
Z
mZ ddlmZmZ ddlmZ ddlmZ ddlmZ d	gZej/                   ej0                   ed
       edd            D  ci c]  } |  e e|             dd  c}       ZddZddZddZddZ 	 	 	 	 	 	 ddZ!	 	 	 	 	 	 ddZ"ddZ#dddZ$yc c} w )    )annotationsN)AnyCallable   )ClientConnectionconnect)ConnectionClosed)Close)versionmain          c                ,    | j                  t              S )zAMake a string safe for a terminal by escaping control characters.)	translateTERMINAL_ESCAPESstrings    M/opt/rentech/trading_bot/.venv/lib/python3.12/site-packages/websockets/cli.pyescaper   %   s    ,--    c                    t         j                  j                  d|  d       t         j                  j                          y )Nz	7
[A[Lz
8[Bsysstdoutwriteflushr   s    r   print_during_inputr   *   s<    JJ	 ( 	  JJr   c                    t         j                  j                  d|  d       t         j                  j                          y )Nz[K
r   r   s    r   print_over_inputr"   >   s9    JJ	 (-		! JJr   c                   K   | 2 3 d {   }t        |t              rt        dt        |      z          1t        d|j	                         z          N7 I6 y w)Nz< z< (binary) )
isinstancestrr   r   hex)	websocketmessages     r   print_incoming_messagesr)   J   sK     " > >ggs#tfWo56}w{{}<=	>s&   AAAAAAAAc                   	 t         j                  j                  d       t         j                  j                          t         j                  j                         }|s |        y |j                  d      } | |       )Nz> z
)r   r   r   r   stdinreadlinerstrip)queue_for_sendingnotify_end_of_fileliner(   s       r   read_outgoing_messagesr1   R   sb     



yy!!# ++f%'" r   c                   K   	 |j                          d {   }	 | j                  |       d {    37 7 # t        $ r Y y w xY wwN)getsendr	   )r'   messagesr(   s      r   send_outgoing_messagesr7   a   sM       &	..))) &) 		s:   A
7A
; 9; A
; 	AA
AA
c                F  	
K   	 t        | fi | d {   }t        d|  d       t        j                         	t        j                         
	j                         d	
fd}d	fd}t        j                  t        ||fd	      j                          t        j                  t                    }t        j                  t        |
            }	 t        j                   ||gt
        j"                  
       d {    |j'                          |j'                          |j)                          d {    |j*                  |j,                  J t/        |j*                  |j,                        }t1        dt3        t5        |             d       y 7 # t        $ r2}t        d|  d| d       t        j                  d       Y d }~d }~ww xY w7 # t
        j$                  $ r Y w xY w# |j'                          |j'                          w xY w7 w)NzConnected to .zFailed to connect to z: r   c                ^    	 j                  j                  |        y # t        $ r Y y w xY wr3   )call_soon_threadsafe
put_nowaitRuntimeError)r(   loopr6   s    r   r.   z-interactive_client.<locals>.queue_for_sending   s0    	%%h&9&97C 		     	,,c                 ^    	  j                  j                  d        y # t        $ r Y y w xY wr3   )r;   
set_resultr=   )r>   shutdowns   r   r/   z.interactive_client.<locals>.notify_end_of_file   s0    	%%h&9&94@ 		r?   T)targetargsdaemon)return_whenzConnection closed: )r(   r%   returnNone)rG   rH   )r   print	Exceptionr   exitasyncioget_event_loopQueuecreate_future	threadingThreadr1   startcreate_taskr)   r7   waitFIRST_COMPLETEDCancelledErrorcancelclose
close_codeclose_reasonr
   r"   r   r%   )urikwargsr'   excr.   r/   incomingoutgoingclose_statusr>   r6   rB   s            @@@r   interactive_clientra   m   s    &!#000	
 	cU!$%
 !!#D#*==?H &*%7%7%9H %!34 eg""#:9#EFH""#9)X#NOHllx*  //	
 	
 	
 	
//
+	0F0F0RRR--y/E/EFL*6#l2C+D*EQGHs 1 %cU"SE34J	
 !!  	s   H!F! FF! B>H!+G! GG! 
3H!=H>A H!F! !	G*'GH!GH!G! !G74G: 6G77G: :"HH!c                j   t        j                  ddd      }|j                  ddd       |j                  d	dd
       |j                  ddd       |j                  ddd       |j                  |       }|j                  r%|j                          t        j                  d       |j                  r't        dt                t        j                  d       |j                  %|j                          t        j                  d       t        j                  dk(  rt        j                  d       	 dd l}i }|j"                  r2|j                  j%                  d      rt'        j(                         |d<   t+        j,                  t/        |j                  fi |       y # t         $ r Y uw xY w)N
websocketszInteractive WebSocket client.F)progdescriptionadd_helpz--help
store_truezshow usage and exit)actionhelpz
--insecurez$disable TLS certificate verificationz	--versionzshow version and exitr[   z<uri>?)metavarnargsr   zwebsockets    win32 zwss://ssl)argparseArgumentParseradd_argument
parse_argsri   print_usager   rK   r   rI   websockets_versionr[   platformossystemr,   ImportErrorinsecure
startswithrp   _create_unverified_contextrL   runra   )argvparserrD   r,   r\   s        r   r   r      s   $$3F
 "  
 3  
 $  
   
 T"Dyy||./01xx ||w
		" F}},,X6 668uKK"4886v67  s   8F& &	F21F2)r   r%   rG   r%   )r   r%   rG   rH   )r'   r   rG   rH   )r.   zCallable[[str], None]r/   zCallable[[], None]rG   rH   )r'   r   r6   zasyncio.Queue[str]rG   rH   )r[   r%   r\   r   rG   rH   r3   )r   zlist[str] | NonerG   rH   )%
__future__r   rq   rL   	itertoolsrx   rp   r   rP   typingr   r   asyncio.clientr   r   
exceptionsr	   framesr
   r   rv   __all__r%   	maketranschainrangereprchrr   r   r   r"   r)   r1   r7   ra   r   )is   0r   <module>r      s    "    	 
 
    5 (  2 ( ==$3IOOE"IuS#$OPqQSVQrP 
.
(	>#,#*# 
#		 	 
	;I|88U Qs   5C