
    ^hm                    |    S SK Jr  S SKrS SKJrJr  S SKJrJrJ	r	  S SK
Jr  SS/r " S S\5      r " S	 S\5      rg)
    )annotationsN)CallableIterable)CompleteEvent	Completer
Completion)DocumentPathCompleterExecutableCompleterc                  \    \ rS rSrSr     S           SS jjr      S	S jrSrg)
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                l    Xl         U=(       d    S U l        U=(       d    S U l        X@l        XPl        g )Nc                     S/$ )N. r       ^/home/james-whalen/.local/lib/python3.13/site-packages/prompt_toolkit/completion/filesystem.py<lambda>(PathCompleter.__init__.<locals>.<lambda>$   s    ur   c                    g)NTr   )_s    r   r   r   %   s    Tr   )only_directories	get_pathsfile_filtermin_input_len
expanduser)selfr   r   r   r   r   s         r   __init__PathCompleter.__init__   s.     !1"5}&:>*$r   c           	   #  ~  #    UR                   n[        U5      U R                  :  a  g  U R                  (       a  [        R
                  R                  U5      n[        R
                  R                  U5      nU(       a[  U R                  5        Vs/ s H?  n[        R
                  R                  [        R
                  R                  XS5      5      PMA     nnOU R                  5       n[        R
                  R                  U5      n/ nU Hp  n	[        R
                  R                  U	5      (       d  M)  [        R                  " U	5       H-  n
U
R                  U5      (       d  M  UR                  X45        M/     Mr     [        US S9nU H  u  pU
[        U5      S  n[        R
                  R                  X5      n[        R
                  R                  U5      (       a  U
S-  n
OU R                  (       a  Mo  U R!                  U5      (       d  M  [#        USU
S9v   M     g s  snf ! [$         a     g f = f7f)Nc                    U S   $ )N   r   )ks    r   r   /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_completionsPathCompleter.get_completions)   s     **
 t9t)))3	ww))$/ ggood+GDHNNDTDTqBGGOOBGGLL$9:DT   #nn. WW%%d+F I(	77==++$&JJy$9#..v66%,,i-BC %: ) yn=I (1#	%c&km4
GGLL=	77==++ OH**''	22 ##$$  (1-T  		sJ   'H=A(H- AH(AH- 7-H- (B?H- 'H=(H- -
H:7H=9H::H=)r   r   r   r   r   )FNNr   F)r   boolr   zCallable[[], list[str]] | Noner   zCallable[[str], bool] | Noner   intr   rC   returnNone)r7   r	   r8   r   rE   zIterable[Completion])__name__
__module____qualname____firstlineno____doc__r   rA   __static_attributes__r   r   r   r
   r
      st    	 "'4848 %% 2% 2	%
 % % 
%> >2?>	>r   c                  0   ^  \ rS rSrSrSU 4S jjrSrU =r$ )r   j   z5
Complete only executable files in the current path.
c                ,   > [         TU ]  SSS S SS9  g )NFr"   c                 |    [         R                  R                  SS5      R                  [         R                  5      $ )NPATH )r,   environgetsplitpathsepr   r   r   r   .ExecutableCompleter.__init__.<locals>.<lambda>s   s"    bjjnnVR8>>rzzJr   c                L    [         R                  " U [         R                  5      $ )N)r,   accessX_OK)names    r   r   rW   t   s    RYYtRWW%=r   T)r   r   r   r   r   )superr   )r   	__class__s    r   r   ExecutableCompleter.__init__o   s$    "J= 	 	
r   r   )rE   rF   )rG   rH   rI   rJ   rK   r   rL   __classcell__)r]   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>re      sA    " 	 % J J , XI Xv
- 
r   