f ž _Œßc @sÐddlZedkr ejdejd<z ddlTWn(eyTedejdedƒ‚Yn0ejdkršz ddl Z dZ e   d ¡  e ¡Wnee efy˜Yn0ddlmZed krìeƒat ¡dd lmZetƒejd d etdedƒ‚ddlmZddlZddlZddlZddlmZddlZddl Z ddl!Z!ddl"m#Z#ddl$Z$ddl%Z%ddl&Z&ddl'Z'ddl(m)Z)ddl*m+Z+ddl,m-Z-ddl,m.Z.ddl/m0Z0m1Z1ddl2m3Z3ddl4m5Z5ddl,m6Z6ddlm7Z7m8Z8m9Z9ddl:m;Z;dZd:dd„Z?da@dd „ZAeAd!ƒdejBfd"d#„ZCeCe_BGd$d%„d%e0ƒZDGd&d'„d'e3ƒZEGd(d)„d)e)ƒZFGd*d+„d+e;ƒZGGd,d-„d-e6jHƒZId.d/„ZJGd0d1„d1eƒZKGd2d3„d3e5ƒZLd4d5„ZMd6ZNd7d8„ZOedkrÄeOƒeAd9ƒdS);éNÚ__main__zidlelib.pyshell)Z*zJ** IDLE can't import Tkinter. Your Python may not be configured for Tk. **©ÚfileéZwin32Zshcoreg!@©Ú fix_scalingzIdle 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 CsN|dur t}z&| t|||||d¡| d¡WnttfyHYn0dS)aShow 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)ÚmessageZcategoryÚfilenameÚlinenorr©r#ú(/usr/lib64/python3.10/idlelib/pyshell.pyÚidle_showwarningEs ÿr%cCs0|rtdur,tjatt_ntdur,tt_dadS)z>Replace warning.showwarning with idle_showwarning, or reverse.N)Ú_warnings_showwarningÚwarningsZ showwarningr%)Zcapturer#r#r$Úcapture_warningsXsr(TcCsXtj}i}t|ƒD].}|dd…|dd…dkr| |¡||<q||ƒ| |¡dS)aoExtend linecache.checkcache to preserve the entries Rather than repeating the linecache code, patch it to save the 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ÚlistZpopÚupdate)r!Zorig_checkcacher,ÚsaveÚkeyr#r#r$Úextended_linecache_checkcachegs  r1c@sveZdZdZdd„Zgd¢Zddd„Zdd „Zdd d „Zdd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zd S)ÚPyShellEditorWindowz6Regular text edit window in IDLE, supports breakpointscGs–g|_tj|g|¢RŽ|j d|j¡|j d|j¡|j d|jj¡t j   t j d¡|_|jj|fdd„}|j |¡|jjrŠ| ¡| ¡dS)Nú<>ú<>z<>zbreakpoints.lstcSs| ¡|ƒdS©N)Úrestore_file_breaks)Zold_hookÚselfr#r#r$Úfilename_changed_hookŒóz;PyShellEditorWindow.__init__..filename_changed_hook)Ú breakpointsrÚ__init__ÚtextÚbindÚset_breakpoint_hereÚclear_breakpoint_hereÚflistÚ open_shellÚosÚpathÚjoinr ZuserdirÚbreakpointPathÚioZfilename_change_hookZset_filename_change_hookr!r6Úcolor_breakpoint_text)r7Úargsr8r#r#r$r;sÿÿ  zPyShellEditorWindow.__init__))ZCutz<>Úrmenu_check_cut)ZCopyz<>Zrmenu_check_copy)ZPastez <>Úrmenu_check_paste)NNN)zSet Breakpointr3N)zClear Breakpointr4NTcCsD|jdurdS|r(t ¡}t |d¡}n dddœ}|j d|¡dS)z,Turn colorizing of breakpoint text on or offNÚbreakÚ)Ú foregroundÚ backgroundÚBREAK)rFr Ú CurrentThemeÚ GetHighlightr<Z tag_config)r7ZcolorÚthemeZcfgr#r#r$rGžs  z)PyShellEditorWindow.color_breakpoint_textcCs†|j}|jj}| dd|d|d¡z|j |¡WntyV|j |¡Yn0z|jj j j }|  ||¡Wn Yn0dS)NrOz%d.0r) r<rFr!Útag_addr:ÚindexZ ValueErrorÚappendr@ÚpyshellÚinterprr>)r7r"r<r!Údebugr#r#r$Úset_breakpointªs  z"PyShellEditorWindow.set_breakpointNcCs>|j}|jj}|s| ¡dStt| d¡ƒƒ}| |¡dS)NÚinsert)r<rFr!ÚbellÚintÚfloatrTrY)r7Úeventr<r!r"r#r#r$r>¸sz'PyShellEditorWindow.set_breakpoint_herecCsŠ|j}|jj}|s| ¡dStt| d¡ƒƒ}z|j |¡Wn Yn0|  ddd¡z|j j j j }| ||¡Wn Yn0dS)NrZrOúinsert linestartzinsert lineend +1char)r<rFr!r[r\r]rTr:ÚremoveÚ tag_remover@rVrWrr?)r7r^r<r!r"rXr#r#r$r?Ás$ÿ z)PyShellEditorWindow.clear_breakpoint_herecCsd|jr`|j}|jj}|s$| ¡dSg|_| ddt¡z|jjj j }|  |¡Wn Yn0dS)NrOú1.0) r:r<rFr!r[raZENDr@rVrWrÚclear_file_breaks)r7r<r!rXr#r#r$rcÔs z%PyShellEditorWindow.clear_file_breaksc Cs:|j}|jj}z8t|jdƒ}| ¡}Wdƒn1s:0YWnty\g}Yn0z~t|jdƒ^}|D]}| |d¡sr| |¡qr|  ¡|j}|r¼| |dt |ƒd¡Wdƒn1sÐ0YWnXty4}z>t |j ddƒs d|j _ tjd d t |ƒ|jd WYd}~n d}~00dS) z#Save breakpoints when file is savedÚrNÚwú=Ú Úbreakpoint_error_displayedFTz IDLE Errorz$Unable to update breakpoint list: %s)Ztitler r)r:rFr!ÚopenrEÚ readlinesrÚ startswithrÚupdate_breakpointsÚstrÚgetattrÚrootrhÚ tkMessageBoxÚ showerrorr<)r7Zbreaksr!ÚfpÚlinesZnew_filerZerrr#r#r$Ústore_file_breaksãs2*   <ÿýz%PyShellEditorWindow.store_file_breakscCs¶|j ¡|jdurdS|jj}|dur,dStj |j¡r²t|jdƒ}|  ¡}Wdƒn1sd0Y|D]>}|  |d¡rrt |t |ƒdd…ƒ}|D]}|  |¡q qrdS)Nrdrfr)r<r.rFr!rBrCÚisfilerErirjrkZevalÚlenrY)r7r!rrrsrZbreakpoint_linenumbersZbreakpoint_linenumberr#r#r$r6 s  &z'PyShellEditorWindow.restore_file_breakscCs$|j}| d¡}| |¡}||_dS)z3Retrieves all the breakpoints in the current windowrON)r<Z tag_rangesÚranges_to_linenumbersr:)r7r<ÚrangesZlinenumber_listr#r#r$rls  z&PyShellEditorWindow.update_breakpointscCsbg}tdt|ƒdƒD]H}tt||jƒƒ}tt||djƒƒ}||kr| |¡|d7}q@q|S)Nrér)Úrangervr\r]ZstringrU)r7rxrsrTr"Úendr#r#r$rw%s  z)PyShellEditorWindow.ranges_to_linenumberscCs| ¡t |¡dS)z7Extend base method - clear breaks when module is closedN)rcrÚ_close©r7r#r#r$r|6r9zPyShellEditorWindow._close)Tr5r5)Ú__name__Ú __module__Ú __qualname__Ú__doc__r;Ú rmenu_specsrGrYr>r?rcrtr6rlrwr|r#r#r#r$r2~s  *r2c@s"eZdZdZeZdZddd„ZdS)ÚPyShellFileListz8Extend base class: IDLE supports a shell and breakpointsNcCs8|jr|jj ¡nt|ƒ|_|jr2|j ¡s2dS|jSr5)rVÚtopZwakeupÚPyShellÚbegin©r7r^r#r#r$rAEs  zPyShellFileList.open_shellr5)r~rr€rr2rrVrAr#r#r#r$rƒ<srƒc@s0eZdZdZdd„Zdd„Zdd„Zdd „Zd S) ÚModifiedColorDelegatorz8Extend base class: colorizer for the shell window itselfcCst |¡| ¡dSr5)r r;Ú LoadTagDefsr}r#r#r$r;Só zModifiedColorDelegator.__init__cCs*| ddd¡| ddd¡t |¡dS)NZTODOrbÚiomarkZSYNC)rarSr Úrecolorize_mainr}r#r#r$rŒWsz&ModifiedColorDelegator.recolorize_mainc CsJt |¡t ¡}|j dddœt |d¡t |d¡t |d¡dœ¡dS)N)rNrMÚstdoutÚstderrÚconsole)ÚstdinrrŽr)r r‰r rPÚtagdefsr.rQ)r7rRr#r#r$r‰\s    üz"ModifiedColorDelegator.LoadTagDefscCs|jD]}| |dd¡qdS)Nr‹r{)r‘ra)r7Útagr#r#r$Ú removecolorsfó z#ModifiedColorDelegator.removecolorsN)r~rr€rr;rŒr‰r“r#r#r#r$rˆPs  rˆc@s$eZdZdZddd„Zddd„ZdS) ÚModifiedUndoDelegatorz;Extend base class: forbid insert/delete before the I/O markNcCsLz$|j |dd¡r"|j ¡WdSWnty6Yn0t ||||¡dS©Nú„Z%dS)CÚModifiedInterpretercCsB||_tjdj}tj||dd|_d|_t|_ |j j j |_ dS)Nr)ÚlocalsF)Ú tkconsoleÚsysÚmodulesZ__dict__r r;Ú restartingÚsubprocess_arglistÚPORTÚportÚcompileÚcompilerÚflagsÚoriginal_compiler_flags)r7r¦r¥r#r#r$r;—s zModifiedInterpreter.__init__NcCs&|jdur| ¡|_t |j¡|_dSr5)rªÚbuild_subprocess_arglistÚ subprocessZPopenÚ rpcsubprocr}r#r#r$Úspawn_subprocess¤s  z$ModifiedInterpreter.spawn_subprocesscCsJdd„tjDƒ}tjdddddd}d |f}tjg|d |t|jƒgS) NcSsg|] }d|‘qS)z-Wr#)Ú.0Úsr#r#r$Ú ¬sz@ModifiedInterpreter.build_subprocess_arglist..ÚmainÚGeneralzdelete-exitfuncFÚbool)ÚdefaultÚtypez&__import__('idlelib.run').run.main(%r)ú-c)r§Z warnoptionsr Ú GetOptionZ executablermr¬)r7reZ del_exitfZcommandr#r#r$r±©s  ÿ z,ModifiedInterpreter.build_subprocess_arglistc CsVt|jf}tdƒD]4}t |¡zt|ƒ|_WqTWqtyFYq0| ¡dS|jj   ¡d|_t dkr„|jj   t jt jd¡| ¡|jj  d¡z|j ¡Wnt jyÆ| ¡YdS0|j d|j¡|j d|jj¡|j d|jj¡|j d|jj¡|j d |jj¡|j d t¡|j d |¡|jd d | ¡|jS)Nirri rrrrŽr@r+rWT©Úwith_cwd)ÚHOSTr¬rzÚtimeZsleepržÚrpccltrÚdisplay_port_binding_errorÚlistening_sockZ getsocknamer«Z setsockoptÚsocketZ SOL_SOCKETZ SO_REUSEADDRr´Z settimeoutÚacceptÚtimeoutÚdisplay_no_subprocess_errorZregisterr¦rrrŽr@r+Ú transfer_pathÚpoll_subprocess)r7ZaddrÚir#r#r$Ústart_subprocessµs@       ÿ z$ModifiedInterpreter.start_subprocessFrLcCs.|jr |jSd|_| ¡}|r>ÚERRORz/pyshell.ModifiedInterpreter: Subprocess ERROR: )rÃZ pollresponseÚ active_seqrŸrÚKeyboardInterruptr¦ÚclosingrÚÚ resetoutputrÚprintZreprÚgetvarÚremote_stack_viewerr§Ú __stderr__Ú endexecutingrr<ÚafterÚ pollintervalrËrà)r7ZcltÚresponseZhowZwhatrZerrmsgr#r#r$rË=sB     ÿz#ModifiedInterpreter.poll_subprocesscCs ||_dSr5r)r7rr#r#r$Ú setdebuggererÜzModifiedInterpreter.setdebuggercCó|jSr5rr}r#r#r$rÑhrÜzModifiedInterpreter.getdebuggercCs|jj d|j¡dS)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_viewerks z,ModifiedInterpreter.open_remote_stack_viewerc Cs°ddlm}|j dddi¡}|dur6|jj ¡dS| |j|¡}ddlm }m }t |jjƒ}t   ¡}t  |d¡d}|||dd } | jjd d d || jd|ƒ} |  ¡dS) Nr)Ú debugobj_rrÛZ stackviewer)r@)ÚScrolledCanvasÚTreeNodeZnormalrN)ZbgZhighlightthicknessrZboth)ÚexpandZfill)ÚidlelibrõrÃÚ remotequeuer¦ror[ZStubObjectTreeItemZ idlelib.treerör÷ZToplevelr rPrQZframeZpackZcanvasrø) r7rõZoidZitemrör÷r„rRrNZscZnoder#r#r$rìxs   z'ModifiedInterpreter.remote_stack_viewerrcCs| |¡}| ||¡dS)z1Like runsource() but assumes complete exec sourceN)Ú stuffsourceÚexecfile©r7Úsourcer!r#r#r$Ú execsource‹r”zModifiedInterpreter.execsourcec CsÀ|durZt |¡8}| ¡}trd|j}|jd|_| d¡}t|ƒdd||ftj|<|S)z"Stuff source in the filename cachez rrgr)ÚgidÚsplitrvr+r,)r7rþr!rsr#r#r$rû­s    zModifiedInterpreter.stuffsourcecCs| d|f¡dS)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ã©r7r!r#r#r$Úprepend_syspathµsøz#ModifiedInterpreter.prepend_syspathc CsÄ|j}|j}| ddd¡t ¡\}}}t|ddƒp:|p:d}t|ddƒpJd}t|d dƒpZd } | d krl|d7}|dkr‚d | d} nd |d| df} | || ¡| ¡| d |¡|  ¡dS)z§Override Interactive Interpreter method: Use Colorizing Color the offending position instead of printing it and pointing at it with a caret. rårbr{ÚmsgrLzr"rÚoffsetrziomark + %d charsz&iomark linestart + %d lines + %d charszSyntaxError: %s N) r¦r<rar§Zexc_infornZcolorize_syntax_errorrérrØ) r7r!r¦r<r¼ZvalueZtbr r"r Zposr#r#r$rÁs$ÿ z#ModifiedInterpreter.showsyntaxerrorcCs6|j ¡| ¡t |¡|j d¡r2|j ¡dS)z1Extend base class method to reset output properlyräN)r¦réÚchecklinecacher Ú showtracebackrëÚopen_stack_viewerr}r#r#r$rÛs    z!ModifiedInterpreter.showtracebackcCs>tj}t| ¡ƒD]&}|dd…|dd…dkr||=qdS)Nrr)r*)r+r,r-Zkeys)r7Zcr0r#r#r$rãsz"ModifiedInterpreter.checklinecachecCs@|jjr| ¡dS|jr0|j dd|fi¡n t||jƒdS)z*Run the code without invoking the debuggerrrÛrr)r¦rÔÚdisplay_executing_dialogrÃrúrÛr¥)r7rr#r#r$rãés zModifiedInterpreter.runcommandcCst|jjr|j ¡| ¡|j}z zT|j ¡|sV|jdurV|j dd|fi¡|_ n |rj|  ||j ¡n t ||j ƒWnžt y¸|jjs²tjddd|jjdr¨‚n | ¡n‚Yn`trætd|jjd | ¡|j ¡n,|jjr d |j_td |jjd n| ¡Yn0Wtspz|j ¡Wn@tyBYn.0tsnz|j ¡W0tylY000dS) úOverride base class methodNrÛrzExit?zDo you want to exit altogether?Zyes©r»rz IDLE internal error in runcode()rFrç)r¦rÔrWrÚrrÚbeginexecutingrÃZ asyncqueueræZrunr¥rÛÚ SystemExitrèrpZaskyesnor<rrrêrŽrîÚcanceledr)r7rrr#r#r$rõsZ   ÿ ü ÿ  üzModifiedInterpreter.runcodecCs|jj |¡S)r)r¦rŽr)r7r¶r#r#r$r#r¡zModifiedInterpreter.writecCótjdd|jjddS)NzPort Binding ErroraAIDLE 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©rprqr¦r<r}r#r#r$rÄ's øz.ModifiedInterpreter.display_port_binding_errorcCr)NzSubprocess 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-failurerrr}r#r#r$rÉ2s ûz/ModifiedInterpreter.display_no_subprocess_errorcCr)NzAlready executingzYThe Python Shell window is already executing a command; please wait until it is finished.rrr}r#r#r$r:s üz,ModifiedInterpreter.display_executing_dialog)FrL)Fr5r5)&r~rr€r;ràrÃr³r´r±rÍrÚrÞrßrárÓrÊrærËrròrÑrôrìrrÿrürrûr rrrrãrrrÄrÉrr#r#r#r$r¤•sF  + , &     . r¤csŠeZdZdeƒZeZeZgd¢Z e j dgZ dZ ddl mZdNdd „Zd d „ZdZdZdZdZdZdZd d „Zdd„ZdOdd„Zdd„ZdPdd„Zdd„Zdd„Zdd„Zdd„Zdd„Z d d!„Z!d"d#„Z"d$d%„Z#d&Z$d'd(„Z%d)d*„Z&d+d,„Z'd-d.„Z(dQd/d0„Z)d1d2„Z*d3d4„Z+d5d6„Z,d7d8„Z-d9d:„Z.dRd;d<„Z/dSd=d>„Z0dTd?d@„Z1dAdB„Z2dCdD„Z3dEdF„Z4dUdHdI„Z5‡fdJdK„Z6‡fdLdM„Z7‡Z8S)Vr…z IDLE Shell ))rZ_File)ZeditZ_Edit)rXZ_Debug)ZoptionsZ_Options)ZwindowZ_Window)ZhelpZ_Help)ZSqueezeú<>Fr)ÚHistoryNcCs$tr&|j}|dddkr&| dd¡t|ƒ|_|durVtƒ}t|ƒ| ¡t|ƒ}t   ||dd¡d|_ d|_ t tdƒr‚tjnd|_|j d ¡d |_|j|_|j}|jd d | d |j¡| d|j¡| d|j¡| d|j¡| d|j¡| d|j¡| d|j¡tr8| d|j¡| d|j¡|  |¡}| d|j!¡tj"|_#tj$|_%tj&|_'ddl(m)}t*|d|j+|j,ƒ|_&t-|d|j+|j,ƒ|_"t-|d|j+dƒ|_$t-|d|j+|j,ƒ|_.tsà|j"t_"|j$t_$|j&t_&zddl/}|j0|_1Wntj2t_$‚Yn0| 3|j¡|_4d|_5dS)NryrÚshell)rZShe_llTéÚps1rrgr)Zchar)Úwrapz<>z<>z<>z<>z<>ú<>räz<>z<>r)ÚiomenurrrŽZbackslashreplaceri2)6rÚ menu_specsrZr¤rWÚTkrÚwithdrawrƒrr;ZusetabsZ indentwidthZhasattrr§rÚsys_ps1r Zprompt_last_lineÚpromptr<Z configurer=Úenter_callbackÚlinefeed_callbackÚcancel_callbackÚ eof_callbackrÚtoggle_debuggerÚtoggle_jit_stack_viewerÚview_restart_markÚ restart_shellZSqueezerZsqueeze_current_text_eventrÚ save_stdoutrŽÚ save_stderrrÚ save_stdinrùr rZencodingZerrorsrrÚpydocZ plainpagerZpagerrírÚhistoryrð)r7r@Zmsror<Zsqueezerr r1r#r#r$r;^sx    ÿ ÿÿÿÿ zPyShell.__init__cCs tjddS)NT)Z shell_only)r Z GetExtensionsr}r#r#r$Úget_standard_extension_names¡rÜz$PyShell.get_standard_extension_namescCs|adSr5©r)r7Zstreamr#r#r$Úset_warning_stream«r¡zPyShell.set_warning_streamcCstSr5r4r}r#r#r$Úget_warning_stream¯rÜzPyShell.get_warning_streamcCsH|jr$tjdd|jd| ¡dS|j ¡}|r<| ¡n| ¡dS)NzDon't debug nowz*You can only toggle the debugger when idlerrK) rÔrprqr<Úset_debugger_indicatorrWrÑÚclose_debuggerÚ open_debugger)r7r^Údbr#r#r$r*²sþ  zPyShell.toggle_debuggercCs|j ¡}| d| ¡dS)Nr)rWrÑZsetvar©r7r:r#r#r$r7ÀrŠzPyShell.set_debugger_indicatorcCsdSr5r#r‡r#r#r$r+ÄrÜzPyShell.toggle_jit_stack_viewercCsh|j ¡}|r\|j d¡| ¡|jjr8t |jj¡| ¡|j  d¡|j |_ |  ¡|  ¡dS)Nz [DEBUG OFF] )rWrÑròrÒrÃrZclose_remote_debuggerrérrr$r%rØr7r;r#r#r$r8Çs   zPyShell.close_debuggercCsX|jjrt |jj|¡}n t |¡}|j |¡| ¡d|j|_ |  ¡|  ¡dS)Nz [DEBUG ON] ) rWrÃrZstart_remote_debuggerrZDebuggerròrÙr$r%rØr7)r7Zdbg_guir#r#r$r9Ôs ÿ   zPyShell.open_debuggercCs| ¡d|_dS)úHelper for ModifiedInterpreterTN)rérÔr}r#r#r$ràr9zPyShell.beginexecutingcCsd|_d|_| ¡dS)r<FN)rÔrrØr}r#r#r$rîåszPyShell.endexecutingcCsD|jr&tjddd|jd}|dur&dS| ¡d|_d|_t |¡S)zExtend EditorWindow.close()zKill?z7Your program is still running! Do you want to kill it?ZokrFZcancelT) rÔrpZ askokcancelr<rÕrrèrrÒ)r7rñr#r#r$rÒësüz PyShell.closecCsV| ¡tr|j ¡|jt_|jt_|j t_ d|_d|_ d|j _ d|_t |¡dS)zEExtend EditorWindow._close(), shut down debugger and execution serverN)r8rrWrár.r§rr/rŽr0rrr@rVr2rr|r}r#r#r$r|ús zPyShell._closecCódS)z8Override EditorWindow method: never remove the colorizerTr#r r#r#r$Úispythonsource r¡zPyShell.ispythonsourcecCrór5)Ú shell_titler}r#r#r$Ú short_titlerÜzPyShell.short_titlezHType "help", "copyright", "credits" or "license()" for more information.cCs„|j dd¡| ¡tr8d}|j ¡}|sD| ¡dSd}tjt _|  dt j t j |j |f¡|j ¡| ¡ddl}d|_dS) Nr‹rZrLFz›==== No Subprocess ==== WARNING: Running IDLE without a Subprocess is deprecated and will be removed in a later version. See Help/IDLE Help for details. zPython %s on %s %s %srT)r<rÖrérrWrÍrÒrZ displayhookr§rZversionÚplatformÚ COPYRIGHTZ focus_forcerØÚtkinterZ _default_root)r7ZnosubZclientrCr#r#r$r†s$ ÿ z PyShell.begincCs|js dSd|_|j ¡dS©NT)ÚreadingÚ_stop_readline_flagr„Úquitr}r#r#r$rÕ,szPyShell.stop_readlinecCsˆ|j}zd|_|j ¡W||_n||_0|jr:d|_dS|j dd¡}t|ƒdkrXd}| ¡|jrtd|_t stt ‚|j r„d|_ d}|S)NTFrLr‹rÎrrg) rEr„ÚmainlooprFr<ÚgetrvrérrrçÚ endoffile)r7r/rr#r#r$Úreadline2s(  zPyShell.readlinecCr=rDr#r}r#r#r$ÚisattyIrÜzPyShell.isattycCs¢z|j ddd¡rWdSWn Yn0|jsT|jsT| ¡|j d¡| ¡dSd|_d|_ |jrŽ|jj rŽ|j  ¡r„|j  ¡n |j  ¡|jrž|j ¡dS)Nú sel.firstz!=úsel.lastzKeyboardInterrupt rKFT)r<r™rÔrErérWrrØrJrrÃrÑrÚrßr„rGr‡r#r#r$r(Ls&       zPyShell.cancel_callbackcCsf|jr|jsdS|j ddd¡r0|j ddd¡s4dS|jsL| ¡| ¡nd|_d|_|j  ¡dS)Nr‹z==rZrÎFTrK) rÔrEr<r™rérÒrrJr„rGr‡r#r#r$r)bs ÿ  zPyShell.eof_callbackcCs0|jr"|j dd¡|j d¡n | |¡dS)NrZrgrK)rEr<rZÚseeÚnewline_and_indent_eventr‡r#r#r$r'qs  zPyShell.linefeed_callbackcCs:|jr|jsdSz8|j dd¡}|rF|j ddd¡rF| ||¡WdSWn Yn0|j ddd¡rX|j d d¡}|r°|j dd|d ¡r°| |j |d |d ¡|¡dS|j d d¡}|rø|j d d |d ¡rø| |j |d |d ¡|¡dS|j dd¡}|r>|j |d dd¡r>| |j |d d ¡|¡n| |j dd ¡|¡dS|j ddd¡rx|j dd¡|j dd¡}|r¤|  ¡s¤|j  dd¡|j ddd¡rÄ|  |¡dS|j dd¡|jrö|j  dd¡|j  d¡n |  |¡|j d dd¡|j ¡|jr.|j ¡n| ¡dS)NrMrNz<=r‹rKrZr—úiomark linestartrrrzinsert lineendz>=rr_rÎzend-1c linestartrg)rÔrEr<rIr™ÚrecallZ tag_prevrangeZ tag_nextrangerÖÚstriprrPrZrOrSZupdate_idletasksr„rGÚrunit)r7r^ÚselZprevZnextZindicesr¶r#r#r$r&zsZ   ÿ    zPyShell.enter_callbackc CsLt dd|¡}t dd|¡}| d¡}|j ¡zþ|j ddd¡|j dd ¡|j d d¡}| ¡  d ¡r„|  |¡|j d d¡}|j  d|d   ¡¡t |ƒd krt d|d ¡ d ¡}t d|¡ d ¡}|d d…D]8}| |¡rþ||t |ƒd…}|j  dd| ¡¡qÜW|j d¡|j ¡n|j d¡|j ¡0dS)Nz^\s*\nrLz\n\s*$rgrUrbr{rZrÎr_z:rrz ^([ \t]*))ÚreZsubr r<Zundo_block_startrarÖrIZrstripÚendswithrPrZrSrvZsearchZgrouprkrOZundo_block_stop)r7r¶r^rsZprefixZorig_base_indentZnew_base_indentrr#r#r$rR¹s.      ÿ zPyShell.recallcCs–|j dd¡}t|ƒ}|dkr8||ddvr8|d}q|dkrX||ddkrX|d}|dkrz||ddvrz|d}qX|d|…}|j |¡dS)Nr‹rÎrrz rg)r<rIrvrWr)r7rrÌr#r#r$rTÓs   z PyShell.runitcCsZ|jjr|j ¡Sz tjWntjdd|jdYdSddlm }||j |j ƒdS)NzNo stack tracez@There is no stack trace yet. (sys.last_traceback is not defined)rr)Ú StackBrowser) rWrÃrìr§Zlast_tracebackrprqr<Zidlelib.stackviewerrXror@)r7r^rXr#r#r$rás  ý zPyShell.open_stack_viewercCs|j d¡|j d¡dS)Nr‹rÏ)r<rOr‡r#r#r$r,ïs zPyShell.view_restart_markcCs|jjdddS)z&Callback for Run/Restart Shell Cntl-F6Tr¿N)rWrÚr‡r#r#r$r-ór¡zPyShell.restart_shellcCs:| ¡|j |j¡|j dd¡| ¡|j ¡dS)NrZrÎ) rérrr%r<rÖÚset_line_and_columnrFZ reset_undor}r#r#r$rØ÷s zPyShell.showpromptcCsP|jjj}t|ddd}d | |¡¡}| d¡s:|d7}|jj  d|d¡dS)NrT)r¢ZtabsizeZ expand_tabsrgrQrŽ) rWr¦r¢r rDrrWZperZbottomrZ)r7r r¢ZwrapperZ wrapped_msgr#r#r$Ú show_warningþs   zPyShell.show_warningcCsb|j dd¡}|jr |j |¡|j d¡dkr>|j dd¡|j dd¡| ¡|j ¡dS)Nr‹rÎzend-2crg) r<rIr2ZstorerZrÖrYZctipZremove_calltip_window)r7rþr#r#r$rés zPyShell.resetoutputr#cCsXz0|j dd¡t |||d¡}|j dd¡Wn‚Yn0|jrTd|_tsTt‚|S)Nr‹ZrightrÐF)r<r×rrrrrç)r7r¶r›Zcountr#r#r$rsz PyShell.writecs:z|j ddd¡rWdSWnty.YdS0tƒ ¡S)NrMr—r‹Údisabled)r<r™ršÚsuperrIr}©Z __class__r#r$rIs   zPyShell.rmenu_check_cutcs|j ddd¡rdStƒ ¡S)NrZr—r‹r[)r<r™r\rJr}r]r#r$rJ&szPyShell.rmenu_check_paster5r5r5r5r5r5r5)r#)9r~rr€r r?rˆr r•rr!rr‚Zallow_line_numbersZidlelib.historyrr;r3rErÔrrJrèrFr5r6r*r7r+r8r9rrîrÒr|r>r@rBr†rÕrKrLr(r)r'r&rRrTrr,r-rØrZrérrIrJZ __classcell__r#r#r]r$r…Bsf  ÿ  C    ÿ  ?     r…c Cs2|jdkr.dD]}| |dd| |d¡¡qdS)z6Make paste replace selection on x11. See issue #5124.Zx11)ZTextZEntryZSpinboxz <>z%catch {%W delete sel.first sel.last} N)Z_windowingsystemZ bind_class)roZclsr#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\ddl}ddlm}ddlm}ddlm}tdƒdad}d}d}d}d}d} z| tj dd…d¡\} } WnF|j y´} z,t d | t ftj d t d ¡WYd} ~ n d} ~ 00| D]Ô\} }| d krÒ|}d}| d krâd}d}| dkrîd}| dkr tj t ¡t ¡| dkrd}| dkr6t dtj d da| dkrj|}tj |¡rTnt d|ƒt ¡d}| dkr|d} d}| dkrº|t_d}qº| r²| ddkr²tj ¡}d}tttjƒƒD]}tj tj|¡tj|<qÀ| r | ddkr dg| dd…t_ nª|rd g| t_ n–|r2|g| t_ n‚| r’d}g}| D]}| tj |¡¡qD|D],}tj |¡}|tjvrbtj d|¡qbn"t ¡}|tjvr´tj d|¡tj ddddd}|pÎ|}|pÚ| }trî|sît!ƒt"dda#t# $¡dd l%m&}|t#ƒtj 'tj t(¡d!¡‰|ƒd"krRtj 'ˆd#¡}t#j)|d$nZ| *¡s¬t+d%krpd&‰d'}nd(‰d)}‡‡fd*d+„|Dƒ}d,d+„|Dƒ}t#j,dg|¢RŽt-t#ƒt.t#ƒt/t#ƒa0| 1t#t0¡|r|s|s| dd…D] }t0 2|¡durî|  3|¡qî| st0 4¡|rTt0 5¡}|s6dS| *¡rZt0j6rZ|j7 8¡nt0j9}|rh| :¡| r¨tj; |¡|s´|rü|j= ?d/tj f¡|rÜ|j= @|¡nX|r4|j= A|¡|j= >|¡n8|r4| Bt#¡}|r| C|¡| D¡}|r4| C|¡t0jErHt# F¡q4t# G¡tdƒdS)0Nr)Úsystem)Útesting)ÚmacosxTFrz c:deihnr:st:z Error: %s %srryr½z-dz-ez-hz-iz-nz: Warning: running IDLE without a subprocess is deprecated.z-rzNo script file: z-sz-tz-rLr¸r¹zeditor-on-startuprº)r¼ZIdle)Z classNamerZIconsZWindowszidle.ico)r»g333333!@z.png)éé é0iz.gif)rbrcrdcs"g|]}tj ˆd|ˆf¡‘qS)z idle_%d%s)rBrCrD)rµZsize©ZextZicondirr#r$r·Öóÿzmain..cSsg|]}tt|d‘qS))Zmasterr)Z PhotoImagero)rµÚiconfiler#r#r$r·ØrfZ IDLESTARTUPZ PYTHONSTARTUPzbif 1: import sys as _sys _sys.argv = %r del _sys )HÚgetoptrAr_rùr`rar(rr§ZargvZerrorrêÚ usage_msgrŽZexitrrrBrCrur…r?rrrzrvrrUZdirnamerZZgetcwdr r¾Z NoDefaultRootr"ror#Ú idlelib.runrrDZ__file__Z wm_iconbitmapZisAquaTkÚ TkVersionZ wm_iconphotorr^rƒr@ZsetupApprir`ZnewrAZdictr„ZlowerrVr9ZenvironrIrWrürãrÿr ZtkVersionWarningrZZpreferTabsPreferenceWarningZ inversedictrHZdestroy)rhr_r`raZ enable_shellZ enable_editrXZcmdZscriptZstartupZoptsrHr ZoZarÌZpathxr!ZdirZ edit_startrrgZsizesZ iconfilesZiconsrZtkversionwarningZprefer_tabs_preference_warningr#rer$r¸ms$         ÿ       ÿ         ÿÿ    ÿ  ü     r¸F)NN)Pr§r~r¨rCZ ImportErrorrêrírrAZctypesZPROCESS_SYSTEM_DPI_AWAREZOleDLLZSetProcessDpiAwarenessrrZtkinter.messageboxZ messageboxrprkr"ror#rjrrqrr r+rBZos.pathr rVrÆr²Ztextwrapr rÝrÂrr'Zidlelib.colorizerr Zidlelib.configr rùrrZidlelib.editorrrZidlelib.filelistrZidlelib.outwinrrrrrZ idlelib.undorrÁr«rr%r&r(Z checkcacher1r2rƒrˆr•Z RPCClientržr£r¤r…r^rir¸r#r#r#r$Zs¦  ÿ   þ             ÿ ?0m 66