o
    g#                     @   s   	 d dl Z d dlZd dlZd dlZd dlZd\ZZd dlmZ d dl	m
Z
 d dlmZ dZdZdddefZdddefZejej d	 Zej ejrLejnd
 Zde ZG dd dZe  edkrrd dlmZ eddd dS dS )    N)r      )autocomplete_w)idleConf)HyperParser)TFTN)FTTNF_ .c                   @   sn   e Zd ZdddZedd Zdd Zddd	Zd
d Zdd Z	dddZ
dd Zdd Zdd Zdd ZdS )AutoCompleteNc                 C   s2   || _ |d ur|j| _|| _d | _d | _d | _d S N)editwintexttagsautocompletewindow_delayed_completion_id_delayed_completion_index)selfr   r    r   J/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/idlelib/autocomplete.py__init__"   s   
zAutoComplete.__init__c                 C   s   t jdddddd| _d S )N
extensionsr	   	popupwaitintr   )typedefault)r   Z	GetOptionr   )clsr   r   r   reload.   s   
zAutoComplete.reloadc                 C   s   t j| j| jdS )N)r   )r   ZAutoCompleteWindowr   r   )r   r   r   r   _make_autocomplete_window3   s   z&AutoComplete._make_autocomplete_windowc                 C   s   | j r| j   d | _ d S d S r
   )r   Zhide_windowr   eventr   r   r   _remove_autocomplete_window6   s   

z(AutoComplete._remove_autocomplete_windowc                 C   s   	 |  t dS )Nbreak)open_completionsFORCEr   r   r   r   force_open_completions_event;   s   
z)AutoComplete.force_open_completions_eventc                 C   s\   	 t |dr	|js| jdd sd S | jr#| j r#| j  dS | t	}|r,dS d S )Nmc_stateinsert linestartinsertr    )
hasattrr$   r   getstripr   Z	is_activecompleter!   TAB)r   r   Zopenedr   r   r   autocomplete_event@   s   

zAutoComplete.autocomplete_eventc                 C   sj   	 | j d}|tv r3|dkrtnt}| j d| _| jd ur&| j | j | j 	| j
| j|| _d S d S )Nz	insert-1cr   r&   )r   r(   TRIGGERSTRY_ATRY_Findexr   r   after_cancelZafterr   _delayed_open_completions)r   r   Zlastcharargsr   r   r   try_open_completions_eventN   s   


z'AutoComplete.try_open_completions_eventc                 C   s,   	 d | _ | jd| jkr| | d S d S )Nr&   )r   r   r0   r   r!   )r   r3   r   r   r   r2   Y   s
   z&AutoComplete._delayed_open_completionsc                 C   s*  	 |\}}}}| j d ur| j| j  d | _ t| jd}| jdd}t| }}	| r||r3|tkr|| 	  t}|rU||d  dt
 vrU|d8 }|rU||d  dt
 vsE|||	 }
|}	|ru||d  dvru|d8 }|ru||d  dvsg|||	 }np| r|r|tkr| 	  t}|r||d  tv st||d  dkr|d8 }|r||d  tv st||d  dks|||	 }
|r||d  dkr|dt||d    | }|r|s|dd	krd S nd
}nd S |r|s|
sd S | ||}|d sd S |  | _| j|dt|
 ||| S )Nr&   r%   r   z'"   r   z
insert-%dc(r   r   )r   r   r1   r   r   r(   lenZis_in_stringFILESr   SEPSZ
is_in_codeATTRSID_CHARSordZ	set_indexZget_expressionfindfetch_completionsr   r   Zshow_window)r   r3   Z	evalfuncsr*   ZwantwinmodeZhpZcurlineijZ
comp_startZ	comp_whatZ
comp_listsr   r   r   r!   _   sb   
((

zAutoComplete.open_completionsc           
      C   st  	 z	| j jjjj}W n   d }Y |r|dd||fi S |tkr|dkrXi tjj	tj	}t
d|}dd tjD }|| |  d|v rPtt
d|}nbdd	 |D }nZz | |}t|}|  d|v rpt|j}nd
d	 |D }W n9   g g f Y S |tkr|dkrd}ztj|}	t|	}|  dd	 |D }W n ty   g g f Y S w |s|}||fS )NexecZget_the_completion_listr   zdir()c                 s   s    | ]	}|d vr|V  qdS )>   FalseNoneTrueNr   .0sr   r   r   	<genexpr>   s    z1AutoComplete.fetch_completions.<locals>.<genexpr>__all__c                 S       g | ]}|d d dkr|qS Nr   r   r   rG   r   r   r   
<listcomp>        z2AutoComplete.fetch_completions.<locals>.<listcomp>c                 S   rL   rM   r   rG   r   r   r   rN      rO   r   c                 S   rL   )Nr   r   r   rG   r   r   r   rN      rO   )r   flistZpyshellZinterprpccltZ
remotecallr;   __main____builtins____dict__evalkeywordkwlistextendsortsorted
get_entitydirrK   r9   ospath
expanduserlistdirOSError)
r   Zwhatr@   rQ   	namespaceZbiglkwdsZsmalllZentityZexpandedpathr   r   r   r?      sZ   




zAutoComplete.fetch_completionsc                 C   s   	 t |i tjtjS r
   )rU   sysmodulesrR   rT   )r   namer   r   r   r[      s   zAutoComplete.get_entity)NNr
   )__name__
__module____qualname__r   classmethodr   r   r   r#   r,   r4   r2   r!   r?   r[   r   r   r   r   r	       s    



<<r	   rR   )mainz#idlelib.idle_test.test_autocomplete   )	verbosity)rR   rV   r]   stringrd   r;   r9   Zidlelibr   Zidlelib.configr   Zidlelib.hyperparserr   r"   r+   r.   r/   ascii_lettersdigitsr<   sepaltsepr:   r-   r	   r   rg   Zunittestrk   r   r   r   r   <module>   s0    
 =