U
    «ÃT_§  ã                   @   sv   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 G d	d
„ d
eeƒZdS )é    )Úabsolute_import)Úcanonicalize_name)ÚCommand)ÚSessionCommandMixin)ÚInstallationError)Úparse_requirements)Úinstall_req_from_line)Ú(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-8u7dkzi1/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 ]}|jrR||t|jƒ< qRq@|s†tdt| jd� ƒ‚t	d|kd� | 
¡ D ]&}|j|j| jdkd�}|rœ| ¡  qœd S )	N)Úisolated)ÚoptionsÚsessionzLYou must give at least one requirement to %(name)s (see "pip help %(name)s"))ÚnameÚpip)Úmodifying_pipr   )Úauto_confirmÚverbose)Úget_default_sessionr   Úisolated_moder%   r   r   r   r   Údictr	   ÚvaluesÚ	uninstallr   Ú	verbosityÚcommit)	r   r#   r   r$   Zreqs_to_uninstallr%   ÚreqÚfilenameZuninstall_pathsetr    r    r!   Úrun2   sB    
 ÿ
ý

ÿÿÿ ÿzUninstallCommand.run)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úusager   r3   Ú__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   Úpip._internal.utils.miscr	   r
   r    r    r    r!   Ú<module>   s   