B
    v9a                  @   s   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ZG dd dZed	krd d
lmZ eddd dS )    N)idleConf)macosx)pyshell)	CustomRuna/  Error: Inconsistent indentation detected!

1) Your indentation is outright incorrect (easy to fix), OR

2) Your indentation mixes tabs and spaces.

To fix case 2, change all tabs to spaces by using Edit->Select All followed by Format->Untabify Region and specify the number of columns used by each tab.
c               @   sb   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZddddZ	dd Z
dd Zdd ZdS )ScriptBindingc             C   s8   || _ | j j| _| j j| _t r4| j jd| j d S )Nz<<run-module-event-2>>)editwinflistrootr   	isCocoaTk
text_frameZbind_run_module_event)selfr    r   /usr/lib/python3.7/runscript.py__init__$   s
    

zScriptBinding.__init__c             C   s0   |   }|sdS | |sdS | |s,dS dS )Nbreak)getfilenamechecksyntaxtabnanny)r   eventfilenamer   r   r   check_module_event.   s    

z ScriptBinding.check_module_eventc             C   s   t |}ytt |j W n t jk
rp } z.|j\}\}}| j	| | 
dd|  dS d }~X Y n@ tjk
r } z | j	|  | 
dt dS d }~X Y nX W d Q R X dS )NzTabnanny Tokenizing ErrorzToken Error: %sFzTab/space errorT)tokenizeopenr   Zprocess_tokensgenerate_tokensreadline
TokenErrorargsr   ZgotolineerrorboxZNannyNagZ
get_linenoindent_message)r   r   fmsgZmsgtxtlinenostartZnagr   r   r   r   8   s    
zScriptBinding.tabnannyc          
   C   s\  | j   | _}| }||j t|d}| }W d Q R X d|krb|dd}|dd}|r~|d t	dkr~|d }| j
}|j}|ddd zyt||d	S  tttfk
rF } zzt|d
dp|pd}	t|ddpd}
t|ddpd}|dkr|
d7 }
d|
d |d f }||| | dd|	  dS d }~X Y nX W d || X d S )Nrb   s   
   
ZERRORz1.0endexecr!    z<no detail available>r"      offsetr   z0.0 + %d lines + %d charsSyntaxErrorz%-20sF)r   Z
open_shellshellZget_warning_streamZset_warning_streamstderrr   readreplaceordr   textZ
tag_removecompiler-   OverflowError
ValueErrorgetattrZcolorize_syntax_errorr   )r   r   r.   Zsaved_streamr    sourcer   r3   valuer!   r"   r,   posr   r   r   r   J   s4    
zScriptBinding.checksyntaxc                s2   t  r$ jjd fdd dS  |S d S )N   c                  s    j jdS )Nz<<run-module-event-2>>)r   r   Zevent_generater   )r   r   r   <lambda>p   s   z0ScriptBinding.run_module_event.<locals>.<lambda>r   )r   r
   r   r   Zafterr   )r   r   r   )r   r   run_module_eventh   s
    
zScriptBinding.run_module_eventc             C   s   | j |ddS )NT)	customize)r   )r   r   r   r   r   run_custom_eventv   s    zScriptBinding.run_custom_eventF)r>   c         	   C   s   |   }|sdS | |}|s"dS | |s0dS |r^d| j  d}t| jj|j}|s^dS |rf|ng df\}}| jj	}	t
jr|r|	jd| j|d tj|}
|g}|r||7 }|	d|d|d	|
d
 |	| |	| dS )Nr   z
Customize z RunTF)Zwith_cwdr   zif 1:
            __file__ = zi
            import sys as _sys
            from os.path import basename as _basename
            argv = z
            if (not _sys.argv or
                _basename(_sys.argv[0]) != _basename(__file__) or
                len(argv) > 1):
                _sys.argv = argv
            import os as _os
            _os.chdir(z4)
            del _sys, _basename, _os
            
)r   r   r   r   Zshort_titler   r.   r3   resultinterpr   Zuse_subprocessZrestart_subprocessZ_filename_to_unicodeospathdirnameZ
runcommandZprepend_syspathZruncode)r   r   r>   r   codetitleZrun_argsZcli_argsZrestartrA   rD   argvr   r   r   r   y   s8    	




zScriptBinding._run_module_eventc             C   sx   | j jj}| j  sttjddddd}|r>|r>| j jd  n6|  }| j j	  |rp| j jd  | j jj}nd }|S )NmainZGeneralautosavebool)type)
r   ior   Z	get_savedr   Z	GetOptionZsaveask_save_dialogr3   	focus_set)r   r   rI   confirmr   r   r   r      s    


zScriptBinding.getfilenamec             C   s    d}t jd|t j| jjd}|S )Nz%Source Must Be Saved
     OK to Save?zSave Before Run or Check)rF   messagedefaultparent)tkMessageBoxZaskokcancelZOKr   r3   )r   r!   rO   r   r   r   rM      s    zScriptBinding.ask_save_dialogc             C   s$   t j||| jjd | jj  d S )N)rR   )rS   Z	showerrorr   r3   rN   )r   rF   rP   r   r   r   r      s    zScriptBinding.errorboxN)__name__
__module____qualname__r   r   r   r   r=   r?   r   r   rM   r   r   r   r   r   r   "   s   

4r   __main__)rH   z idlelib.idle_test.test_runscript   )	verbosity)rB   r   r   Ztkinter.messageboxZ
messageboxrS   Zidlelib.configr   Zidlelibr   r   Zidlelib.queryr   r   r   rT   ZunittestrH   r   r   r   r   <module>   s   
 5