a
    `                     @   s   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 d d
lmZ erd dlmZ d dlmZ G dd deeZdS )    )absolute_import)canonicalize_name)Command)SessionCommandMixin)SUCCESS)InstallationError)parse_requirements)install_req_from_line#install_req_from_parsed_requirement)(protect_pip_from_modification_on_windows)MYPY_CHECK_RUNNING)Values)Listc                   @   s$   e Zd ZdZdZdd Z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> ...c              	   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   )Zcmd_optsZ
add_optionparserZinsert_option_group)self r   B/usr/lib/python3/dist-packages/pip/_internal/commands/uninstall.pyadd_options%   s    	zUninstallCommand.add_optionsc           
      C   s   |  |}i }|D ]&}t||jd}|jr||t|j< q|jD ]:}t|||dD ]&}t||jd}|jrR||t|j< qRq@|stdj	f i t
 td|v d | D ]&}|j|j| jdkd}	|	r|	  qtS )N)isolated)optionssessionzRYou must give at least one requirement to {self.name} (see "pip help {self.name}")Zpip)Zmodifying_pipr   )Zauto_confirmverbose)Zget_default_sessionr	   Zisolated_modenamer   r   r   r
   r   formatlocalsr   valuesZ	uninstallr   	verbosityZcommitr   )
r   r    argsr!   Zreqs_to_uninstallr#   ZreqfilenameZ
parsed_reqZuninstall_pathsetr   r   r   run8   sH    



zUninstallCommand.runN)__name__
__module____qualname____doc__Zusager   r*   r   r   r   r   r      s   
r   N)Z
__future__r   Zpip._vendor.packaging.utilsr   Zpip._internal.cli.base_commandr   Zpip._internal.cli.req_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   Zpip._internal.utils.typingr   Zoptparser   typingr   r   r   r   r   r   <module>   s   