
    dh                        d Z ddlmZ ddlZddlZddlZddlmZ ddlm	Z	 ddl
mZ ddlmZ ddlmZmZ dd	lmZ dd
Z	 	 	 	 	 	 	 	 ddZddZy)zALogic that powers autocompletion installed by ``pip completion``.    )annotationsN)Iterable)chain)Any)create_main_parser)commands_dictcreate_command)get_default_environmentc            
     	   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 ||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!        |       ) t9        fd|j;                         D              s8|j;                         D ]  }|j                  |      st!        |       ! n|j<                  D cg c]  }|j>                   }}|jA                  |j>                         tC        jD                  |      }|j                  d      rB|D ]<  }|j*                  t,        j.                  k7  s!||j0                  |j2                  z   z  }> n$t7        | |      }|rt        t#        ||            }t!        djG                  |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--c              3  &   K   | ]  }|v  
 y wN ).0namecwordss     b/var/www/html/vivango/api/ia/venv/lib/python3.12/site-packages/pip/_internal/cli/autocompletion.py	<genexpr>zautocomplete.<locals>.<genexpr>l   s     Gd46>Gs    )$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anyhandler_mapoption_groupsoption_listappendr   from_iterablejoin)cwordcurrentr2   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handler_nameioptsflattened_optsr   s                                @r    autocompleter\      s    "**, ::>>,'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 	)	 Gj.D.D.FGG * 6 6 8 (**73,'( (.';';<!<<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HHQKG  40
 EFG 4  = IsT   R% .?R7R<(S
SS%S?S;SS)S S%R43R4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dirNr   )r   rP   s     r    r!   z+get_path_completion_type.<locals>.<genexpr>   s      *56A00*s   )r,   r   r4   r5   strr&   metavarr:   )r   rA   rZ   rN   os        r    r9   r9      s     qyuqy)44S9 '88x---S$ 	'Aeai &&s+A.!3{{c *:=++:K:KC:P* ' ;;&	''     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r   )r#   r   normcaser,   )r   rP   filenames     r    r!   z&auto_complete_paths.<locals>.<genexpr>   s2      rww/?/?/B/M/Mh/Ws   3>>ra   r   )r#   r   r&   abspathaccessR_OKrh   listdirr@   isfileisdir)	rB   rT   	directorycurrent_path	file_listfrN   	comp_fileri   s	           @r    r1   r1      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)returnNone)r   z	list[str]rA   r'   rZ   zIterable[Any]ru   z
str | None)rB   rb   rT   rb   ru   zIterable[str])__doc__
__future__r   r4   r#   r*   collections.abcr   	itertoolsr   typingr   pip._internal.cli.main_parserr   pip._internal.commandsr   r	   pip._internal.metadatar
   r\   r9   r1   r   re   r    <module>r      sW    G "  	 
 $   < @ :pf!)60.re   