Current File : //lib/python3.9/site-packages/pip/_internal/cli/__pycache__/autocompletion.cpython-39.pyc
a

[��f��@s�dZddlZddlZddlZddlmZddlmZmZm	Z	m
Z
ddlmZddl
mZmZddlmZdd�d	d
�Ze	eeeee
ed�dd
�Zeeeed�dd�ZdS)zBLogic that powers autocompletion installed by ``pip completion``.
�N)�chain)�Any�Iterable�List�Optional)�create_main_parser)�
commands_dict�create_command)�get_default_environment)�returncs�dtjvrdStjd��dd��ttjd�}z�|d�WntyXd�Yn0t�}tt�}g}d}�D]}||vrt|}q�qt|du�r|dkr�t�	d���
d�o�|d	v}|�rt�}������fd
d�|j
dd
�D�}|�r|D]}	t|	�q�t�	d�t|�}
|
jjD]8}|jtjk�r|j|jD]}|�||jf��q:�qdd��d|d�D���fdd�|D�}�fdd�|D�}t�||
jj�}
|
�r�t�|
�}dd�|D�}|D]>}|d}|d�r�|ddd�dk�r�|d7}t|��q�n�dd�|jD�}|�|j�t�|�}��
d��rf|D]$}|jtjk�r>||j|j7}�q>n t�||�}
|
�r�tt�|
��}td��fdd�|D���t�	d�dS)z:Entry Point for completion of main and subcommand options.ZPIP_AUTO_COMPLETENZ
COMP_WORDS�Z
COMP_CWORD��help�-)ZshowZ	uninstallcs0g|](}|j���r|j�dd�vr|j�qS)rN)Zcanonical_name�
startswith)�.0�dist)�cwords�lc��D/usr/lib/python3.9/site-packages/pip/_internal/cli/autocompletion.py�
<listcomp>2s�z autocomplete.<locals>.<listcomp>T)Z
local_onlycSsg|]}|�d�d�qS)�=r)�split�r�xrrrrF�cs g|]\}}|�vr||f�qSrr)rr�v)�	prev_optsrrrGrcs"g|]\}}|���r||f�qSr�r)r�kr��currentrrrIrcSsg|]}|df�qS)rr)r�pathrrrrTrr�z--rcSsg|]
}|j�qSr)�option_list)r�irrrr^r� csg|]}|���r|�qSrrrr!rrrkr) �os�environr�int�
IndexErrorr�listr�sys�exitrr
�lowerZiter_installed_distributions�printr	�parserZoption_list_allr�optparse�
SUPPRESS_HELPZ
_long_optsZ_short_opts�append�nargs�get_path_completion_type�auto_complete_pathsZ
option_groupsr%r�
from_iterable�join)�cwordr1�subcommands�optionsZsubcommand_nameZwordZshould_list_installed�envZ	installedrZ
subcommand�optZopt_str�completion_type�paths�optionZ	opt_label�optsZflattened_optsr)r"rrrr�autocompletes~




�

�
 
rC)rr:rBrcCs�|dks||d�d�sdS|D]n}|jtjkr4q"t|��d�D]L}||d�d�d|krB|jr�tdd�|j�d�D��rB|jSqBq"dS)	aLGet the type of path completion (``file``, ``dir``, ``path`` or None)

    :param cwords: same as the environmental variable ``COMP_WORDS``
    :param cword: same as the environmental variable ``COMP_CWORD``
    :param opts: The available options to check
    :return: path completion type (``file``, ``dir``, ``path`` or None)
    r$rN�/rrcss|]}|dvVqdS))r#�file�dirNrrrrr�	<genexpr>�sz+get_path_completion_type.<locals>.<genexpr>)rrr2r3�strr�metavar�any)rr:rBr>�orrrr6os

�r6)r"r?rc#s�tj�|�\}�tj�|�}t�|tj�s.dStj�����fdd�t�|�D�}|D]`}tj�||�}tj�tj�||��}|dkr�tj�	|�r�|VqVtj�
|�rVtj�|d�VqVdS)aoIf ``completion_type`` is ``file`` or ``path``, list all regular files
    and directories starting with ``current``; otherwise only list directories
    starting with ``current``.

    :param current: The word to be completed
    :param completion_type: path completion type(`file`, `path` or `dir`)i
    :return: A generator of regular files and/or directories
    Nc3s$|]}tj�|����r|VqdS)N)r(r#�normcaserr��filenamerrrG�sz&auto_complete_paths.<locals>.<genexpr>rFr
)r(r#r�abspath�access�R_OKrL�listdirr9�isfile�isdir)r"r?Z	directoryZcurrent_pathZ	file_list�fr>Z	comp_filerrMrr7�s	
�r7)�__doc__r2r(r-�	itertoolsr�typingrrrrZpip._internal.cli.main_parserrZpip._internal.commandsrr	Zpip._internal.metadatar
rCrHr*r6r7rrrr�<module>sa�