3
ûâdeÆ  ã               @   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 j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d„Zeee e	dœ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> ...N)Úreturnc          	   C   sD   | j jddddg ddd� | j jdd	d
ddd� | j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   ú?/tmp/pip-build-red6nood/pip/pip/_internal/commands/uninstall.pyÚadd_options$   s    zUninstallCommand.add_options)ÚoptionsÚargsr   c       
      C   s   | j |ƒ}i }x<|D ]4}t||jd�}|jr<||t|jƒ< qtjd|ƒ qW xH|jD ]>}x8t|||d�D ]&}t	||jd�}|jrh||t|jƒ< qhW qTW |s´t
d| j› d| j› d�ƒ‚td|kd� x2|jƒ D ]&}|j|j| jd	kd
�}	|	rÌ|	jƒ  qÌW 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)Zmodifying_pipr   )Úauto_confirmÚverbose)Zget_default_sessionr   Úisolated_modeÚnamer   ÚloggerÚwarningr   r
   r   r	   r   ÚvaluesÚ	uninstallr   Ú	verbosityÚcommitr   r   )
r   r"   r#   r%   Zreqs_to_uninstallr*   ÚreqÚfilenameZ
parsed_reqZuninstall_pathsetr   r   r    Úrun;   s>    



zUninstallCommand.run)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úusager!   r   r   ÚstrÚintr3   r   r   r   r    r      s   	r   )ÚloggingÚoptparser   Útypingr   Úpip._vendor.packaging.utilsr   Zpip._internal.cli.base_commandr   Zpip._internal.cli.req_commandr   r   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   Ú	getLoggerr4   r+   r   r   r   r   r    Ú<module>   s   
