
    )h              	           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y)zALogic 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yt         j                  j                  d      rt         j                  j                  d      syt         j                  d   j                         dd } t	        t         j                  d         }	 | |dz
     }t               }t        t              }g }d}| D ]
  }||v s|} n |j|dk(  rt        j                  d       |j                  d       xr |d	v }|rt               }	|j                         }
|	j                  d
      D cg c]:  }|j                  j                  |
      r|j                  | dd vr|j                  < }}|r'|D ]  }t!        |        t        j                  d       |j                  d       xr |dk(  }|r1t#        |d      D ]  }t!        |        t        j                  d       t%        |      }|j&                  j(                  D ]V  }|j*                  t,        j.                  k7  s!||j0                  |j2                  z   D cg c]  }||j4                  f c}z  }X | d|dz
   D cg c]  }|j                  d      d    }}|D cg c]  \  }}||vs||f }}}|D cg c]  \  }}|j                  |      s||f }}}t7        | ||j&                  j(                        }|rt#        ||      }|D cg c]  }|df }}|D ]'  }|d   }|d   r|d   dd dk(  r|dz  }t!        |       ) n|j8                  D cg c]  }|j:                   }}|j=                  |j:                         t?        j@                  |      }|j                  d      rB|D ]<  }|j*                  t,        j.                  k7  s!||j0                  |j2                  z   z  }> n$t7        | ||      }|rt        t#        ||            }t!        djC                  |D cg c]  }|j                  |      s| c}             t        j                  d       y# t
        $ r d}Y w xY wc c}w c c}w c c}w c c}}w c c}}w c c}w c c}w c c}w )z:Entry Point for completion of main and subcommand options.PIP_AUTO_COMPLETEN
COMP_WORDS
COMP_CWORD    help-)show	uninstallT)
local_onlyinstallpath=r      z-- )"osenvirongetsplitint
IndexErrorr   listr	   sysexit
startswithr   loweriter_installed_distributionscanonical_nameprintauto_complete_pathsr
   parseroption_list_allr   optparseSUPPRESS_HELP
_long_opts_short_optsnargsget_path_completion_typeoption_groupsoption_listappendr   from_iterablejoin)cwordscwordcurrentr,   subcommandsoptionssubcommand_namewordshould_list_installedenvlcdist	installedshould_list_installablesr   
subcommandoptopt_strx	prev_optsvkcompletion_typepathsoption	opt_labelioptsflattened_optss                                S/var/www/html/venv/lib/python3.12/site-packages/pip/_internal/cli/autocompletion.pyautocompleterU      sg    "**, ::>>,'rzz~~l/KZZ%++-ab1F

<()E#  !F}%KG &*O ;"O
 "f$HHQK$+$6$6s$; ; !
 T
 A
 !)+CB  <<<M&&11"5''vabz9 ##I  %  D$K  ""3''HOy,H 	! $+GV< dHHQK#O4
$$44 	Cxx81118;8X-4Wcii( 	 /5Q.CDQWWS\!_D	D(/Ffq!1I3EAq6FF&-Gdag1FAq6GG2--
 'AE-23Tay3G3 	Fq	IayVAYr]d2S 	)	 (.';';<!<<F&&',,T2c"% D88x5553>>COO#CCKD
 7vunUO"#6w#PQchh;Ha!,,w2GHIJHHQK{  40
 EFG 4 = IsT   Q -?Q!Q&'Q+	Q0Q0$Q6>Q6:Q<RR*RQQr9   r:   rR   c                    |dk  s| |dz
     j                  d      sy|D ]  }|j                  t        j                  k(  r!t	        |      j                  d      D ]g  }| |dz
     j                  d      d   |k(  s!|j                  r,t        d |j                  j                  d      D              sY|j                  c c S   y)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              3   $   K   | ]  }|d v  
 yw))r   filedirN ).0rI   s     rT   	<genexpr>z+get_path_completion_type.<locals>.<genexpr>   s      *56A00*s   )r&   r   r.   r/   strr    metavarany)r9   r:   rR   rG   os        rT   r3   r3   {   s     qyuqy)44S9 '88x---S$ 	'Aeai &&s+A.!3{{c *:=++:K:KC:P* ' ;;&	''     r;   rM   c              #     K   t         j                  j                  |       \  }t         j                  j                  |      }t        j                  |t         j
                        syt         j                  j                        fdt        j                  |      D        }|D ]  }t         j                  j                  ||      }t         j                  j                  t         j                  j                  ||            }|dk7  r$t         j                  j                  |      r| t         j                  j                  |      st         j                  j                  |d        yw)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   | ]5  }t         j                  j                  |      j                        s2| 7 y w)N)r   r   normcaser&   )r\   rI   filenames     rT   r]   z&auto_complete_paths.<locals>.<genexpr>   s2      rww/?/?/B/M/Mh/Ws   3>>rZ   r   )r   r   r    abspathaccessR_OKre   listdirr8   isfileisdir)	r;   rM   	directorycurrent_path	file_listfrG   	comp_filerf   s	           @rT   r+   r+      s      ''--0Ix77??9-L99\277+ww)H::l+I  	.ggll<+GG$$RWW\\)Q%?@	 e#s(;OWW]]3'',,y"--	.s   EE7%E7)r   N)__doc__r.   r   r$   	itertoolsr   typingr   r   r   r   pip._internal.cli.main_parserr   pip._internal.commandsr	   r
   pip._internal.metadatar   rU   r^   r!   r3   r+   r[   rb   rT   <module>rx      sy    G  	 
  0 0 < @ :jZI!)1#c]0. .s .x} .rb   