o
    i1                     @   s   d dl Z d dlZd dlZdd ZG dd dZG dd deZeejZG dd	 d	eZG d
d deZ	G dd de	Z
G dd deZdS )    Nc                  O   s8   d|d< zt j| i | W S  t jy   g  Y S w )NTuniversal_newlines)
subprocesscheck_output
splitlinesCalledProcessError)argskwargs r	   \/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/argcomplete/completers.py_call	   s   r   c                
   @   s4   e Zd ZdZdedejdejdejddf
dd	Z	dS )
BaseCompleterzQ
    This is the base class that all argcomplete completers should subclass.
    prefixactionparserparsed_argsreturnNc                C   s   t d)Nz0This method should be implemented by a subclass.)NotImplementedError)selfr   r   r   r   r	   r	   r
   __call__   s   zBaseCompleter.__call__)
__name__
__module____qualname____doc__strargparseActionArgumentParser	Namespacer   r	   r	   r	   r
   r      s    r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )ChoicesCompleterc                 C   s
   || _ d S Nchoices)r   r!   r	   r	   r
   __init__   s   
zChoicesCompleter.__init__c                 C   s   t |ts	t|}|S r   )
isinstancer   )r   choicer	   r	   r
   _convert!   s   
zChoicesCompleter._convertc                    s    fdd j D S )Nc                 3   s    | ]}  |V  qd S r   )r%   ).0cr   r	   r
   	<genexpr>'   s    z,ChoicesCompleter.__call__.<locals>.<genexpr>r    )r   r   r	   r(   r
   r   &   s   zChoicesCompleter.__call__N)r   r   r   r"   r%   r   r	   r	   r	   r
   r      s    r   c                   @   s"   e Zd ZdZd	ddZdd ZdS )
FilesCompleterzM
    File completer class, optionally takes a list of allowed extensions
    r	   Tc                 C   s.   t |ttfr
|g}dd |D | _|| _d S )Nc                 S   s   g | ]
}| d  dqS )*.)lstrip)r&   xr	   r	   r
   
<listcomp>7   s    z+FilesCompleter.__init__.<locals>.<listcomp>)r#   r   bytesallowednamesdirectories)r   r1   r2   r	   r	   r
   r"   2   s   
zFilesCompleter.__init__c              	   K   s   g }| j r8| jrtdddj|dgtjd}|dd |D 7 }| j D ]}|tdddj||dgtjd7 }q"|S |tddd	j|dgtjd7 }tdddj|dgtjd}tt|t| }| jrl|d
d |D 7 }|S )Nbashz-cz#bind; compgen -A directory -- '{p}')p)stderrc                 S      g | ]}|d  qS /r	   r&   fr	   r	   r
   r/   E       z+FilesCompleter.__call__.<locals>.<listcomp>z*bind; compgen -A file -X '!*.{0}' -- '{p}'zbind; compgen -A file -- '{p}'c                 S   r6   r7   r	   r9   r	   r	   r
   r/   U   r;   )r1   r2   r   formatr   DEVNULLlistset)r   r   r   
completionfilesr.   anticompr	   r	   r
   r   :   s.   

zFilesCompleter.__call__N)r	   T)r   r   r   r   r"   r   r	   r	   r	   r
   r*   -   s    
r*   c                   @   s   e Zd Zdd Zdd ZdS )_FilteredFilesCompleterc                 C   s   |sJ d|| _ dS )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   rE   r	   r	   r
   r"   Z   s   
z _FilteredFilesCompleter.__init__c                 k   s    t j|}z	t |pd}W n
 ty   Y dS w t j|}|D ]"}||s+q#t j||}| |s8q#t j	|rB|d n|V  q#dS )z/
        Provide completions on prefix
        r,   Nr8   )
ospathdirnamelistdir	Exceptionbasename
startswithjoinrE   isdir)r   r   r   
target_dirnamesincomplete_partname	candidater	   r	   r
   r   d   s    

z _FilteredFilesCompleter.__call__N)r   r   r   r"   r   r	   r	   r	   r
   rC   Y   s    
rC   c                   @   s   e Zd Zdd ZdS )DirectoriesCompleterc                 C   s   t j| tjjd d S )NrD   )rC   r"   rF   rG   rN   r(   r	   r	   r
   r"   y   s   zDirectoriesCompleter.__init__N)r   r   r   r"   r	   r	   r	   r
   rT   x   s    rT   c                   @   s    e Zd ZdZdd Zdd ZdS )SuppressCompleterzK
    A completer used to suppress the completion of specific arguments
    c                 C   s   d S r   r	   r(   r	   r	   r
   r"      s   zSuppressCompleter.__init__c                 C   s   dS )z?
        Decide if the completion should be suppressed
        Tr	   r(   r	   r	   r
   suppress   s   zSuppressCompleter.suppressN)r   r   r   r   r"   rV   r	   r	   r	   r
   rU   }   s    rU   )r   rF   r   r   r   r   environEnvironCompleterr*   rC   rT   rU   r	   r	   r	   r
   <module>   s   	
,