
    z%iS                     L   	 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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 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 dlZd dlZ eej0                  d	   d
      s4dD ]  Z eee       ej0                  dez   =  dej0                  d	   _        dZ	 dZee_        ee_        d3dZ!	 d4dZ"da#d Z$ e$d        ejJ                         Z&e&fdZ'da(da)da*d5dZ+d Z,d Z-d Z.d Z/d Z0d Z1d Zd Z2d Z3dZ4d  Z5d! Z6 G d" d#ejn                        Z8 G d$ d%ejr                        Z: G d& d'e:      Z; G d( d)e:      Z< G d* d+ejz                        Z> G d, d-      Z?e@d.k(  rd d/lAm+Z+  e+d0d12        e$d       y# e $ r Y w xY w)6    N)autocomplete)calltip)
debugger_r)
debugobj_r)iomenu)rpc)stackviewerzidlelib.runfirstrun)simpledialog
messageboxfontdialog
filedialogcommondialogttkztkinter.Fz	127.0.0.1zCtrl-D (end-of-file)c                     	 d}|d| d| dz  }|t        j                  ||      }|j                         }|r|d|z  z  }||j                   d|  dz  }|S )Nz!
Warning (from warnings module):
z  File "z", line 
z    %s
: )	linecachegetlinestrip__name__)messagecategoryfilenamelinenoliness         ?/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/idlelib/run.pyidle_formatwarningr    3   sz    '-A9XJixr	22A|  62::<D	Z$Hb		,,AH    c           	          	 |t         j                  }	 |j                  t        | ||||             y # t        $ r Y y w xY wN)sysstderrwriter    OSError)r   r   r   r   filer   s         r   idle_showwarning_subprocr)   @   sM     |zz

%8VT; 	< s   4 	A A c                     	 | r't          t        j                  a t        t        _        y y t         t         t        _        d a y y r#   )_warnings_showwarningwarningsshowwarningr)   )captures    r   capture_warningsr/   P   sD    L  ($,$8$8!#;H  ) !,#8H $(! -r!   Tc                 (    	 | j                  d       y )Nupdate)eval)tcls    r   handle_tk_eventsr4   `   s     HHXr!   c                    	 | a 	 t        t        j                  d         }t        d       dgt        j                  d d  t        j                  t        dt        |ffd      j                          	 	 t        r	 t                	 t        j                   j#                  dd	      }|r3|\  }\  }}} ||i |}t        j(                  j+                  ||f       n
t-                t#  t	        dt        j
                         Y y xY w# t        $ r Y w xY w# t$        j&                  $ r d }Y w xY w# t        $ r t.        rdaY t0        $ r t        d
         t        j2                         \  }}	}
	 t5                t        j(                  j+                  d f       Y 0#  t7        j4                  ||	|
t        j
                         t                Y nxY wY xY w)Nz/IDLE Subprocess: no IP port passed in sys.argv.r(   T 
SockThread)targetnameargsdaemon皙?)blocktimeoutF)no_exitfuncintr$   argvprint
__stderr__r/   	threadingThreadmanage_socket	LOCALHOSTstartexit_nowexitKeyboardInterruptr   request_queuegetqueueEmptyresponse_queueputr4   quitting
SystemExitexc_infoprint_exception	traceback)del_exitfuncportrequestseqmethodr<   kwargsrettypevaluetbs              r   mainrc   n   s   ( K388B<  T$CHHQKM&%t,.  eg
$	F++//dD/I
 .5++fdFd-f-""&&Sz2 "' ?>>	# ) 
 ;;  ! 	 	U#
	!llnOD%!""&&T{3 ))$rOsq   C' 4D3 ;
D	 !D '?D3 'D		DD3 DD3 D0-D3 /D00D3 3G-G4+F""3GGc                 r   t        d      D ])  }t        j                  |       	 t        | t              } n+ t        dt        j                         t        |        day |j                          y # t
        $ r:}t        d|j                  d   z   dz   t        j                         |}Y d }~d }~ww xY w)N   zIDLE Subprocess: OSError:    z, retrying....r7   z8IDLE Subprocess: Connection to IDLE GUI failed, exiting.T)rangetimesleepMyRPCServer	MyHandlerr'   rD   r<   r$   rE   show_socket_errorrK   handle_request)addressiservererrsocket_errors        r   rH   rH      s    1X 

1	 )4F	 	 *03	@,0
  	.!<"#),9L	s   A33	B6<0B11B6c                     	 dd l }ddlm}  |j                         }t	        |       |j                           |dd|d    d|d    d| j                   d| j                   d		|
       |j                          y )Nr   )	showerrorzSubprocess Connection Errorz#IDLE's subprocess can't connect to :rf   z.
Fatal OSError #r   zz.
See the 'Startup failure' section of the IDLE doc, online at
https://docs.python.org/3/library/idle.html#startup-failure)parent)	tkintertkinter.messageboxrt   Tkfix_scalingwithdrawerrnostrerrordestroy)rq   rn   rw   rt   roots        r   rl   rl      s~    .,7::<DMMO)1'!*Qwqzl K!ii[3<<. 9JJ  	LLNr!   c                 B   	 | t         t        fv rot        j                         }t	        j
                  |      5  t        j                  | ||       d d d        |j                         j                  d      d   dz   gS t        j                  | |      S # 1 sw Y   ExY w)Nr   )AttributeError	NameErrorioStringIO
contextlibredirect_stderrr$   __excepthook__getvaluesplitrX   format_exception_only)typexcrb   rq   s       r   get_message_linesr      s    2
~y))kkm'', 	-sC,	-$$T*2.566..sC88		- 	-s   BBc                  *   dd l }  | j                          t                t        j                  t        j
                         x\  }}}}|\  t        _        t        _        t        _        |t        _	        t               fd |||       y )Nr   c                 >   j                  t        |             |j                  }|j                  }|8t        |      vr+ 
t	        |      ||j
                         t        d	       nE|C|j                  s7t        |      vr* 
t	        |      ||j
                         t        d	       |rGt        j                  |      }t        d	       d}t        ||       t        j                  |	       t        | ||      }|D ]  }t        |d	        y )NzF
The above exception was the direct cause of the following exception:
r7   zE
During handling of the above exception, another exception occurred:
z"Traceback (most recent call last):)zrun.pyzrpc.pyzthreading.pyzqueue.pyzdebugger_r.pyzbdb.pyr8   )endr(   )addid__context__	__cause__r`   __traceback__rD   __suppress_context__rX   
extract_tbcleanup_traceback
print_listr   )r   r   rb   contextcausetbeexcludelinesr   efile	print_excseens            r   r   z"print_exception.<locals>.print_exc   s   C//E$!6d5k5%*=*=> 28=?!**k%d7mWg.C.CD 28=?&&r*C6UC2Gc7+  51!#sB/ 	,D$BU+	,r!   )r   
checkcacheflush_stdoutr$   r%   rV   	last_type
last_valuelast_tracebacklast_excset)r   r   valrb   excinfor   r   r   s        @@@r   rW   rW      sl    INJJE \\^+LCb78?5CM3>3#5CL5D,2 c3r!   c                    	 | d d  }| r'|D ]  }| d   d   j                  |      s n n| d= | r'| r'|D ]  }| d   d   j                  |      s n n| d= | r't        |       dk(  r#|d d  | d d  t        dt        j                         t
        j                  d   j                  }t        t        |             D ]E  }| |   \  }}}}	|dk(  rd}|	s'|j                  d      r|j                  d	d
||fi       }	||||	f| |<   G y )Nr   r6   z** IDLE Internal Exception: r7   exec?z
-toplevel-z	<pyshell#r   r   )countlenrD   r$   r%   r   objecttable
rpchandlerrg   
startswith
remotecall)
rb   r   orig_tbrpcfiler   ro   fnlnnmr   s
             r   r   r     s3   GeG
 	G!uQx~~g&	 qE   	G"vayw'	 rF  2w!|
1,3::>(33J3r7^ !a5BD9Bk2((i/12h<DBD 1!r!   c                       y r#    r   r!   r   r   r   0  s    !r!   c                  z    	 t         rdd l} | j                          t        d       t	        j
                  d       y )Nr   F)rA   atexit_clearr/   r$   rL   )r   s    r   rL   rL   3  s+     UHHQKr!   c                 *   	 dd l }t        | j                  j                  dd            }|dkD  rd|j                  j                  |       D ]E  }|j                  j                  | |d      }t        |d         }|dk  s5t        d|z        |d<   G y y )	Nr   tkscalinggffffff?T)r   r;   existssizeg      )	tkinter.fontfloatr   callr   namesFontrB   round)r   rw   r   r;   r   r   s         r   rz   rz   B  s    (DGGLLy12G}LL&&t, 	1D<<$$$T$$GDtF|$Dax$U4Z0V		1 r!   c                     | j                   | j                   dz   nd}|t        j                  t        j                  |            z   | _         y )Nz

r8   )__doc__textwrapfilldedent)funtexttems      r   fixdocr   N  s9    $'KK$;3;;Chood&;<<CKr!      c                      	 t        j                  t        j                        fd       t	        dt
         d       t        j                  t        j                         fd        t	         dt
         dt
         d       t        j                  t        j                         t
        z          t        _         t        _        y )Nc                      |rt        d      	 | \  }|dkD  st        d      j                  |t        z         S # t        $ r t        dt        |        d      w xY w)Nz.setrecursionlimit() takes no keyword argumentsz0setrecursionlimit() takes exactly one argument (z given)r   z/recursion limit must be greater or equal than 1)	TypeError
ValueErrorr   __wrapped__RECURSIONLIMIT_DELTA)r<   r^   limitsetrecursionlimits      r   r   z:install_recursionlimit_wrappers.<locals>.setrecursionlimitX  s     @B B	=FE qyAC C !,,U5I-IJJ  	= )),T7< = =	=s	   < "Az#            This IDLE wrapper adds z7 to prevent possible
            uninterruptible loops.c                  2     j                         t        z
  S r#   )r   r   )getrecursionlimits   r   r   z:install_recursionlimit_wrappers.<locals>.getrecursionlimitm  s     ,,.1EEEr!   z(            This IDLE wrapper subtracts z# to compensate
            for the z" IDLE adds when setting the limit.)	functoolswrapsr$   r   r   r   r   )r   r   s   @@r   install_recursionlimit_wrappersr   T  s    C __S**+K ,K   #$$8#9 :#& ' __S**+F ,F  #))=(> ?)**LP Q
 #//14HHI-C-Cr!   c                  ^   	 t        t        j                  dd       rt        t        j                  dd       rut        j                  j                  t        _        t        j                  j                  t        _        t        j                  t        j                         t
        z
         y y y )Nr   )getattrr$   r   r   r   r   r   r!   r   !uninstall_recursionlimit_wrappersr   |  s~     C))=$?C))=$? # 5 5 A A # 5 5 A Ac3358LLM	 @ @r!   c                       e Zd Zd Zy)rj   c                    	 	  # t         $ r  t        $ r dat        j                          Y y  t
        j                  }t        t        j                  dd dt        j                         j                   d| d|d	      |       t        j                  d|	       t        t        j                  d
d       |       dat        j                          Y y xY w)NTz
            z(----------------------------------------zU
            Unhandled exception in user code execution server!'
            Thread: z"
            IDLE Client Address: z
            Request: r7   i)r   r(   a  
            *** Unrecoverable, server exiting!

            Users should never see this message; it is likely transient.
            If this recurs, report this with a copy of the message
            and an explanation of how to make it repeat.
            )rU   EOFErrorrK   threadinterrupt_mainr$   rE   rD   r   r   rF   current_threadr;   rX   r   rT   )selfr[   client_addresserfs       r   handle_errorzMyRPCServer.handle_error  s    		$ 	 	$H!!#	$..C(// 'H --/445 6""0!1 2[ !#   c4(// ' H#   #$ H!!#s    (CB*CN)r   
__module____qualname__r   r   r!   r   rj   rj     s    !$r!   rj   c                   J    e Zd ZddZed        Zed        Zed        Zd Zy)	StdioFilec                 <    || _         || _        || _        || _        y r#   )shelltags	_encoding_errors)r   r   r   encodingerrorss        r   __init__zStdioFile.__init__  s    
	!r!   c                     | j                   S r#   )r   r   s    r   r   zStdioFile.encoding  s    ~~r!   c                     | j                   S r#   )r   r   s    r   r   zStdioFile.errors  s    ||r!   c                      d| j                   z  S )Nz<%s>)r   r   s    r   r;   zStdioFile.name  s    		!!r!   c                      yNTr   r   s    r   isattyzStdioFile.isatty      r!   N)zutf-8strict)	r   r   r   r   propertyr   r   r;   r   r   r!   r   r   r     sH         " "r!   r   c                       e Zd Zd Zd Zy)StdOutputFilec                      yr   r   r   s    r   writablezStdOutputFile.writable  r  r!   c                    | j                   rt        d      t        j                  || j                  | j
                        j                  | j                  | j
                        }| j                  j                  || j                        S )Nzwrite to closed file)
closedr   strencoder   r   decoder   r&   r   )r   r   s     r   r&   zStdOutputFile.write  s_    ;;344JJq$--5<<T]]DKKXzz499--r!   N)r   r   r   r  r&   r   r!   r   r  r    s    .r!   r  c                   ,    e Zd ZdZd ZddZddZd Zy)StdInputFiler8   c                      yr   r   r   s    r   readablezStdInputFile.readable  r  r!   c                    | j                   rt        d      |d}n1t        |t              s!t	        dt        |      j                  z         | j                  }d| _        |dk  r@| j                  j                         x}r"||z  }| j                  j                         x}r"|S t        |      |k  r1| j                  j                         }|sn||z  }t        |      |k  r1||d  | _        |d | }|S )Nread from closed filer6   must be int, not r8   r   )r	  r   
isinstancerB   r   r`   r   _line_bufferr   readliner   )r   r   resultr   s       r   readzStdInputFile.read  s    ;;455<DD#&/$t*2E2EEFF""!8**--//$/$ **--//$/  f+$zz**,U$ f+$ !'tuDET]Fr!   c                 d   | j                   rt        d      |d}n1t        |t              s!t	        dt        |      j                  z         | j                  xs | j                  j                         }|dk  rt        |      }|j                  dd|      }|dk\  r|dz   }||d  | _        |d | S )Nr  r6   r  r   r   rf   )r	  r   r  rB   r   r`   r   r  r   r  r   find)r   r   r   eols       r   r  zStdInputFile.readline  s    ;;455<DD#&/$t*2E2EEFF  9DJJ$7$7$9!8t9Diia&!87D KET{r!   c                 8    | j                   j                          y r#   )r   closer   s    r   r  zStdInputFile.close  s    

r!   N)r6   )r   r   r   r  r  r  r  r  r   r!   r   r  r    s    L* r!   r  c                   $    e Zd Zd Zd Zd Zd Zy)rk   c                    	 t        |       }| j                  d|       | j                  d      | _        t	        | j                  dt
        j                  t
        j                        t        _	        t        | j                  dt
        j                  t
        j                        t        _        t        | j                  dt
        j                  d      t        _        t        j                  t        _        dd l}|j                   |_        t        j                  | _        t'                | j                  d      | _        t        j*                  j-                  | d d	
       y )Nr   consolestdinstdoutr%   backslashreplacer   interpr>   )myseqwait)	Executiveregisterget_remote_proxyr   r  r   r   r   r$   r!  r  r"  r%   r   displayhookpydoc
plainpagerpager_keep_stdinr   r$  
RPCHandlergetresponse)r   	executiver+  s      r   handlezMyHandler.handle  s    "dO	fi(,,Y7 w!'&--A	"4<<#)??FMMC
"4<<#)??4FH
 //&& 99')++H5""4t$"?r!   c                 0    	 t        j                  d       y )N
   )rh   ri   r   s    r   exithookzMyHandler.exithook"  s    H

2r!   c                 2    	 da t        j                          y r   rT   r   r   r   s    r   EOFhookzMyHandler.EOFhook&  s    Or!   c                 2    	 da t        j                          y r   r7  r   s    r   decode_interrupthookzMyHandler.decode_interrupthook,  s    #r!   N)r   r   r   r2  r5  r8  r:  r   r!   r   rk   rk     s    @4  r!   rk   c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d
d	Z
y)r'  c                     || _         t        j                  du rHt        j                  | _        t        j                         | _        t        j                         | _        y i | _        y )NF)
r   idlelibtesting__main____dict__localsr   Calltipr   AutoComplete)r   r   s     r   r   zExecutive.__init__5  sH    $??e#"++DK"??,DL , 9 9 ;DDKr!   c                 >   	 d | _         da	 t        || j                         da	 t	                y # daw xY w# t
        $ rq}|j                  r[|j                  d   }t        |t        d       t        f      s,t        dt        |      z   t        j                         Y d }~y Y d }~y Y d }~y d }~w t        j                         | _         t        r
t!                t        j"                  t        j$                  u rt'                nH	 t        j"                  | j                     n*#  t        j                         | _         t'                Y nxY w| j(                  j*                  j-                  d      }|r&| j(                  j.                  j1                          Y y Y y xY w)NTFr   zSystemExit: r7   z<<toggle-jit-stack-viewer>>)user_exc_infointerruptabler   rA  r   rU   r<   r  r`   rB   rD   r
  r$   r%   rV   rT   rL   
excepthookr   rW   r   r   getvarr$  open_remote_stack_viewer)r   codeeobjits        r   runcodezExecutive.runcode>  s1   	!%D M&T4;;' %. N/ !& 	EvvVVAY!"tDz3&78.3r72DD 9 
	B!$D~~!3!33!&NND$6$67&),D&#%//))001NOC&&??A s@   	7 0 7 47 	F AB,,AFD#"F#%E
AFc                 :    t         rt        j                          y y r#   )rF  r   r   r   s    r   interrupt_the_serverzExecutive.interrupt_the_server_  s    !!# r!   c                 B    t        j                  | j                  |      S r#   )r   start_debuggerr   )r   gui_adap_oids     r   start_the_debuggerzExecutive.start_the_debuggerc  s    ((,GGr!   c                 <    	 | j                   j                  |       y r#   )r   
unregister)r   idb_adap_oids     r   stop_the_debuggerzExecutive.stop_the_debuggerf  s    N""<0r!   c                 8    | j                   j                  |      S r#   )r   	fetch_tip)r   r;   s     r   get_the_calltipzExecutive.get_the_calltipj  s    ||%%d++r!   c                 :    | j                   j                  ||      S r#   )r   fetch_completions)r   whatmodes      r   get_the_completion_listz!Executive.get_the_completion_listm  s      224>>r!   Nc                 n   | j                   r| j                   \  }}}ny d }|| j                  j                  |      }|rE|j                  j                  d   dv r*|j
                  }|r|j                  j                  d   dv r*||_        t        j                  ||      }t        j                  |      S )Nr   )r   run)rE  r   r)  tb_frame	f_globalstb_nextr   r	   StackTreeItemr   remote_object_tree_item)r   	flist_oid_r   rb   flistitems          r   r	   zExecutive.stackviewerp  s    ++JAsB OO44Y?ER[[**:6.HB R[[**:6.H((e411$77r!   r#   )r   r   r   r   rN  rP  rT  rX  r[  r`  r	   r   r!   r   r'  r'  3  s,    B$H1,?8r!   r'  r?  )rc   zidlelib.idle_test.test_run   )	verbosityr#   )NN)F)Br   r   r   r   rP   r$   r   rh   rX   _threadr   rF   r,   r=  r   r   r   r   r   r   r	   r?  rw   hasattrmodulesmoddelattrr
   rI   eofrL   quitr   r    r)   r+   r/   Tclr3   r4   rK   rT   rF  rc   rH   rl   r   rW   r   r   rz   r   r   r   r   	RPCServerrj   
TextIOBaser   r  r  r/  rk   r'  r   unittestr   r!   r   <module>ry     s     	   
                 s{{=):6 * 	KK
S()	* +0CKK'		
 CDHDH
 >B  )  gkkm  L\&"	9#J!>"	1=  %.PN#$#-- #$P 0	.I 	.,9 ,^*  * ZI8 I8X z	%3  i  		s   5F F#"F#