U n a@sdZddlZddlZddlZddlmZddlmZddlm Z m Z ddl m Z ddl mZerxddlmZmZmZmZd d Zd d Zd dZdS)zBLogic that powers autocompletion installed by ``pip completion``. N)chain)create_main_parser) commands_dictcreate_command)get_installed_distributions)MYPY_CHECK_RUNNING)AnyIterableListOptionalcsdtjkrdStjddd}ttjd}z||dWntk rZdYnXt}tt}g}d}|D]}||krv|}qqv|dk r(|dkrt d|dko d  }|r,g} } t d d D].} | j | r| j |ddkr|| j q|r,|D]} t| qt dt|} | jjD]8} | jtjkr<| j| jD]} || | jfqZq}|d}|dr|ddddkr|d7}t|qndd |jD}||jt|} d r|D]$} | jtjkr^|| j| j7}q^n t|||}|rtt|}tdfdd |Dt ddS)z?Entry Point for completion of main and subcommand options. PIP_AUTO_COMPLETEN COMP_WORDS COMP_CWORDhelp)show uninstall-T) local_onlycSsg|]}|ddqS)=r)split.0xraC:\Users\vtejo\AppData\Local\Temp\pip-unpacked-wheel-6mt8ur68\pip\_internal\cli\autocompletion.py Hsz autocomplete..cs g|]\}}|kr||fqSrr)rrv) prev_optsrrrIscs"g|]\}}|r||fqSr startswith)rkrcurrentrrrKs cSsg|] }|dfqS)rr)rpathrrrrTsrz--rcSsg|] }|jqSr) option_list)rirrrr^s csg|]}|r|qSrr rr#rrrms ) osenvironrint IndexErrorrlistrsysexitr!lowerrkeyappendprintrparseroption_list_allroptparse SUPPRESS_HELP _long_opts _short_optsnargsget_path_completion_typeauto_complete_paths option_groupsr'r from_iterablejoin)cwordscwordr5 subcommandsoptionssubcommand_namewordshould_list_installed installedlcdist subcommandoptopt_strcompletion_typepathsoption opt_labeloptsflattened_optsr)r$rr autocompletes             rTcCs|dks||ddsdS|D]n}|jtjkr4q"t|dD]L}||ddd|krB|jrtdd|jdDrB|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|]}|dkVqdS))r%filedirNrrrrr sz+get_path_completion_type..)r!rr7r8strrmetavarany)rArBrRrLorrrr<qs   r<c#stj|\}tj|}t|tjs.dStjfddt|D}|D]`}tj||}tjtj||}|dkrtj |r|VqVtj |rVtj|dVqVdS)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%normcaser!rfilenamerrrXsz&auto_complete_paths..rWr) r*r%rabspathaccessR_OKr]listdirr@isfileisdir)r$rN directory current_path file_listfrL comp_filerr^rr=s    r=)__doc__r7r*r/ itertoolsrpip._internal.cli.main_parserrpip._internal.commandsrrpip._internal.utils.miscrpip._internal.utils.typingrtypingrr r r rTr<r=rrrrs    _