o
     JAfQ                      @   s   	 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 dZG d	d
 d
ZedkrPd dlmZ eddd dS dS )    N)
messagebox)idleConf)macosx)pyshell)	CustomRun)outwina/  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                   @   sZ   e Z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   s*   || _ | j j| _| j j| _g | _d| _d S )Ng        )editwinflistrootcli_argsperf)selfr	    r   (/usr/lib/python3.10/idlelib/runscript.py__init__&   s
   


zScriptBinding.__init__c                 C   sN   t | jtjr| jj  dS |  }|sdS | |sdS | |s%dS dS )Nbreak)	
isinstancer	   r   OutputWindowtextbellgetfilenamechecksyntaxtabnanny)r   eventfilenamer   r   r   check_module_event0   s   

z ScriptBinding.check_module_eventc                 C   s   t |k}ztt |j W nV t jy@ } z"|j\}\}}| j	| | 
dd|  W Y d }~W d    dS d }~w tjyg } z| j	|  | 
dt W Y d }~W d    dS d }~ww W d    dS 1 ssw   Y  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   =   s0   
	
	
zScriptBinding.tabnannyc              
   C   s  | j   | _}| }||j t|d}| }W d    n1 s&w   Y  d|v r;|dd}|dd}|rI|d t	dkrI|d }| j
}|j}|ddd zdzt||d	W W || S  tttfy } zGt|d
dpx|pxd}	t|ddpd}
t|ddpd}|dkr|
d7 }
d|
d |d f }||| | dd|	  W Y d }~W || dS d }~ww || w )Nrb   s   
   
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	   r   Z
tag_removecompiler3   OverflowError
ValueErrorgetattrZcolorize_syntax_errorr#   )r   r   r4   Zsaved_streamr%   sourcer	   r   valuer&   r'   r2   posr   r   r   r   O   s>   
zScriptBinding.checksyntaxc                 C   s   | j |ddS )NT	customize)run_module_event)r   r   r   r   r   run_custom_eventm   s   zScriptBinding.run_custom_eventFr@   c             	   C   s0  	 t  rt | j dk rdS t| jtjr| jj	
  dS |  }|s'dS | |}|s0dS | |s7dS |rQd| j  d}t| jj	|| jdj}|sQdS |rU|ng df\| _}| jj}tjrl|rl|jd|d tj|}	|g}
| jr}|
| j7 }
|d	|d
|
d|	d || || dS )Ng?r   z
Customize z Run)r   TF)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(z:)
            del _sys, argv, _basename, _os
            
)r   Z	isCocoaTktimeperf_counterr   r   r	   r   r   r   r   r   r   r   Zshort_titler   r4   r   resultinterpr   Zuse_subprocessZrestart_subprocessospathdirnameZ
runcommandZprepend_syspathZruncode)r   r   rA   r   codetitleZrun_argsZrestartrG   rJ   argvr   r   r   rB   p   sV   








zScriptBinding.run_module_eventc                 C   s~   	 | j jj}| j  s=tjddddd}|r!|r!| j jd  |S |  }| j j	  |r;| j jd  | j jj}|S d }|S )NmainZGeneralautosavebool)type)
r	   ior   Z	get_savedr   Z	GetOptionsaveask_save_dialogr   	focus_set)r   r   rO   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)rL   messagedefaultparent)r   ZaskokcancelZOKr	   r   )r   r&   rV   r   r   r   rT      s   zScriptBinding.ask_save_dialogc                 C   s.   t j||| jjd | jj  t | _d S )N)rY   )r   Z	showerrorr	   r   rU   rD   rE   r   )r   rL   rW   r   r   r   r#      s   zScriptBinding.errorboxN)__name__
__module____qualname__r   r   r   r   rC   rB   r   rT   r#   r   r   r   r   r   $   s    
9r   __main__)rN   z idlelib.idle_test.test_runscript   )	verbosity)rH   r   rD   r   tkinterr   Zidlelib.configr   Zidlelibr   r   Zidlelib.queryr   r   r$   r   rZ   ZunittestrN   r   r   r   r   <module>   s$     0