
    ;e$                        	 d dl Z d dlZd dlZd dlZd dlZd ej        D             Ze                    d           e                                 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        z   dz   Zej         ej        rej        nd Zde Z G d d          Ze                                 edk    rd dlm Z   e dd           dS dS )    Nc                     g | ]}|d v|	S )>   NoneTrueFalse .0ss     +/usr/lib/python3.11/idlelib/autocomplete.py
<listcomp>r      s-     < < <!::: :::    )matchcase)r      )autocomplete_w)idleConf)HyperParser)TFTN)FTTNF_ .c                   f    e Zd ZddZed             Zd ZddZd Zd Z	ddZ
d	 Zd
 Zd Zd ZdS )AutoCompleteNc                 h    || _         ||j        | _        || _        d | _        d | _        d | _        d S N)editwintexttagsautocompletewindow_delayed_completion_id_delayed_completion_index)selfr   r   s      r   __init__zAutoComplete.__init__(   s?    DI	"& '+#)-&&&r   c                 B    t          j        ddddd          | _        d S )N
extensionsr   	popupwaitintr   )typedefault)r   	GetOptionr%   )clss    r   reloadzAutoComplete.reload4   s-     *.+E1N N Nr   c                 B    t          j        | j        | j                  S )N)r   )r   AutoCompleteWindowr   r   )r!   s    r   _make_autocomplete_windowz&AutoComplete._make_autocomplete_window9   s    0KKKKr   c                 X    | j         r"| j                                          d | _         d S d S r   )r   hide_windowr!   events     r   _remove_autocomplete_windowz(AutoComplete._remove_autocomplete_window<   s:    " 	+#//111&*D###	+ 	+r   c                 <    	 |                      t                     dS )Nbreak)open_completionsFORCEr1   s     r   force_open_completions_eventz)AutoComplete.force_open_completions_eventA   s    Ke$$$wr   c                 F   	 t          |d          r|j        s-| j                            dd                                          sd S | j        r4| j                                        r| j                                         dS |                     t                    }|rdnd S )Nmc_stateinsert linestartinsertr5   )
hasattrr:   r   getstripr   	is_activecompleter6   TAB)r!   r2   openeds      r   autocomplete_eventzAutoComplete.autocomplete_eventF   s    ?5*%% 	%. 	IMM"4h??EEGG	 4" 	/t'>'H'H'J'J 	/#,,...7**3//F$.77$.r   c                 Z   	 | j                             d          }|t          v r|dk    rt          nt          }| j                             d          | _        | j        | j                             | j                   | j         	                    | j
        | j        |          | _        d S d S )Nz	insert-1cr   r<   )r   r>   TRIGGERSTRY_ATRY_Findexr    r   after_cancelafterr%   _delayed_open_completions)r!   r2   lastcharargss       r   try_open_completions_eventz'AutoComplete.try_open_completions_eventT   s    A9==--x$OO55D-1Y__X-F-FD**6	&&t'BCCC*.)// >+F +FD'''  r   c                     	 d | _         | j                            d          | j        k    r|                     |           d S d S )Nr<   )r   r   rI   r    r6   )r!   rN   s     r   rL   z&AutoComplete._delayed_open_completions_   sL    3&*#9??8$$(FFF!!$''''' GFr   c                 d   	 |\  }}}}| j         &| j                            | j                    d | _         t          | j        d          }| j                            dd          }t          |          x}}	|                                r|r|t          k    r| 	                                 t          }|r1||dz
           dt          z   vr|dz  }|r||dz
           dt          z   v|||	         }
|}	|r!||dz
           dvr|dz  }|r||dz
           dv|||	         }n!|                                r
|r|t          k    r| 	                                 t          }|rc||dz
           t          v st          ||dz
                     dk    r5|dz  }|r.||dz
           t          v t          ||dz
                     dk    5|||	         }
|rn||dz
           dk    r_|                    dt          |          |dz
  z
  z             |                                }|r|s|                    d          d	k    rd S nd
}nd S |r|s|
sd S |                     ||          }|d         sd S |                                 | _        | j                            |dt          |
          z  |||           S )Nr<   r;   r   z'"   r   z
insert-%dc(r   r   )r   r   rJ   r   r   r>   lenis_in_stringFILESr3   SEPS
is_in_codeATTRSID_CHARSord	set_indexget_expressionfindfetch_completionsr.   r   show_window)r!   rN   	evalfuncsrA   wantwinmodehpcurlineij
comp_start	comp_what
comp_listss                r   r6   zAutoComplete.open_completionse   s%   	 .2*	8Wd&2I""4#>???*.D'x00)-- 2H==GA??  	d  	dEkk ,,...D !EDL88Q  !EDL88 1JA !E11Q  !E11!II]]__ 	d 	dEkk,,...D 111S15F5F5L5LQ  111S15F5F5L5L 1J WQqS\S((\S\\1Q3-?@AAA--//	!  ! &/nnS&9&9R&?&?4		4 	I 	j 	4++It<<
!} 	4"&"@"@"B"B*66L3z??:$) ) ) 	)r   c                    	 	 | j         j        j        j        j        }n	#  d }Y nxY w|r|                    dd||fi           S |t          k    r|dk    ri t          j        j	        t          j	        }t          d|          }|                    t                     |                                 d|v rt          t          d|                    }nd |D             }n	 |                     |          }t!          |          }|                                 d|v rt          |j                  }nd |D             }n#  g g fcY S xY w|t$          k    rq|dk    rd}	 t&          j                            |          }t'          j        |          }|                                 d	 |D             }n# t.          $ r g g fcY S w xY w|s|}||fS )
Nexecget_the_completion_listr   zdir()__all__c                 .    g | ]}|d d         dk    |S Nr   r   r   r   s     r   r   z2AutoComplete.fetch_completions.<locals>.<listcomp>   s%    !B!B!BQrrUc\\!\\\r   c                 .    g | ]}|d d         dk    |S rq   r   r   s     r   r   z2AutoComplete.fetch_completions.<locals>.<listcomp>   s%    %F%F%FA2A2#ar   r   c                 .    g | ]}|d d         dk    |S )Nr   r   r   r   s     r   r   z2AutoComplete.fetch_completions.<locals>.<listcomp>   s%    >>>A2A2#ar   )r   flistpyshellinterprpcclt
remotecallrZ   __main____builtins____dict__evalextendcompletion_kwdssortsorted
get_entitydirro   rW   ospath
expanduserlistdirOSError)	r!   whatrd   rw   	namespacebiglsmalllentityexpandedpaths	            r   r`   zAutoComplete.fetch_completions   s   
		\'/6=FF	FFF (	 $$V-F&*D\27 7 7 u}}2::!68#8#A !6#+#4!6I33DKK000IIKKK D((!'Y	(B(B!C!C!B!BT!B!B!B	&!%!6!6"6{{		$,,%+FN%;%;FF%F%F%F%F%FF&!2v2::D"#%7#5#5d#;#;L:l33DIIKKK>>>>>FF " " "r6MMM"  4<s(    %"AE   EAF3 3GGc                 T    	 t          |i t          j        t          j                  S r   )r|   sysmodulesry   r{   )r!   names     r   r   zAutoComplete.get_entity   s%    LD>S[>H,=>???r   )NNr   )__name__
__module____qualname__r"   classmethodr+   r.   r3   r8   rD   rO   rL   r6   r`   r   r   r   r   r   r   &   s        
. 
. 
. 
. N N [NL L L+ + + +
  
/ / /	F 	F 	F 	F( ( (:) :) :)x8  8  8 t@ @ @ @ @r   r   ry   )mainz#idlelib.idle_test.test_autocomplete   )	verbosity)!ry   keywordr   stringr   kwlistr~   r}   r   rZ   rW   idlelibr   idlelib.configr   idlelib.hyperparserr   r7   rB   rG   rH   ascii_lettersdigitsr[   sepaltseprX   rF   r   r+   r   unittestr   r   r   r   <module>r      s  
   				  



< <gn < < <   ( ) ) )       u " " " " " " # # # # # # + + + + + + 	*)%EU*%EU* &-/#5
&2ry0"))b22t::w@ w@ w@ w@ w@ w@ w@ w@t      zD	.!<<<<<< r   