U
    ;qLe                     @   s   d 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	m
Z
 ddlmZ ddlmZ erxddlmZmZmZmZ d	d
 Zdd Zdd ZdS )zBLogic that powers autocompletion installed by ``pip completion``.
    N)chain)create_main_parser)commands_dictcreate_command)get_installed_distributions)MYPY_CHECK_RUNNING)AnyIterableListOptionalc                     s  dt jkrdS t jd  dd } tt jd }z| |d   W n tk
rZ   d Y nX t }tt}g }d}| D ]}||krv|} qqv|dk	r(|dkrt	d |dko 
d	 }|r,g }  }	td
dD ].}
|
j
|	r|
j| dd kr||
j q|r,|D ]}
t|
 qt	d t|}|jjD ]8}|jtjkr<|j|j D ]}|||jf qZq<dd | d|d  D fdd|D } fdd|D }t| ||jj}|rt |}dd |D }|D ]>}|d }|d r|d dd dkr|d7 }t| qndd |jD }||j t|} 
d	r|D ]$}|jtjkr^||j|j 7 }q^n t| ||}|rtt |}td fdd|D  t	d dS )z?Entry Point for completion of main and subcommand options.
    ZPIP_AUTO_COMPLETENZ
COMP_WORDS   Z
COMP_CWORD help)ZshowZ	uninstall-T)Z
local_onlyc                 S   s   g | ]}| d d qS )=r   )split.0x r   w/home/p21-0144/sympy/latex2sympy2solve-back-end/sympyEq/lib/python3.8/site-packages/pip/_internal/cli/autocompletion.py
<listcomp>H   s     z autocomplete.<locals>.<listcomp>c                    s    g | ]\}}| kr||fqS r   r   )r   r   v)	prev_optsr   r   r   I   s      c                    s"   g | ]\}}|  r||fqS r   
startswith)r   kr   currentr   r   r   K   s     
 c                 S   s   g | ]}|d fqS )r   r   )r   pathr   r   r   r   T   s     r      z--r   c                 S   s   g | ]
}|j qS r   )option_list)r   ir   r   r   r   ^   s      c                    s   g | ]}|  r|qS r   r   r   r   r   r   r   m   s     
 ) osenvironr   int
IndexErrorr   listr   sysexitr   lowerr   keyappendprintr   parserZoption_list_allr   optparseSUPPRESS_HELPZ
_long_optsZ_short_optsnargsget_path_completion_typeauto_complete_pathsZoption_groupsr!   r   from_iterablejoin)cwordscwordr/   ZsubcommandsZoptionsZsubcommand_nameZwordZshould_list_installedZ	installedZlcZdistZ
subcommandoptZopt_strcompletion_typepathsZoptionZ	opt_labeloptsZflattened_optsr   )r   r   r   autocomplete   s    





  
 
r=   c                 C   s   |dk s| |d   dsdS |D ]n}|jtjkr4q"t|dD ]L}| |d  dd |krB|jrtdd |jdD rB|j    S qBq"d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)
    r    r   N/r   r   c                 s   s   | ]}|d kV  qdS ))r   filedirNr   r   r   r   r   	<genexpr>   s   z+get_path_completion_type.<locals>.<genexpr>)r   r   r0   r1   strr   metavarany)r7   r8   r<   r9   or   r   r   r3   q   s    	
r3   c                 #   s   t j| \} t j|}t |t js.dS t j   fddt |D }|D ]`}t j||}t jt j||}|dkrt j	|r|V  qVt j
|rVt j|dV  qVdS )ao  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`)i
    :return: A generator of regular files and/or directories
    Nc                 3   s$   | ]}t j| r|V  qd S )N)r$   r   normcaser   r   filenamer   r   rA      s    z&auto_complete_paths.<locals>.<genexpr>r@   r   )r$   r   r   abspathaccessR_OKrF   listdirr6   isfileisdir)r   r:   Z	directoryZcurrent_pathZ	file_listfr9   Z	comp_filer   rG   r   r4      s    
r4   )__doc__r0   r$   r)   	itertoolsr   pip._internal.cli.main_parserr   pip._internal.commandsr   r   Zpip._internal.utils.miscr   pip._internal.utils.typingr   typingr   r	   r
   r   r=   r3   r4   r   r   r   r   <module>   s   _