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