U
    Zޫ^                     @   sz   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 G d	d
 d
eeZdS )    )absolute_import)canonicalize_name)Command)SessionCommandMixin)InstallationError)parse_requirements)install_req_from_line#install_req_from_parsed_requirement)(protect_pip_from_modification_on_windowsc                       s,   e Zd ZdZdZ fddZdd Z  Z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              	      sV   t t| j|| | 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   )superr   __init__cmd_opts
add_optionparserinsert_option_group)selfargskw	__class__ D/tmp/pip-unpacked-wheel-huh_82lg/pip/_internal/commands/uninstall.pyr   "   s$     	 zUninstallCommand.__init__c           
      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 t
 td|kd | D ]&}|j|j| jdkd}	|	r|	  qd S )N)isolated)optionssessionzRYou must give at least one requirement to {self.name} (see "pip help {self.name}")pip)modifying_pipr   )auto_confirmverbose)get_default_sessionr   isolated_modenamer   r   r   r	   r   formatlocalsr
   values	uninstallr   	verbositycommit)
r   r$   r   r%   Zreqs_to_uninstallr,   reqfilenameZ
parsed_reqZuninstall_pathsetr!   r!   r"   run5   sJ    
 

 zUninstallCommand.run)__name__
__module____qualname____doc__usager   r5   __classcell__r!   r!   r   r"   r      s   
r   N)
__future__r   pip._vendor.packaging.utilsr   pip._internal.cli.base_commandr   pip._internal.cli.req_commandr   pip._internal.exceptionsr   Zpip._internal.reqr   pip._internal.req.constructorsr   r	   pip._internal.utils.miscr
   r   r!   r!   r!   r"   <module>   s   