a
    Ùc¿_”ß  ã                
   @   sÐ  d dl Z edkr e jd e jd< zd dlT W n( eyT   ede jd edƒ‚Y n0 e jdkršz d dl	Z	dZ
e	 d	¡ e
¡ W n eeefy˜   Y n0 d dlmZ ed
k rìeƒ at ¡  d dlmZ etƒ ejdde td edƒ‚d dlmZ d dlZd dlZd dlZd dlmZ d dlZd dl Z d dl!Z!d dl"m#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/m0Z0m1Z1 d dl2m3Z3 d dl4m5Z5 d dl,m6Z6 d dlm7Z7m8Z8m9Z9 d dl:m;Z; dZ<d Z=e ja>d:dd„Z?da@dd „ ZAeAd!ƒ dejBfd"d#„ZCeCe_BG d$d%„ d%e0ƒZDG d&d'„ d'e3ƒZEG d(d)„ d)e)ƒZFG d*d+„ d+e;ƒZGG d,d-„ d-e6jHƒZId.d/„ ZJG d0d1„ d1eƒZKG d2d3„ d3e5ƒZLd4d5„ ZMd6ZNd7d8„ ZOedkrÄeOƒ  eAd9ƒ dS );é    NÚ__main__zidlelib.pyshell)Ú*zJ** IDLE can't import Tkinter.
Your Python may not be configured for Tk. **©Úfileé   Zwin32Zshcoreg      !@©Úfix_scalingzIdle Cannot Startz"Idle requires tcl/tk 8.5+, not %s.©Úparent)ÚInteractiveInterpreter)Úpython_version)ÚTextWrapper)ÚColorDelegator)ÚidleConf©Údebugger)Ú
debugger_r)ÚEditorWindowÚfixwordbreaks)ÚFileList)ÚOutputWindow)Úrpc)Úidle_formatwarningÚStdInputFileÚStdOutputFile)ÚUndoDelegatorz	127.0.0.1c              	   C   sN   |du rt }z&| t| ||||d¡ | d¡ W n ttfyH   Y n0 dS )a   Show Idle-format warning (after replacing warnings.showwarning).

    The differences are the formatter called, the file=None replacement,
    which can be None, the capture of the consequence AttributeError,
    and the output of a hard-coded prompt.
    N)Úlineú>>> )Úwarning_streamÚwriter   ÚAttributeErrorÚOSError)ÚmessageÚcategoryÚfilenameÚlinenor   r   © r&   ú lib/python3.9/idlelib/pyshell.pyÚidle_showwarningE   s    
ÿr(   c                 C   s0   | rt du r,tja tt_nt dur,t t_da dS )z>Replace warning.showwarning with idle_showwarning, or reverse.N)Ú_warnings_showwarningÚwarningsÚshowwarningr(   )Zcapturer&   r&   r'   Úcapture_warningsX   s    r,   Tc                 C   sX   t j}i }t|ƒD ].}|dd… |dd…  dkr| |¡||< q|| ƒ | |¡ dS )ao  Extend linecache.checkcache to preserve the <pyshell#...> entries

    Rather than repeating the linecache code, patch it to save the
    <pyshell#...> entries, call the original linecache.checkcache()
    (skipping them), and then restore the saved entries.

    orig_checkcache is bound at definition time to the original
    method, allowing it to be patched.
    Nr   éÿÿÿÿú<>)Ú	linecacheÚcacheÚlistÚpopÚupdate)r$   Zorig_checkcacher0   ÚsaveÚkeyr&   r&   r'   Úextended_linecache_checkcacheg   s    r6   c                   @   sv   e Zd ZdZdd„ Zg d¢Zddd„Zdd	„ Zddd„Zddd„Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd
S )ÚPyShellEditorWindowz6Regular text edit window in IDLE, supports breakpointsc                 G   s–   g | _ tj| g|¢R Ž  | j d| j¡ | j d| j¡ | j d| jj¡ t	j
 tjd¡| _| jj| fdd„}| j |¡ | jjrŠ|  ¡  |  ¡  d S )Nú<<set-breakpoint-here>>ú<<clear-breakpoint-here>>z<<open-python-shell>>zbreakpoints.lstc                 S   s   |  ¡  | ƒ  d S ©N)Úrestore_file_breaks)Zold_hookÚselfr&   r&   r'   Úfilename_changed_hookŒ   s    z;PyShellEditorWindow.__init__.<locals>.filename_changed_hook)Úbreakpointsr   Ú__init__ÚtextÚbindÚset_breakpoint_hereÚclear_breakpoint_hereÚflistÚ
open_shellÚosÚpathÚjoinr   ZuserdirÚbreakpointPathÚioZfilename_change_hookZset_filename_change_hookr$   r;   Úcolor_breakpoint_text)r<   Úargsr=   r&   r&   r'   r?      s    ÿÿ
zPyShellEditorWindow.__init__))ZCutz<<cut>>Úrmenu_check_cut)ZCopyz<<copy>>Zrmenu_check_copy)ZPastez	<<paste>>Úrmenu_check_paste)NNN)zSet Breakpointr8   N)zClear Breakpointr9   NTc                 C   sD   | j du rdS |r(t ¡ }t |d¡}n
dddœ}| j d|¡ dS )z,Turn colorizing of breakpoint text on or offNÚbreakÚ )Ú
foregroundÚ
backgroundÚBREAK)rJ   r   ÚCurrentThemeÚGetHighlightr@   Z
tag_config)r<   ZcolorÚthemeZcfgr&   r&   r'   rK   ž   s    

z)PyShellEditorWindow.color_breakpoint_textc                 C   s†   | j }| jj}| dd| d|d  ¡ z| j |¡ W n tyV   | j |¡ Y n0 z| jj	j
j}| ||¡ W n   Y n0 d S )NrS   z%d.0r   )r@   rJ   r$   Útag_addr>   ÚindexÚ
ValueErrorÚappendrD   ÚpyshellÚinterpr   rB   )r<   r%   r@   r$   Údebugr&   r&   r'   Úset_breakpointª   s    z"PyShellEditorWindow.set_breakpointNc                 C   s>   | j }| jj}|s| ¡  d S tt| d¡ƒƒ}|  |¡ d S )NÚinsert)r@   rJ   r$   ÚbellÚintÚfloatrX   r^   )r<   Úeventr@   r$   r%   r&   r&   r'   rB   ¸   s    z'PyShellEditorWindow.set_breakpoint_herec                 C   sŠ   | j }| jj}|s| ¡  d S tt| d¡ƒƒ}z| j |¡ W n   Y n0 | 	ddd¡ z| j
jjj}| ||¡ W n   Y n0 d S )Nr_   rS   úinsert linestartzinsert lineend +1char)r@   rJ   r$   r`   ra   rb   rX   r>   ÚremoveÚ
tag_removerD   r[   r\   r   rC   )r<   rc   r@   r$   r%   r]   r&   r&   r'   rC   Á   s$    ÿz)PyShellEditorWindow.clear_breakpoint_herec                 C   sd   | j r`| j}| jj}|s$| ¡  d S g | _ | ddt¡ z| jjj	j
}| |¡ W n   Y n0 d S )NrS   ú1.0)r>   r@   rJ   r$   r`   rf   ZENDrD   r[   r\   r   Úclear_file_breaks)r<   r@   r$   r]   r&   r&   r'   rh   Ô   s    z%PyShellEditorWindow.clear_file_breaksc              
   C   s:  | j }| jj}z8t| jdƒ}| ¡ }W d  ƒ n1 s:0    Y  W n ty\   g }Y n0 z~t| jdƒ^}|D ]}| |d ¡sr| |¡ qr|  	¡  | j }|r¼| |d t
|ƒ d ¡ W d  ƒ n1 sÐ0    Y  W nX ty4 } z>t| jddƒs d| j_tjd	d
t
|ƒ | jd W Y d}~n
d}~0 0 dS )z#Save breakpoints when file is savedÚrNÚwú=Ú
Úbreakpoint_error_displayedFTz
IDLE Errorz$Unable to update breakpoint list:
%s)Útitler"   r
   )r>   rJ   r$   ÚopenrI   Ú	readlinesr!   Ú
startswithr   Úupdate_breakpointsÚstrÚgetattrÚrootrm   ÚtkMessageBoxÚ	showerrorr@   )r<   Zbreaksr$   ÚfpÚlinesZnew_filer   Úerrr&   r&   r'   Ústore_file_breaksã   s2    *
<ÿýz%PyShellEditorWindow.store_file_breaksc                 C   s¶   | j  ¡  | jd u rd S | jj}|d u r,d S tj | j¡r²t| jdƒ}| 	¡ }W d   ƒ n1 sd0    Y  |D ]>}| 
|d ¡rrt|t|ƒd d … ƒ}|D ]}|  |¡ q qrd S )Nri   rk   r   )r@   r3   rJ   r$   rF   rG   ÚisfilerI   ro   rp   rq   ÚevalÚlenr^   )r<   r$   rx   ry   r   Zbreakpoint_linenumbersZbreakpoint_linenumberr&   r&   r'   r;     s    

&z'PyShellEditorWindow.restore_file_breaksc                 C   s$   | j }| d¡}|  |¡}|| _dS )z3Retrieves all the breakpoints in the current windowrS   N)r@   Z
tag_rangesÚranges_to_linenumbersr>   )r<   r@   ÚrangesZlinenumber_listr&   r&   r'   rr     s    

z&PyShellEditorWindow.update_breakpointsc                 C   sb   g }t dt|ƒdƒD ]H}tt|| jƒƒ}tt||d  jƒƒ}||k r| |¡ |d7 }q@q|S )Nr   é   r   )Úranger~   ra   rb   ÚstringrZ   )r<   r€   ry   rX   r%   Úendr&   r&   r'   r   %  s    
z)PyShellEditorWindow.ranges_to_linenumbersc                 C   s   |   ¡  t | ¡ dS )z7Extend base method - clear breaks when module is closedN)rh   r   Ú_close©r<   r&   r&   r'   r…   6  s    zPyShellEditorWindow._close)T)N)N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r?   Úrmenu_specsrK   r^   rB   rC   rh   r{   r;   rr   r   r…   r&   r&   r&   r'   r7   ~   s   	

	
*r7   c                   @   s"   e Zd ZdZeZdZddd„ZdS )ÚPyShellFileListz8Extend base class: IDLE supports a shell and breakpointsNc                 C   s8   | j r| j j ¡  nt| ƒ| _ | j r2| j  ¡ s2d S | j S r:   )r[   ÚtopÚwakeupÚPyShellÚbegin©r<   rc   r&   r&   r'   rE   E  s    

zPyShellFileList.open_shell)N)r‡   rˆ   r‰   rŠ   r7   r   r[   rE   r&   r&   r&   r'   rŒ   <  s   rŒ   c                   @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )ÚModifiedColorDelegatorz8Extend base class: colorizer for the shell window itselfc                 C   s   t  | ¡ |  ¡  d S r:   )r   r?   ÚLoadTagDefsr†   r&   r&   r'   r?   S  s    
zModifiedColorDelegator.__init__c                 C   s*   |   ddd¡ |  ddd¡ t | ¡ d S )NZTODOrg   ÚiomarkZSYNC)rf   rW   r   Úrecolorize_mainr†   r&   r&   r'   r•   W  s    z&ModifiedColorDelegator.recolorize_mainc              	   C   sJ   t  | ¡ t ¡ }| j d d dœt |d¡t |d¡t |d¡dœ¡ d S )N)rR   rQ   ÚstdoutÚstderrÚconsole)Ústdinr–   r—   r˜   )r   r“   r   rT   Útagdefsr3   rU   )r<   rV   r&   r&   r'   r“   \  s    



üz"ModifiedColorDelegator.LoadTagDefsc                 C   s   | j D ]}|  |dd¡ qd S )Nr”   r„   )rš   rf   )r<   Útagr&   r&   r'   Úremovecolorsf  s    
z#ModifiedColorDelegator.removecolorsN)r‡   rˆ   r‰   rŠ   r?   r•   r“   rœ   r&   r&   r&   r'   r’   P  s
   
r’   c                   @   s$   e Zd ZdZddd„Zddd„ZdS )	ÚModifiedUndoDelegatorz;Extend base class: forbid insert/delete before the I/O markNc                 C   sL   z$| j  |dd¡r"| j  ¡  W d S W n ty6   Y n0 t | |||¡ d S ©Nú<r”   )ÚdelegateÚcomparer`   ÚTclErrorr   r_   )r<   rX   ÚcharsÚtagsr&   r&   r'   r_   n  s    

zModifiedUndoDelegator.insertc                 C   sJ   z$| j  |dd¡r"| j  ¡  W d S W n ty6   Y n0 t | ||¡ d S rž   )r    r¡   r`   r¢   r   Údelete)r<   Zindex1Zindex2r&   r&   r'   r¥   w  s    

zModifiedUndoDelegator.delete)N)N)r‡   rˆ   r‰   rŠ   r_   r¥   r&   r&   r&   r'   r   k  s   
	r   c                   @   s   e Zd Zdd„ ZdS )ÚMyRPCClientc                 C   s   t ‚dS )z0Override the base class - just re-raise EOFErrorN)ÚEOFErrorr†   r&   r&   r'   Ú
handle_EOFƒ  s    zMyRPCClient.handle_EOFN)r‡   rˆ   r‰   r¨   r&   r&   r&   r'   r¦     s   r¦   c                 C   s^   d|pd› d}| t |ƒkrNt| t |ƒ dƒ\}}|| d › |› |d › S |dd… S dS )z¹Return width long restart line formatted with filename.

    Fill line with balanced '='s, with any extras and at least one at
    the beginning.  Do not end with a trailing space.
    z= RESTART: ZShellz =r   rk   Néþÿÿÿ)r~   Údivmod)Úwidthr$   r›   ZdivÚmodr&   r&   r'   Úrestart_line‡  s
    r­   c                   @   s  e Zd Zdd„ ZdZdZdZdd„ Zdd„ Zdd	„ Z	d?dd„Z
dd„ Zdd„ Zdd„ Zdd„ Zd@dd„ZdZdd„ ZdZdd„ Zdd„ Zdd„ Zd d!„ Zd"Zd#d$„ ZdAd%d&„Zd'd(„ Zd)d*„ Zd+d,„ ZdBd-d.„Zd/d0„ Zd1d2„ Zd3d4„ Z d5d6„ Z!d7d8„ Z"d9d:„ Z#d;d<„ Z$d=d>„ Z%dS )CÚModifiedInterpreterc                 C   sB   || _ tjd j}tj| |d d| _d | _t| _	| j
jj| _d S )Nr   )ÚlocalsF)Ú	tkconsoleÚsysÚmodulesÚ__dict__r   r?   Ú
restartingÚsubprocess_arglistÚPORTÚportÚcompileÚcompilerÚflagsÚoriginal_compiler_flags)r<   r°   r¯   r&   r&   r'   r?   —  s    zModifiedInterpreter.__init__Nc                 C   s&   | j d u r|  ¡ | _ t | j ¡| _d S r:   )rµ   Úbuild_subprocess_arglistÚ
subprocessÚPopenÚ
rpcsubprocr†   r&   r&   r'   Úspawn_subprocess¤  s    

z$ModifiedInterpreter.spawn_subprocessc                 C   s\   | j dksJ dƒ‚dd„ tjD ƒ}tjddddd	d
}d|f }tjg| d|t| j ƒg S )Nr   z/Socket should have been assigned a port number.c                 S   s   g | ]}d | ‘qS )z-Wr&   )Ú.0Úsr&   r&   r'   Ú
<listcomp>¬  ó    z@ModifiedInterpreter.build_subprocess_arglist.<locals>.<listcomp>ÚmainÚGeneralzdelete-exitfuncFÚbool)ÚdefaultÚtypez&__import__('idlelib.run').run.main(%r)ú-c)r·   r±   Úwarnoptionsr   Ú	GetOptionÚ
executablers   )r<   rj   Z	del_exitfZcommandr&   r&   r'   r¼   ©  s    ÿ
ÿ
z,ModifiedInterpreter.build_subprocess_arglistc              	   C   sX  t | jf}tdƒD ]6}t |¡ zt|ƒ| _W  qVW q tyF   Y q0 q|  ¡  d S | jj	 
¡ d | _tdkr†| jj	 tjtjd¡ |  ¡  | jj	 d¡ z| j ¡  W n tjyÈ   |  ¡  Y d S 0 | j d| j¡ | j d| jj¡ | j d| jj¡ | j d| jj¡ | j d	| jj¡ | j d
t¡ | j d| ¡ | jdd |  ¡  | jS )Né   r   r   é
   r˜   r™   r–   r—   rD   r/   r\   T©Úwith_cwd)ÚHOSTr·   r‚   ÚtimeÚsleepr¦   Úrpccltr!   Údisplay_port_binding_errorÚlistening_sockZgetsocknamer¶   Z
setsockoptÚsocketZ
SOL_SOCKETZSO_REUSEADDRrÀ   Z
settimeoutÚacceptÚtimeoutÚdisplay_no_subprocess_errorÚregisterr°   r™   r–   r—   rD   r/   Útransfer_pathÚpoll_subprocess)r<   ZaddrÚir&   r&   r'   Ústart_subprocessµ  s@    



ÿz$ModifiedInterpreter.start_subprocessFrP   c                 C   s0  | j r| jS d| _ |  ¡ }|r<zt | j¡ W n   Y n0 | j ¡  |  ¡  | j}|j}d|_|  	¡  z| j 
¡  W n tjy”   |  ¡  Y d S 0 | j|d | ¡  |j dd¡ | d¡ | t|j|ƒ¡ |j dd¡ |j dd¡ | sþ| ¡  |rt | j¡ | ¡  | j| jj_d| _ | jS )	NTFrÐ   r”   úend-1crl   ÚrestartÚleft)r´   rÕ   Úgetdebuggerr   Zclose_subprocess_debuggerÚcloseÚterminate_subprocessr°   Ú	executingrÀ   rÙ   rØ   rÚ   rÛ   rÝ   Ústop_readliner@   r¥   r   r­   r«   Úmark_setÚmark_gravityÚ
showpromptZrestart_subprocess_debuggerÚload_breakpointsr»   r¸   r¹   rº   )r<   rÑ   r$   r]   r˜   Zwas_executingr&   r&   r'   Úrestart_subprocessà  sF    

z&ModifiedInterpreter.restart_subprocessc                 C   s   | j  dddi ¡ d S )NÚexecZinterrupt_the_serverr&   )rÕ   Z
remotecallr†   r&   r&   r'   Z__request_interrupt  s    z'ModifiedInterpreter.__request_interruptc                 C   s   t j| jd ¡  d S )N)Útarget)Ú	threadingZThreadÚ'_ModifiedInterpreter__request_interruptÚstartr†   r&   r&   r'   Úinterrupt_subprocess  s    z(ModifiedInterpreter.interrupt_subprocessc                 C   sz   | j d ur| jj | j ¡ z| jj ¡  W n ty<   Y n0 z| j ¡  W n ty^   Y n0 |  ¡  d| j_	d | _d S )NF)
Ú_afteridr°   r@   Zafter_cancelrÕ   r×   rå   r    ræ   rç   r†   r&   r&   r'   Úkill_subprocess  s    
z#ModifiedInterpreter.kill_subprocessc                 C   sL   z| j  ¡  W n ty"   Y dS 0 z| j  ¡  W n tyF   Y dS 0 dS )z"Make sure subprocess is terminatedN)r¿   Úkillr!   Úwaitr†   r&   r&   r'   ræ   !  s    z(ModifiedInterpreter.terminate_subprocessc                 C   s2   |rdg}|  tj¡ ntj}|  d|f ¡ d S )NrP   zRif 1:
        import sys as _sys
        _sys.path = %r
        del _sys
        
)Úextendr±   rG   Ú
runcommand)r<   rÑ   rG   r&   r&   r'   rÝ   .  s    üz!ModifiedInterpreter.transfer_pathc              
   C   s4  | j }|d u rd S z|j| jdd}W n2 tttfyX   | jjrHY d S d }|  ¡  Y n0 |r| j 	¡  d | _|\}}| jj
}|dkr¢|d urêtt|ƒ|d nH|dkrÀ| j d¡rê|  ¡  n*|dkrêd}t||tjd t|||d z| j ¡  W n ty   Y n0 | jjs0| jj | jj| j¡| _d S )	Ngš™™™™™©?)r÷   ZOKr   Z	EXCEPTIONú<<toggle-jit-stack-viewer>>ÚERRORz/pyshell.ModifiedInterpreter: Subprocess ERROR:
)rÕ   ZpollresponseÚ
active_seqr§   r!   ÚKeyboardInterruptr°   Úclosingrí   Úresetoutputr˜   ÚprintÚreprÚgetvarÚremote_stack_viewerr±   Ú
__stderr__Úendexecutingr    r@   ÚafterÚpollintervalrÞ   rô   )r<   ZcltÚresponseZhowZwhatr˜   Úerrmsgr&   r&   r'   rÞ   =  sB    



ÿz#ModifiedInterpreter.poll_subprocessc                 C   s
   || _ d S r:   r   )r<   r   r&   r&   r'   Úsetdebuggere  s    zModifiedInterpreter.setdebuggerc                 C   s   | j S r:   r   r†   r&   r&   r'   rä   h  s    zModifiedInterpreter.getdebuggerc                 C   s   | j j d| j¡ dS )a’  Initiate the remote stack viewer from a separate thread.

        This method is called from the subprocess, and by returning from this
        method we allow the subprocess to unblock.  After a bit the shell
        requests the subprocess to open the remote stack viewer which returns a
        static object looking at the last exception.  It is queried through
        the RPC mechanism.

        i,  N)r°   r@   r  r  r†   r&   r&   r'   Úopen_remote_stack_viewerk  s    
z,ModifiedInterpreter.open_remote_stack_viewerc                 C   s°   ddl m} | j dddi ¡}|d u r6| jj ¡  d S | | j|¡}ddlm	}m
} t| jjƒ}t ¡ }t |d¡d }|||dd	}	|	jjd
dd ||	jd |ƒ}
|
 ¡  d S )Nr   )Ú
debugobj_rrî   Zstackviewer)rD   )ÚScrolledCanvasÚTreeNodeZnormalrR   )ZbgZhighlightthicknessr   Zboth)ÚexpandZfill)Úidlelibr  rÕ   Úremotequeuer°   ru   r`   ZStubObjectTreeItemZidlelib.treer  r  ZToplevelr   rT   rU   ÚframeZpackZcanvasr  )r<   r  ZoidÚitemr  r  r   rV   rR   ZscZnoder&   r&   r'   r  x  s    z'ModifiedInterpreter.remote_stack_viewerr   c                 C   s   |   |¡}|  ||¡ dS )z1Like runsource() but assumes complete exec sourceN)ÚstuffsourceÚexecfile©r<   Úsourcer$   r&   r&   r'   Ú
execsource‹  s    
zModifiedInterpreter.execsourcec              	   C   sÀ   |du rZt  |¡8}| ¡ }tr<dtj |¡› d| d }W d  ƒ n1 sP0    Y  zt||dƒ}W nF tt	fy°   | j
 ¡  td| j
jd t | |¡ | j
 ¡  Y n0 |  |¡ dS )zExecute an existing fileNz__file__ = r'''z'''
z
del __file__rî   zB*** Error in script or command!
Traceback (most recent call last):r   )Útokenizero   ÚreadÚuse_subprocessrF   rG   Úabspathr¸   ÚOverflowErrorÚSyntaxErrorr°   rÿ   r   r—   r   Úshowsyntaxerrorrë   Úruncode)r<   r$   r  rx   Úcoder&   r&   r'   r    s&    ÿÿ"
þzModifiedInterpreter.execfilec                 C   s&   |   |¡}t|tƒsJ ‚t | ||¡S )zBExtend base class method: Stuff the source in the line cache first)r  Ú
isinstancers   r   Ú	runsourcer  r&   r&   r'   r#  ¤  s    
zModifiedInterpreter.runsourcec                 C   s>   d| j  }| j d | _ | d¡}t|ƒd d||ftj|< |S )z"Stuff source in the filename cachez<pyshell#%d>r   rl   r   )ÚgidÚsplitr~   r/   r0   )r<   r  r$   ry   r&   r&   r'   r  ­  s
    

zModifiedInterpreter.stuffsourcec                 C   s   |   d|f ¡ dS )z>Prepend sys.path with file's directory if not already includeda(  if 1:
            _filename = %r
            import sys as _sys
            from os.path import dirname as _dirname
            _dir = _dirname(_filename)
            if not _dir in _sys.path:
                _sys.path.insert(0, _dir)
            del _filename, _sys, _dirname, _dir
            
N)rù   ©r<   r$   r&   r&   r'   Úprepend_syspathµ  s    øz#ModifiedInterpreter.prepend_syspathc                 C   sÄ   | j }|j}| ddd¡ t ¡ \}}}t|ddƒp:|p:d}t|ddƒpJd}t|d	dƒpZd
}	|	d
krl|d7 }|dkr‚d|	d  }
nd|d |	d f }
| ||
¡ | ¡  |  d| ¡ | 	¡  dS )z§Override Interactive Interpreter method: Use Colorizing

        Color the offending position instead of printing it and pointing at it
        with a caret.

        rû   rg   r„   ÚmsgrP   z<no detail available>r%   r   Úoffsetr   ziomark + %d charsz&iomark linestart + %d lines + %d charszSyntaxError: %s
N)
r°   r@   rf   r±   Úexc_infort   Zcolorize_syntax_errorrÿ   r   rë   )r<   r$   r°   r@   rÉ   ÚvalueÚtbr(  r%   r)  Úposr&   r&   r'   r  Á  s$    ÿz#ModifiedInterpreter.showsyntaxerrorc                 C   s6   | j  ¡  |  ¡  t | ¡ | j  d¡r2| j  ¡  dS )z1Extend base class method to reset output properlyrú   N)r°   rÿ   Úchecklinecacher   Úshowtracebackr  Úopen_stack_viewerr†   r&   r&   r'   r/  Û  s
    

z!ModifiedInterpreter.showtracebackc                 C   s>   t j}t| ¡ ƒD ]&}|d d… |dd …  dkr||= qd S )Nr   r-   r.   )r/   r0   r1   Úkeys)r<   Úcr5   r&   r&   r'   r.  ã  s    z"ModifiedInterpreter.checklinecachec                 C   s@   | j jr|  ¡  dS | jr0| j dd|fi ¡ nt|| jƒ dS )z*Run the code without invoking the debuggerr   rî   r   r   )r°   rç   Údisplay_executing_dialogrÕ   r  rî   r¯   )r<   r!  r&   r&   r'   rù   é  s    zModifiedInterpreter.runcommandc                 C   sv  | j jr| j ¡  |  ¡  | j}z"zT| j  ¡  |sV| jdurV| j dd|fi ¡| _	n |rj| 
|| j¡ nt|| jƒ W nž ty¸   | j js²tjddd| j jdr¨‚ q´|  ¡  n‚ Y n`   trætd| j jd	 |  ¡  | j  ¡  n,| j jr
d
| j _td| j jd	 n|  ¡  Y n0 W tsrz| j  ¡  W n tyB   Y n0 n,tspz| j  ¡  W n tyn   Y n0 0 dS )úOverride base class methodNrî   r   zExit?zDo you want to exit altogether?Zyes©rÈ   r
   z IDLE internal error in runcode()r   Frý   )r°   rç   r\   rí   r.  r   ÚbeginexecutingrÕ   Z
asyncqueuerü   Úrunr¯   rî   Ú
SystemExitrþ   rv   Zaskyesnor@   r/  r  r   r—   r  Úcanceledr    )r<   r!  r   r&   r&   r'   r   õ  sZ    


ÿü
ÿ
üzModifiedInterpreter.runcodec                 C   s   | j j |¡S )r4  )r°   r—   r   )r<   rÂ   r&   r&   r'   r   #  s    zModifiedInterpreter.writec                 C   s   t jdd| jjd d S )NzPort Binding ErroraA  IDLE can't bind to a TCP/IP port, which is necessary to communicate with its Python execution server.  This might be because no networking is installed on this computer.  Run IDLE with the -n command line switch to start without a subprocess and refer to Help/IDLE Help 'Running without a subprocess' for further details.r	   ©rv   rw   r°   r@   r†   r&   r&   r'   rÖ   '  s
    øz.ModifiedInterpreter.display_port_binding_errorc                 C   s   t jdd| jjd d S )NzSubprocess Connection Errorz¢IDLE's subprocess didn't make connection.
See the 'Startup failure' section of the IDLE doc, online at
https://docs.python.org/3/library/idle.html#startup-failurer	   r:  r†   r&   r&   r'   rÛ   2  s
    ûz/ModifiedInterpreter.display_no_subprocess_errorc                 C   s   t jdd| jjd d S )NzAlready executingzYThe Python Shell window is already executing a command; please wait until it is finished.r	   r:  r†   r&   r&   r'   r3  :  s
    üz,ModifiedInterpreter.display_executing_dialog)FrP   )F)N)N)&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  r'  r  r/  r.  rù   r   r   rÖ   rÛ   r3  r&   r&   r&   r'   r®   •  sF   	+
,
&
	
.r®   c                       sŽ  e Zd Zdeƒ  d ZeZeZg d¢Z	e
jdg ZdZddlmZ dOd	d
„Zdd„ ZdZdZdZdZdZdZdd„ Zdd„ ZdPdd„Zdd„ ZdQdd„Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Z d!d"„ Z!d#d$„ Z"d%d&„ Z#d'Z$d(d)„ Z%d*d+„ Z&d,d-„ Z'd.d/„ Z(dRd0d1„Z)d2d3„ Z*d4d5„ Z+d6d7„ Z,d8d9„ Z-d:d;„ Z.dSd<d=„Z/dTd>d?„Z0dUd@dA„Z1dBdC„ Z2dDdE„ Z3dFdG„ Z4dVdIdJ„Z5‡ fdKdL„Z6‡ fdMdN„Z7‡  Z8S )Wr   zPython z Shell))r   Z_File)ZeditZ_Edit)r]   Z_Debug)ZoptionsZ_Options)ZwindowZ_Window)ÚhelpZ_Help)ZSqueezeú<<squeeze-current-text>>Fr   )ÚHistoryNc                 C   s$  t r&| j}|d d dkr&| dd¡ t| ƒ| _|d u rVtƒ }t|ƒ | ¡  t|ƒ}t	 
| |d d ¡ d| _d| _ttdƒr‚tjnd| _| j d	¡d
 | _| j| _| j}|jdd | d| j¡ | d| j¡ | d| j¡ | d| j¡ | d| j¡ | d| j¡ | d| j¡ t r8| d| j¡ | d| j¡ |   | ¡}| d|j!¡ tj"| _#tj$| _%tj&| _'ddl(m)} t*| d|j+|j,ƒ| _&t-| d|j+|j,ƒ| _"t-| d|j+dƒ| _$t-| d|j+|j,ƒ| _.t sà| j"t_"| j$t_$| j&t_&zdd l/}|j0|_1W n   tj2t_$‚ Y n0 |  3| j¡| _4d| _5d S )Nr   r   Úshell)r>  ZShe_llTé   Úps1r   rl   r-   Úchar)Úwrapz<<newline-and-indent>>z<<plain-newline-and-indent>>z<<interrupt-execution>>z<<end-of-file>>z<<open-stack-viewer>>ú<<toggle-debugger>>rú   z<<view-restart>>z<<restart-shell>>r<  )Úiomenur™   r–   r—   Úbackslashreplacer˜   é2   )6r  Ú
menu_specsr_   r®   r\   ÚTkr   ÚwithdrawrŒ   r   r?   ZusetabsZindentwidthÚhasattrr±   r@  Úsys_ps1r%  Zprompt_last_lineÚpromptr@   Z	configurerA   Úenter_callbackÚlinefeed_callbackÚcancel_callbackÚeof_callbackr0  Útoggle_debuggerÚtoggle_jit_stack_viewerÚview_restart_markÚrestart_shellZSqueezerZsqueeze_current_text_eventr–   Úsave_stdoutr—   Úsave_stderrr™   Ú
save_stdinr  rD  r   ÚencodingÚerrorsr   r˜   ÚpydocZ
plainpagerZpagerr  r=  Úhistoryr  )r<   rD   Zmsru   r@   ZsqueezerrD  rZ  r&   r&   r'   r?   ^  sx    

ÿÿÿÿÿzPyShell.__init__c                 C   s   t jddS )NT)Z
shell_only)r   ZGetExtensionsr†   r&   r&   r'   Úget_standard_extension_names¡  s    z$PyShell.get_standard_extension_namesc                 C   s   |a d S r:   ©r   )r<   Ústreamr&   r&   r'   Úset_warning_stream«  s    zPyShell.set_warning_streamc                 C   s   t S r:   r]  r†   r&   r&   r'   Úget_warning_stream¯  s    zPyShell.get_warning_streamc                 C   sH   | j r$tjdd| jd |  ¡  dS | j ¡ }|r<|  ¡  n|  ¡  d S )NzDon't debug nowz*You can only toggle the debugger when idler	   rO   )	rç   rv   rw   r@   Úset_debugger_indicatorr\   rä   Úclose_debuggerÚopen_debugger)r<   rc   Údbr&   r&   r'   rQ  ²  s    þ

zPyShell.toggle_debuggerc                 C   s   | j  ¡ }|  d|  ¡ d S )NrC  )r\   rä   Zsetvar©r<   rd  r&   r&   r'   ra  À  s    
zPyShell.set_debugger_indicatorc                 C   s   d S r:   r&   r‘   r&   r&   r'   rR  Ä  s    zPyShell.toggle_jit_stack_viewerc                 C   sh   | j  ¡ }|r\| j  d ¡ | ¡  | j jr8t | j j¡ |  ¡  | j 	d¡ | j
| _|  ¡  |  ¡  d S )Nz[DEBUG OFF]
)r\   rä   r
  rå   rÕ   r   Zclose_remote_debuggerrÿ   r˜   r   rK  rL  rë   ra  re  r&   r&   r'   rb  Ç  s    
zPyShell.close_debuggerc                 C   sX   | j jrt | j j| ¡}n
t | ¡}| j  |¡ | ¡  d| j | _	|  
¡  |  ¡  d S )Nz[DEBUG ON]
)r\   rÕ   r   Zstart_remote_debuggerr   ZDebuggerr
  rì   rK  rL  rë   ra  )r<   Zdbg_guir&   r&   r'   rc  Ô  s    
ÿ
zPyShell.open_debuggerc                 C   s   |   ¡  d| _dS )úHelper for ModifiedInterpreterTN)rÿ   rç   r†   r&   r&   r'   r6  à  s    zPyShell.beginexecutingc                 C   s   d| _ d| _|  ¡  dS )rf  FN)rç   r9  rë   r†   r&   r&   r'   r  å  s    zPyShell.endexecutingc                 C   sD   | j r&tjddd| jd}|du r&dS |  ¡  d| _d| _t | ¡S )zExtend EditorWindow.close()zKill?z7Your program is still running!
 Do you want to kill it?Úokr5  FZcancelT)	rç   rv   Zaskokcancelr@   rè   r9  rþ   r   rå   )r<   r  r&   r&   r'   rå   ë  s    üzPyShell.closec                 C   sV   |   ¡  tr| j ¡  | jt_| jt_| j	t_
d| _d| _d| j_d| _t | ¡ dS )zEExtend EditorWindow._close(), shut down debugger and execution serverN)rb  r  r\   rõ   rU  r±   r–   rV  r—   rW  r™   r˜   rD   r[   r[  r   r…   r†   r&   r&   r'   r…   ú  s    
zPyShell._closec                 C   s   dS )z8Override EditorWindow method: never remove the colorizerTr&   r&  r&   r&   r'   Úispythonsource
  s    zPyShell.ispythonsourcec                 C   s   | j S r:   )Úshell_titler†   r&   r&   r'   Úshort_title  s    zPyShell.short_titlezHType "help", "copyright", "credits" or "license()" for more information.c                 C   s†   | j  dd¡ |  ¡  tr:d}| j ¡ }|sF|  ¡  dS nd}tjt	_|  
dt	jt	j| j|f ¡ | j  ¡  |  ¡  dd l}d |_dS )	Nr”   r_   rP   Fz›==== No Subprocess ====

WARNING: Running IDLE without a Subprocess is deprecated
and will be removed in a later version. See Help/IDLE Help
for details.

zPython %s on %s
%s
%sr   T)r@   ré   rÿ   r  r\   rà   rå   r   Údisplayhookr±   r   ÚversionÚplatformÚ	COPYRIGHTZfocus_forcerë   ÚtkinterZ_default_root)r<   ZnosubZclientro  r&   r&   r'   r     s$    
ÿ
zPyShell.beginc                 C   s   | j s
d S d| _| j ¡  d S ©NT)ÚreadingÚ_stop_readline_flagr   Úquitr†   r&   r&   r'   rè   ,  s    zPyShell.stop_readlinec                 C   sˆ   | j }zd| _ | j ¡  W || _ n|| _ 0 | jr:d| _dS | j dd¡}t|ƒdkrXd}|  ¡  | jrtd| _t	stt
‚| jr„d| _d}|S )NTFrP   r”   rá   r   rl   )rq  r   Úmainlooprr  r@   Úgetr~   rÿ   r9  r  rý   Ú	endoffile)r<   r4   r   r&   r&   r'   Úreadline2  s(    zPyShell.readlinec                 C   s   dS rp  r&   r†   r&   r&   r'   ÚisattyI  s    zPyShell.isattyc                 C   s¢   z| j  ddd¡rW d S W n   Y n0 | jsT| jsT|  ¡  | j d¡ |  ¡  dS d| _d| _	| jrŽ| jj
rŽ| j ¡ r„| j ¡  n
| j ¡  | jrž| j ¡  dS )Nú	sel.firstz!=úsel.lastzKeyboardInterrupt
rO   FT)r@   r¡   rç   rq  rÿ   r\   r   rë   rv  r9  rÕ   rä   rí   ró   r   rs  r‘   r&   r&   r'   rO  L  s&    



zPyShell.cancel_callbackc                 C   sf   | j r| jsd S | j ddd¡r0| j ddd¡s4d S | j sL|  ¡  |  ¡  nd| _d| _| j 	¡  dS )Nr”   z==r_   rá   FTrO   )
rç   rq  r@   r¡   rÿ   rå   r9  rv  r   rs  r‘   r&   r&   r'   rP  b  s    ÿ

zPyShell.eof_callbackc                 C   s0   | j r"| j dd¡ | j d¡ n
|  |¡ dS )Nr_   rl   rO   )rq  r@   r_   ÚseeÚnewline_and_indent_eventr‘   r&   r&   r'   rN  q  s
    
zPyShell.linefeed_callbackc                 C   s:  | j r| jsd S z8| j dd¡}|rF| j ddd¡rF|  ||¡ W dS W n   Y n0 | j ddd¡rX| j d	d¡}|r°| j dd|d
 ¡r°|  | j |d |d
 ¡|¡ dS | j d	d¡}|rø| j dd|d ¡rø|  | j |d |d
 ¡|¡ dS | j dd¡}|r>| j |d dd¡r>|  | j |d
 d¡|¡ n|  | j dd¡|¡ dS | j ddd¡rx| j dd¡ | j dd¡}|r¤| 	¡ s¤| j 
dd¡ | j ddd¡rÄ|  |¡ dS | j dd¡ | jrö| j dd¡ | j d¡ n
|  |¡ | j d	dd¡ | j ¡  | jr.| j ¡  n|  ¡  dS )Nry  rz  z<=r”   rO   r_   rŸ   úiomark linestartr™   r   r   zinsert lineendz>=r˜   rd   rá   zend-1c linestartrl   )rç   rq  r@   ru  r¡   ÚrecallZtag_prevrangeZtag_nextrangeré   Ústripr¥   r|  r_   r{  rW   Zupdate_idletasksr   rs  Úrunit)r<   rc   ÚselÚprevÚnextÚindicesrÂ   r&   r&   r'   rM  z  sZ    
ÿ


zPyShell.enter_callbackc              	   C   sL  t  dd|¡}t  dd|¡}| d¡}| j ¡  zþ| j ddd¡ | j dd	¡ | j d
d¡}| ¡  	d¡r„|  
|¡ | j d
d¡}| j d|d  ¡ ¡ t|ƒdkrt  d|d ¡ d¡}t  d|¡ d¡}|dd … D ]8}| |¡rþ||t|ƒd …  }| j dd| ¡  ¡ qÜW | j d¡ | j ¡  n| j d¡ | j ¡  0 d S )Nz^\s*\nrP   z\n\s*$rl   r  rg   r„   r_   rá   rd   ú:r   r   z	^([ \t]*))ÚreÚsubr%  r@   Zundo_block_startrf   ré   ru  ÚrstripÚendswithr|  r_   r  r~   ÚsearchÚgrouprq   r{  Zundo_block_stop)r<   rÂ   rc   ry   ÚprefixZorig_base_indentZnew_base_indentr   r&   r&   r'   r~  ¹  s.    



ÿzPyShell.recallc                 C   s–   | j  dd¡}t|ƒ}|dkr8||d  dv r8|d }q|dkrX||d  dkrX|d }|dkrz||d  dv rz|d }qX|d |… }| j |¡ d S )Nr”   rá   r   r   z 	rl   )r@   ru  r~   r\   r#  )r<   r   rß   r&   r&   r'   r€  Ó  s    

zPyShell.runitc                 C   s\   | j jr| j  ¡ S z
tj W n    tjdd| jd Y d S 0 ddlm	} || j
| jƒ d S )NzNo stack tracez@There is no stack trace yet.
(sys.last_traceback is not defined)r	   r   )ÚStackBrowser)r\   rÕ   r  r±   Úlast_tracebackrv   rw   r@   Zidlelib.stackviewerr  ru   rD   )r<   rc   r  r&   r&   r'   r0  á  s    

ýzPyShell.open_stack_viewerc                 C   s   | j  d¡ | j  d¡ d S )Nr”   râ   )r@   r{  r‘   r&   r&   r'   rS  ï  s    zPyShell.view_restart_markc                 C   s   | j jdd dS )z&Callback for Run/Restart Shell Cntl-F6TrÐ   N)r\   rí   r‘   r&   r&   r'   rT  ó  s    zPyShell.restart_shellc                 C   s:   |   ¡  | j | j¡ | j dd¡ |  ¡  | j ¡  d S )Nr_   rá   )	rÿ   r˜   r   rL  r@   ré   Úset_line_and_columnrJ   Z
reset_undor†   r&   r&   r'   rë   ÷  s
    zPyShell.showpromptc                 C   sP   | j jj}t|ddd}d | |¡¡}| d¡s:|d7 }| jj 	d|d¡ d S )Nr?  T)r«   ÚtabsizeZexpand_tabsrl   r}  r—   )
r\   r°   r«   r   rH   rB  r‰  ZperZbottomr_   )r<   r(  r«   ÚwrapperZwrapped_msgr&   r&   r'   Úshow_warningþ  s    

zPyShell.show_warningc                 C   sb   | j  dd¡}| jr | j |¡ | j  d¡dkr>| j  dd¡ | j  dd¡ |  ¡  | j ¡  d S )Nr”   rá   zend-2crl   )	r@   ru  r[  Zstorer_   ré   r  ZctipZremove_calltip_window)r<   r  r&   r&   r'   rÿ     s    zPyShell.resetoutputr&   c                 C   sX   z0| j  dd¡ t | ||d¡}| j  dd¡ W n   ‚ Y n0 | jrTd| _tsTt‚|S )Nr”   Úrightrã   F)r@   rê   r   r   r9  r  rý   )r<   rÂ   r¤   Úcountr&   r&   r'   r     s    zPyShell.writec                    s:   z| j  ddd¡rW dS W n ty.   Y dS 0 tƒ  ¡ S )Nry  rŸ   r”   Údisabled)r@   r¡   r¢   ÚsuperrM   r†   ©Ú	__class__r&   r'   rM     s    
zPyShell.rmenu_check_cutc                    s   | j  ddd¡rdS tƒ  ¡ S )Nr_   rŸ   r”   r•  )r@   r¡   r–  rN   r†   r—  r&   r'   rN   &  s    zPyShell.rmenu_check_paste)N)N)N)N)N)N)N)r&   )9r‡   rˆ   r‰   r   ri  r’   r   r   r   rG  r   r‹   Zallow_line_numbersZidlelib.historyr=  r?   r\  rq  rç   r9  rv  rþ   rr  r_  r`  rQ  ra  rR  rb  rc  r6  r  rå   r…   rh  rj  rn  r   rè   rw  rx  rO  rP  rN  rM  r~  r€  r0  rS  rT  rë   r’  rÿ   r   rM   rN   Ú__classcell__r&   r&   r—  r'   r   B  sf   
ÿ
C

ÿ
	?




r   c              
   C   s2   | j dkr.dD ]}|  |dd|  |d¡ ¡ qdS )z6Make paste replace selection on x11.  See issue #5124.Zx11)ÚTextZEntryZSpinboxz	<<Paste>>z%catch {%W delete sel.first sel.last}
N)Z_windowingsystemZ
bind_class)ru   Úclsr&   r&   r'   Úfix_x11_paste,  s    

ÿýrœ  a¢  
USAGE: idle  [-deins] [-t title] [file]*
       idle  [-dns] [-t title] (-c cmd | -r file) [arg]*
       idle  [-dns] [-t title] - [arg]*

  -h         print this help message and exit
  -n         run IDLE without a subprocess (DEPRECATED,
             see Help/IDLE Help for details)

The following options will override the IDLE 'settings' configuration:

  -e         open an edit window
  -i         open a shell window

The following options imply -i and will open a shell:

  -c cmd     run the command in a shell, or
  -r file    run script from file

  -d         enable the debugger
  -s         run $IDLESTARTUP or $PYTHONSTARTUP before anything else
  -t title   set title of shell window

A default edit window will be bypassed when -c, -r, or - are used.

[arg]* are passed to the command (-c) or script (-r) in sys.argv[1:].

Examples:

idle
        Open an edit window or shell depending on IDLE's configuration.

idle foo.py foobar.py
        Edit the files, also open a shell if configured to start with shell.

idle -est "Baz" foo.py
        Run $IDLESTARTUP or $PYTHONSTARTUP, edit foo.py, and open a shell
        window with the title "Baz".

idle -c "import sys; print(sys.argv)" "foo"
        Open a shell window and run the command, passing "-c" in sys.argv[0]
        and "foo" in sys.argv[1].

idle -d -s -r foo.py "Hello World"
        Open a shell window, run a startup script, enable the debugger, and
        run foo.py, passing "foo.py" in sys.argv[0] and "Hello World" in
        sys.argv[1].

echo "import sys; print(sys.argv)" | idle - "foobar"
        Open a shell window, run the script piped in, passing '' in sys.argv[0]
        and "foobar" in sys.argv[1].
c               
      s\  dd l } ddlm} ddlm} ddlm} tdƒ dad}d}d}d }d }d}	z|   tj	dd … d¡\}
}W nF | j
y´ } z,td	|tf tjd
 t d¡ W Y d }~n
d }~0 0 |
D ]Ô\}}|dkrÒ|}d}|dkrâd}d}|dkrîd}|dkrtj t¡ t ¡  |dkrd}|dkr6tdtjd
 da|dkrj|}tj |¡rTntd|ƒ t ¡  d}|dkr|d}	d}|dkrº|t_d}qº|r²|d dkr²tj ¡ }d}tttjƒƒD ]}tj tj| ¡tj|< qÀ|r
|d dkr
dg|dd …  t_	nª|rdg| t_	n–|r2|g| t_	n‚|r’d}g }|D ]}| tj |¡¡ qD|D ],}tj |¡}|tjvrbtj d|¡ qbn"t ¡ }|tjvr´tj d|¡ tj ddddd}|pÎ|}|pÚ| }trî|sît!ƒ  t"dda#t# $¡  dd l%m&} |t#ƒ tj 'tj t(¡d!¡‰|ƒ d"krRtj 'ˆd#¡}t#j)|d$ nZ| *¡ s¬t+d%krpd&‰ d'}nd(‰ d)}‡ ‡fd*d+„|D ƒ}d,d+„ |D ƒ}t#j,dg|¢R Ž  t-t#ƒ t.t#ƒ t/t#ƒa0| 1t#t0¡ |r|s|s|d d … D ] }t0 2|¡d u rî| 3|¡ qî|st0 4¡  |rTt0 5¡ }|s6d S | *¡ rZt0j6rZ|j7 8¡  nt0j9}|rh| :¡  |	r¨tj; <d-¡p†tj; <d.¡}|r¨tj |¡r¨|j= >|¡ |s´|rü|j= ?d/tj	f ¡ |rÜ|j= @|¡ n|r4|j= A|¡ |j= >|¡ n8|r4| Bt#¡}|r| C|¡ | D¡ }|r4| C|¡ t0jErHt# F¡  q4t# G¡  tdƒ d S )0Nr   )Úsystem)Útesting)ÚmacosxTFr   zc:deihnr:st:zError: %s
%sr   r   rÊ   z-dz-ez-hz-iz-nz: Warning: running IDLE without a subprocess is deprecated.z-rzNo script file: z-sz-tú-rP   rÅ   rÆ   zeditor-on-startuprÇ   )rÉ   ZIdle)Z	classNamer   ZIconsZWindowszidle.ico)rÈ   g333333!@z.png)é   é    é0   é   z.gif)r¡  r¢  r£  c                    s"   g | ]}t j ˆd |ˆ f ¡‘qS )z	idle_%d%s)rF   rG   rH   )rÁ   Úsize©ZextZicondirr&   r'   rÃ   Ö  s   ÿzmain.<locals>.<listcomp>c                 S   s   g | ]}t t|d ‘qS ))Zmasterr   )Z
PhotoImageru   )rÁ   Úiconfiler&   r&   r'   rÃ   Ø  s   ÿZIDLESTARTUPZPYTHONSTARTUPzbif 1:
            import sys as _sys
            _sys.argv = %r
            del _sys
            
)HÚgetoptrm  r  r  rž  rŸ  r,   r  r±   ÚargvÚerrorr   Ú	usage_msgr—   Úexitr–   r   rF   rG   r|   r   ri  r™   r  r‚   r~   r  rZ   Údirnamer_   Úgetcwdr   rÌ   ZNoDefaultRootrH  ru   rI  Úidlelib.runr   rH   Ú__file__Zwm_iconbitmapZisAquaTkÚ	TkVersionZwm_iconphotor   rœ  rŒ   rD   ZsetupAppro   re   ÚnewrE   Údictr   Úlowerr[   rc  Úenvironru  r\   r  rù   r  r'  ZtkVersionWarningr’  ZpreferTabsPreferenceWarningZinversedictrt  Zdestroy)r¨  r  rž  rŸ  Zenable_shellZenable_editr]   ÚcmdZscriptZstartupZoptsrL   r(  ÚoÚarß   Zpathxr$   ÚdirZ
edit_startr   r§  ZsizesZ	iconfilesZiconsr>  ZtkversionwarningZprefer_tabs_preference_warningr&   r¦  r'   rÅ   m  s$    


ÿ



ÿ



ÿÿ
ÿü


rÅ   F)NN)Pr±   r‡   r²   ro  ÚImportErrorr   r  r8  rm  ZctypesZPROCESS_SYSTEM_DPI_AWAREZOleDLLZSetProcessDpiAwarenessr    r!   Ztkinter.messageboxZ
messageboxrv   r±  rH  ru   rI  r¯  r   rw   r!  r   r/   rF   Úos.pathr   r†  rØ   r½   Útextwrapr   rð   rÓ   r  r*   Zidlelib.colorizerr   Zidlelib.configr   r  r   r   Zidlelib.editorr   r   Zidlelib.filelistr   Zidlelib.outwinr   r   r   r   r   Zidlelib.undor   rÒ   r¶   r   r(   r)   r,   Ú
checkcacher6   r7   rŒ   r’   r   Z	RPCClientr¦   r­   r®   r   rœ  r«  rÅ   r&   r&   r&   r'   Ú<module>   s¨   ÿ
þ ÿ
ÿ
 ?   0   m6 6
