
    5i1                         d dl Z d dlZd dlZd Z G d d      Z G d de      Z eej                        Z G d de      Z G d	 d
e      Z	 G d de	      Z
 G d de      Zy)    Nc                      d|d<   	 t        j                  | i |j                         S # t         j                  $ r g cY S w xY w)NTuniversal_newlines)
subprocesscheck_output
splitlinesCalledProcessError)argskwargss     x/home/marpiech/ifpan-abm-pgxpred/analysis/marpiech-gwas-test/venv/lib/python3.12/site-packages/argcomplete/completers.py_callr   	   sK    #'F &&77BBDD(( 	s   "* AAc            
       h    e Zd ZdZdedej                  dej                  dej                  ddf
dZ	y)	BaseCompleterzQ
    This is the base class that all argcomplete completers should subclass.
    prefixactionparserparsed_argsreturnNc                    t        d      )Nz0This method should be implemented by a subclass.)NotImplementedError)selfr   r   r   r   s        r   __call__zBaseCompleter.__call__   s     ""TUU    )
__name__
__module____qualname____doc__strargparseActionArgumentParser	Namespacer    r   r   r   r      sJ    VV&.ooV?G?V?VVemewewV	Vr   r   c                       e Zd Zd Zd Zd Zy)ChoicesCompleterc                     || _         y Nchoices)r   r(   s     r   __init__zChoicesCompleter.__init__   s	    r   c                 <    t        |t              st        |      }|S r&   )
isinstancer   )r   choices     r   _convertzChoicesCompleter._convert!   s    &#&[Fr   c                 .      fd j                   D        S )Nc              3   @   K   | ]  }j                  |        y wr&   )r-   ).0cr   s     r   	<genexpr>z,ChoicesCompleter.__call__.<locals>.<genexpr>'   s     7Qa 7s   r'   )r   r
   s   ` r   r   zChoicesCompleter.__call__&   s    7$,,77r   N)r   r   r   r)   r-   r   r"   r   r   r$   r$      s    
8r   r$   c                       e Zd ZdZddZd Zy)FilesCompleterzM
    File completer class, optionally takes a list of allowed extensions
    c                     t        |t        t        f      r|g}|D cg c]"  }|j                  d      j                  d      $ c}| _        || _        y c c}w )N*.)r+   r   byteslstripallowednamesdirectories)r   r:   r;   xs       r   r)   zFilesCompleter.__init__2   sK    lS%L1(>L@LM1QXXc]11#6M& Ns   'Ac           
         g }| j                   r| j                  rDt        dddj                  |      gt        j
                        }||D cg c]  }|dz   	 c}z  }| j                   D ]4  }|t        dddj                  ||      gt        j
                        z  }6 |S |t        dddj                  |      gt        j
                        z  }t        dddj                  |      gt        j
                        }t        t        |      t        |      z
        }| j                  r||D cg c]  }|dz   	 c}z  }|S c c}w c c}w )	Nbashz-cz#bind; compgen -A directory -- '{p}')p)stderr/z*bind; compgen -A file -X '!*.{0}' -- '{p}'zbind; compgen -A file -- '{p}')r:   r;   r   formatr   DEVNULLlistset)r   r   r
   
completionfilesfr<   anticomps           r   r   zFilesCompleter.__call__:   se   

 T#H#O#ORX#O#YZcmcucu 61q3w66
&& eT#O#V#VWX\b#V#cd%-- 
   %?FFFPQZdZlZl J DKKfKUV_i_q_qH c*oH=>J91q3w99
# 7  :s   E4EN)r"   T)r   r   r   r   r)   r   r"   r   r   r4   r4   -   s    'r   r4   c                       e Zd Zd Zd Zy)_FilteredFilesCompleterc                 $    |sJ d       || _         y)z
        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   rN   s     r   r)   z _FilteredFilesCompleter.__init__Z   s     999y"r   c              +     K   t         j                  j                  |      }	 t        j                  |xs d      }t         j                  j                  |      }|D ]n  }|j                  |      st         j                  j                  ||      }| j                  |      sGt         j                  j                  |      r|dz   n| p y# t        $ r Y yw xY ww)z/
        Provide completions on prefix
        r7   NrA   )
ospathdirnamelistdir	Exceptionbasename
startswithjoinrN   isdir)r   r   r
   
target_dirnamesincomplete_partname	candidates           r   r   z _FilteredFilesCompleter.__call__d   s      WW__V,
	JJz0S1E ''**62 	MD???3Z6I>>),%'WW]]9%=)c/9L	M	  		s(    CC BC	CCCCN)r   r   r   r)   r   r"   r   r   rK   rK   Y   s    #Mr   rK   c                       e Zd Zd Zy)DirectoriesCompleterc                 b    t         j                  | t        j                  j                         y )NrM   )rK   r)   rP   rQ   rX   r   s    r   r)   zDirectoriesCompleter.__init__y   s    (((Gr   N)r   r   r   r)   r"   r   r   r_   r_   x   s    Hr   r_   c                       e Zd ZdZd Zd Zy)SuppressCompleterzK
    A completer used to suppress the completion of specific arguments
    c                      y r&   r"   ra   s    r   r)   zSuppressCompleter.__init__   s    r   c                      y)z?
        Decide if the completion should be suppressed
        Tr"   ra   s    r   suppresszSuppressCompleter.suppress   s     r   N)r   r   r   r   r)   rf   r"   r   r   rc   rc   }   s    r   rc   )r   rP   r   r   r   r$   environEnvironCompleterr4   rK   r_   rc   r"   r   r   <module>ri      st     	 V V
8} 
8 $BJJ/ )] )XMm M>H2 H
 r   