
    .hhVR                         S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SKrS SKrS SKrS SKrS rS rS"S jr " S S\R$                  5      rSrSr " S	 S
\	R,                  5      r0 r\R2                  " S 5      r\R2                  " S 5      r " S S5      r " S S5      rS r " S S5      r " S S\	R@                  \5      r! " S S\5      r" " S S5      r#S r$S r% " S S5      r&S r'\(S:X  a  S SK)J*r*  \*" SS S!9  gg)#    Nc                 2    [         R                  " U 5      nU$ N)marshalloads)mscos     4/opt/python-3.13.8/usr/lib/python3.13/idlelib/rpc.pyunpickle_coder
   -   s    	r	BI    c                 @    [         R                  " U 5      n[        U44$ r   )r   dumpsr
   )r   r   s     r	   pickle_coder   3   s     
r	B2%r   c                     [         R                  " 5       n[        X!5      nUR                  U 5        UR	                  5       $ r   )ioBytesIOCodePicklerdumpgetvalue)objprotocolfps       r	   r   r   9   s0     	

AA AFF3K::<r   c                   H    \ rS rSr\R
                  \0\R                  ErSr	g)r   B    N)
__name__
__module____qualname____firstlineno__typesCodeTyper   copyregdispatch_table__static_attributes__r   r   r	   r   r   B   s    nnkLW5K5KLNr   r   i    z	127.0.0.1c                   6    \ rS rSrS	S jrS rS rS rS rSr	g)
	RPCServerI   Nc                 V    Uc  [         n[        R                  R                  XU5        g r   )
RPCHandlersocketserver	TCPServer__init__)selfaddrhandlerclasss      r	   r,   RPCServer.__init__K   s#    %L''LAr   c                     g r   r   r-   s    r	   server_bindRPCServer.server_bindP       r   c                 N    U R                   R                  U R                  5        g r   )socketconnectserver_addressr2   s    r	   server_activateRPCServer.server_activateT   s     	D//0r   c                 2    U R                   U R                  4$ r   )r7   r9   r2   s    r	   get_requestRPCServer.get_request]   s    {{D////r   c                 |    e ! [          a    e   [        R                  n[        SUS9  [        SUS9  [        S[        R
                  " 5       R                  -  US9  [        SX#S9  [        S[        U5      US9  [        R                  " US9  [        SUS9  [        SUS9  [        R                  " S	5         g = f)
Nz)
----------------------------------------filezUnhandled server exception!z
Thread: %szClient Address: z	Request: z#
*** Unrecoverable, server exiting!z(----------------------------------------r   )
SystemExitsys
__stderr__print	threadingcurrent_threadnamerepr	traceback	print_excos_exit)r-   requestclient_addresserfs       r	   handle_errorRPCServer.handle_errora   s    	 	
	..C-c*/c:,!9!9!;!@!@@sK$n?+tG}37S)8sC&s#HHQKs
    B6B;r   r   )
r   r   r   r   r,   r3   r:   r=   rQ   r$   r   r   r	   r&   r&   I   s    B
10r   r&   c                       \ rS rSrSrS"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 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 r!S  r"S!r#g)#SocketIO   r   Nc                     [         R                  " 5       U l        Ub  X0l        Xl        Uc  [
        nX l        0 U l        0 U l        g r   )	rF   rG   
sockthread	debuggingsockobjecttableobjtable	responsescvars)r-   rY   r[   rX   s       r	   r,   SocketIO.__init__   s@    #224 &N	"H 
r   c                 R    U R                   nS U l         Ub  UR                  5         g g r   )rY   close)r-   rY   s     r	   r`   SocketIO.close   s&    yy	JJL r   c                 0    [         R                  " S5        g Nr   )rL   rM   r2   s    r	   exithookSocketIO.exithook   s    
r   c                     U R                   (       d  g U R                  S-   [        [        R                  " 5       R
                  5      -   nU H  nUS-   [        U5      -   nM     [        U[        R                  S9  g )N r@   )	rX   locationstrrF   rG   rH   rE   rC   rD   )r-   argssas       r	   debugSocketIO.debug   s]    ~~MMC#i&>&>&@&E&E"FFAC#a& A acnn%r   c                      X R                   U'   g r   )r[   )r-   oidobject_s      r	   registerSocketIO.register   s    $cr   c                 @     U R                   U	 g ! [         a     g f = fr   )r[   KeyErrorr-   rp   s     r	   
unregisterSocketIO.unregister   s%    	c" 		s    
c                    U R                  SU5         Uu  nu  pEpgX@R                  ;  a  SSU< 34$ U R                  U   nUS:X  a  0 n	[        X5        SU	4$ US:X  a  0 n
[	        X5        SU
4$ [        X5      (       d  SSU< 34$ [        X5      n US	:X  a,  U" U0 UD6n[        U[        5      (       a  [        U5      nSU4$ US
:X  a  [        R                  XXg445        gSSU-  4$ ! [         a     gf = f! [         a    e [         a    e [         a    e [         a  nSU4s S nA$ S nAf  Sn[!        XX4-  ["        R$                  S9  [&        R(                  " ["        R$                  S9   g= f)Nz
localcall:)ERRORzBad request formatrz   zUnknown object id: __methods__OK__attributes__zUnsupported method name: CALLQUEUE)QUEUEDNzUnsupported message type: %sCALLEXCzU*** Internal Error: rpc.py:SocketIO.localcall()

 Object: %s 
 Method: %s 
 Args: %s
r@   )	EXCEPTIONN)rm   	TypeErrorr[   _getmethods_getattributeshasattrgetattr
isinstanceRemoteObject	remoterefrequest_queueputrB   KeyboardInterruptOSError	ExceptionrE   rC   rD   rJ   rK   )r-   seqrN   howrp   
methodnamerj   kwargsr   methods
attributesmethodretexmsgs                  r	   	localcallSocketIO.localcall   s   

<)	33:0C0#4 mm#23':;;mmC &G%'?"))J3+*%%s''8GHH)	'f}d-f-c<00#C.Cc{"!!3(>"?@&!?#!EFF5  	32	36  	  	 	 	#r?"	'<C#f++#..AS^^4&s<   C, 1C< C< %C< ,
C98C9<(E4$D-'E4-AE4c                 l    U R                  SX5        U R                  XX45      nU R                  U5      $ )Nzremotecall:asynccall: )rm   	asynccallasyncreturnr-   rp   r   rj   r   r   s         r	   
remotecallSocketIO.remotecall   s2    

+S=nnSd;$$r   c                 l    U R                  SX5        U R                  XX45      nU R                  U5      $ )Nzremotequeue:asyncqueue: )rm   
asyncqueuer   r   s         r	   remotequeueSocketIO.remotequeue   s2    

-s?ooct<$$r   c                    SXX444nU R                  5       n[        R                  " 5       U R                  :w  a#  [        R                  " 5       nXpR
                  U'   U R                  SU-  XX45        U R                  Xe45        U$ )Nr~   zasynccall:%d:newseqrF   rG   rW   	Conditionr]   rm   
putmessager-   rp   r   rj   r   rN   r   cvars           r	   r   SocketIO.asynccall   sr    CT:;kkm##%8&&(D"JJsO

Oc)CTJ'
r   c                    SXX444nU R                  5       n[        R                  " 5       U R                  :w  a#  [        R                  " 5       nXpR
                  U'   U R                  SU-  XX45        U R                  Xe45        U$ )Nr   zasyncqueue:%d:r   r   s           r	   r   SocketIO.asyncqueue   ss    Sd;<kkm##%8&&(D"JJsO

$s*SdK'
r   c                     U R                  SU-  5        U R                  USS9nU R                  SU-  U5        U R                  U5      $ )Nz#asyncreturn:%d:call getresponse(): 皙?)waitzasyncreturn:%d:response: )rm   getresponsedecoderesponse)r-   r   responses      r	   r   SocketIO.asyncreturn   sN    

83>?##Cd#3

/#5A""8,,r   c                 8   Uu  p#US:X  a  U$ US:X  a  g US:X  a  U R                  S5        g US:X  a"  U R                  S5        U R                  5         g US:X  a  U R                  SU5        [        U5      eUS	:X  a  U R                  S
U5        Ue[        X#5      e)Nr|   r   r   zdecoderesponse: EXCEPTIONEOFzdecoderesponse: EOFrz   zdecoderesponse: Internal ERROR:r   zdecoderesponse: Call Exception:)rm   decode_interrupthookRuntimeErrorSystemError)r-   r   r   whats       r	   r   SocketIO.decoderesponse   s    	$;K(?+JJ23%<JJ,-%%''>JJ8$?t$$)JJ8$?J#$$r   c                     [         er   )EOFErrorr2   s    r	   r   SocketIO.decode_interrupthook  s    r   c                 h     U R                  S SS9  g ! [         a    U R                  S5         g f = f)Nr   )myseqr   zmainloop:return)r   r   rm   r2   s    r	   mainloopSocketIO.mainloop  s9    	4d3 	JJ()	s    11c                 f    U R                  X5      nUb  Uu  pEUS:X  a  X@R                  U5      4nU$ )Nr|   )_getresponse_proxify)r-   r   r   r   r   r   s         r	   r   SocketIO.getresponse"  s<    $$U1 ICd{d 33r   c                     [        U[        5      (       a  [        XR                  5      $ [        U[        5      (       a  [	        [        U R                  U5      5      $ U$ r   )r   RemoteProxyRPCProxyrp   listmapr   )r-   r   s     r	   r   SocketIO._proxify*  sF    c;''D''**c4  DMM3/00
r   c                    U R                  SU5        [        R                  " 5       U R                  L a   U R	                  X5      nUb  U$ M  U R
                  U   nUR                  5         XR                  ;  a!  UR                  5         XR                  ;  a  M!  U R                  U   nU R                  SU< SU< 35        U R                  U	 U R
                  U	 UR                  5         U$ )Nz_getresponse:myseq:z_getresponse:z: thread woke up: response: )
rm   rF   rG   rW   pollresponser]   acquirer\   r   release)r-   r   r   r   r   s        r	   r   SocketIO._getresponse2  s    

(%0##%8,,U9'#O  ::e$DLLN~~-		 ~~-~~e,HJJx) *u%

5!LLNOr   c                 2    U R                   S-   =U l         nU$ )N   )nextseq)r-   r   s     r	   r   SocketIO.newseqH  s    !\\A--s
r   c                     U R                  SUS   -  5         [        U5      n[        R                  " S[        U5      5      U-   n[        U5      S:  a_   [        R                  " / U R                  // 5      u  p4nU R                  R                  US [         5      nX&S  n[        U5      S:  a  M^  g g ! [        R                   a$    [	        S[        U5      [        R                  S9  e f = f! [        [         4 a    [#        S5      ef = f)Nzputmessage:%d:r   zCannot pickle:r@   <izsocket no longer exists)rm   r   picklePicklingErrorrE   rI   rC   rD   structpacklenselectrY   sendBUFSIZEAttributeErrorr   r   )r-   messagerk   rwxns          r	   r   SocketIO.putmessageL  s    

#gaj01	gA KKc!f%)!fqj9 --TYYK<aIINN1Xg;/ "A !fqj	 ## 	"DMG	 #I. 97889s   B6 AC1 68C.1Dr      c                    U R                  5         [        U R                  5      U R                  :  a  [        R                  " U R
                  R                  5       // / U5      u  p#n[        U5      S:X  a  g  U R
                  R                  [        5      n[        U5      S:X  a  [        eU =R                  U-  sl        U R                  5         U R                  5       $ ! [         a    [        ef = frc   )_stage0r   buffbufneedr   rY   filenorecvr   r   r   _stage1)r-   r   r   r   r   rk   s         r	   
pollpacketSocketIO.pollpacket`  s    tyy>DLL(mmTYY%5%5%7$8"b$GGA!1v{IINN7+ 1v{IINILLN||~  s   :C# #C4c                     U R                   S:X  ad  [        U R                  5      S:  aJ  U R                  S S nU R                  SS  U l        [        R                  " SU5      S   U l        SU l         g g g )Nr   r   r      )bufstater   r   r   unpackr   )r-   rk   s     r	   r   SocketIO._stage0p  sc    ==A#dii.A"5		"1A		!"DI!==q1!4DLDM	 #6r   c                     U R                   S:X  ak  [        U R                  5      U R                  :  aG  U R                  S U R                   nU R                  U R                  S  U l        SU l        SU l         U$ g g )Nr   r   r   )r   r   r   r   )r-   packets     r	   r   SocketIO._stage1w  sg    ==A#dii.DLL"@YY}-F		$,,-0DIDLDMM #Ar   c                 x   U R                  U5      nUc  g  [        R                  " U5      nU$ ! [        R                   av    [	        S[
        R                  S9  [	        S[        U5      [
        R                  S9  [        R                  " [
        R                  S9  [	        S[
        R                  S9  e f = f)Nz-----------------------r@   zcannot unpickle packet:)
r   r   r   UnpicklingErrorrE   rC   rD   rI   rJ   print_stack)r-   r   r   r   s       r	   pollmessageSocketIO.pollmessage  s    &>	ll6*G  %% 	+#..A+T&\O!!s~~6+#..A	s
   / B
B9c                      [         R                  S5      nUu  pEUSU44nU R                  U5         U R                  U5      nUc  g  Uu  pGUS   nU R                  SXA4-  5        US;   a\  U R                  SU-  5        U R                  XG5      nU R                  SXE4-  5        US:X  a  U R                  XE45        OUS:X  a   M  XA:X  a  U$ U R                  R                  US 5      n	U	b>  U	R                  5         XpR                  U'   U	R                  5         U	R                  5         GM0  ! [        R                   a     GNf = f! [         a    U R                  5          g [         a     g f = f)	Nr   r|   zpollresponse:%d:myseq:%s)r~   r   zpollresponse:%d:localcall:call:z%pollresponse:%d:localcall:response:%sr~   r   )response_queuegetr   queueEmptyr   r   
handle_EOFr   rm   r   r]   r   r\   notifyr   )
r-   r   r   qmsgr   r   r   resqr   cvs
             r	   r   SocketIO.pollresponse  s~   . )%))!, !%x 01(**40? #  ICq'CJJ1SL@A''

<sBC>>#4

B!_- .&=OOSO4G^ ZZ^^C. >JJL*.NN3'IIKJJLY ;;   !! s(   D1 E 1E	E	E4(	E43E4c                 (   U R                  5         U R                  S5        U R                   HQ  nU R                  U   nUR                  5         SU R                  U'   UR                  5         UR                  5         MS     U R                  5         g )Nr  )r   N)EOFhookrm   r]   r   r\   r  r   rd   )r-   keyr	  s      r	   r  SocketIO.handle_EOF  sf    

< ::CCBJJL"/DNN3IIKJJL  	r   c                     g r   r   r2   s    r	   r  SocketIO.EOFhook  r5   r   )
r   r   r   r]   rX   r   r[   r\   rY   rW   )NN)$r   r   r   r   r   r,   r`   rd   rm   rr   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r$   r   r   r	   rT   rT      s    G	&%,'\%
%
-%*,  DGH GRr   rT   c                       \ rS rSrSrg)r   i  r   N)r   r   r   r   r$   r   r   r	   r   r     s    r   r   c                 @    [        U 5      nU [        U'   [        U5      $ r   )idrZ   r   )r   rp   s     r	   r   r     s     
S'CKsr   c                       \ rS rSrS rSrg)r   i  c                     Xl         g r   rp   rv   s     r	   r,   RemoteProxy.__init__  s    r   r  N)r   r   r   r   r,   r$   r   r   r	   r   r     s    r   r   c                   .    \ rS rSrSrSrS rS rS rSr	g)	r)   i  Fz#Sc                 z    Xl         [        R                  X5        [        R                  R                  XX#5        g r   )current_handlerrT   r,   r*   BaseRequestHandler)r-   rY   r.   svrs       r	   r,   RPCHandler.__init__  s,    "$%''00TGr   c                 $    U R                  5         g r   )r   r2   s    r	   handleRPCHandler.handle  s    r   c                     [        X5      $ r   r   rv   s     r	   get_remote_proxyRPCHandler.get_remote_proxy      ""r   r   N)
r   r   r   r   rX   rh   r,   r  r#  r$   r   r   r	   r)   r)     s    IHH
#r   r)   c                   b    \ rS rSrSrSrSr\R                  \R                  4S jr
S rS rSrg	)
	RPCClienti  Fz#Cr   c                     [         R                   " X#5      U l        U R                  R                  U5        U R                  R                  S5        g Nr   )r7   listening_sockbindlisten)r-   addressfamilytypes       r	   r,   RPCClient.__init__  s;    $mmF9  )""1%r   c                    U R                   R                  5       u  pU R                  (       a  [        SU[        R
                  S9  US   [        :X  a  [        R                  X5        g [        SU[        R
                  S9  [        e)Nz****** Connection request from r@   r   z** Invalid host: )
r*  acceptrX   rE   rC   rD   	LOCALHOSTrT   r,   r   )r-   working_sockr-  s      r	   r2  RPCClient.accept  sa     $ 3 3 : : <>>3W3>>R1:"d1%wS^^DMr   c                     [        X5      $ r   r"  rv   s     r	   r#  RPCClient.get_remote_proxy"  r%  r   )r*  N)r   r   r   r   rX   rh   r   r7   AF_INETSOCK_STREAMr,   r2  r#  r$   r   r   r	   r'  r'    s/    IHG'-~~F<N<N &
#r   r'  c                   4    \ rS rSrSrSrS rS rS rS r	Sr
g)r   i&  Nc                     Xl         X l        g r   )sockiorp   )r-   r<  rp   s      r	   r,   RPCProxy.__init__+  s    r   c                    U R                   c  U R                  5         U R                   R                  U5      (       a!  [        U R                  U R
                  U5      $ U R                  c  U R                  5         XR                  ;   a+  U R                  R                  U R
                  SU40 5      nU$ [        U5      e)N__getattribute__)
_RPCProxy__methods_RPCProxy__getmethodsr  MethodProxyr<  rp   _RPCProxy__attributes_RPCProxy__getattributesr   r   )r-   rH   values      r	   __getattr__RPCProxy.__getattr__/  s    >>!>>d##t{{DHHd;;$  "$$$KK**4885G,07B8EL &&r   c                 ^    U R                   R                  U R                  SS0 5      U l        g )Nr}   r   )r<  r   rp   rC  r2   s    r	   __getattributesRPCProxy.__getattributes=  s'     KK224880@"bJr   c                 ^    U R                   R                  U R                  SS0 5      U l        g )Nr{   r   )r<  r   rp   r@  r2   s    r	   __getmethodsRPCProxy.__getmethodsA  s&    //0=r2Gr   )__attributes	__methodsrp   r<  )r   r   r   r   r@  rC  r,   rF  rD  rA  r$   r   r   r	   r   r   &  s"    IL'JGr   r   c                     [        U 5       H$  n[        X5      n[        U5      (       d  M   SX'   M&     [        U [        5      (       a  U R
                   H  n[        XA5        M     g g r)  )dirr   callabler   r/  	__bases__r   )r   r   rH   attrsupers        r	   r   r   E  sV     Cs!D>>GM  #t]]E' # r   c                 j    [        U 5       H$  n[        X5      n[        U5      (       a  M   SX'   M&     g r)  )rQ  r   rR  )r   r   rH   rT  s       r	   r   r   P  s+    Cs!~~ J r   c                        \ rS rSrS rS rSrg)rB  iW  c                 (    Xl         X l        X0l        g r   )r<  rp   rH   )r-   r<  rp   rH   s       r	   r,   MethodProxy.__init__Y  s    	r   c                h    U R                   R                  U R                  U R                  X5      nU$ r   )r<  r   rp   rH   )r-   rj   r   rE  s       r	   __call__MethodProxy.__call__^  s'    &&txxDIr   )rH   rp   r<  N)r   r   r   r   r,   r[  r$   r   r   r	   rB  rB  W  s    
r   rB  c                 v   U c  g S [         l        [        U 5      n [        R                  R                  U5        [        R                  R                  S5        U [         l        g ! [         aH    SnUR                  US5      nUR                  US5      n[        R                  R                  U5         N|f = f)Nasciibackslashreplacestrict
)	builtins_rI   rC   stdoutwriteUnicodeEncodeErrorencodedecode)rE  textencodingbytess       r	   displayhookrl  f  s    }HJ;D

 JJTHJ  H&89||Hh/

s   A& &AB87B8__main__)mainzidlelib.idle_test.test_rpcr   )	verbosityr   )+rb  r"   r   r   rL   r   r  r   r7   r*   r   rC   rF   rJ   r    r
   r   r   Picklerr   r   r3  r+   r&   rZ   Queuer   r  rT   r   r   r   r  r)   r'  r   r   r   rB  rl  r   unittestrn  r   r   r	   <module>rs     s  :   	  	       
    M&.. M 	.&& .d AQe eR	 	
 #00( #$# #4G G>	(!	 	& z	%4 r   