o
    Ëý°jÆ  ã                   @   s¨   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lmZ d d	lmZ d d
lmZmZ d dlmZ e  e¡ZG dd„ dee
ƒZdS )é    N)ÚValues)ÚList)Úcanonicalize_name)ÚCommand)ÚSessionCommandMixinÚwarn_if_run_as_root)ÚSUCCESS)ÚInstallationError)Úparse_requirements)Úinstall_req_from_lineÚ#install_req_from_parsed_requirement)Ú(protect_pip_from_modification_on_windowsc                   @   s8   e Zd ZdZdZddd„Zdedee de	fd	d
„Z
dS )ÚUninstallCommandaB  
    Uninstall packages.

    pip is able to uninstall most installed packages. Known exceptions are:

    - Pure distutils packages installed with ``python setup.py install``, which
      leave behind no metadata to determine what files were installed.
    - Script wrappers installed by ``python setup.py develop``.
    zU
      %prog [options] <package> ...
      %prog [options] -r <requirements file> ...ÚreturnNc              	   C   sD   | j jddddg ddd� | j jdd	d
ddd� | j d| j ¡ d S )Nz-rz--requirementÚrequirementsÚappendÚfilezjUninstall all the packages listed in the given requirements file.  This option can be used multiple times.)ÚdestÚactionÚdefaultÚmetavarÚhelpz-yz--yesÚyesÚ
store_truez2Don't ask for confirmation of uninstall deletions.)r   r   r   r   )Úcmd_optsÚ
add_optionÚparserÚinsert_option_group)Úself© r   ú“/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/pip/_internal/commands/uninstall.pyÚadd_options$   s"   øûzUninstallCommand.add_optionsÚoptionsÚargsc           
      C   sð   |   |¡}i }|D ]}t||jd�}|jr||t|jƒ< q	t d|¡ q	|jD ]}t|||d�D ]}t	||jd�}|jrC||t|jƒ< q0q'|sTt
d| j› d| j› d�ƒ‚td|v d� | ¡ D ]}|j|j| jd	kd
�}	|	rr|	 ¡  q_tƒ  tS )N)ÚisolatedzSInvalid requirement: %r ignored - the uninstall command expects named requirements.)r"   Úsessionz*You must give at least one requirement to z (see "pip help z")Úpip)Úmodifying_pipr   )Úauto_confirmÚverbose)Úget_default_sessionr   Úisolated_modeÚnamer   ÚloggerÚwarningr   r
   r   r	   r   ÚvaluesÚ	uninstallr   Ú	verbosityÚcommitr   r   )
r   r"   r#   r%   Úreqs_to_uninstallr,   ÚreqÚfilenameÚ
parsed_reqÚuninstall_pathsetr   r   r    Úrun;   sV   
þü

ÿÿ€ù
ÿÿÿþ€zUninstallCommand.run)r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úusager!   r   r   ÚstrÚintr8   r   r   r   r    r      s
    

r   )ÚloggingÚoptparser   Útypingr   Úpip._vendor.packaging.utilsr   Úpip._internal.cli.base_commandr   Úpip._internal.cli.req_commandr   r   Úpip._internal.cli.status_codesr   Úpip._internal.exceptionsr	   Úpip._internal.reqr
   Úpip._internal.req.constructorsr   r   Úpip._internal.utils.miscr   Ú	getLoggerr9   r-   r   r   r   r   r    Ú<module>   s    
