
    a                         S SK JrJrJrJr  S SKrS SKrSSKJrJ	r	  S r
 " S S\5      r\" \R                  5      r " S S	\5      r " S
 S\5      r " S S\5      r " S S\5      rg)    )absolute_importdivisionprint_functionunicode_literalsN   )strsys_encodingc                       [         R                  " U 0 UD6R                  [        5      R	                  5       $ ! [         R
                   a    / s $ f = fN)
subprocesscheck_outputdecoder	   
splitlinesCalledProcessError)argskwargss     )lib/third_party/argcomplete/completers.py_callr   
   sK    &&77>>|LWWYY(( 	s   69 AAc                   &    \ rS rSrS rS rS rSrg)ChoicesCompleter   c                     Xl         g r   choices)selfr   s     r   __init__ChoicesCompleter.__init__   s        c                     [        U[        5      (       a  UR                  [        5      n[        U[        5      (       d  [	        U5      nU$ r   )
isinstancebytesr   r	   r   )r   choices     r   _convertChoicesCompleter._convert   s8    fe$$]]<0F&#&&[Fr   c                 0   ^  U 4S jT R                    5       $ )Nc              3   F   >#    U  H  nTR                  U5      v   M     g 7fr   )r#   ).0cr   s     r   	<genexpr>,ChoicesCompleter.__call__.<locals>.<genexpr>   s     7,Qa  ,s   !r   )r   r   s   ` r   __call__ChoicesCompleter.__call__   s    7$,,77r   r   N)__name__
__module____qualname____firstlineno__r   r#   r+   __static_attributes__ r   r   r   r      s    8r   r   c                   (    \ rS rSrSrSS jrS rSrg)FilesCompleter    zE
File completer class, optionally takes a list of allowed extensions
c                     [        U[        [        45      (       a  U/nU Vs/ s H"  o3R                  S5      R                  S5      PM$     snU l        X l        g s  snf )N*.)r    r   r!   lstripallowednamesdirectories)r   r:   r;   xs       r   r   FilesCompleter.__init__%   sN    lS%L11(>L@LM1XXc]11#6M& Ns   )Ac                 .   / nU R                   (       av  U R                  (       a2  [        SSSR                  US9/5      nX4 Vs/ s H  oUS-   PM	     sn-  nU R                    H!  nU[        SSSR                  XaS9/5      -  nM#     U$ U[        SSSR                  US9/5      -  n[        SSSR                  US9/5      n[	        [        U5      [        U5      -
  5      nU R                  (       a  X7 Vs/ s H  oUS-   PM	     sn-  nU$ s  snf s  snf )Nbashz-czcompgen -A directory -- '{p}')p/z$compgen -A file -X '!*.{0}' -- '{p}'zcompgen -A file -- '{p}')r:   r;   r   formatlistset)r   prefixr   
completionfilesfr<   anticomps           r   r+   FilesCompleter.__call__-   s'   
vt-L-S-SV\-S-]^_613w66
&&eVT3Y3`3`ab3`3m$noo
 '  %/I/P/PSY/P/Z [\\Jfd,K,R,RU[,R,\]^Hc*oH=>J913w99
 7 :s   D8D)r:   r;   N)r2   T)r-   r.   r/   r0   __doc__r   r+   r1   r2   r   r   r4   r4       s    'r   r4   c                        \ rS rSrS rS rSrg)_FilteredFilesCompleter>   c                 ,    U(       d   S5       eXl         g)zv
Create the completer

A predicate accepts as its only argument a candidate path and either
accepts it or rejects it.
zExpected a callable predicateN	predicate)r   rQ   s     r   r    _FilteredFilesCompleter.__init__?   s     999y"r   c              +     #    [         R                  R                  U5      n [         R                  " U=(       d    S5      n[         R                  R	                  U5      nU H  nUR                  U5      (       d  M  [         R                  R                  X65      nU R                  U5      (       d  MR  [         R                  R                  U5      (       a  US-   OUv   M     g!    g= f7f)z
Provide completions on prefix
r8   NrA   )	ospathdirnamelistdirbasename
startswithjoinrQ   isdir)r   rE   r   
target_dirnamesincomplete_partname	candidates           r   r+    _FilteredFilesCompleter.__call__I   s      WW__V,
	JJz0S1E ''**62D???33Z6I>>),,%'WW]]9%=%=)c/9L 		s    C.C' B%C.'C+)C.rP   N)r-   r.   r/   r0   r   r+   r1   r2   r   r   rM   rM   >   s    #Mr   rM   c                       \ rS rSrS rSrg)DirectoriesCompleter\   c                 \    [         R                  U [        R                  R                  S9  g )NrP   )rM   r   rT   rU   r[   r   s    r   r   DirectoriesCompleter.__init__]   s    (((Gr   r2   N)r-   r.   r/   r0   r   r1   r2   r   r   rc   rc   \   s    Hr   rc   c                   $    \ rS rSrSrS rS rSrg)SuppressCompleter`   zC
A completer used to suppress the completion of specific arguments
c                     g r   r2   rf   s    r   r   SuppressCompleter.__init__e   s    r   c                     g)z/
Decide if the completion should be suppressed
Tr2   rf   s    r   suppressSuppressCompleter.suppressh   s     r   r2   N)r-   r.   r/   r0   rK   r   rn   r1   r2   r   r   ri   ri   `   s    r   ri   )
__future__r   r   r   r   rT   r   compatr   r	   r   objectr   environEnvironCompleterr4   rM   rc   ri   r2   r   r   <module>ru      sn    S R 	  %8v 8 $BJJ/ V <Mf M<H2 H r   