a
lj @ s d Z ddlZddlZddlZddlmZ ddlmZmZm Z m
Z
ddlmZ ddl
mZmZ ddlmZ ddd d
Ze e eee e
e ddd
Zeeee dddZdS )zBLogic that powers autocompletion installed by ``pip completion``.
N)chain)AnyIterableListOptional)create_main_parser)
commands_dictcreate_command)get_default_environment)returnc s dt jvrdS t jd dd tt jd } z| d W n tyX d Y n0 t }tt}g }d}D ]}||v rt|} qqt|dur|dkrt d
d o|d v }|rt } fd
d|j
dd
D }|r|D ]} t| qt d t|}
|
jjD ]8}|jtjkr|j|j D ]}|||jf q:qdd d| d D fdd|D } fdd|D }t| |
jj}
|
rt |
}dd |D }|D ]>}|d }|d r|d dd dkr|d7 }t| qndd |jD }||j t|}
drf|D ]$}|jtjkr>||j|j 7 }q>n t| |}
|
rtt |
}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 uninstallc s0 g | ](}|j r|j d d vr|j qS )r N)Zcanonical_name
startswith).0dist)cwordslc D/usr/lib/python3.9/site-packages/pip/_internal/cli/autocompletion.py
2 s z autocomplete..T)Z
local_onlyc S s g | ]}| d d qS )=r )splitr xr r r r F c s g | ]\}}| vr||fqS r r )r r v) prev_optsr r r G r c s" g | ]\}}| r||fqS r r )r kr currentr r r I r c S s g | ]}|d fqS )r r )r pathr r r r T r r z--r c S s g | ]
}|j qS r )option_list)r ir r r r ^ r c s g | ]}| r|qS r r r r! r r r k r ) osenvironr int
IndexErrorr listr sysexitr r
lowerZiter_installed_distributionsprintr parserZoption_list_allr optparse
SUPPRESS_HELPZ
_long_optsZ_short_optsappendnargsget_path_completion_typeauto_complete_pathsZ
option_groupsr% r
from_iterablejoin)cwordr1 subcommandsoptionsZsubcommand_nameZwordZshould_list_installedenvZ installedr Z
subcommandoptZopt_strcompletion_typepathsoptionZ opt_labeloptsZflattened_optsr )r" r r r r autocomplete s~
rC )r r: rB r c C s |dk s| |d dsdS |D ]n}|jtjkr4q"t|dD ]L}| |d dd |krB|jrtdd |jdD rB|j S qBq"dS ) 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 qdS ))r# filedirNr r r r r