
    0Rj                       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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d	lmZ dd
lmZ dgZej1                   ej2                   ed       edd            D  ci c]  } |  e e|             dd  c}       ZddZddZddZ  G d dejB                        Z"ddZ#	 	 	 	 	 	 ddZ$ddZ%dddZ&yc c} w )     )annotationsN)	Generator   )ClientConnectionconnect)SimpleQueue)ConnectionClosed)Close)StreamReader)versionmain          c                ,    | j                  t              S )zAMake a string safe for a terminal by escaping control characters.)	translateTERMINAL_ESCAPESstrings    V/var/www/html/meridian/meridian-ai/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                  <    e Zd ZddZd	dZd
dZddZddZddZy)	ReadLinesc                @    t               | _        t               | _        y N)r   readerr   messagesselfs    r   __init__zReadLines.__init__K   s    "n*5-r   c              #  ^  K   	 t         j                  j                  d       t         j                  j                          | j                  j                  t         j                        E d {   }| j                  j                  |j                         j                  d             7 =w)Nz> z
)r   r   r   r   r(   	read_linemaxsizer)   putdecoderstrip)r+   lines     r   parsezReadLines.parseO   st     JJT"JJ"kk33CKK@@DMMdkkm226:;	  As   A+B--B+.>B-c                X    | j                         | _        t        | j                         y r'   )r4   parsernext)r+   	transports     r   connection_madezReadLines.connection_madeV   s    jjlT[[r   c                d    | j                   j                  |       t        | j                         y r'   )r(   	feed_datar7   r6   )r+   datas     r   data_receivedzReadLines.data_receivedZ   s     d#T[[r   c                8    | j                   j                          y r'   )r(   feed_eofr*   s    r   eof_receivedzReadLines.eof_received^   s    r   c                l    | j                   j                          | j                  j                          y r'   )r(   discardr)   abort)r+   excs     r   connection_lostzReadLines.connection_lostb   s"    r   N)returnNone)rF   zGenerator[None, None, None])r8   zasyncio.BaseTransportrF   rG   )r<   bytesrF   rG   )rD   zException | NonerF   rG   )	__name__
__module____qualname__r,   r4   r9   r=   r@   rE    r   r   r%   r%   J   s     8<r   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_messagesrS   g   sK     " > >ggs#tfWo56}w{{}<=	>s&   AAAAAAAAc                   K   	 	 |j                          d {   }	 | j                  |       d {    47 # t        $ r Y y w xY w7 # t        $ r Y y w xY wwr'   )getEOFErrorsendr	   )rQ   r)   rR   s      r   send_outgoing_messagesrX   o   se      	$LLN*G	..))) * 		 * 		s^   A: 8: A A	A A: 	AAAA	A 	AAAAc                8  K   	 t        |        d {   }t        d|  d       t        j                         }|j                  t        t        j                         d {   \  }}t        j                  t                    }t        j                  t        ||j                              }	 t        j                  ||gt
        j                         d {    |j#                          |j#                          |j%                          |j%                          d {    |j&                  |j(                  J t+        |j&                  |j(                        }t-        dt/        t1        |             d       y 7 r# t        $ r2}t        d|  d| d       t        j                  d       Y d }~d }~ww xY w7 d7 # t
        j                   $ r Y w xY w# |j#                          |j#                          |j%                          w xY w7 w)NzConnected to .zFailed to connect to z: r   )return_whenzConnection closed: )r   print	Exceptionr   exitasyncioget_running_loopconnect_read_piper%   stdincreate_taskrS   rX   r)   waitFIRST_COMPLETEDCancelledErrorcancelclose
close_codeclose_reasonr
   r#   r   rO   )	urirQ   rD   loopr8   protocolincomingoutgoingclose_statuss	            r   interactive_clientrq   ~   s    &!#,&	
 	cU!$%##%D $ 6 6y#)) LLIx""	*H ""y(*;*;<Hllx   //	
 	
 	
 	
//
+	0F0F0RRR--y/E/EFL*6#l2C+D*EQGHI ' %cU"SE34 M	
 !!  	s   HF FF A
H!G"AH1*G
 GG
  AH#H$A HF 	G'F=7H=GHG
 
G G# G  G# #2HHc                L   t        j                  ddd      }|j                         }|j                  dd       |j                  dd	d
       |j	                  |       }|j
                  rt        dt                y |j                  %|j                          t        j                  d       t        j                  dk(  rt        j                  d       	 dd l}	 t#        j$                  t'        |j                               y # t         $ r Y 5w xY w# t(        $ r Y y w xY w)N
websocketszInteractive WebSocket client.F)progdescriptionadd_helpz	--version
store_true)actionrk   z<uri>?)metavarnargszwebsockets    win32 r   )argparseArgumentParseradd_mutually_exclusive_groupadd_argument
parse_argsr   r\   websockets_versionrk   print_usager   r^   platformossystemreadlineImportErrorr_   runrq   KeyboardInterrupt)argvr6   groupargsr   s        r   r   r      s   $$3F
 //1E	{<8	ugS9T"D||./01xx ||w
		"
&txx01    s$   D (D 	DD	D#"D#)r   rO   rF   rO   )r   rO   rF   rG   )rQ   r   rF   rG   )rQ   r   r)   zSimpleQueue[str]rF   rG   )rk   rO   rF   rG   r'   )r   zlist[str] | NonerF   rG   )'
__future__r   r   r_   	itertoolsr   r   typingr   asyncio.clientr   r   asyncio.messagesr   
exceptionsr	   framesr
   streamsr   r   r   __all__rO   	maketranschainrangereprchrr   r   r    r#   Protocolr%   rS   rX   rq   r   )is   0r   <module>r      s    "    	 
  5 ) (  ! 2 ( ==$3IOOE"IuS#$OPqQSVQrP 
.
(	   :> 
&IR!M Qs   7C