B YI~dEOã@s:ddlZddlZddlZddlZddlZddlZddlZddlZddlZ ddl Z ddl Z ddl m Z ddl mZddl mZddl mZddl mZddl mZddl mZddlZddlZeejd d ƒsüx"d D]Zeeeƒejd e=qÒWd ejd _dZd@dd„ZdAdd„Zdadd„Zedƒe  ¡Z!e!fdd„Z"d a#d a$d a%dBdd„Z&dd„Z'dd„Z(dd„Z)d d!„Z*d"d#„Z+d$d%„Z,d&d'„Z-d(d)„Z.d*Z/d+d,„Z0d-d.„Z1Gd/d0„d0ej2ƒZ3Gd1d2„d2ej4ƒZ5Gd3d4„d4e5ƒZ6Gd5d6„d6e5ƒZ7Gd7d8„d8ej8ƒZ9Gd9d:„d:e:ƒZ;ed?�ed ƒdS)CéN)Ú autocomplete)Úcalltip)Ú debugger_r)Ú debugobj_r)Úiomenu)Úrpc)Ú stackviewerz idlelib.runÚfirstrun)Z simpledialogZ messageboxÚfontZdialogZ filedialogZ commondialogZttkztkinter.Fz 127.0.0.1cCsVd}|d||f7}|dkr(t ||¡}| ¡}|r@|d|7}|d|j|f7}|S)Nz! Warning (from warnings module): z File "%s", line %s z %s z%s: %s )Ú linecacheÚgetlineÚstripÚ__name__)ÚmessageÚcategoryÚfilenameÚlinenoÚlineÚs©rú0/opt/alt/python37/lib64/python3.7/idlelib/run.pyÚidle_formatwarning*s  rcCsB|dkrtj}y| t|||||ƒ¡Wntk r<YnXdS)N)ÚsysÚstderrÚwriterÚOSError)rrrrÚfilerrrrÚidle_showwarning_subproc7srcCs0|rtdkr,tjatt_ntdk r,tt_dadS)N)Ú_warnings_showwarningÚwarningsÚ showwarningr)ZcapturerrrÚcapture_warningsGsr!TcCs| d¡dS)NÚupdate)Úeval)ÚtclrrrÚhandle_tk_eventsWsr%c Cs¤|ayttjdƒ}Wntdtjd�dStdƒdgtjdd…<tjt dt |ffd�}d|_ |  ¡�x0yŽt r˜y tƒWntk r–wpYnXytjjddd �}Wntjk rÆd}YnX|rö|\}\}}}|||Ž}tj ||f¡ntƒWqptk �r t�rda wpYqptk �r>td ƒ‚Yqpt ¡\} } } ytƒtj |df¡Wn&tj| | | tjd�tƒYnXwpYqpXqpWdS) Néÿÿÿÿz/IDLE Subprocess: no IP port passed in sys.argv.)rTÚZ SockThread)ÚtargetÚnameÚargsgš™™™™™©?)ÚblockZtimeoutF)Ú no_exitfuncÚintrÚargvÚprintÚ __stderr__r!Ú threadingZThreadÚ manage_socketÚ LOCALHOSTZdaemonÚstartÚexit_nowÚexitÚKeyboardInterruptrZ request_queueÚgetÚqueueZEmptyZresponse_queueZputr%ÚquittingÚ SystemExitÚexc_infoÚprint_exceptionÚ traceback) Z del_exitfuncZportZ sockthreadÚrequestÚseqÚmethodr*ÚkwargsÚretÚtypeÚvalueÚtbrrrÚmaines\      rGc CsœxŽtdƒD]b}t |¡yt|tƒ}PWq tk rj}z$td|jddtj d�|}Wdd}~XYq Xq Wtdtj d�t ||ƒda dS|  ¡dS)NézIDLE Subprocess: OSError: éz, retrying....)rz8IDLE Subprocess: Connection to IDLE GUI failed, exiting.T) ÚrangeÚtimeÚsleepÚ MyRPCServerÚ MyHandlerrr/r*rr0Úshow_socket_errorr5Zhandle_request)ÚaddressÚiZserverÚerrZ socket_errorrrrr2²s    r2c Cslddl}ddlm}| ¡}t|ƒ| ¡|dd|d›d|d›d|j›d|j›d � |d �| ¡dS) Nr)Ú showerrorzSubprocess Connection Errorz#IDLE's subprocess can't connect to ú:rIz. Fatal OSError #z: zz. See the 'Startup failure' section of the IDLE doc, online at https://docs.python.org/3/library/idle.html#startup-failure)Úparent) ÚtkinterZtkinter.messageboxrSZTkÚ fix_scalingZwithdrawÚerrnoÚstrerrorZdestroy)rRrPrVrSÚrootrrrrOÅs (rOcsdddl}| ¡tƒtj‰t ¡\}}}}|\t_t_t_t ƒ‰‡‡‡fdd„‰ˆ|||ƒdS)Nrc s舠t|ƒ¡|j}|j}|dk rNt|ƒˆkrNˆt|ƒ||jƒtdˆd�n8|dk r†|js†t|ƒˆkr†ˆt|ƒ||jƒtdˆd�|r¼t  |¡}tdˆd�d}t ||ƒtj |ˆd�t  ||¡}x|D]}t|dˆd�qÎWdS)NzF The above exception was the direct cause of the following exception: )rzE During handling of the above exception, another exception occurred: z"Traceback (most recent call last):)zrun.pyzrpc.pyz threading.pyzqueue.pyz debugger_r.pyzbdb.pyr')Úendr) ÚaddÚidÚ __context__Ú __cause__rDÚ __traceback__r/Ú__suppress_context__r>Ú extract_tbÚcleanup_tracebackÚ print_listÚformat_exception_only) ÚtypÚexcrFÚcontextÚcauseZtbeÚexcludeÚlinesr)ÚefileÚ print_excÚseenrrrmÞs,       z"print_exception..print_exc) r Ú checkcacheÚ flush_stdoutrrr<Ú last_typeÚ last_valueÚlast_tracebackÚset)r rfÚvalrFÚexcinfor)rlrmrnrr=Õsr=c Cs|dd…}x2|r>x"|D]}|dd |¡rPqWP|d=qWx2|rrx"|D]}|dd |¡rLPqLWP|d=qBWt|ƒdkr¢|dd…|dd…<tdtjd�tjdj}xbtt|ƒƒD]R}||\}}}} |dkrÜd}| sþ|  d¡rþ|  d d ||fi¡} |||| f||<q¼WdS) Nrr&z** IDLE Internal Exception: )rÚexecú?z -toplevel-z tdt|ƒ›d�ƒ‚YnX|dksPtdƒ‚ˆ |t¡S)Nz.setrecursionlimit() takes no keyword argumentsz0setrecursionlimit() takes exactly one argument (z given)rz/recursion limit must be greater or equal than 1)Ú TypeErrorÚ ValueErrorrzÚ __wrapped__ÚRECURSIONLIMIT_DELTA)r*rBÚlimit)Úsetrecursionlimitrrr’@s z:install_recursionlimit_wrappers..setrecursionlimitz# This IDLE wrapper adds z7 to prevent possible uninterruptible loops.cs ˆ ¡tS)N)r�r�r)Úgetrecursionlimitrrr“Usz:install_recursionlimit_wrappers..getrecursionlimitz( This IDLE wrapper subtracts z# to compensate for the z" IDLE adds when setting the limit.)Ú functoolsÚwrapsrr’r‹r�r“rr)r“r’rÚinstall_recursionlimit_wrappers<sr–cCsFttjddƒrBttjddƒrBtjjt_tjjt_t t ¡t¡dS)Nr�)Úgetattrrr’r“r�r�rrrrÚ!uninstall_recursionlimit_wrappersds   r˜c@seZdZdd„ZdS)rMcCsÎy‚WnÂtk r‚Yn®tk r:dat ¡Yn�tj}td|d�td|d�tdt  ¡j |d�td||d�tdt |ƒ|d�t j |d�td|d�td |d�dat ¡YnXdS) NTz) ----------------------------------------)rzUnhandled server exception!z Thread: %szClient Address: z Request: z# *** Unrecoverable, server exiting!z(----------------------------------------)r;ÚEOFErrorr5ÚthreadÚinterrupt_mainrr0r/r1Zcurrent_threadr)Úreprr>rmr:)Úselfr?Zclient_addressZerfrrrÚ handle_errorus&      zMyRPCServer.handle_errorN)rÚ __module__Ú __qualname__ržrrrrrMssrMc@sBeZdZddd„Zedd„ƒZedd„ƒZed d „ƒZd d „Zd S)Ú StdioFileúutf-8ÚstrictcCs||_||_||_||_dS)N)ÚshellÚtagsÚ _encodingÚ_errors)r�r¤r¥ÚencodingÚerrorsrrrÚ__init__–szStdioFile.__init__cCs|jS)N)r¦)r�rrrr¨œszStdioFile.encodingcCs|jS)N)r§)r�rrrr© szStdioFile.errorscCs d|jS)Nz<%s>)r¥)r�rrrr)¤szStdioFile.namecCsdS)NTr)r�rrrÚisatty¨szStdioFile.isattyN)r¢r£) rrŸr rªÚpropertyr¨r©r)r«rrrrr¡”s     r¡c@seZdZdd„Zdd„ZdS)Ú StdOutputFilecCsdS)NTr)r�rrrÚwritable®szStdOutputFile.writablecCs<|jrtdƒ‚t ||j|j¡ |j|j¡}|j ||j ¡S)Nzwrite to closed file) ÚclosedrŽÚstrÚencoder¨r©Údecoder¤rr¥)r�rrrrr±szStdOutputFile.writeN)rrŸr r®rrrrrr­¬sr­c@s4eZdZdZdd„Zd dd„Zd dd„Zd d „Zd S)Ú StdInputFiler'cCsdS)NTr)r�rrrÚreadable»szStdInputFile.readabler&cCs´|jrtdƒ‚|dkrd}nt|tƒs8tdt|ƒjƒ‚|j}d|_|dkrlxb|j  ¡}|s^P||7}qNWnDx(t |ƒ|kr”|j  ¡}|sŠP||7}qnW||d…|_|d|…}|S)Nzread from closed filer&zmust be int, not r'r) r¯rŽÚ isinstancer-r�rDrÚ _line_bufferr¤Úreadlinerz)r�r‚ÚresultrrrrÚread¾s,     zStdInputFile.readcCs�|jrtdƒ‚|dkrd}nt|tƒs8tdt|ƒjƒ‚|jpF|j  ¡}|dkrXt |ƒ}|  dd|¡}|dkrv|d}||d…|_|d|…S)Nzread from closed filer&zmust be int, not rÚ rI) r¯rŽrµr-r�rDrr¶r¤r·rzÚfind)r�r‚rZeolrrrr·Õs zStdInputFile.readlinecCs|j ¡dS)N)r¤Úclose)r�rrrr¼åszStdInputFile.closeN)r&)r&)rrŸr r¶r´r¹r·r¼rrrrr³¸s   r³c@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) rNcCs¨t|ƒ}| d|¡| d¡|_t|jdtjtjƒt_ t |jdtjtjƒt_ t |jdtjdƒt_ t jt_ddl}|j|_tj |_tƒ| d¡|_t jj|dd d �dS) NrwÚconsoleÚstdinÚstdoutrÚbackslashreplacerÚinterpgš™™™™™©?)ZmyseqÚwait)Ú ExecutiveÚregisterÚget_remote_proxyr½r³rr¨r©rr¾r­r¿rrÚ displayhookÚpydocZ plainpagerZpagerZ _keep_stdinr–rÁÚ RPCHandlerZ getresponse)r�Z executiverÇrrrÚhandleës     zMyHandler.handlecCst d¡dS)Né )rKrL)r�rrrÚexithookszMyHandler.exithookcCsdat ¡dS)NT)r:ršr›)r�rrrÚEOFhook szMyHandler.EOFhookcCsdat ¡dS)NT)r:ršr›)r�rrrÚdecode_interrupthookszMyHandler.decode_interrupthookN)rrŸr rÉrËrÌrÍrrrrrNésrNc@sNeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z ddd„Z dS)rÃcCs&||_tj|_t ¡|_t ¡|_dS)N)r{Ú__main__Ú__dict__ÚlocalsrZCalltiprZ AutoComplete)r�r{rrrrªs zExecutive.__init__c CsÎy&d|_dazt||jƒWddaXWnœtk r€}z<|jrp|jd}t|tdƒtfƒspt dt |ƒt j d�Wdd}~XYnJt   ¡|_trštƒtƒ|jj d¡}|r¾|jj ¡YnXtƒdS)NTFrz SystemExit: )rz<>)Ú usr_exc_infoÚ interruptablerwrÐr;r*rµrDr-r/r°rrr<r:r6r=r{r½ZgetvarrÁZopen_remote_stack_viewerrp)r�ÚcodeÚeZobZjitrrrÚruncodes(  & zExecutive.runcodecCstr t ¡dS)N)rÒršr›)r�rrrÚinterrupt_the_server8szExecutive.interrupt_the_servercCst |j|¡S)N)rZstart_debuggerr{)r�Z gui_adap_oidrrrÚstart_the_debugger<szExecutive.start_the_debuggercCs|j |¡dS)N)r{Z unregister)r�Z idb_adap_oidrrrÚstop_the_debugger?szExecutive.stop_the_debuggercCs |j |¡S)N)rZ fetch_tip)r�r)rrrÚget_the_calltipCszExecutive.get_the_calltipcCs|j ||¡S)N)rZfetch_completions)r�ZwhatÚmoderrrÚget_the_completion_listFsz!Executive.get_the_completion_listNcCsr|jr|j\}}}ndSd}|dk r0|j |¡}x|rN|jjddkrN|j}q2W|t_|t_t   ||¡}t   |¡S)Nr)rÚrun) rÑr{rÅÚtb_frameÚ f_globalsÚtb_nextrrqrrrZ StackTreeItemrZremote_object_tree_item)r�Z flist_oidrfrurFÚflistÚitemrrrrIs   zExecutive.stackviewer)N) rrŸr rªrÕrÖr×rØrÙrÛrrrrrrÃsrÃrÎ)rGzidlelib.idle_test.test_runé)Ú verbosity)N)NN)F)>r”Úior r9rr‡rKr>Ú_threadršr1rZidlelibrrrrrrrrÎrVÚhasattrÚmodulesÚmodÚdelattrr r3rrrr!ZTclr$r%r5r:rÒrGr2rOr=rcrpr6rWr‹r�r–r˜Z RPCServerrMÚ TextIOBaser¡r­r³rÈrNÚobjectrÃrZunittestrrrrÚsr               M$ (! 1-C