o
    i                     @   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
 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mZmZ e eZG dd dee
ZdS )    N)Values)canonicalize_name)
cmdoptions)Command)SessionCommandMixin)SUCCESS)InstallationError)parse_requirements)install_req_from_line#install_req_from_parsed_requirement)check_externally_managed(protect_pip_from_modification_on_windowswarn_if_run_as_rootc                   @   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 t  | j t  | 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   )Zcmd_optsZ
add_optionr   root_user_actionoverride_externally_managedparserZinsert_option_group)self r   @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|jsZt  td|v d | D ]}|j|j| jd	kd
}	|	rx|	  qe|jdkrt  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")Zpip)Zmodifying_pipr   )Zauto_confirmverbosewarn)Zget_default_sessionr
   Zisolated_modenamer   loggerZwarningr   r	   r   r   r   r   r   valuesZ	uninstallr   	verbosityZcommitr   r   r   )
r   r"   r#   r%   Zreqs_to_uninstallr(   ZreqfilenameZ
parsed_reqZuninstall_pathsetr   r   r    run@   s\   




zUninstallCommand.run)r   N)__name__
__module____qualname____doc__usager!   r   liststrintr-   r   r   r   r    r      s
    

r   )ZloggingZoptparser   Zpip._vendor.packaging.utilsr   Zpip._internal.clir   Zpip._internal.cli.base_commandr   Zpip._internal.cli.index_commandr   Zpip._internal.cli.status_codesr   Zpip._internal.exceptionsr   Zpip._internal.reqr	   Zpip._internal.req.constructorsr
   r   Zpip._internal.utils.miscr   r   r   Z	getLoggerr.   r)   r   r   r   r   r    <module>   s    
