
    fm                    |    d dl mZ d dlZd dlmZmZ d dlmZmZm	Z	 d dl
mZ ddgZ G d de      Z G d	 de      Zy)
    )annotationsN)CallableIterable)CompleteEvent	Completer
Completion)DocumentPathCompleterExecutableCompleterc                  N    e Zd ZdZ	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 ddZy)r
   a  
    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.
    Nc                ^    || _         |xs d | _        |xs d | _        || _        || _        y )Nc                     dgS )N. r       _/var/www/cvtools/html/venv/lib/python3.12/site-packages/prompt_toolkit/completion/filesystem.py<lambda>z(PathCompleter.__init__.<locals>.<lambda>$   s    u r   c                     y)NTr   )_s    r   r   z(PathCompleter.__init__.<locals>.<lambda>%   s    r   )only_directories	get_pathsfile_filtermin_input_len
expanduser)selfr   r   r   r   r   s         r   __init__zPathCompleter.__init__   s4     !1"5}&:>*$r   c           	   #  ,  K   |j                   }t        |      | j                  k  ry 	 | j                  rt        j
                  j                  |      }t        j
                  j                  |      }|rY| j                         D cg c]?  }t        j
                  j                  t        j
                  j                  ||            A }}n| j                         }t        j
                  j                  |      }g }|D ]a  }	t        j
                  j                  |	      s#t	        j                  |	      D ]'  }
|
j                  |      s|j                  |	|
f       ) c t        |d       }|D ]  \  }	}
|
t        |      d  }t        j
                  j                  |	|
      }t        j
                  j                  |      r|
dz  }
n| j                  rf| j!                  |      sxt#        |d|
        y c c}w # t$        $ r Y y w xY ww)Nc                    | d   S )N   r   )ks    r   r   z/PathCompleter.get_completions.<locals>.<lambda>O   s
    ! r   )key/r   )textstart_positiondisplay)text_before_cursorlenr   r   ospathdirnamer   joinbasenameisdirlistdir
startswithappendsortedr   r   r   OSError)r   documentcomplete_eventr#   r*   pdirectoriesprefix	filenames	directoryfilename
completion	full_names                r   get_completionszPathCompleter.get_completions)   s     **
 t9t)))3	ww))$/ ggood+GDHNNDT?@BGGOOBGGLLD$9:  #nn. WW%%d+F I( D	77==+$&JJy$9 D#..v6%,,i-BCDD yn=I (1 #	8%c&km4
GGLLH=	77==+ OH**''	2 ##$$ -T  		sJ   &HAH AH AH $)H B1H ?H H 	HHHH)FNNr   F)r   boolr   zCallable[[], list[str]] | Noner   zCallable[[str], bool] | Noner   intr   r>   returnNone)r3   r	   r4   r   r@   zIterable[Completion])__name__
__module____qualname____doc__r   r=   r   r   r   r
   r
      st    	 "'4848 %% 2% 2	%
 % % 
%> >2?>	>r   c                  $     e Zd ZdZd fdZ xZS )r   z=
    Complete only executable files in the current path.
    c                2    t         |   ddd d d       y )NFr   c                 |    t         j                  j                  dd      j                  t         j                        S )NPATH )r(   environgetsplitpathsepr   r   r   r   z.ExecutableCompleter.__init__.<locals>.<lambda>s   s$    bjjnnVR8>>rzzJ r   c                J    t        j                  | t         j                        S )N)r(   accessX_OK)names    r   r   z.ExecutableCompleter.__init__.<locals>.<lambda>t   s    RYYtRWW%= r   T)r   r   r   r   r   )superr   )r   	__class__s    r   r   zExecutableCompleter.__init__o   s$    "J= 	 	
r   )r@   rA   )rB   rC   rD   rE   r   __classcell__)rT   s   @r   r   r   j   s    
 
r   )
__future__r   r(   typingr   r   prompt_toolkit.completionr   r   r   prompt_toolkit.documentr	   __all__r
   r   r   r   r   <module>r[      sA    " 	 % J J , XI Xv
- 
r   