"Jd dZddlZddlZddlZddlmZddlmZmZm Z m Z ddl m Z ddl mZmZddlmZdd Zd e ed ed eede efd ZdededeefdZdS)zBLogic that powers autocompletion installed by ``pip completion``. N)chain)AnyIterableListOptional)create_main_parser) commands_dictcreate_command)get_default_environmentreturncdtjvrdStjdddttjd} |dz n#t$rdYnwxYwt }t t}g}d}D] }||vr|}n ||dkrtj d d o|d v}|rot} fd | d D}|r(|D]} t| tj dt|} | jjD]E} | jt&jkr.| j| jzD]} || | jfFd d|dz Dfd|D}fd|D}t3|| jj} | rt5| }d|D}|D]:}|d}|dr|ddddkr|dz }t|;nd|jD}||jt;j|} dr-|D])} | jt&jkr|| j| jzz }*n0t3||} | rt t5| }tdfd|Dtj ddS)z:Entry Point for completion of main and subcommand options.PIP_AUTO_COMPLETEN COMP_WORDS COMP_CWORDhelp-)show uninstallctg|]4}|jr|jddv-|j5S)rN)canonical_name startswith).0distcwordslcs S/opt/alt/python311/lib/python3.11/site-packages/pip/_internal/cli/autocompletion.py z autocomplete..2sY&11"55'vabbz99#:99T) local_onlycDg|]}|ddS)=r)splitrxs rrz autocomplete..Fs&DDDQWWS\\!_DDDr c&g|] \}}|v ||fSr()rr&v prev_optss rrz autocomplete..Gs+FFFfq!1I3E3EAq63E3E3Er cHg|]\}}|||fSr(r)rkr)currents rrz autocomplete..Is2GGGdag1F1FGAq6GGGr cg|]}|dfS)rr()rpaths rrz autocomplete..Ts333Tay333r rz--r#cg|] }|j Sr() option_list)ris rrz autocomplete..^s<<g|]}||Sr(r,)rr&r.s rrz autocomplete..ks*HHHa!,,w2G2GHHHHr ) osenvironr$int IndexErrorrlistr sysexitrr loweriter_installed_distributionsprintr parseroption_list_allroptparse SUPPRESS_HELP _long_opts _short_optsappendnargsget_path_completion_typeauto_complete_paths option_groupsr3r from_iterablejoin)cwordrA subcommandsoptionssubcommand_namewordshould_list_installedenv installedr subcommandoptopt_strcompletion_typepathsoption opt_labeloptsflattened_optsr.rrr*s @@@@r autocompleter_s"*,, Z % + + - -abb 1F  <( ) )E#  ! !F}%%KG&*O ;  "O E " f $ $ HQKKK$+$6$6s$;$; ;! T A  ! )++CB<<<MMI %  D$KKKK #O44 $4 9 9Cx8111"~?99GNNGSY#78888EDfQ].CDDD FFFFFFFGGGGgGGG2     -    4'AAE33U333G  Fq Iay !VAYrr]d22S )      =CO#CCK D 7vunUUO R"#6w#P#PQQ  chhHHHH;HHHIIJJJHQKKKKKs! A-- A<;A<rrNr]c|dks||dz dsdS|D]}|jtjkrt |dD]m}||dz dd|krC|jr1td|jdDr |jccSndS)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) r1rN/r#rc3K|]}|dvV dS))r0filedirNr(r%s r z+get_path_completion_type..s9**56A00******r )rrrCrDstrr$metavarany)rrNr]rWos rrIrIos qyyuqy)44S99yt'' 8x- - - S$$ ' 'Aeai &&s++A.!33{'c**:=+:K:KC:P:P***''';&&&&&  ' 4r r.rYc#Ktj|\}tj|}tj|tjsdStjfdtj|D}|D]}tj||}tjtj||}|dkr$tj |r|Vtj |r"tj|dVdS)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 Nc3K|]8}tj|4|V9dS)N)r7r0normcaser)rr&filenames rrez&auto_complete_paths..sZrw/?/?/B/B/M/Mh/W/W r rdr) r7r0r$abspathaccessR_OKrllistdirrMisfileisdir) r.rY directory current_path file_listfrW comp_filerms @rrJrJsI'--00Ix7??9--L 9\27 + +w))H:l++I . .gll<++G$$RW\\)Q%?%?@@  e # #s(;(; #OOOO W]]3   .',,y"-- - - - . .r )r N)__doc__rCr7r< itertoolsrtypingrrrrpip._internal.cli.main_parserrpip._internal.commandsr r pip._internal.metadatar r_rfr9rIrJr(r rrs. 000000000000<<<<<<@@@@@@@@::::::]]]]@ I!)1# c]0..s.x}......r