
    B/g1                         S SK r S SKrS SKrS r " S S5      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)    Nc                      SUS'    [         R                  " U 0 UD6R                  5       $ ! [         R                   a    / s $ f = f)NTuniversal_newlines)
subprocesscheck_output
splitlinesCalledProcessError)argskwargss     8/usr/lib/python3/dist-packages/argcomplete/completers.py_callr   	   sK    #'F &&77BBDD(( 	s   #+ AAc            
       r    \ rS rSrSrS\S\R                  S\R                  S\R                  SS4
S	 jr
S
rg)BaseCompleter   zI
This is the base class that all argcomplete completers should subclass.
prefixactionparserparsed_argsreturnNc                    [        S5      e)Nz0This method should be implemented by a subclass.)NotImplementedError)selfr   r   r   r   s        r   __call__BaseCompleter.__call__   s     ""TUU     )__name__
__module____qualname____firstlineno____doc__strargparseActionArgumentParser	Namespacer   __static_attributes__r   r   r   r   r      sJ    VV&.ooV?G?V?VVemewewV	Vr   r   c                   &    \ rS rSrS rS rS rSrg)ChoicesCompleter   c                     Xl         g Nchoices)r   r-   s     r   __init__ChoicesCompleter.__init__   s    r   c                 F    [        U[        5      (       d  [        U5      nU$ r+   )
isinstancer!   )r   choices     r   _convertChoicesCompleter._convert!   s    &#&&[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+   )r3   ).0cr   s     r   	<genexpr>,ChoicesCompleter.__call__.<locals>.<genexpr>'   s     7,Qa  ,s   !r,   )r   r
   s   ` r   r   ChoicesCompleter.__call__&   s    7$,,77r   r,   N)r   r   r   r   r.   r3   r   r&   r   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*.)r1   r!   byteslstripallowednamesdirectories)r   rD   rE   xs       r   r.   FilesCompleter.__init__2   sN    lS%L11(>L@LM1XXc]11#6M& Ns   )Ac                    / nU R                   (       a  U R                  (       a?  [        SSSR                  US9/[        R
                  S9nX4 Vs/ s H  oUS-   PM	     sn-  nU R                    H.  nU[        SSSR                  XaS9/[        R
                  S9-  nM0     U$ U[        SSSR                  US9/[        R
                  S9-  n[        SSSR                  US9/[        R
                  S9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#bind; compgen -A directory -- '{p}')p)stderr/z*bind; compgen -A file -X '!*.{0}' -- '{p}'zbind; compgen -A file -- '{p}')rD   rE   r   formatr   DEVNULLlistset)r   r   r
   
completionfilesfrF   anticomps           r   r   FilesCompleter.__call__:   sa   

 T#H#O#ORX#O#YZcmcucu 613w66
&&eT#O#V#VWX#V#cd%-- 
 '   %?FFFPQZdZlZl J DKKfKUV_i_q_qH c*oH=>J913w99
# 7  :s   E,E)rD   rE   N)r   T)r   r   r   r   r    r.   r   r&   r   r   r   r=   r=   -   s    'r   r=   c                        \ rS rSrS rS rSrg)_FilteredFilesCompleterY   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   r[   s     r   r.    _FilteredFilesCompleter.__init__Z   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! [         a     gf = f7f)z
Provide completions on prefix
rA   NrL   )
ospathdirnamelistdir	Exceptionbasename
startswithjoinr[   isdir)r   r   r
   
target_dirnamesincomplete_partname	candidates           r   r    _FilteredFilesCompleter.__call__d   s      WW__V,
	JJz0S1E ''**62D???33Z6I>>),,%'WW]]9%=%=)c/9L 	  		s)    C7C' B%C7'
C41C73C44C7rZ   N)r   r   r   r   r.   r   r&   r   r   r   rW   rW   Y   s    #Mr   rW   c                       \ rS rSrS rSrg)DirectoriesCompleterx   c                 \    [         R                  U [        R                  R                  S9  g )NrZ   )rW   r.   r^   r_   rf   r   s    r   r.   DirectoriesCompleter.__init__y   s    (((Gr   r   N)r   r   r   r   r.   r&   r   r   r   rn   rn   x   s    Hr   rn   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+   r   rq   s    r   r.   SuppressCompleter.__init__   s    r   c                     g)z/
Decide if the completion should be suppressed
Tr   rq   s    r   suppressSuppressCompleter.suppress   s     r   r   N)r   r   r   r   r    r.   ry   r&   r   r   r   rt   rt   }   s    r   rt   )r"   r^   r   r   r   r(   environEnvironCompleterr=   rW   rn   rt   r   r   r   <module>r}      st     	 V V
8} 
8 $BJJ/ )] )XMm M>H2 H
 r   