a
    ‡Ààg“  ã                   @   s”   d Z ddlZddlZddlZddlmZ ddlmZ ddlm	Z	m
Z
 ddlmZ ddlmZ erxddlmZmZmZmZ d	d
„ Zdd„ Zdd„ ZdS )zBLogic that powers autocompletion installed by ``pip completion``.
é    N)Úchain)Úcreate_main_parser)Úcommands_dictÚcreate_command)Úget_installed_distributions)ÚMYPY_CHECK_RUNNING)ÚAnyÚIterableÚListÚOptionalc                     sÎ  dt jvrdS t jd  ¡ dd… } tt jd ƒ}z| |d  ‰ W n tyX   d‰ Y n0 tƒ }ttƒ}g }d}| D ]}||v rt|} qŠqt|du�r&|dkr¦t 	d¡ |dv o¸ˆ  
d	¡ }|�r*g }ˆ  ¡ }	td
d�D ].}
|
j 
|	¡rÖ|
j| dd… vrÖ| |
j¡ qÖ|�r*|D ]}
t|
ƒ �qt 	d¡ t|ƒ}|jjD ]8}|jtjk�r:|j|j D ]}| ||jf¡ �qX�q:dd„ | d|d … D ƒ‰‡fdd„|D ƒ}‡ fdd„|D ƒ}t| ||jjƒ}|�ràtˆ |ƒ}dd„ |D ƒ}|D ]>}|d }|d �r|d dd… dk�r|d7 }t|ƒ �qänšdd„ |jD ƒ}| |j¡ t |¡}ˆ  
d	¡�r„|D ]$}|jtjk�r\||j|j 7 }�q\n t| ||ƒ}|�r¤ttˆ |ƒƒ}td ‡ fdd„|D ƒ¡ƒ t 	d¡ dS )z?Entry Point for completion of main and subcommand options.
    ZPIP_AUTO_COMPLETENZ
COMP_WORDSé   Z
COMP_CWORDÚ Úhelp)ZshowZ	uninstallú-T)Z
local_onlyc                 S   s   g | ]}|  d ¡d ‘qS )ú=r   )Úsplit©Ú.0Úx© r   úY/var/www/sistema_ama/venv/lib/python3.9/site-packages/pip/_internal/cli/autocompletion.pyÚ
<listcomp>H   ó    z autocomplete.<locals>.<listcomp>c                    s    g | ]\}}|ˆ vr||f‘qS r   r   )r   r   Úv)Ú	prev_optsr   r   r   I   r   c                    s"   g | ]\}}|  ˆ ¡r||f‘qS r   ©Ú
startswith)r   Úkr   ©Úcurrentr   r   r   K   r   c                 S   s   g | ]}|d f‘qS )r   r   )r   Úpathr   r   r   r   T   r   r   é   z--r   c                 S   s   g | ]
}|j ‘qS r   )Úoption_list)r   Úir   r   r   r   ^   r   ú c                    s   g | ]}|  ˆ ¡r|‘qS r   r   r   r   r   r   r   m   r   ) ÚosÚenvironr   ÚintÚ
IndexErrorr   Úlistr   ÚsysÚexitr   Úlowerr   ÚkeyÚappendÚprintr   ÚparserZoption_list_allr   ÚoptparseÚSUPPRESS_HELPZ
_long_optsZ_short_optsÚnargsÚget_path_completion_typeÚauto_complete_pathsZoption_groupsr"   r   Úfrom_iterableÚjoin)ÚcwordsÚcwordr0   ZsubcommandsZoptionsZsubcommand_nameZwordZshould_list_installedZ	installedZlcZdistZ
subcommandÚoptZopt_strÚcompletion_typeÚpathsZoptionZ	opt_labelÚoptsZflattened_optsr   )r   r   r   Úautocomplete   s†    




þ

ÿ
 
ÿÿr>   c                 C   s–   |dk s| |d    d¡sdS |D ]n}|jtjkr4q"t|ƒ d¡D ]L}| |d   d¡d |krB|jr€tdd„ |j d¡D ƒƒrB|j    S qBq"dS )	aL  Get 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!   r   Nú/r   r   c                 s   s   | ]}|d v V  qdS ))r    ÚfileÚdirNr   r   r   r   r   Ú	<genexpr>�   s   ÿz+get_path_completion_type.<locals>.<genexpr>)r   r   r1   r2   Ústrr   ÚmetavarÚany)r8   r9   r=   r:   Úor   r   r   r4   q   s    	
þr4   c                 #   s¼   t j | ¡\}‰ t j |¡}t  |t j¡s.dS t j ˆ ¡‰ ‡ fdd„t  |¡D ƒ}|D ]`}t j ||¡}t j t j ||¡¡}|dkršt j 	|¡rš|V  qVt j 
|¡rVt j |d¡V  qVdS )ao  If ``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
    Nc                 3   s$   | ]}t j |¡ ˆ ¡r|V  qd S )N)r%   r    Únormcaser   r   ©Úfilenamer   r   rB   ™   s   ÿz&auto_complete_paths.<locals>.<genexpr>rA   r   )r%   r    r   ÚabspathÚaccessÚR_OKrG   Úlistdirr7   ÚisfileÚisdir)r   r;   Z	directoryZcurrent_pathZ	file_listÚfr:   Z	comp_filer   rH   r   r5   ˆ   s    
r5   )Ú__doc__r1   r%   r*   Ú	itertoolsr   Úpip._internal.cli.main_parserr   Úpip._internal.commandsr   r   Zpip._internal.utils.miscr   Úpip._internal.utils.typingr   Útypingr   r	   r
   r   r>   r4   r5   r   r   r   r   Ú<module>   s   _