HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/pip/_internal/cli/__pycache__/autocompletion.cpython-310.pyc
o

@%Ne�	@s�dZddlZddlZddlZddlmZddlmZmZm	Z	m
Z
ddlmZddl
mZmZddlmZdd	d
�Zde	eded
eede
efdd�Zdededeefdd�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�Wnty,d�Ynwt�}tt�}g}d}�D]
}||vrD|}nq:|du�r|dkrSt�	d���
d�o\|d	v}|r�t�}������fd
d�|j
dd
�D�}|r�|D]}	t|	�qxt�	d���
d�o�|dk}
|
r�t�d�D]}t|�q�t�	d�t|�}|jjD]}
|
jtjkr�|
j|
jD]
}|�||
jf�q�q�dd��d|d�D���fdd�|D�}�fdd�|D�}t�||jj�}|r�t�|�}dd�|D�}|D]}|d}|d�r|ddd�dk�r|d7}t|�q�nMdd�|jD�}|�|j�t�|�}��
d��rI|D]}
|
jtjk�rF||
j|
j7}�q5nt�||�}|�rYtt�|��}td��fdd�|D���t�	d�dS)z:Entry Point for completion of main and subcommand options.�PIP_AUTO_COMPLETEN�
COMP_WORDS��
COMP_CWORD��help�-)�show�	uninstallcs0g|]}|j���r|j�dd�vr|j�qS)rN)�canonical_name�
startswith)�.0�dist)�cwords�lc��B/usr/lib/python3/dist-packages/pip/_internal/cli/autocompletion.py�
<listcomp>2s
��z autocomplete.<locals>.<listcomp>T)�
local_only�install�pathcSsg|]	}|�d�d�qS)�=r)�split�r�xrrrrN�cs g|]\}}|�vr||f�qSrr)rr$�v)�	prev_optsrrrOs cs"g|]
\}}|���r||f�qSr�r)r�kr&��currentrrrQs"cSsg|]}|df�qS)rr)rr rrrr\sr�z--r!cSsg|]}|j�qSr)�option_list)r�irrrrfs� csg|]	}|���r|�qSrr(r#r*rrrsr%) �os�environr"�int�
IndexErrorr�listr�sys�exitrr
�lower�iter_installed_distributions�print�auto_complete_pathsr	�parser�option_list_allr�optparse�
SUPPRESS_HELP�
_long_opts�_short_opts�append�nargs�get_path_completion_type�
option_groupsr-r�
from_iterable�join)�cwordr;�subcommands�options�subcommand_name�word�should_list_installed�env�	installedr�should_list_installablesr �
subcommand�opt�opt_str�completion_type�paths�option�	opt_label�opts�flattened_optsr)r+rrr'r�autocompletes�
��


�

�

��
 
�	
��rYrrGrWcCs�|dks
||d�d�sdS|D]7}|jtjkrqt|��d�D]&}||d�d�d|krG|jr@tdd�|j�d�D��rG|jSq!qdS)	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�/r!rcss�|]}|dvVqdS))r �file�dirNrr#rrr�	<genexpr>�s�
�z+get_path_completion_type.<locals>.<genexpr>)rrr=r>�strr"�metavar�any)rrGrWrQ�orrrrCws

���rCr+rSc#s��tj�|�\}�tj�|�}t�|tj�sdStj�����fdd�t�|�D�}|D]0}tj�||�}tj�tj�||��}|dkrNtj�	|�rN|Vq,tj�
|�r\tj�|d�Vq,dS)atIf ``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``)
    :return: A generator of regular files and/or directories
    Nc3s&�|]}tj�|����r|VqdS)N)r0r �normcaserr#��filenamerrr]�s��
�z&auto_complete_paths.<locals>.<genexpr>r\r)r0r r"�abspath�access�R_OKrb�listdirrF�isfile�isdir)r+rS�	directory�current_path�	file_list�frQ�	comp_filerrcrr:�s$�	
���r:)rN)�__doc__r=r0r5�	itertoolsr�typingrrrr�pip._internal.cli.main_parserr�pip._internal.commandsrr	�pip._internal.metadatar
rYr^r2rCr:rrrr�<module>s(
h���
�