o
    Žõ±j  ã                   @   s\   d dl Z d dlmZmZmZmZ d dlmZmZm	Z	 d dl
mZ d dlZG dd„ deƒZdS )é    N)ÚCallableÚIterableÚListÚOptional)ÚCompleteEventÚ	CompleterÚ
Completion)ÚDocumentc                   @   sv   e Zd ZdZ					ddedeeg ee f  deeegef  de	d	ed
dfdd„Z
deded
ee fdd„ZdS )ÚPathCompletera˜  
	Complete for Path variables.

	:param get_paths: Callable which returns a list of directories to look into
					  when the user enters a relative path.
	:param file_filter: Callable which takes a filename and returns whether
						this file should show up in the completion. ``None``
						when no filtering has to be done.
	:param min_input_len: Don't do autocompletion when the input string is shorter.
	FNr   Úonly_directoriesÚget_current_dirsÚfile_filterÚmin_input_lenÚ
expanduserÚreturnc                 C   s2   || _ |pdd„ | _|pdd„ | _|| _|| _d S )Nc                   S   s   dgS )NÚ.© r   r   r   ú“/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/msldap/examples/utils/completers.pyÚ<lambda>   s    z(PathCompleter.__init__.<locals>.<lambda>c                 S   s   dS )NTr   )Ú_r   r   r   r      s    )r   r   r   r   r   )Úselfr   r   r   r   r   r   r   r   Ú__init__   s
   
zPathCompleter.__init__ÚdocumentÚcomplete_eventc              
   c   sŒ   � |j }t|ƒ| jk rd S z!|  ¡ }|D ]}| |¡r+|t|ƒd … }t|d|d�V  qW d S  tyE } zt ¡  W Y d }~d S d }~ww )Nr   )Údisplay)	Útext_before_cursorÚlenr   r   Ú
startswithr   Ú	ExceptionÚ	tracebackÚ	print_exc)r   r   r   ÚtextÚdirnamesÚdirnameÚ
completionÚer   r   r   Úget_completions   s    €
€ý	€ÿzPathCompleter.get_completions)FNNr   F)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úboolr   r   r   ÚstrÚintr   r	   r   r   r   r&   r   r   r   r   r
      s.    
üÿþýü
üÿÿr
   )ÚosÚtypingr   r   r   r   Úprompt_toolkit.completionr   r   r   Úprompt_toolkit.documentr	   r   r
   r   r   r   r   Ú<module>   s    