
    e              	           d Z ddlZddlZddlZddlmZ ddlmZmZm	Z	m
Z
 ddlmZ ddlmZmZ ddlmZ dd	Zd
e	e         dedee         de
e         fdZdededee         fdZdS )zBLogic that powers autocompletion installed by ``pip completion``.
    N)chain)AnyIterableListOptional)create_main_parser)commands_dictcreate_command)get_default_environmentreturnc                  \   dt           j        vrdS t           j        d                                         dd         t          t           j        d                   } 	 | dz
           n# t          $ r dY nw xY wt                      }t          t                    }g }d}D ]
}||v r|} n||dk    rt          j	        d           
                    d           o|d	v }|rot                      }                                fd
|                    d          D             }|r(|D ]}	t          |	           t          j	        d           
                    d           o|dk    }
|
r6t          d          D ]}t          |           t          j	        d           t!          |          }|j        j        D ]E}|j        t(          j        k    r.|j        |j        z   D ]}|                    ||j        f           Fd d| dz
           D             fd|D             }fd|D             }t5          | |j        j                  }|rt          |          }d |D             }|D ]:}|d         }|d         r|d         dd         dk    r|dz  }t          |           ;nd |j        D             }|                    |j                   t;          j        |          }
                    d          r-|D ])}|j        t(          j        k    r||j        |j        z   z  }*n0t5          | |          }|rt          t          |                    }t          d                    fd|D                                  t          j	        d           dS )z:Entry Point for completion of main and subcommand options.PIP_AUTO_COMPLETEN
COMP_WORDS   
COMP_CWORD help-)show	uninstallc                 t    g | ]4}|j                                       r|j         d d         v-|j         5S )r   N)canonical_name
startswith).0distcwordslcs     W/var/www/html/api/venv/lib/python3.11/site-packages/pip/_internal/cli/autocompletion.py
<listcomp>z autocomplete.<locals>.<listcomp>2   sY       &11"55 'vabbz99 # :99    T)
local_onlyinstallpathc                 D    g | ]}|                     d           d         S )=r   )splitr   xs     r   r   z autocomplete.<locals>.<listcomp>N   s&    DDDQWWS\\!_DDDr    c                 &    g | ]\  }}|v	||fS  r*   )r   r(   v	prev_optss      r   r   z autocomplete.<locals>.<listcomp>O   s+    FFFfq!1I3E3EAq63E3E3Er    c                 H    g | ]\  }}|                               ||fS r*   r   )r   kr+   currents      r   r   z autocomplete.<locals>.<listcomp>Q   s2    GGGdag1F1FGAq6GGGr    c                     g | ]}|d fS )r   r*   )r   r#   s     r   r   z autocomplete.<locals>.<listcomp>\   s    333Tay333r    r      z--r%   c                     g | ]	}|j         
S r*   )option_list)r   is     r   r   z autocomplete.<locals>.<listcomp>f   s    <<<!<<<r     c                 >    g | ]}|                               |S r*   r.   )r   r(   r0   s     r   r   z autocomplete.<locals>.<listcomp>s   s*    HHHa!,,w2G2GHHHHr    ) osenvironr&   int
IndexErrorr   listr	   sysexitr   r   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_groupsr4   r   from_iterablejoin)cwordrC   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_optsr0   r   r   r,   s                        @@@@r   autocompletera      sy    "*,,Z%++--abb1F
<())E#     !!F}%%KG &*O  ;"OE  "f$$HQKKK$+$6$6s$;$; ; !
 T
 A
 ! 	)++CB    <<<MM  I  %    D$KKKK ""3'''HOy,H 	! $ 	+GV<<  dHQKKK#O44
$4 	9 	9Cx8111"~? 9 9GNNGSY#78888 EDfQ].CDDD	FFFFFFFGGGGgGGG2-
 
  	4'AAE33U333G 	 	Fq	Iay !VAYrr]d22S 	)	 =<v';<<<F&''',T22c"" 	R% D D8x5553>CO#CCKD
 7vunUUO R"#6w#P#PQQchhHHHH;HHHIIJJJHQKKKKKs   !A- -A<;A<r   rO   r_   c                    |dk     s| |dz
                                d          sdS |D ]}|j        t          j        k    rt	          |                              d          D ]m}| |dz
                               d          d         |k    rC|j        r1t          d |j                            d          D                       r|j        c c S nd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)
    r2   r   N/r%   r   c              3      K   | ]}|d v V  	dS ))r#   filedirNr*   r'   s     r   	<genexpr>z+get_path_completion_type.<locals>.<genexpr>   s9       * *56A00* * * * * *r    )r   r   rE   rF   strr&   metavarany)r   rO   r_   rY   os        r   rK   rK   w   s    qyyuqy)44S99yt ' '8x---S$$ 	' 	'Aeai &&s++A.!33{ 'c * *:=+:K:KC:P:P* * * ' ' ' ;&&&&&	' 4r    r0   r[   c              #     K   t           j                            |           \  }t           j                            |          }t          j        |t           j                  sdS t           j                                      fdt          j        |          D             }|D ]}t           j                            ||          }t           j                            t           j                            ||                    }|dk    r$t           j        	                    |          r|V  t           j        
                    |          r"t           j                            |d          V  dS )at  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``)
    :return: A generator of regular files and/or directories
    Nc              3      K   | ]8}t           j                            |                                        4|V  9d S )N)r8   r#   normcaser   )r   r(   filenames     r   rg   z&auto_complete_paths.<locals>.<genexpr>   sZ        rw/?/?/B/B/M/Mh/W/W	     r    rf   r   )r8   r#   r&   abspathaccessR_OKrn   listdirrN   isfileisdir)	r0   r[   	directorycurrent_path	file_listfrY   	comp_filero   s	           @r   rB   rB      sI      '--00Ix7??9--L9\27++ w))H   :l++  I  	. 	.gll<++G$$RW\\)Q%?%?@@	 e##s(;(;#OOOOW]]3 	.',,y"-----	. 	.r    )r   N)__doc__rE   r8   r=   	itertoolsr   typingr   r   r   r   pip._internal.cli.main_parserr   pip._internal.commandsr	   r
   pip._internal.metadatar   ra   rh   r:   rK   rB   r*   r    r   <module>r      s.     				 



       0 0 0 0 0 0 0 0 0 0 0 0 < < < < < < @ @ @ @ @ @ @ @ : : : : : :e e e ePI!)1#c]   0. .s .x} . . . . . .r    