Ë
    #´˜jòò  ã                   ó°  — d dl Z edk(  re j                  d   e j                  d<   	 d dl­ e j                  dk(  rd d	l	m
Z
  e
«        d d
lm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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"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/m0Z0m1Z1 d dl2m3Z3 da4dZ5d Z6	 dZ7e7e8_7        e7e9_7        e j                  a;	 d5d„Z<da=d„ Z> e>d«       dej~                  fd „Z@e@e_?         G d!„ d"e&«      ZA G d#„ d$e)«      ZB G d%„ d&e«      ZC G d'„ d(e3«      ZD G d)„ d*e!«      ZE G d+„ d,e-jŒ                  «      ZGd-„ ZH G d.„ d/e«      ZI G d0„ d1e+«      ZJd2„ ZKd3ZLd4„ ZMedk(  r eM«         e>d«       y# e$ r  ede j                  ¬«        ed«      ‚w xY w# e:$ r Y Œãw xY w)6é    NÚ__main__zidlelib.pyshell)Ú*zJ** IDLE can't import Tkinter.
Your Python may not be configured for Tk. **©Úfileé   Úwin32)Úfix_win_hidpi)Ú
messagebox)ÚInteractiveInterpreter)Úpython_version)ÚTextWrapper)ÚColorDelegator)ÚidleConf)Ú	Delegator©Údebugger)Ú
debugger_r)ÚEditorWindowÚfixwordbreaks)ÚFileList)ÚOutputWindow)Úreplace)Úrpc)Úidle_formatwarningÚStdInputFileÚStdOutputFile)ÚUndoDelegatorFz	127.0.0.1zCtrl-D (end-of-file)c           	      ó    — |€t         }	 |j                  t        | ||||¬«      «       |j                  d«       y# t        t        f$ r Y yw xY w)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)Úlinez>>> )Úwarning_streamÚwriter   ÚAttributeErrorÚOSError)ÚmessageÚcategoryÚfilenameÚlinenor   r   s         ú!lib/python3.12/idlelib/pyshell.pyÚidle_showwarningr)   C   sW   € ð €|ÜˆðØ�
‰
Ô%Ø˜ 8¨V¸$ô@ô 	Aà�
‰
�6ÕøÜœGÐ$ò Ùðús   Š0; »AÁAc                 ó†   — | r't         € t        j                  a t        t        _        yyt         �t         t        _        da yy)z>Replace warning.showwarning with idle_showwarning, or reverse.N)Ú_warnings_showwarningÚwarningsÚshowwarningr)   )Úcaptures    r(   Úcapture_warningsr/   V   sA   € ñ Ü Ð(Ü$,×$8Ñ$8Ð!Ü#3ŒHÕ ð )ô !Ð,Ü#8ŒHÔ Ø$(Ñ!ð -ó    Tc                 óÀ   — t         j                  }i }t        |«      D ]%  }|dd |dd z   dk(  sŒ|j                  |«      ||<   Œ'  || «       |j	                  |«       y)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&   Úorig_checkcacher5   ÚsaveÚkeys        r(   Úextended_linecache_checkcacher<   e   s`   € ô �O‰O€EØ€DÜ�EŽ{ˆØˆr�ˆ7�S˜˜�XÑ Ó%ØŸ	™	 #›ˆD�ŠIð ñ �HÔØ	‡L�L�Õr0   c                   ó`   — e Zd ZdZd„ Zg d¢Zdd„Zd„ Zdd„Zdd„Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zy)ÚPyShellEditorWindowz6Regular text edit window in IDLE, supports breakpointsc                 ór  — g | _         t        j                  | g|¢­Ž  | j                  j	                  d| j
                  «       | j                  j	                  d| j                  «       | j                  j	                  d| j                  j                  «       t        j                  j                  t        j                  d«      | _        | j                  j                   | fd„}| j                  j#                  |«       | j                  j$                  r| j'                  «        | j)                  «        y )Nú<<set-breakpoint>>ú<<clear-breakpoint>>z<<open-python-shell>>zbreakpoints.lstc                 ó2   — |j                  «         | «        y ©N)Úrestore_file_breaks)Úold_hookÚselfs     r(   Úfilename_changed_hookz;PyShellEditorWindow.__init__.<locals>.filename_changed_hookŠ   s   € à×$Ñ$Ô&Ù�Jr0   )Úbreakpointsr   Ú__init__ÚtextÚbindÚset_breakpoint_eventÚclear_breakpoint_eventÚflistÚ
open_shellÚosÚpathÚjoinr   ÚuserdirÚbreakpointPathÚioÚfilename_change_hookÚset_filename_change_hookr&   rD   Úcolor_breakpoint_text)rF   ÚargsrG   s      r(   rI   zPyShellEditorWindow.__init__   sà   € ØˆÔÜ×Ñ˜dÐ* TÓ*Ø�	‰	�‰Ð+¨T×-FÑ-FÔGØ�	‰	�‰Ð-¨t×/JÑ/JÔKØ�	‰	�‰Ð.°·
±
×0EÑ0EÔFô !Ÿg™gŸl™lÜ× Ñ Ð"3ó5ˆÔð ,0¯7©7×+GÑ+GØ'+ó	ð 	�‰×(Ñ(Ð)>Ô?Ø�7‰7×ÒØ×$Ñ$Ô&Ø×"Ñ"Õ$r0   ))ÚCutz<<cut>>Úrmenu_check_cut)ÚCopyz<<copy>>Úrmenu_check_copy)ÚPastez	<<paste>>Úrmenu_check_paste)NNN)zSet Breakpointr@   N)zClear BreakpointrA   Nc                 óº   — | j                   €y|r+t        j                  «       }t        j                  |d«      }ndddœ}| j                  j                  d|«       y)z,Turn colorizing of breakpoint text on or offNÚbreakÚ )Ú
foregroundÚ
backgroundÚBREAK)rU   r   ÚCurrentThemeÚGetHighlightrJ   Ú
tag_config)rF   ÚcolorÚthemeÚcfgs       r(   rX   z)PyShellEditorWindow.color_breakpoint_textœ   sO   € à�7‰7ˆ?àÙÜ×)Ñ)Ó+ˆEÜ×'Ñ'¨¨wÓ7‰Cà!#°2Ñ6ˆCØ�	‰	×Ñ˜W cÕ*r0   c                 ó”  — | j                   }| j                  j                  }|j                  dd|z  d|dz   z  «       	 | j                  j                  |«       	 | j                  j                  j                  j                  }|j                  ||«       y # t        $ r | j                  j                  |«       Y Œdw xY w#  Y y xY w)Nre   z%d.0r   )rJ   rU   r&   Útag_addrH   ÚindexÚ
ValueErrorÚappendrN   ÚpyshellÚinterpr   Úset_breakpoint)rF   r'   rJ   r&   Údebugs        r(   rs   z"PyShellEditorWindow.set_breakpoint¨   s®   € Ø�y‰yˆØ—7‘7×#Ñ#ˆØ�‰�W˜f v™o¨v¸À¹Ñ/BÔCð	,Ø×Ñ×"Ñ" 6Ô*ð	Ø—J‘J×&Ñ&×-Ñ-×6Ñ6ˆEØ× Ñ  ¨6Õ2øô	 ò 	,Ø×Ñ×#Ñ# FÖ+ð	,ûð
	Ùús   Á B Á<C Â$C Â?C ÃCNc                 óÖ   — | j                   }| j                  j                  }|s|j                  «        y t	        t        |j                  d«      «      «      }| j                  |«       y )NÚinsert)rJ   rU   r&   ÚbellÚintÚfloatrn   rs   )rF   ÚeventrJ   r&   r'   s        r(   rL   z(PyShellEditorWindow.set_breakpoint_event¶   sO   € Ø�y‰yˆØ—7‘7×#Ñ#ˆÙØ�I‰IŒKØÜ”U˜4Ÿ:™: hÓ/Ó0Ó1ˆØ×Ñ˜FÕ#r0   c                 ó¨  — | j                   }| j                  j                  }|s|j                  «        y t	        t        |j                  d«      «      «      }	 | j                  j                  |«       |j                  ddd«       	 | j                  j                  j                  j                  }|j                  ||«       y #  Y ŒUxY w#  Y y xY w)Nrv   re   úinsert linestartzinsert lineend +1char)rJ   rU   r&   rw   rx   ry   rn   rH   ÚremoveÚ
tag_removerN   rq   rr   r   Úclear_breakpoint)rF   rz   rJ   r&   r'   rt   s         r(   rM   z*PyShellEditorWindow.clear_breakpoint_event¿   s³   € Ø�y‰yˆØ—7‘7×#Ñ#ˆÙØ�I‰IŒKØÜ”U˜4Ÿ:™: hÓ/Ó0Ó1ˆð	Ø×Ñ×#Ñ# FÔ+ð 	�‰˜Ð!3Ø/ô	1ð	Ø—J‘J×&Ñ&×-Ñ-×6Ñ6ˆEØ×"Ñ" 8¨VÕ4øð	Ùûð	Ùús   ÁC Â	<C ÃC
ÃCc                 óJ  — | j                   r�| j                  }| j                  j                  }|s|j	                  «        y g | _         |j                  ddt        «       	 | j                  j                  j                  j                  }|j                  |«       y y #  Y y xY w)Nre   ú1.0)rH   rJ   rU   r&   rw   r~   ÚENDrN   rq   rr   r   Úclear_file_breaks)rF   rJ   r&   rt   s       r(   rƒ   z%PyShellEditorWindow.clear_file_breaksÒ   s‡   € Ø×ÒØ—9‘9ˆDØ—w‘w×'Ñ'ˆHÙØ—	‘	”ØØ!ˆDÔØ�O‰O˜G U¬CÔ0ðØŸ
™
×*Ñ*×1Ñ1×:Ñ:�Ø×'Ñ'¨Õ1ð øðÙús   Á!;B ÂB"c                 óö  — | j                   }| j                  j                  }	 t        | j                  «      5 }|j                  «       }ddd«       	 t        | j                  d«      5 }D ](  }|j                  |dz   «      rŒ|j                  |«       Œ* | j                  «        | j                   }|r#|j                  |dz   t        |«      z   dz   «       ddd«       y# 1 sw Y   Œ˜xY w# t        $ r g }Y Œ¨w xY w# 1 sw Y   yxY w# t        $ re}t        | j                  dd«      sDd| j                  _        t        j                  dd	t        |«      z  | j                   ¬
«       Y d}~yY d}~yd}~ww xY w)z#Save breakpoints when file is savedNÚwÚ=Ú
Úbreakpoint_error_displayedFTz
IDLE Errorz$Unable to update breakpoint list:
%s)Útitler$   Úparent)rH   rU   r&   ÚopenrT   Ú	readlinesr#   Ú
startswithr!   Úupdate_breakpointsÚstrÚgetattrÚrootrˆ   r
   Ú	showerrorrJ   )rF   Úbreaksr&   ÚfpÚlinesÚnew_filer   Úerrs           r(   Ústore_file_breaksz%PyShellEditorWindow.store_file_breaksá   sF  € ð$ ×!Ñ!ˆØ—7‘7×#Ñ#ˆð	Ü�d×)Ñ)Ô*¨bØŸ™›�÷ +ð	&Ü�d×)Ñ)¨3Ô/°8Û!�DØŸ?™?¨8°c©>Õ:Ø Ÿ™ tÕ,ð "ð ×'Ñ'Ô)Ø×)Ñ)�ÙØ—N‘N 8¨c¡>´C¸³KÑ#?À$Ñ#FÔG÷ 0Ð/÷ +Ð*ûäò 	ØŠEð	ú÷ 0Ð/ûô ò 	&Ü˜4Ÿ9™9Ð&BÀEÔJØ7;�—	‘	Ô4Ü×$Ñ$¨<ØCÜ˜c›(ñ#àŸ9™9÷&ò &ô Kûð	&úsf   ¤C- ¹C!Á
C- ÁD
 Á)C>ÂAC>ÃD
 Ã!C*Ã&C- Ã-C;Ã:C;Ã>DÄD
 ÄD
 Ä
	E8ÄAE3Å3E8c                 óè  — | j                   j                  «        | j                  €y | j                  j                  }|€y t        j
                  j                  | j                  «      r}t        | j                  «      5 }|j                  «       }d d d «       D ]I  }|j                  |dz   «      sŒt        |t        |«      dz   d  «      }|D ]  }| j                  |«       Œ ŒK y y # 1 sw Y   ŒYxY w)Nr†   r   )rJ   r8   rU   r&   rP   rQ   ÚisfilerT   r‹   rŒ   r�   ÚevalÚlenrs   )rF   r&   r”   r•   r   Úbreakpoint_linenumbersÚbreakpoint_linenumbers          r(   rD   z'PyShellEditorWindow.restore_file_breaks  sÈ   € Ø�	‰	×ÑÔØ�7‰7ˆ?àØ—7‘7×#Ñ#ˆØÐØÜ�7‰7�>‰>˜$×-Ñ-Ô.Ü�d×)Ñ)Ô*¨bØŸ™›�÷ +ã�Ø—?‘? 8¨c¡>Õ2Ü-1°$´s¸8³}ÀQ±Ð7GÐ2HÓ-IÐ*Û1GÐ-Ø×+Ñ+Ð,AÕBñ 2Hñ ð /ß*Ð*ús   Á?C(Ã(C1c                 ón   — | j                   }|j                  d«      }| j                  |«      }|| _        y)z3Retrieves all the breakpoints in the current windowre   N)rJ   Ú
tag_rangesÚranges_to_linenumbersrH   )rF   rJ   ÚrangesÚlinenumber_lists       r(   rŽ   z&PyShellEditorWindow.update_breakpoints  s1   € à�y‰yˆØ—‘ Ó)ˆØ×4Ñ4°VÓ<ˆØ*ˆÕr0   c                 ó  — g }t        dt        |«      d«      D ]i  }t        t        ||   j                  «      «      }t        t        ||dz      j                  «      «      }||k  sŒN|j                  |«       |dz  }||k  rŒŒk |S )Nr   é   r   )Úrangerœ   rx   ry   Ústringrp   )rF   r¢   r•   rn   r'   Úends         r(   r¡   z)PyShellEditorWindow.ranges_to_linenumbers#  s€   € ØˆÜ˜1œc &›k¨1Ö-ˆEÜœ˜v e™}×3Ñ3Ó4Ó5ˆFÜ”e˜F 5¨¡7™O×2Ñ2Ó3Ó4ˆCØ˜3“,Ø—‘˜VÔ$Ø˜!‘�ð ˜3”,ð .ð ˆr0   c                 óN   — | j                  «        t        j                  | «       y)z7Extend base method - clear breaks when module is closedN)rƒ   r   Ú_close©rF   s    r(   rª   zPyShellEditorWindow._close4  s   € à×ÑÔ Ü×Ñ˜DÕ!r0   )TrC   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rI   Úrmenu_specsrX   rs   rL   rM   rƒ   r˜   rD   rŽ   r¡   rª   © r0   r(   r>   r>   |   sE   „ Ù<ò%ò(€Kó
+òó$óò&ò(&òTCò"+òó""r0   r>   c                   ó    — e Zd ZdZeZdZdd„Zy)ÚPyShellFileListz8Extend base class: IDLE supports a shell and breakpointsNc                 ó   — | j                   r0| j                   j                  j                  «        | j                   S t        | «      | _         | j                   r| j                   j	                  «       sy | j                   S rC   )rq   ÚtopÚwakeupÚPyShellÚbegin©rF   rz   s     r(   rO   zPyShellFileList.open_shellC  s\   € Ø�<Š<Ø�L‰L×Ñ×#Ñ#Ô%ð �|‰|Ðô	 # 4›=ˆDŒLØ�|Š|Ø—|‘|×)Ñ)Ô+ØØ�|‰|Ðr0   rC   )r¬   r­   r®   r¯   r>   r   rq   rO   r±   r0   r(   r³   r³   :  s   „ Ù>ð '€Là€Gôr0   r³   c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚModifiedColorDelegatorz8Extend base class: colorizer for the shell window itselfc                 óz   — | j                  ddd«       | j                  ddd«       t        j                  | «       y )NÚTODOr�   ÚiomarkÚSYNC)r~   rm   r   Úrecolorize_mainr«   s    r(   rÀ   z&ModifiedColorDelegator.recolorize_mainP  s0   € Ø�‰˜  xÔ0Ø�‰�V˜U HÔ-Ü×&Ñ& tÕ,r0   c                 óL   — | j                   D ]  }| j                  |dd«       Œ y )Nr¾   r¨   )Útagdefsr~   )rF   Útags     r(   Úremovecolorsz#ModifiedColorDelegator.removecolorsU  s    € à—<”<ˆCØ�O‰O˜C ¨5Õ1ñ  r0   N)r¬   r­   r®   r¯   rÀ   rÄ   r±   r0   r(   r»   r»   N  s   „ Ù>ò-ó
2r0   r»   c                   ó2   ‡ — e Zd ZdZdd„Zdd„Zˆ fd„Zˆ xZS )ÚModifiedUndoDelegatorz;Extend base class: forbid insert/delete before the I/O markc                 óÆ   — 	 | j                   j                  |dd«      r| j                   j                  «        y 	 t	        j
                  | |||«       y # t        $ r Y Œ$w xY w©NÚ<r¾   )ÚdelegateÚcomparerw   ÚTclErrorr   rv   ©rF   rn   ÚcharsÚtagss       r(   rv   zModifiedUndoDelegator.insert]  s_   € ð	Ø�}‰}×$Ñ$ U¨C°Ô:Ø—‘×"Ñ"Ô$Øð ;ô
 	×Ñ˜T 5¨%°Õ6øô ò 	Ùð	ús   ‚7A Á	A ÁA c                 óÄ   — 	 | j                   j                  |dd«      r| j                   j                  «        y 	 t	        j
                  | ||«       y # t        $ r Y Œ#w xY wrÈ   )rÊ   rË   rw   rÌ   r   Údelete)rF   Úindex1Úindex2s      r(   rÑ   zModifiedUndoDelegator.deletef  s]   € ð	Ø�}‰}×$Ñ$ V¨S°(Ô;Ø—‘×"Ñ"Ô$Øð <ô
 	×Ñ˜T 6¨6Õ2øô ò 	Ùð	ús   ‚7A Á	AÁAc                 óÊ   •‡— | j                   j                  Šˆfd„| j                   _        	 t        ‰| �  |«       ‰| j                   _        y # ‰| j                   _        w xY w)Nc                 ó   •—  ‰| |d«      S ©NÚstdinr±   )rn   rÎ   Úorig_inserts     €r(   Ú<lambda>z2ModifiedUndoDelegator.undo_event.<locals>.<lambda>v  s   ø€ ¡¨U°E¸7Ô!Cr0   )rÊ   rv   ÚsuperÚ
undo_event)rF   rz   rØ   Ú	__class__s     @€r(   rÛ   z ModifiedUndoDelegator.undo_evento  sN   ù€ ð
 —m‘m×*Ñ*ˆãCð 	�‰Ôð	/Ü‰GÑ˜uÔ%à#.ˆD�M‰MÕ ø ;ˆD�M‰MÕ ús   ®A ÁA"rC   )r¬   r­   r®   r¯   rv   rÑ   rÛ   Ú__classcell__©rÜ   s   @r(   rÆ   rÆ   [  s   ø„ ÙAó7ó3÷/ð /r0   rÆ   c                   ó   — e Zd ZdZdd„Zy)ÚUserInputTaggingDelegatorz.Delegator used to tag user input with "stdin".Nc                 óF   — |€d}| j                   j                  |||«       y rÖ   )rÊ   rv   rÍ   s       r(   rv   z UserInputTaggingDelegator.insert  s"   € Øˆ<ØˆDØ�‰×Ñ˜U E¨4Õ0r0   rC   )r¬   r­   r®   r¯   rv   r±   r0   r(   rà   rà   }  s
   „ Ù8ô1r0   rà   c                   ó   — e Zd Zd„ Zy)ÚMyRPCClientc                 ó   — t         ‚)z0Override the base class - just re-raise EOFError)ÚEOFErrorr«   s    r(   Ú
handle_EOFzMyRPCClient.handle_EOF‡  s   € äˆr0   N)r¬   r­   r®   ræ   r±   r0   r(   rã   rã   …  s   „ ór0   rã   c                 ó”   — d|xs d› d�}| t        |«      k\  r,t        | t        |«      z
  d«      \  }}||z   dz  › |› |dz  › �S |d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: ÚShellz =r¥   r†   Néþÿÿÿ)rœ   Údivmod)Úwidthr&   rÃ   ÚdivÚmods        r(   Úrestart_linerî   ‹  sf   € ð ˜Ò+ GÐ,¨BÐ
/€CØ”�C“ÒÜ˜5¤# c£(™?¨QÓ/‰ˆˆSØ�s‘7˜C‘-�   c¨#¡g YÐ/Ð/à�3�Bˆxˆr0   c                   óÚ   — e Zd Zd„ ZdZdZdZd„ Zd„ Zd„ Z	d d„Z
d„ Zd„ Zd	„ Zd
„ Zd!d„ZdZd„ ZdZd„ Zd„ Zd„ Zd„ ZdZd„ Zd"d„Zd„ Zd„ Zd„ Zd"d„Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%y)#ÚModifiedInterpreterc                 óö   — || _         t        j                  d   j                  }t	        j
                  | |¬«       d| _        d | _        t        | _	        | j                  j                  j                  | _        y )Nr   )ÚlocalsF)Ú	tkconsoleÚsysÚmodulesÚ__dict__r   rI   Ú
restartingÚsubprocess_arglistÚPORTÚportÚcompileÚcompilerÚflagsÚoriginal_compiler_flags)rF   ró   rò   s      r(   rI   zModifiedInterpreter.__init__›  s[   € Ø"ˆŒÜ—‘˜ZÑ(×1Ñ1ˆÜ×'Ñ'¨°VÕ<ØˆŒØ"&ˆÔÜˆŒ	Ø'+§|¡|×'<Ñ'<×'BÑ'BˆÕ$r0   Nc                 óŽ   — | j                   €| j                  «       | _         t        j                  | j                   «      | _        y rC   )rø   Úbuild_subprocess_arglistÚ
subprocessÚPopenÚ
rpcsubprocr«   s    r(   Úspawn_subprocessz$ModifiedInterpreter.spawn_subprocess¨  s7   € Ø×"Ñ"Ð*Ø&*×&CÑ&CÓ&EˆDÔ#Ü$×*Ñ*¨4×+BÑ+BÓCˆ�r0   c                 ó  — | j                   dk7  sJ d«       ‚t        j                  D �cg c]  }d|z   ‘Œ	 }}t        j                  ddddd¬	«      }d
|›d�}t        j
                  g|z   d|t        | j                   «      gz   S c c}w )Nr   z/Socket should have been assigned a port number.z-WÚmainÚGeneralzdelete-exitfuncFÚbool)ÚdefaultÚtypez#__import__('idlelib.run').run.main(Ú)ú-c)rú   rô   Úwarnoptionsr   Ú	GetOptionÚ
executabler�   )rF   Úsr…   Ú	del_exitfÚcommands        r(   r   z,ModifiedInterpreter.build_subprocess_arglist­  s�   € Ø—	‘	˜1’ð 	?Ø=ó	?�ä"ŸšÓ/™˜!ˆT�A‹X˜ˆÐ/ô ×&Ñ& v¨yÐ:KØ/4¸6ôCˆ	à7¸	°}ÀAÐFˆÜ—‘Ð !Ñ# t¨W´c¸$¿)¹)³nÐ&EÑEÐEùò 0s   ©Bc                 óD  — t         | j                  f}t        d«      D ])  }t        j                  |«       	 t        |«      | _         n | j                  «        y | j                  j                  j                  «       d   | _        t        dk7  rC| j                  j                  j                  t        j                  t        j                  d«       | j!                  «        | j                  j                  j#                  d«       	 | j                  j%                  «        | j                  j+                  d| j,                  «       | j                  j+                  d| j,                  j.                  «       | j                  j+                  d| j,                  j0                  «       | j                  j+                  d| j,                  j2                  «       | j                  j+                  d	| j,                  j4                  «       | j                  j+                  d
t6        «       | j                  j+                  d| «       | j9                  d¬«       | j;                  «        | j                  S # t        $ r Y �Œaw xY w# t&        $ r | j)                  «        Y y w xY w)Né   r   r   é
   Úconsoler×   ÚstdoutÚstderrrN   r4   rr   T©Úwith_cwd)ÚHOSTrú   r¦   ÚtimeÚsleeprã   Úrpccltr#   Údisplay_port_binding_errorÚlistening_sockÚgetsocknamerù   Ú
setsockoptÚsocketÚ
SOL_SOCKETÚSO_REUSEADDRr  Ú
settimeoutÚacceptÚTimeoutErrorÚdisplay_no_subprocess_errorÚregisterró   r×   r  r  rN   r4   Útransfer_pathÚpoll_subprocess)rF   ÚaddrÚis      r(   Ústart_subprocessz$ModifiedInterpreter.start_subprocess¹  sò  € Ü�d—i‘iÐ ˆä�q–ˆAÜ�J‰J�qŒMðÜ)¨$Ó/�”Ùð	 ð ×+Ñ+Ô-Øà—K‘K×.Ñ.×:Ñ:Ó<¸QÑ?ˆŒ	ä�1Š9ð
 �K‰K×&Ñ&×1Ñ1´&×2CÑ2CÜ+1×+>Ñ+>ÀôCà×ÑÔð 	�‰×"Ñ"×-Ñ-¨bÔ1ð	Ø�K‰K×ÑÔ ð 	�‰×Ñ˜Y¨¯©Ô7Ø�‰×Ñ˜W d§n¡n×&:Ñ&:Ô;Ø�‰×Ñ˜X t§~¡~×'<Ñ'<Ô=Ø�‰×Ñ˜X t§~¡~×'<Ñ'<Ô=Ø�‰×Ñ˜W d§n¡n×&:Ñ&:Ô;Ø�‰×Ñ˜[¬)Ô4Ø�‰×Ñ˜X tÔ,Ø×Ñ DÐÔ)Ø×ÑÔØ�{‰{ÐøôC ò Úðûô* ò 	Ø×,Ñ,Ô.Ùð	ús#   ·I3Ä	J É3	J É?J ÊJÊJc                 ó(  — | j                   r| j                  S d| _         | j                  «       }|r 	 t        j                  | j                  «       | j                  j                  «        | j                  «        | j                  }|j                  }d|_        | j                  «        	 | j                  j                  «        | j                  |¬«       |j                  «        |j                  j!                  dd«       |j#                  d«       |j#                  t%        |j&                  |«      «       |j                  j)                  dd«       |j                  j+                  dd«       |s|j-                  «        |r/t        j.                  | j                  «       |j1                  «        | j2                  | j4                  j6                  _        d| _         | j                  S #  Y �Œ xY w# t        $ r | j                  «        Y y w xY w)	NTFr  r¾   úend-1cr‡   ÚrestartÚleft)r÷   r  Úgetdebuggerr   Úclose_subprocess_debuggerÚcloseÚterminate_subprocessró   Ú	executingr  r'  r(  r)  r+  Ústop_readlinerJ   rÑ   r!   rî   rë   Úmark_setÚmark_gravityÚ
showpromptÚrestart_subprocess_debuggerÚload_breakpointsrþ   rû   rü   rý   )rF   r  r&   rt   r  Úwas_executings         r(   Úrestart_subprocessz&ModifiedInterpreter.restart_subprocessä  sž  € Ø�?Š?Ø—;‘;ÐØˆŒà× Ñ Ó"ˆÙðä×4Ñ4°T·[±[ÔAð 	�‰×ÑÔØ×!Ñ!Ô#Ø—.‘.ˆØ×)Ñ)ˆØ!ˆÔØ×ÑÔð	Ø�K‰K×ÑÔ ð 	×Ñ HÐÔ-Ø×ÑÔà�‰×Ñ˜H hÔ/Ø�‰�dÔØ�‰”l 7§=¡=°(Ó;Ô<Ø�‰×Ñ˜i¨Ô2Ø�‰×!Ñ! )¨VÔ4ÙØ×ÑÔ áä×2Ñ2°4·;±;Ô?à×"Ñ"Ô$Ø&*×&BÑ&Bˆ�‰×ÑÔ#ØˆŒØ�{‰{ÐøðAÚûô ò 	Ø×,Ñ,Ô.Ùð	ús   ³G- Â,G5 Ç-G2Ç5HÈHc                 ó@   — | j                   j                  dddi «       y )NÚexecÚinterrupt_the_serverr±   )r  Ú
remotecallr«   s    r(   Ú__request_interruptz'ModifiedInterpreter.__request_interrupt  s   € Ø�‰×Ñ˜vÐ'=¸rÀ2ÕFr0   c                 ó`   — t        j                  | j                  ¬«      j                  «        y )N)Útarget)Ú	threadingÚThreadÚ'_ModifiedInterpreter__request_interruptÚstartr«   s    r(   Úinterrupt_subprocessz(ModifiedInterpreter.interrupt_subprocess  s   € Ü×Ñ × 8Ñ 8Ô9×?Ñ?ÕAr0   c                 ó†  — | j                   �/| j                  j                  j                  | j                   «       	 | j                  j
                  j                  «        	 | j                  j                  «        | j                  «        d| j                  _	        d | _        y # t        $ r Y ŒOw xY w# t        $ r Y ŒCw xY w)NF)
Ú_afteridró   rJ   Úafter_cancelr  r   r6  r"   r7  r8  r«   s    r(   Úkill_subprocessz#ModifiedInterpreter.kill_subprocess  s    € Ø�=‰=Ð$Ø�N‰N×Ñ×,Ñ,¨T¯]©]Ô;ð	Ø�K‰K×&Ñ&×,Ñ,Ô.ð	Ø�K‰K×ÑÔð 	×!Ñ!Ô#Ø#(ˆ�‰Ô Øˆ�øô ò 	Ùð	ûô ò 	Ùð	ús#   ½$B% Á"B4 Â%	B1Â0B1Â4	C Â?C c                 ó¬   — 	 | j                   j                  «        	 | j                   j                  «        y# t        $ r Y yw xY w# t        $ r Y yw xY w)z"Make sure subprocess is terminatedN)r  ÚkillÚwaitr#   r«   s    r(   r7  z(ModifiedInterpreter.terminate_subprocess%  sQ   € ð		Ø�O‰O× Ñ Ô"ð
Ø—‘×$Ñ$Õ&øÜò Ùðûô ò 	áð	ús    ‚A �8 ¸	AÁAÁ	AÁAc                 ó®   — |r#dg}|j                  t        j                  «       nt        j                  }| j                  dj	                  |«      «       y )Nrb   zTif 1:
        import sys as _sys
        _sys.path = {!r}
        del _sys
        
)Úextendrô   rQ   Ú
runcommandÚformat)rF   r  rQ   s      r(   r+  z!ModifiedInterpreter.transfer_path2  sA   € ÙØ�4ˆDØ�K‰KœŸ™Õ!ä—8‘8ˆDà�‰ð ÷ ‰f�T‹lõ		r0   c                 óx  — | j                   }|€y 	 |j                  | j                  d¬«      }|r×| j                  j                  «        d | _        |\  }}| j                  j                  }|dk(  r|�yt        t        |«      |¬«       nb|dk(  r,| j                  j                  d«      rB| j                  «        n1|dk(  r,d}t        ||t        j                   ¬«       t        |||¬«       	 | j                  j#                  «        | j                  j                  sJ| j                  j&                  j)                  | j                  j*                  | j,                  «      | _        y y # t        t        t
        f$ r. | j                  j                  rY y d }| j                  «        Y �Œ{w xY w# t$        $ r Y Œ±w xY w)	Ngš™™™™™©?)rS  ÚOKr   Ú	EXCEPTIONú<<toggle-jit-stack-viewer>>ÚERRORz/pyshell.ModifiedInterpreter: Subprocess ERROR:
)r  ÚpollresponseÚ
active_seqrå   r#   ÚKeyboardInterruptró   Úclosingr@  Úresetoutputr  ÚprintÚreprÚgetvarÚremote_stack_viewerrô   Ú
__stderr__Úendexecutingr"   rJ   ÚafterÚpollintervalr,  rN  )rF   ÚcltÚresponseÚhowÚwhatr  Úerrmsgs          r(   r,  z#ModifiedInterpreter.poll_subprocessA  sy  € Ø�k‰kˆØˆ;Øð	&Ø×'Ñ'¨¯©¸dÐ'ÓCˆHñ Ø�N‰N×&Ñ&Ô(Ø"ˆDŒOØ ‰IˆC�Ø—n‘n×,Ñ,ˆGØ�dŠ{ØÐ#Üœ$˜t›*¨7Ö3Ø˜Ò#Ø—>‘>×(Ñ(Ð)FÔGØ×,Ñ,Õ.Ø˜’ØK�Ü�f˜d¬¯©Õ8Ü�f˜d¨Õ1ðØ—‘×+Ñ+Ô-ð �~‰~×%Ò%Ø ŸN™N×/Ñ/×5Ñ5Ø—‘×+Ñ+¨T×-AÑ-AóCˆD�Mð &øô9 œ'Ô#4Ð5ò 	&ð �~‰~×%Ò%ÙØˆHØ×#Ñ#×%ð	&ûô2 "ò Ùðús)   ‘E( Ã-F- Å(*F*ÆF*Æ)F*Æ-	F9Æ8F9c                 ó   — || _         y rC   r   )rF   r   s     r(   ÚsetdebuggerzModifiedInterpreter.setdebuggeri  s	   € Ø ˆ�r0   c                 ó   — | j                   S rC   r   r«   s    r(   r4  zModifiedInterpreter.getdebuggerl  s   € Ø�}‰}Ðr0   c                 ód   — | j                   j                  j                  d| j                  «       y)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ó   rJ   rh  re  r«   s    r(   Úopen_remote_stack_viewerz,ModifiedInterpreter.open_remote_stack_viewero  s'   € ð 	�‰×Ñ×!Ñ! # t×'?Ñ'?Ô@Ør0   c                 ó  — ddl m} | j                  j                  dddi «      }|€%| j                  j
                  j                  «        y |j                  | j                  |«      }ddlm	}m
} t        | j                  j
                  «      }t        j                  «       }t        j                  |d«      d   } |||d¬	«      }	|	j                  j!                  d
d¬«        ||	j"                  d |«      }
|
j%                  «        y )Nr   )Ú
debugobj_rrB  Ústackviewer)rN   )ÚScrolledCanvasÚTreeNodeÚnormalrd   )ÚbgÚhighlightthicknessr   Úboth)ÚexpandÚfill)Úidlelibru  r  Úremotequeueró   r‘   rw   ÚStubObjectTreeItemÚidlelib.treerw  rx  ÚToplevelr   rf   rg   ÚframeÚpackÚcanvasr}  )rF   ru  ÚoidÚitemrw  rx  rµ   rj   rd   ÚscÚnodes              r(   re  z'ModifiedInterpreter.remote_stack_viewer|  sÌ   € Ý&Ø�k‰k×%Ñ% f¨m¸ZÈÓLˆØˆ;Ø�N‰N×Ñ×$Ñ$Ô&ØØ×,Ñ,¨T¯[©[¸#Ó>ˆß9Ü�t—~‘~×*Ñ*Ó+ˆÜ×%Ñ%Ó'ˆÜ×*Ñ*¨5°(Ó;¸LÑIˆ
Ù˜C JÀ1ÔEˆØ
�‰�‰˜Q VˆÔ,Ù˜Ÿ	™	 4¨Ó.ˆØ�‰�r0   r   c                 óJ   — | j                  |«      }| j                  ||«       y)z1Like runsource() but assumes complete exec sourceN)ÚstuffsourceÚexecfile©rF   Úsourcer&   s      r(   Ú
execsourcezModifiedInterpreter.execsource�  s    € à×#Ñ# FÓ+ˆØ�‰�h Õ'r0   c                 ó  — |€]t        j                  |«      5 }|j                  «       }t        r)dt        j
                  j                  |«      › d�|z   dz   }ddd«       	 t        ||d«      }| j                  |«       y# 1 sw Y   Œ)xY w# t        t        f$ rn | j                  j                  «        t        d| j                  j                  ¬«       t        j                   | |«       | j                  j#                  «        Y yw xY w)zExecute an existing fileNz__file__ = r'''z'''
z
del __file__rB  zB*** Error in script or command!
Traceback (most recent call last):r   )Útokenizer‹   ÚreadÚuse_subprocessrP   rQ   Úabspathrû   ÚruncodeÚOverflowErrorÚSyntaxErrorró   ra  rb  r  r   Úshowsyntaxerrorr<  )rF   r&   r�  r”   Úcodes        r(   r�  zModifiedInterpreter.execfile”  sß   € àˆ>Ü—‘˜xÔ(¨BØŸ™›�Ý!Ø /´·±·±ÀÓ0IÐ/JÈ%ÐPØ &ñ'Ø)9ñ:�F÷ )ð

	Ü˜6 8¨VÓ4ˆDð �L‰L˜Õ÷ )Ð(ûô œ{Ð+ò 	(Ø�N‰N×&Ñ&Ô(Üð 6à—~‘~×,Ñ,õ.ô #×2Ñ2°4¸ÔBØ�N‰N×%Ñ%Ö'ð	(ús   ˜A B Á!B Â B	ÂA:D	ÄD	c                 óv   — | j                  |«      }t        |t        «      sJ ‚t        j                  | ||«      S )zBExtend base class method: Stuff the source in the line cache first)rŒ  Ú
isinstancer�   r   Ú	runsourcerŽ  s      r(   r�  zModifiedInterpreter.runsource¨  s9   € à×#Ñ# FÓ+ˆä˜&¤#Ô&Ð&Ð&ô &×/Ñ/°°f¸hÓGÐGr0   c                 ó´   — d| j                   z  }| j                   dz   | _         |j                  d«      }t        |«      dz   d||ft        j                  |<   |S )z"Stuff source in the filename cachez<pyshell#%d>r   r‡   r   )ÚgidÚsplitrœ   r4   r5   )rF   r�  r&   r•   s       r(   rŒ  zModifiedInterpreter.stuffsource±  sQ   € à! D§H¡HÑ,ˆØ—8‘8˜a‘<ˆŒØ—‘˜TÓ"ˆÜ$'¨£K°¡M°1°e¸XÐ$EŒ	�‰˜Ñ!Øˆr0   c                 óD   — | j                  dj                  |«      «       y)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)rV  rW  ©rF   r&   s     r(   Úprepend_syspathz#ModifiedInterpreter.prepend_syspath¹  s   € à�‰ð ÷ ‘&˜Ó"õ	$r0   c                 óÎ  — | j                   }|j                  }|j                  ddd«       t        j                  «       \  }}}t        |dd«      xs |xs d}t        |dd«      xs d}	t        |d	d«      xs d
}
|
d
k(  r|	dz  }	|	dk(  r	d|
dz
  z  }nd|	dz
  |
dz
  fz  }|j                  ||«       |j                  «        | j                  d|z  «       |j                  «        y)z§Override Interactive Interpreter method: Use Colorizing

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

        r\  r�   r¨   Úmsgrb   z<no detail available>r'   r   Úoffsetr   ziomark + %d charsz&iomark linestart + %d lines + %d charszSyntaxError: %s
N)
ró   rJ   r~   rô   Úexc_infor�   Úcolorize_syntax_errorra  r!   r<  )rF   r&   Úkwargsró   rJ   r
  ÚvalueÚtbr¥  r'   r¦  Úposs               r(   r™  z#ModifiedInterpreter.showsyntaxerrorÅ  sï   € ð —N‘Nˆ	Ø�~‰~ˆØ�‰˜ ¨Ô.ÜŸ,™,›.‰ˆˆe�RÜ�e˜U BÓ'ÒK¨5ÒKÐ4KˆÜ˜ ¨"Ó-Ò2°ˆÜ˜ ¨"Ó-Ò2°ˆØ�QŠ;Ø�a‰KˆFØ�QŠ;Ø%¨°©Ñ2‰Cà:Ø˜!‘8˜V A™XÐ&ñ'ˆCà×'Ñ'¨¨cÔ2Ø×ÑÔØ�
‰
Ð&¨Ñ,Ô-Ø×ÑÕr0   c                 óî   — | j                   j                  «        | j                  «        t        j                  | «       | j                   j                  d«      r| j                   j                  «        yy)z1Extend base class method to reset output properlyr[  N)ró   ra  Úchecklinecacher   Úshowtracebackrd  Úopen_stack_viewerr«   s    r(   r¯  z!ModifiedInterpreter.showtracebackß  sU   € à�‰×"Ñ"Ô$Ø×ÑÔÜ×,Ñ,¨TÔ2Ø�>‰>× Ñ Ð!>Ô?Ø�N‰N×,Ñ,Õ.ð @r0   c                 óh   — t         j                  }t        |«      D ]  }|dd |dd z   dk7  sŒ||= Œ y)z%Remove keys other than '<pyshell#n>'.Nr   r2   r3   )r4   r5   r6   )rF   r5   r;   s      r(   r®  z"ModifiedInterpreter.checklinecacheç  s9   € ä—‘ˆÜ˜–;ˆCØ�2�Aˆw˜˜R˜S˜Ñ! TÓ)Ø˜#‘Jñ r0   c                 óÖ   — | j                   j                  r| j                  «        y| j                  r | j                  j	                  dd|fi «       yt        || j                  «       y)z*Run the code without invoking the debuggerr   rB  r–  r   )ró   r8  Údisplay_executing_dialogr  r€  rB  rò   )rF   rš  s     r(   rV  zModifiedInterpreter.runcommandî  sY   € ð �>‰>×#Ò#Ø×)Ñ)Ô+ØØ�;Š;Ø�K‰K×#Ñ# F¨I¸°wÀÔCð ô ��t—{‘{Ô#Ør0   c                 ó„  — | j                   j                  r| j                  «        | j                  «        | j                  }	 | j                   j                  «        |s1| j                  �%| j                  j                  dd|fi «      | _        n6|r |j                  || j                  «       nt        || j                  «       t$        s	 | j                   j+                  «        yy# t        $ rY | j                   j                  s?t        j                  ddd| j                   j                   ¬«      r‚ | j#                  «        n‚ Y Œ„ t$        rLt'        d| j                   j(                  ¬	«       | j#                  «        | j                   j+                  «        nY| j                   j,                  r3d
| j                   _        t'        d| j                   j(                  ¬	«       n| j#                  «        Y �Œ3xY w# t.        $ r Y yw xY w# t$        s+	 | j                   j+                  «        w # t.        $ r Y w w xY ww xY w)úOverride base class methodNrB  r–  zExit?zDo you want to exit altogether?Úyes©r	  rŠ   z IDLE internal error in runcode()r   Fr_  )ró   r8  r@  r®  r   Úbeginexecutingr  Ú
asyncqueuer^  Úrunrò   rB  Ú
SystemExitr`  r
   ÚaskyesnorJ   r¯  r”  rb  r  rg  Úcanceledr"   )rF   rš  r   s      r(   r–  zModifiedInterpreter.runcodeú  sÈ  € à�>‰>×#Ò#Ø×#Ñ#Ô%Ø×ÑÔØ—=‘=ˆð&	Ø�N‰N×)Ñ)Ô+Ù §¡Ð 7Ø"&§+¡+×"8Ñ"8¸ÀØ9=¸Àó#E�•áØ�—‘˜T 4§;¡;Õ/ä�T˜4Ÿ;™;Ô'õ4 "ðØ—N‘N×/Ñ/Õ1ð "øô3 ò 	Ø—>‘>×)Ò)Ü×&Ñ&ØØ5Ø!ØŸ>™>×.Ñ.õ	0ð
 à×&Ñ&Õ(àñ )ð	)ÝÜÐ8ØŸ>™>×0Ñ0õ2à×"Ñ"Ô$Ø—‘×+Ñ+Õ-à—>‘>×*Ò*Ø.3�D—N‘NÔ+ÜÐ-°D·N±N×4IÑ4IÖJà×&Ñ&Ô(þô
 &ò Ùðûõ "ðØ—N‘N×/Ñ/Õ1øÜ%ò Ùðúð "ús]   ÁBC* ÃG= Ã*AG:Å	H ÅB,G:Ç7H Ç=	H	ÈH	ÈH?ÈH/È.H?È/	H;È8H?È:H;È;H?c                 óL   — | j                   j                  j                  |«      S )rµ  )ró   r  r!   )rF   r  s     r(   r!   zModifiedInterpreter.write(  s   € à�~‰~×$Ñ$×*Ñ*¨1Ó-Ð-r0   c                 ó\   — t        j                  dd| j                  j                  ¬«       y )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Š   ©r
   r’   ró   rJ   r«   s    r(   r  z.ModifiedInterpreter.display_port_binding_error,  s'   € Ü×ÑØ ð/ð —>‘>×&Ñ&ö	(r0   c                 ó\   — t        j                  dd| j                  j                  ¬«       y )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«   s    r(   r)  z/ModifiedInterpreter.display_no_subprocess_error7  s(   € Ü×ÑØ)ðJð —>‘>×&Ñ&ö	(r0   c                 ó\   — t        j                  dd| j                  j                  ¬«       y )NzAlready executingzYThe Python Shell window is already executing a command; please wait until it is finished.rÀ  rÁ  r«   s    r(   r³  z,ModifiedInterpreter.display_executing_dialog?  s%   € Ü×ÑØð0à—>‘>×&Ñ&ö		(r0   )Frb   )FrC   )&r¬   r­   r®   rI   rN  r  r  r  r   r/  r@  rJ  rL  rP  r7  r+  r^  r,  r   rp  r4  rs  re  rŸ  r�  r�  r�  rŒ  r£  r™  r¯  r®  rV  r–  r!   r  r)  r³  r±   r0   r(   rð   rð   ™  sÄ   „ òCð €HØ€FØ€JòDò

Fò)óV*òXGòBòòóð €Jò$CðL €Hò!òòòð" €Cò(ó
ò(Hòò
$óò4/òò
ò,ò\.ò	(ò(ó(r0   rð   c            	       óP  ‡ — e Zd ZddlmZ d e«       z   ZeZe	Z
g d¢Zej                  dgz   Zd e e ej"                  d„ e«      «      «      z   Zej'                  ed«       [d	Zd
ZddlmZ ddlmZ d9d„Zˆ fd„Zˆ fd„Zd„ Zd„ Zd„ Zd9d„Z d	Z!d	Z"d	Z#d	Z$d	Z%d	Z&d„ Z'd„ Z(d9d„Z)d„ Z*d9d„Z+d„ Z,d„ Z-d„ Z.d„ Z/d„ Z0d„ Z1d„ Z2d „ Z3d!„ Z4d"Z5d#„ Z6d$„ Z7d%„ Z8d&„ Z9d9d'„Z:d(„ Z;d)„ Z<d*„ Z=d+„ Z> e?j€                  d,«      ZAd-„ ZBd9d.„ZCd9d/„ZDd9d0„ZEd1„ ZFd2„ ZGd3„ ZHd:d4„ZIˆ fd5„ZJˆ fd6„ZKd9d7„ZLd8„ ZMˆ xZNS );r·   r   )ÚSqueezerzIDLE Shell ))r   Ú_File)ÚeditÚ_Edit)rt   Ú_Debug)ÚoptionsÚ_Options)ÚwindowÚ_Window)ÚhelpÚ_Help)ÚSqueezeú<<squeeze-current-text>>r   c                 ó   — | d   dk7  S )Nr   r\   r±   )Ú
rmenu_items    r(   rÙ   zPyShell.<lambda>_  s   € ˜: a™=¨FÒ2r0   )zCopy with promptsú<<copy-with-prompts>>r]   Fr×   )ÚHistory)ÚShellSidebarc                 ó’  — t         r)| j                  }|d   d   dk7  r|j                  dd«       t        | «      | _        |€0t        «       }t        |«       |j                  «        t        |«      }d | _	        t        j                  | |d d «       d| _        d| _        t        t        d«      rt        j                   nd| _        | j"                  j%                  d	«      d
   | _        | j"                  | _        | j*                  }|j-                  d¬«       |j/                  d| j0                  «       |j/                  d| j2                  «       |j/                  d| j4                  «       |j/                  d| j6                  «       |j/                  d| j8                  «       |j/                  d| j:                  «       |j/                  d| j<                  «       |j/                  d| j>                  «       t         r8|j/                  d| j@                  «       |j/                  d| jB                  «       | jE                  | «      | _#        |j/                  d| jH                  «       t        jJ                  | _&        t        jN                  | _(        t        jR                  | _*        ddl+m,} t[        | d|j\                  |j^                  «      | _)        ta        | d|j\                  |j^                  «      | _%        ta        | d|j\                  d«      | _'        ta        | d|j\                  |j^                  «      | _1        t         s?| jJ                  t        _%        | jN                  t        _'        | jR                  t        _)        	 dd l2}|jf                  |_4        | jm                  | j*                  «      | _7        d| _8        | js                  | «      | _	        | jt                  jv                  j                  | j*                  _        | jt                  jy                  t{        «       «       y #  t        jj                  t        _'        ‚ xY w)Nr¥   r   Úshell)rØ  ÚShe_llFé   Úps1z>>>
r‡   r2   Úchar)Úwrapz<<newline-and-indent>>z<<plain-newline-and-indent>>z<<interrupt-execution>>z<<end-of-file>>z<<open-stack-viewer>>ú<<toggle-debugger>>r[  rÔ  z<<view-restart>>z<<restart-shell>>rÑ  )Úiomenur×   r  r  Úbackslashreplacer  é2   )>r”  Ú
menu_specsrv   rð   rr   ÚTkr   Úwithdrawr³   Úshell_sidebarr   rI   ÚusetabsÚindentwidthÚhasattrrô   rÛ  Úsys_ps1r   Úprompt_last_lineÚpromptrJ   Ú	configurerK   Úenter_callbackÚlinefeed_callbackÚcancel_callbackÚeof_callbackr°  Útoggle_debuggerÚtoggle_jit_stack_viewerÚcopy_with_prompts_callbackÚview_restart_markÚrestart_shellrÅ  ÚsqueezerÚsqueeze_current_text_eventr  Úsave_stdoutr  Úsave_stderrr×   Ú
save_stdinr  rß  r   ÚencodingÚerrorsr   r  ÚpydocÚ
plainpagerÚpagerrf  rÕ  Úhistoryri  rÖ  Úperrµ   Úinsertfilterrà   )rF   rN   Úmsr‘   rJ   rß  rý  s          r(   rI   zPyShell.__init__m  s*  € ÝØ—‘ˆBØ�!‰u�Q‰x˜7Ò"Ø—	‘	˜!Ð0Ô1Ü)¨$Ó/ˆŒØˆ=Ü“4ˆDÜ˜$ÔØ�M‰MŒOÜ# DÓ)ˆEà!ˆÔä×Ñ˜d E¨4°Ô6àˆŒàˆÔä")¬#¨uÔ"5”s—w’w¸7ˆŒØ $§¡× 2Ñ 2°4Ó 8¸Ñ <ˆÔØ—l‘lˆŒà�y‰yˆØ�‰˜FˆÔ#Ø�	‰	Ð*¨D×,?Ñ,?Ô@Ø�	‰	Ð0°$×2HÑ2HÔIØ�	‰	Ð+¨T×-AÑ-AÔBØ�	‰	Ð# T×%6Ñ%6Ô7Ø�	‰	Ð)¨4×+AÑ+AÔBØ�	‰	Ð'¨×)=Ñ)=Ô>Ø�	‰	Ð/°×1MÑ1MÔNØ�	‰	Ð)¨4×+JÑ+JÔKÝØ�I‰IÐ(¨$×*@Ñ*@ÔAØ�I‰IÐ)¨4×+=Ñ+=Ô>ØŸ™ dÓ+ˆŒØ�	‰	Ð,Ø×1Ñ1ô	3ô Ÿ:™:ˆÔÜŸ:™:ˆÔÜŸ)™)ˆŒÝ"Ü! $¨Ø"(§/¡/°6·=±=óBˆŒ
ä# D¨(Ø$*§O¡O°V·]±]óDˆŒä# D¨(Ø$*§O¡OÐ5GóIˆŒä$ T¨9Ø%+§_¡_°f·m±móEˆŒåØŸ™ŒCŒJØŸ™ŒCŒJØŸ
™
ŒCŒIð	ãà×*Ñ*ˆEŒKð
 —|‘| D§I¡IÓ.ˆŒàˆÔà!×.Ñ.¨tÓ4ˆÔð
  Ÿ8™8Ÿ<™<×.Ñ.ˆ�	‰	ÔØ�‰×ÑÔ7Ó9Õ:øð	ÜŸ™ŒCŒJØús   ÎP* Ð*Qc                 óp   •— t         ‰| �  «        | j                  �| j                  j                  «        y y rC   )rÚ   Ú	ResetFontrå  Úupdate_font©rF   rÜ   s    €r(   r  zPyShell.ResetFont»  s1   ø€ Ü‰ÑÔà×ÑÐ)Ø×Ñ×*Ñ*Õ,ð *r0   c                 óŽ  •— t         ‰| �  «        t        j                  «       }d d dœt        j                  |d«      t        j                  |d«      t        j                  |d«      dœ}|j                  «       D ]"  \  }} | j                  j                  |fi |¤Ž Œ$ | j                  �| j                  j                  «        y y )N)rd   rc   r  r  ry  )r×   r  r  r  )
rÚ   ÚResetColorizerr   rf   rg   ÚitemsrJ   Útag_configurerå  Úupdate_colors)rF   rj   Ú
tag_colorsrÃ   Útag_colors_configrÜ   s        €r(   r	  zPyShell.ResetColorizerÁ  sµ   ø€ Ü‰ÑÔ ä×%Ñ%Ó'ˆà"&°dÑ;Ü×)Ñ)¨%°Ó:Ü×)Ñ)¨%°Ó:Ü×*Ñ*¨5°(Ó;ñ	
ˆ
ð '1×&6Ñ&6Ö&8Ñ"ˆCÐ"Ø#ˆD�I‰I×#Ñ# CÑ=Ð+<Ó=ð '9ð ×ÑÐ)Ø×Ñ×,Ñ,Õ.ð *r0   c                 óF   — t        j                   | j                  d¬«       y)Nr×   )Úinsert_tagsra   )r   rJ   r¹   s     r(   Úreplace_eventzPyShell.replace_eventÑ  s   € Ü�‰˜Ÿ	™	¨wÕ7Ør0   c                 ó.   — t        j                  d¬«      S )NT)Ú
shell_only)r   ÚGetExtensionsr«   s    r(   Úget_standard_extension_namesz$PyShell.get_standard_extension_namesÕ  s   € Ü×%Ñ%°Ô6Ð6r0   c                 ón  — | j                   j                  ||«      }t        t        t	        |«      «      t        t	        |«      «      «      }|D �cg c]'  }| j
                  j                  j                  |«      ‘Œ) }}dj                  d„ t        ||j                  «       «      D «       «      dz   S c c}w )z6Return text between first and last with prompts added.r‡   c              3   ó8   K  — | ]  \  }}|€|n|› d|› �–— Œ y ­w)NÚ r±   )Ú.0rë  r   s      r(   Ú	<genexpr>z*PyShell.get_prompt_text.<locals>.<genexpr>ã  s0   è ø€ ð 
á ?‘�˜ð �N‰D¨6¨(°!°D°6Ð(:Ó:Ù ?ùs   ‚)
rJ   Úgetr¦   rx   ry   rå  Úline_promptsrR   ÚzipÚ
splitlines)rF   ÚfirstÚlastrJ   Úlineno_ranger'   Úpromptss          r(   Úget_prompt_textzPyShell.get_prompt_textØ  s®   € à�y‰y�}‰}˜U DÓ)ˆÜÜ”�e“ÓÜ”�d“Óóˆñ 'ó
á&�ð ×Ñ×+Ñ+×/Ñ/°Õ7Ø&ð 	ð 
ð �y‰yñ 
ä # G¨T¯_©_Ó->Ô ?ó
ó 
ð ñð 	ùò	
s   Á,B2c                 óþ   — | j                   }|j                  d«      }|€y|j                  d«      }|d   dk7  r|j                  d«      }|j                  «        | j                  ||«      }|j	                  |«       y)a  Copy selected lines to the clipboard, with prompts.

        This makes the copied text useful for doc-tests and interactive
        shell code examples.

        This always copies entire lines, even if only part of the first
        and/or last lines is selected.
        zsel.first linestartNúsel.lastr2   Ú0zsel.last+1line linestart)rJ   rn   Úclipboard_clearr#  Úclipboard_append)rF   rz   rJ   ÚselfirstÚsellastÚprompt_texts         r(   ró  z"PyShell.copy_with_prompts_callbacké  sz   € ð �y‰yˆØ—:‘:Ð3Ó4ˆØÐØØ—*‘*˜ZÓ(ˆØ�2‰;˜#ÒØ—j‘jÐ!;Ó<ˆGØ×ÑÔØ×*Ñ*¨8°WÓ=ˆØ×Ñ˜kÕ*r0   c                 ó   — |a y rC   ©r    )rF   Ústreams     r(   Úset_warning_streamzPyShell.set_warning_stream  s   € à‰r0   c                 ó   — t         S rC   r-  r«   s    r(   Úget_warning_streamzPyShell.get_warning_stream  s   € ÜÐr0   c                 óü   — | j                   r3t        j                  dd| j                  ¬«       | j	                  «        y| j
                  j                  «       }|r| j                  «        y | j                  «        y )NzDon't debug nowz*You can only toggle the debugger when idlerÀ  ra   )	r8  r
   r’   rJ   Úset_debugger_indicatorrr   r4  Úclose_debuggerÚopen_debugger)rF   rz   Údbs      r(   rñ  zPyShell.toggle_debugger  sb   € Ø�>Š>Ü× Ñ Ð!2Ø<Ø—y‘yõ"ð ×'Ñ'Ô)Øà—‘×(Ñ(Ó*ˆBÙØ×#Ñ#Õ%à×"Ñ"Õ$r0   c                 ó`   — | j                   j                  «       }| j                  d|  «       y )NrÞ  )rr   r4  Úsetvar©rF   r6  s     r(   r3  zPyShell.set_debugger_indicator  s'   € Ø�[‰[×$Ñ$Ó&ˆØ�‰Ð)°2¨v¨:Õ6r0   c                  ó   — y rC   r±   r¹   s     r(   rò  zPyShell.toggle_jit_stack_viewer  s   € Ør0   c                 óÈ  — | j                   j                  «       }|r¶| j                   j                  d «       |j                  «        | j                   j                  r)t        j                  | j                   j                  «       | j                  «        | j                  j                  d«       | j                  | _        | j                  «        | j                  «        y )Nz[DEBUG OFF]
)rr   r4  rp  r6  r  r   Úclose_remote_debuggerra  r  r!   ré  rë  r<  r3  r9  s     r(   r4  zPyShell.close_debugger   s–   € Ø�[‰[×$Ñ$Ó&ˆÙØ�K‰K×#Ñ# DÔ)Ø�H‰HŒJØ�{‰{×!Ò!Ü×0Ñ0°·±×1CÑ1CÔDØ×ÑÔØ�L‰L×Ñ˜Ô/ØŸ,™,ˆDŒKØ�O‰OÔØ×#Ñ#Õ%r0   c                 ón  — | j                   j                  r+t        j                  | j                   j                  | «      }nt	        j
                  | «      }| j                   j                  |«       |j                  «        d| j                  z   | _	        | j                  «        | j                  «        y )Nz[DEBUG ON]
)rr   r  r   Ústart_remote_debuggerr   ÚDebuggerrp  r>  ré  rë  r<  r3  )rF   Údbg_guis     r(   r5  zPyShell.open_debugger-  s…   € Ø�;‰;×ÒÜ ×6Ñ6°t·{±{×7IÑ7IØ;?óA‰Gô ×'Ñ'¨Ó-ˆGØ�‰×Ñ Ô(Ø× Ñ Ô"Ø$ t§|¡|Ñ3ˆŒØ�‰ÔØ×#Ñ#Õ%r0   c                 óJ   — | j                   rdnd}| j                  dd|«       y )NÚdisabledry  rt   z*tack*iewer)r8  Úupdate_menu_state)rF   Ústates     r(   Údebug_menu_postcommandzPyShell.debug_menu_postcommand9  s!   € Ø"Ÿnšn‘
°(ˆØ×Ñ˜w¨°uÕ=r0   c                 ó2   — | j                  «        d| _        y)úHelper for ModifiedInterpreterTN)ra  r8  r«   s    r(   r¸  zPyShell.beginexecuting=  s   € à×ÑÔØˆ�r0   c                 ó@   — d| _         d| _        | j                  «        y)rG  FN)r8  r½  r<  r«   s    r(   rg  zPyShell.endexecutingB  s   € àˆŒØˆŒØ�‰Õr0   c                 óÐ   — | j                   r(t        j                  ddd| j                  ¬«      }|du ry| j	                  «        d| _        d| _        t        j                  | «      S )zExtend EditorWindow.close()zKill?z7Your program is still running!
 Do you want to kill it?Úokr·  FÚcancelT)	r8  r
   ÚaskokcancelrJ   r9  r½  r`  r   r6  )rF   rk  s     r(   r6  zPyShell.closeH  sa   € à�>Š>Ü!×-Ñ-ØØJØØ—y‘yô	"ˆHð
 ˜5Ñ ØØ×ÑÔØˆŒØˆŒÜ×!Ñ! $Ó'Ð'r0   c                 óX  — | j                  «        t        r| j                  j                  «        | j                  t
        _        | j                  t
        _        | j                  t
        _
        d| _        d| _        d| j                  _        d| _        t        j                   | «       y)zEExtend EditorWindow._close(), shut down debugger and execution serverN)r4  r”  rr   rP  rø  rô   r  rù  r  rú  r×   r  rN   rq   r   r   rª   r«   s    r(   rª   zPyShell._closeW  su   € à×ÑÔÝØ�K‰K×'Ñ'Ô)à×%Ñ%ŒŒ
Ø×%Ñ%ŒŒ
Ø—O‘OŒŒ	àˆŒØˆŒØ!ˆ�
‰
ÔØˆŒÜ×Ñ˜DÕ!r0   c                  ó   — y)z8Override EditorWindow method: never remove the colorizerTr±   r¢  s     r(   ÚispythonsourcezPyShell.ispythonsourceg  s   € àr0   c                 ó   — | j                   S rC   )Úshell_titler«   s    r(   Úshort_titlezPyShell.short_titlek  s   € Ø×ÑÐr0   z>Enter "help" below or click "Help" above for more information.c           
      óú  — | j                   j                  dd«       | j                  «        t        r/d}| j                  j                  «       }|s,| j                  «        yd}t        j                  t        _        | j                  dt        j                  ›dt        j                  ›d| j                  ›d|›�«       | j                   j                  «        | j                  «        d	d l}d
|_        d |_        y
)Nr¾   rv   rb   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 z on r‡   r   T)rJ   r:  ra  r”  rr   r/  r6  r   Údisplayhookrô   r!   ÚversionÚplatformÚ
SPLASHLINEÚfocus_forcer<  ÚtkinterÚ_support_default_rootÚ_default_root)rF   ÚnosubÚclientrY  s       r(   r¸   zPyShell.beginp  s·   € Ø�	‰	×Ñ˜8 XÔ.Ø×ÑÔÝØˆEØ—[‘[×1Ñ1Ó3ˆFÙØ—
‘
”Øð'ˆEô "Ÿo™oŒCŒOà�
Š
Ü—K“K¤§£¨t¯«ÁðGô 	Hà�	‰	×ÑÔØ�‰ÔãØ(,ˆÔ%Ø $ˆÔØr0   c                 ó`   — | j                   sy d| _        | j                  j                  «        y ©NT)ÚreadingÚ_stop_readline_flagrµ   Úquitr«   s    r(   r9  zPyShell.stop_readlineŠ  s!   € Ø�|Š|ØØ#'ˆÔ Ø�‰�‰�r0   c                 ó�  — | j                   }	 d| _         | j                  j                  «        || _         | j                  rd| _        y| j                  j                  dd«      }t        |«      dk(  rd}| j                  «        | j                  rd| _        t        st        ‚| j                  r	d| _        d}|S # || _         w xY w)NTFrb   r¾   r1  r   r‡   )r`  rµ   Úmainloopra  rJ   r  rœ   ra  r½  r”  r_  Ú	endoffile)rF   r:   r   s      r(   ÚreadlinezPyShell.readline�  s¬   € Ø�|‰|ˆð	 ØˆDŒLØ�H‰H×ÑÔàˆDŒLØ×#Ò#Ø',ˆDÔ$ØØ�y‰y�}‰}˜X xÓ0ˆÜˆt‹9˜Š>ØˆDØ×ÑÔØ�=Š=Ø!ˆDŒMÝ!Ü'Ð'Ø�>Š>Ø"ˆDŒNØˆDØˆøð  ˆD�Lús   Ž!B< Â<	Cc                  ó   — yr_  r±   r«   s    r(   ÚisattyzPyShell.isatty§  s   € Ør0   c                 óD  — 	 | j                   j                  ddd«      ry 	 | j                  sH| j                  s<| j	                  «        | j
                  j                  d«       | j                  «        yd| _        d| _	        | j                  re| j
                  j                  rO| j
                  j                  «       r| j
                  j                  «        n| j
                  j                  «        | j                  r| j                  j                  «        y#  Y ŒþxY w)Nú	sel.firstz!=r%  zKeyboardInterrupt
ra   FT)rJ   rË   r8  r`  ra  rr   r!   r<  re  r½  r  r4  r@  rL  rµ   rb  r¹   s     r(   rï  zPyShell.cancel_callbackª  sÓ   € ð	Ø�y‰y× Ñ  ¨d°JÔ?Øð @ð —’ $§,¢,Ø×ÑÔØ�K‰K×ÑÐ3Ô4Ø�O‰OÔØØˆŒØˆŒØ�NŠN˜tŸ{™{×1Ò1Ø�{‰{×&Ñ&Ô(Ø—‘×.Ñ.Õ0à—‘×0Ñ0Ô2Ø�<Š<Ø�H‰H�M‰MŒOØøð!	Ùús   ‚D ÄDc                 óV  — | j                   r| j                  sy | j                  j                  ddd«      r| j                  j                  ddd«      sy | j                   s!| j	                  «        | j                  «        yd| _        d| _        | j                  j                  «        y)Nr¾   z==rv   r1  FTra   )
r8  r`  rJ   rË   ra  r6  r½  re  rµ   rb  r¹   s     r(   rð  zPyShell.eof_callbackÀ  s‚   € Ø�>Š> $§,¢,ØØ—	‘	×!Ñ! (¨D°(Ô;Ø—	‘	×!Ñ! (¨D°(Ô;ØØ�~Š~Ø×ÑÔØ�J‰JŒLð
 ð "ˆDŒMØ!ˆDŒNØ�H‰H�M‰MŒOØr0   c                 ó®   — | j                   r8| j                  j                  dd«       | j                  j                  d«       y| j	                  |«       y)Nrv   r‡   ra   )r`  rJ   rv   ÚseeÚnewline_and_indent_eventr¹   s     r(   rî  zPyShell.linefeed_callbackÏ  sE   € à�<Š<Ø�I‰I×Ñ˜X tÔ,Ø�I‰I�M‰M˜(Ô#ð ð ×)Ñ)¨%Ô0Ør0   c                 ór	  — | j                   r| j                  sy 	 | j                  j                  dd«      }|r0| j                  j	                  ddd«      r| j                  ||«       y| j                  j	                  ddd«      �rµ| j                  j                  d	d«      }|�r#| j                  j	                  dd|d
   «      �rd| j                  j                  d«      vrå| j                  j                  dd«      }|r-| j                  j	                  |d
   d|d   «      r
|d
   |d
   f}| j                  j                  dd«      }|rI| j                  j	                  |d   d|d
   «      r&|d   | j                  j                  |d   dz   «      f}| j                  | j                  j                  |d   |d
   «      |«       y| j                  j                  d	d«      }|rº| j                  j	                  dd|d   «      rš| j                  j                  dd«      }|rI| j                  j	                  |d   d|d
   «      r&|d   | j                  j                  |d   dz   «      f}| j                  | j                  j                  |d   |d
   «      |«       y| j                  j                  dd«      }|rP| j                  j	                  |d   dd«      r0| j                  | j                  j                  |d
   d«      |«       y| j                  | j                  j                  dd«      |«       y| j                  j	                  ddd«      r| j                  j                  dd«       | j                  j                  dd«      }|r,|j                  «       s| j                  j                  dd«       | j                  j	                  ddd«      r| j                  |«       y| j                  j                  dd«       | j                  r8| j                  j                  dd«       | j                  j                  d«       n| j                  |«       | j                  j!                  «        | j                  r| j"                  j%                  «        y| j'                  «        y#  Y �ŒMxY w)Nrj  r%  z<=r¾   ra   rv   rÉ   úiomark linestartr×   r   r  z>=r   z+1czinsert lineendr|   r1  zend-1c linestartr‡   )r8  r`  rJ   r  rË   ÚrecallÚtag_prevrangeÚ	tag_namesÚtag_nextrangern   r:  ÚstriprÑ   rn  rv   rm  Úupdate_idletasksrµ   rb  Úrunit)	rF   rz   ÚselÚprevÚ	prev_consÚ	next_consÚnextÚindicesr  s	            r(   rí  zPyShell.enter_callbackØ  sÕ  € Ø�>Š> $§,¢,Øð	Ø—)‘)—-‘- ¨ZÓ8ˆCÙØ—9‘9×$Ñ$ Z°°xÔ@Ø—K‘K  UÔ+Ø"ð �9‰9×Ñ˜X sÐ,>Õ?ð
 —9‘9×*Ñ*¨7°HÓ=ˆDâØ—I‘I×%Ñ% h°°T¸!±WÕ=à T§Y¡Y×%8Ñ%8¸Ó%BÑBà ŸI™I×3Ñ3°I¸xÓH�	Ù §¡×!2Ñ!2°9¸Q±<ÀÀtÈAÁwÔ!OØ% a™L¨$¨q©'Ð2�DØ ŸI™I×3Ñ3°I¸xÓH�	Ù §¡×!2Ñ!2°9¸Q±<ÀÀdÈ1ÁgÔ!NØ  ™G T§Y¡Y§_¡_°Y¸q±\ÀEÑ5IÓ%JÐK�DØ—‘˜DŸI™IŸM™M¨$¨q©'°4¸±7Ó;¸UÔCØØ—9‘9×*Ñ*¨7°HÓ=ˆDÙ˜Ÿ	™	×)Ñ)Ð*:¸DÀ$ÀqÁ'ÔJØ ŸI™I×3Ñ3°IÐ?OÓP�	Ù §¡×!2Ñ!2°9¸Q±<ÀÀdÈ1ÁgÔ!NØ  ™G T§Y¡Y§_¡_°Y¸q±\ÀEÑ5IÓ%JÐK�DØ—‘˜DŸI™IŸM™M¨$¨q©'°4¸±7Ó;¸UÔCØà—i‘i×-Ñ-¨iÐ9KÓLˆGÙØ�y‰y× Ñ  ¨¡¨TÐ3EÔFØ—‘˜DŸI™IŸM™M¨'°!©*Ð6FÓGÈÔOð ð —‘˜DŸI™IŸM™MÐ*<Ð>NÓOÐQVÔWØð �9‰9×Ñ˜X s¨HÔ5Ø�I‰I×Ñ˜x¨Ô2ð �I‰I�M‰M˜( HÓ-ˆÙ�Q—W‘W”YØ�I‰I×Ñ˜X xÔ0ð �9‰9×Ñ˜X sÐ,>Ô?Ø×)Ñ)¨%Ô0Øà�	‰	×Ñ˜8 XÔ.Ø�<Š<Ø�I‰I×Ñ˜X tÔ,Ø�I‰I�M‰M˜(Õ#à×)Ñ)¨%Ô0Ø�	‰	×"Ñ"Ô$Ø�<Š<Ø�H‰H�M‰MŒOð ð �J‰JŒLØøðE	Úús   ›AR1 Ò1R6c                 óÆ  — t        j                  dd|«      }t        j                  dd|«      }|j                  d«      }| j                  j	                  «        	 | j                  j                  ddd«       | j                  j                  dd	«       | j                  j                  d
d«      }|j                  «       j                  d«      r-| j                  |«       | j                  j                  d
d«      }| j                  j                  d|d   j                  «       | j                  «       t        |«      dkD  r±t        j                  d|d   «      j!                  d«      }t        j                  d|«      j!                  d«      }|dd  D ]\  }|j#                  |«      r||t        |«      d  z   }| j                  j                  dd|j                  «       z   | j                  «       Œ^ | j                  j%                  d«       | j                  j'                  «        y # | j                  j%                  d«       | j                  j'                  «        w xY w)Nz^\s*\nrb   z\n\s*$r‡   rx  r�   r¨   rv   r1  r|   Ú:r   r   z	^([ \t]*))ÚreÚsubr   rJ   Úundo_block_startr~   r:  r  ÚrstripÚendswithrn  rv   ru  Úuser_input_insert_tagsrœ   ÚsearchÚgroupr�   rm  Úundo_block_stop)rF   r  rz   r•   ÚprefixÚorig_base_indentÚnew_base_indentr   s           r(   rq  zPyShell.recall'  sÔ  € ä�F‰F�9˜b !Ó$ˆÜ�F‰F�9˜b !Ó$ˆØ—‘˜“ˆØ�	‰	×"Ñ"Ô$ð	(Ø�I‰I× Ñ  ¨¨uÔ5Ø�I‰I×Ñ˜x¨Ô2Ø—Y‘Y—]‘]Ð#5°xÓ@ˆFØ�}‰}‹×'Ñ'¨Ô,Ø×-Ñ-¨eÔ4ØŸ™Ÿ™Ð'9¸8ÓD�Ø�I‰I×Ñ˜X u¨Q¡x§~¡~Ó'7Ø!×8Ñ8ô:ä�5‹z˜AŠ~Ü#%§9¡9¨\¸5À¹8Ó#D×#JÑ#JÈ1Ó#MÐ Ü#%§9¡9¨\¸6Ó#B×#HÑ#HÈÓ#K�Ø! ! "›I�DØ—‘Ð'7Ô8à.°´cÐ:JÓ6KÐ6LÐ1MÑM˜Ø—I‘I×$Ñ$ X¨t°d·k±k³mÑ/CØ%)×%@Ñ%@õBð	 &ð �I‰I�M‰M˜(Ô#Ø�I‰I×%Ñ%Õ'øð �I‰I�M‰M˜(Ô#Ø�I‰I×%Ñ%Õ'ús   ÁFH) È)7I z[ \t]*(\n[ \t]*)?\Zc                 ó¢  — | j                   j                  d«      }| j                   j                  dd«      }| j                  j	                  d|«      }| j
                  j                  |«      }|s_| j                   j                  |«      dk(  r&| j                   j                  | j                  |«       | j                  j                  «        y y )Núend-2cr¾   r1  rb   r‡   )rJ   rn   r  Ú_last_newline_rer�  rr   r�  r~   r…  rå  Úupdate_sidebar)rF   Úindex_beforer   Úinput_is_completes       r(   rw  zPyShell.runitD  s    € Ø—y‘y—‘ xÓ0ˆØ�y‰y�}‰}˜X xÓ0ˆð ×$Ñ$×(Ñ(¨¨TÓ2ˆØ ŸK™K×1Ñ1°$Ó7ÐÙ Ø�y‰y�}‰}˜\Ó*¨dÒ2Ø—	‘	×$Ñ$ T×%@Ñ%@À,ÔOØ×Ñ×-Ñ-Õ/ð !r0   c                 ó  — | j                   j                  r| j                   j                  «       S ddlm} 	  || j
                  t        j                  | j                  «       y #  t        j                  dd| j                  ¬«       Y y xY w)Nr   )ÚStackBrowserzNo stack tracez:There is no stack trace yet.
(sys.last_exc is not defined)rÀ  )rr   r  re  Úidlelib.stackviewerr“  r‘   rô   Úlast_excrN   r
   r’   rJ   )rF   rz   r“  s      r(   r°  zPyShell.open_stack_viewerP  sp   € Ø�;‰;×ÒØ—;‘;×2Ñ2Ó4Ð4å4ð	"Ù˜Ÿ™¤C§L¡L°$·*±*Ô=ð øð	"Ü× Ñ Ð!1ð0à—y‘yö"ð ús   ¸,A% Á%$Bc                 óp   — | j                   j                  d«       | j                   j                  d«       y )Nr¾   r2  )rJ   rm  r¹   s     r(   rô  zPyShell.view_restart_mark^  s"   € Ø�	‰	�‰�hÔØ�	‰	�‰�iÕ r0   c                 ó<   — | j                   j                  d¬«       y)z&Callback for Run/Restart Shell Cntl-F6Tr  N)rr   r@  r¹   s     r(   rõ  zPyShell.restart_shellb  s   € à�‰×&Ñ&°Ð&Õ5r0   c                 óê  — | j                  «        | j                  }| j                  r4|j                  | j                  «      r|d t	        | j                  «        }| j
                  j                  dd«       | j                  j                  |«       | j                  j                  «        | j
                  j                  dd«       | j                  «        | j                  j                  «        y )Nr  z	iomark-1crv   r1  )ra  rë  ré  r„  rœ   rJ   rm   r  r!   rå  r�  r:  Úset_line_and_columnrU   Ú
reset_undo)rF   rë  s     r(   r<  zPyShell.showpromptf  s®   € Ø×ÑÔà—‘ˆØ�<Š<˜FŸO™O¨D¯L©LÔ9ØÐ/œc $§,¡,Ó/Ð/Ð0ˆFØ�	‰	×Ñ˜) [Ô1Ø�‰×Ñ˜6Ô"à×Ñ×)Ñ)Ô+Ø�	‰	×Ñ˜8 XÔ.Ø× Ñ Ô"Ø�‰×ÑÕr0   c                 ó  — | j                   j                  j                  }t        |dd¬«      }dj	                  |j                  |«      «      }|j                  d«      s|dz  }| j                  j                  j                  d|d«       y )Né   T)rë   ÚtabsizeÚexpand_tabsr‡   rp  r  )
rr   ró   rë   r   rR   rÝ  r„  r  Úbottomrv   )rF   r¥  rë   ÚwrapperÚwrapped_msgs        r(   Úshow_warningzPyShell.show_warningt  so   € Ø—‘×%Ñ%×+Ñ+ˆÜ E°1À$ÔGˆØ—i‘i §¡¨SÓ 1Ó2ˆØ×#Ñ# DÔ)Ø˜4ÑˆKØ�‰�‰×ÑÐ1°;ÀÕIr0   c                 óŠ  — | j                   j                  dd«      }| j                  r| j                  j                  |«       | j                   j                  d«      dk7  r| j                   j	                  dd«       | j                   j                  dd«       | j                  «        | j                  j                  «        y )Nr¾   r1  r�  r‡   )	rJ   r  r   Ústorerv   r:  r™  ÚctipÚremove_calltip_window)rF   r�  s     r(   ra  zPyShell.resetoutput|  sˆ   € Ø—‘—‘˜x¨Ó2ˆØ�<Š<Ø�L‰L×Ñ˜vÔ&Ø�9‰9�=‰=˜Ó" dÒ*Ø�I‰I×Ñ˜X tÔ,Ø�	‰	×Ñ˜8 XÔ.Ø× Ñ Ô"Ø�	‰	×'Ñ'Õ)r0   c                 óò   — 	 | j                   j                  dd«       t        j                  | ||d«      }| j                   j                  dd«       | j                  rd| _        t
        st        ‚|S #  ‚ xY w)Nr¾   Úrightr3  F)rJ   r;  r   r!   r½  r”  r_  )rF   r  rÏ   Úcounts       r(   r!   zPyShell.write†  sm   € ð	Ø�I‰I×"Ñ" 8¨WÔ5Ü ×&Ñ& t¨Q°°hÓ?ˆEØ�I‰I×"Ñ" 8¨VÔ4ð �=Š=Ø!ˆDŒMÝ!Ü'Ð'Øˆøð	Øús   ‚AA3 Á3A6c                 ó~   •— 	 | j                   j                  ddd«      ry	 t        ‰| �  «       S # t        $ r Y yw xY w)Nrj  rÉ   r¾   rB  )rJ   rË   rÌ   rÚ   r[   r  s    €r(   r[   zPyShell.rmenu_check_cut”  sJ   ø€ ð	Ø�y‰y× Ñ  ¨c°8Ô<Ø!ð =ô ‰wÑ&Ó(Ð(øô ò 	Ùð	ús   ƒ0 °	<»<c                 ó\   •— | j                   j                  ddd«      ryt        ‰| �  «       S )Nrv   rÉ   r¾   rB  )rJ   rË   rÚ   r_   r  s    €r(   r_   zPyShell.rmenu_check_pasteœ  s*   ø€ Ø�9‰9×Ñ˜X c¨(Ô3ØÜ‰wÑ(Ó*Ð*r0   c                 ól   — | j                   j                  «        | j                  j                  «        y rC   )rö  Úsqueeze_current_textrå  r�  r¹   s     r(   r÷  z"PyShell.squeeze_current_text_event¡  s$   € Ø�‰×*Ñ*Ô,Ø×Ñ×)Ñ)Õ+r0   c                 ó8   — | j                   j                  «        y rC   )rå  r�  )rF   rn   rJ   rÏ   s       r(   Úon_squeezed_expandzPyShell.on_squeezed_expand¥  s   € Ø×Ñ×)Ñ)Õ+r0   rC   )r±   )Or¬   r­   r®   Úidlelib.squeezerrÅ  r   rQ  r»   r   rÆ   r   râ  r   r°   rœ   r6   Ú	itertoolsÚ	takewhileÚ_idxrv   Úallow_line_numbersr…  Úidlelib.historyrÕ  Úidlelib.sidebarrÖ  rI   r  r	  r  r  r#  ró  r`  r8  r½  re  r`  ra  r/  r1  rñ  r3  rò  r4  r5  rE  r¸  rg  r6  rª   rO  rR  rW  r¸   r9  rf  rh  rï  rð  rî  rí  rq  r€  rû   rŽ  rw  r°  rô  rõ  r<  r¢  ra  r!   r[   r_   r÷  r¯  rÝ   rÞ   s   @r(   r·   r·   G  s´  ø„ Ý)à¡.Ó"2Ñ2€Kð ,€NØ)€Mò€Jð ×*Ñ*Ø/ð.ñ €Kð ‰s‘4Ð+˜	×+Ñ+Ù2°KóAó ó ñ €Dð ×Ñ�tð 2ô 3ð 	àÐØ$Ðõ (Ý,óL;ô\-ô/ò ò7òó"+ð( €GØ€IØ€HØ€IØ€GØÐò òó%ò7óò&ò
&ò>òò
ò(ò"ò ò ð R€Jòò4òò.óò,òòMò^(ð8 "�r—z‘zÐ"8Ó9Ðò
0óó!ó6òòJò*óô)ô+ó
,ö,r0   r·   c           
      ó~   — | j                   dk(  r.dD ](  }| j                  |dd| j                  |d«      z   «       Œ* yy)z6Make paste replace selection on x11.  See issue #5124.Úx11)ÚTextÚEntryÚSpinboxz	<<Paste>>z%catch {%W delete sel.first sel.last}
N)Ú_windowingsystemÚ
bind_class)r‘   Úclss     r(   Úfix_x11_paster¿  ©  sG   € à×Ñ Ò%Û-ˆCØ�O‰OØØØ8ØŸ™¨¨[Ó9ñ:õ;ñ .ð &r0   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            	      ó¸  — 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}		 | j                  t        j                  dd  d«      \  }
}
D ]è  \  }}|dk(  r|}d}|dk(  rd}d}|dk(  rd}|dk(  r7t        j                  j!                  t        «       t        j                  «        |dk(  rd}|dk(  rt        dt        j                  ¬«       da|dk(  rD|}t"        j$                  j'                  |«      rn t        d|«       t        j                  «        d}|dk(  rd}	d}|dk(  sŒÜ|t(        _        d}Œê r(|d   dk(  r t        j,                  j/                  «       }d}t1        t3        t        j$                  «      «      D ]C  }t"        j$                  j5                  t        j$                  |   «      t        j$                  |<   ŒE |r|d   dk(  rdg|dd  z   t        _	        nÿ|rdg|z   t        _	        ní|r|g|z   t        _	        nÛ|r“d}g }|D ]0  }|j7                  t"        j$                  j9                  |«      «       Œ2 |D ]T  }t"        j$                  j5                  |«      }|t        j$                  vsŒ5t        j$                  j;                  d|«       ŒV nFt#        j<                  «       }|t        j$                  vr t        j$                  j;                  d|«       t?        j@                  dddd¬«      }|xs |}|xs | }t        r|s
tC        «        tE        d¬ «      a#tF        jI                  «        dd!l%m&}  |tF        «       t"        j$                  jO                  t"        j$                  j9                  tP        «      d"«      } |«       d#k(  r7t"        j$                  jO                  |d$«      }tF        jS                  |¬%«       nˆ|jU                  «       sxtV        d&k\  rd'}d(}nd)}d*}|D �cg c]'  }t"        j$                  jO                  |d+||fz  «      ‘Œ) }}|D �cg c]  }tY        tF        |¬,«      ‘Œ }}tG        jZ                  dg|¢­Ž  t]        tF        «       t_        tF        «       ta        tF        «      a1|je                  tF        tb        «       |rK|sI|sG|d d  D ])  }tb        jg                  |«      �Œ|ji                  |«       Œ+ |stb        jk                  «        |rRtb        jm                  «       }|sy |jU                  «       r;tb        jn                  r+|jp                  js                  «        ntb        jt                  }|r|jw                  «        |	r|t"        jx                  j{                  d-«      xs t"        jx                  j{                  d.«      }|r:t"        j$                  j'                  |«      r|j|                  j                  |«       |s|r�|j|                  j�                  d/jƒ                  t        j                  «      «       |r|j|                  j…                  |«       n^|r\|j|                  j‡                  |«       |j|                  j                  |«       n%|r#|j‰                  «       }|r|j‹                  |«       tb        jŒ                  r%tF        j�                  «        tb        jŒ                  rŒ%tF        j‘                  «        t        d«       y # | j                  $ rE}t        d	|› d
t        › �t        j                  ¬«       t        j                  d«       Y d }~�Œód }~ww xY wc c}w c c}w )0Nr   )Úsystem)Útesting)ÚmacosxTFr   zc:deihnr:st:zError: r‡   r   r¥   r  z-dz-ez-hz-iz-nz: Warning: running IDLE without a subprocess is deprecated.z-rzNo script file: z-sz-tÚ-rb   r  r  zeditor-on-startupr  )r
  ÚIdle)Ú	className)Úfix_scalingÚIconsÚWindowszidle.ico)r	  g333333!@z.png)é   é    é0   é   z.gif)rÊ  rË  rÌ  z	idle_%d%s)Úmasterr   ÚIDLESTARTUPÚPYTHONSTARTUPzdif 1:
            import sys as _sys
            _sys.argv = {!r}
            del _sys
            
)IÚgetoptrV  rÁ  r  rÂ  rÃ  r/   r”  rô   ÚargvÚerrorrb  Ú	usage_msgr  Úexitr  r!   rP   rQ   rš   r·   rQ  r×   r“  r¦   rœ   r•  rp   Údirnamerv   Úgetcwdr   r  ÚNoDefaultRootrã  r‘   rä  Úidlelib.runrÇ  rR   Ú__file__Úwm_iconbitmapÚisAquaTkÚ	TkVersionÚ
PhotoImageÚwm_iconphotor   r¿  r³   rN   ÚsetupAppr‹   r}   ÚnewrO   Údictrµ   Úlowerrq   r5  Úenvironr  rr   r�  rV  rW  r�  r£  ÚpreferTabsPreferenceWarningr¢  Úinversedictrd  Údestroy)rÑ  rÁ  rÂ  rÃ  Úenable_shellÚenable_editrt   ÚcmdÚscriptÚstartupÚoptsrY   r¥  ÚoÚar.  Úpathxr&   ÚdirÚ
edit_startrÇ  ÚicondirÚiconfileÚextÚsizesÚsizeÚ	iconfilesÚiconsrØ  Úprefer_tabs_preference_warnings                                 r(   r  r  ê  sÏ  € ÛÝÝÝô �TÔØ€NØ€LØ€KØ€EØ
€CØ€FØ€GðØ—]‘]¤3§8¡8¨A¨B <°Ó@‰
ˆˆdó ‰ˆˆ1Ø�Š9ØˆCØˆLØ�Š9ØˆEØˆLØ�Š9ØˆKØ�Š9Ü�J‰J×ÑœYÔ'Ü�H‰HŒJØ�Š9ØˆLØ�Š9ÜÐNÜ—z‘zõ#à"ˆNØ�Š9ØˆFÜ�w‰w�~‰~˜fÔ%ØäÐ(¨&Ô1Ü—‘”
ØˆLØ�Š9ØˆGØˆLØ�‹9Ø"#ŒGÔØ‰Lð? ñ@ ��Q‘˜3’Ü�i‰i�n‰nÓˆØˆä”3”s—x‘x“=Ö!ˆÜ—g‘g—o‘o¤c§h¡h¨q¡kÓ2Œ�‰�Šð "á��Q‘˜3’Ø�4˜$˜q˜r˜(‘?Œ�Ù	Ø�6˜D‘=Œ�Ù	Ø�8˜d‘?Œ�Ù	ØˆØˆÛˆHØ�L‰LœŸ™Ÿ™¨Ó2Õ3ð ãˆCÜ—'‘'—/‘/ #Ó&ˆCØœ#Ÿ(™(’?Ü—‘—‘  3Õ'ñ ô
 �i‰i‹kˆØ”c—h‘hÑÜ�H‰H�O‰O˜A˜sÔ#ä×#Ñ# F¨IØ$7¸fôF€JàÒ+ €KØÒ2 { ?€Lõ ™gÜŒÜ˜Ô€DÜ‡M�M„OÝ'Ù”Ôô �g‰g�l‰lœ2Ÿ7™7Ÿ?™?¬8Ó4°gÓ>€GÙƒx�9ÒÜ—7‘7—<‘< ¨Ó4ˆÜ×Ñ 8ÐÕ,Ø�_‰_ÔÜ˜ÒØˆCØ%‰EàˆCØ ˆEá!&ó(Ù!&˜ô —W‘W—\‘\ '¨;¸$À¸Ñ+DÕEØ!&ð 	ð (ñ "+ó,Ù!*�Xô ¤4¨hÖ7Ø!*ð 	ð ,ä×Ñ˜$Ð' Ó'ô ”$ÔÜ”$ÔÜœDÓ!€EØ
‡O�O”Dœ%Ô áÙ‘vØ ¡›G�Ü—:‘:˜hÓ'Ñ/à—K‘K Õ)ð $ñ Ü—	‘	”áÜ× Ñ Ó"ˆÙØØ�?‰?Ô¤§¢ð
 �I‰I�O‰OÕä—‘ˆñ Ø×ÑÔÙÜ—:‘:—>‘> -Ó0ò 3Ü—:‘:—>‘> /Ó2ð 	áœŸ™Ÿ™ xÔ0Ø�L‰L×!Ñ! (Ô+Ù
‰fØ�‰×Ñð !÷ ‘&œŸ™Ó"ô		$ñ
 Ø�L‰L×#Ñ# CÕ(ÙØ�L‰L×(Ñ(¨Ô0Ø�L‰L×!Ñ! &Õ)Ù	ð *0×)KÑ)KÓ)MÐ&Ù)Ø×ÑÐ=Ô>ä
×
Ò
Ü�‰Œô ×
Ó
ä‡L�L„NÜ�UÕøðy �<‰<ò Ü�˜�u˜Bœy˜kÐ*´·±Õ<Ü�‰��Šûðüòn(ùò,s#   ±&[; Ð,]Ð6]Û;]Ü
:]
Ý
])NN)Nrô   r¬   rõ   rY  ÚImportErrorrb  rf  r»  rV  Úidlelib.utilr	   r
   rš  r   r±  r4   rP   Úos.pathr   r€  r#  r  Útextwrapr   rH  r  r’  r,   Úidlelib.colorizerr   Úidlelib.configr   Úidlelib.delegatorr   r  r   r   Úidlelib.editorr   r   Úidlelib.filelistr   Úidlelib.outwinr   r   r   rÙ  r   r   r   Úidlelib.undor   r”  r  rù   ÚeofrÕ  rb  Ú	NameErrorr    r)   r+   r/   Ú
checkcacher<   r>   r³   r»   rÆ   rà   Ú	RPCClientrã   rî   rð   r·   r¿  rÔ  r  r±   r0   r(   Ú<module>r
     sñ  ðó ØˆzÒØ%(§[¡[°Ñ%<€C‡K�KÐ!Ñ"ðÜð ‡<�<�7ÒÝ*Ù„Oå å 'Û Û Û 	Û Ý #Û 	Û Û Ý  Û Û Û Û å ,Ý #Ý 'Ý Ý ß 6Ý %Ý 'Ý Ý ß GÑ GÝ &ð €à€Ø€ð	Ø
 €CØ€D„HØ€D„Hð —‘€ð >Bóð" Ð ò)ñ �Ô à+/Ø2;×2FÑ2Fóð( 5€	Ô ô{"˜,ô {"ô|�hô ô(
2˜^ô 
2ô/˜Mô /ôD1 	ô 1ô�#—-‘-ô òôk(Ð0ô k(ô\_	,ˆlô _	,òD;ð4€	òlnðb ˆzÒÙ„Fá �Õ øðk4 ò Ù	ð 9Ø?B¿~¹~õOá
�Q‹-Ððûðb ò 	Ùð	ús   §F( Ã!G Æ("G
ÇGÇG