3
ûâdeé
  ã               @   sà   d dl Z d dlZd dlmZmZmZmZmZ d dlm	Z	 ddl
mZ ddlmZ ddlmZ dd	d
dgZejeƒZG dd„ dƒZee eeeef  dœdd„Zee ee ee ee ee ee eeeee dœ
dd„ZdS )é    N)ÚIteratorÚListÚOptionalÚSequenceÚTuple)Ú
indent_logé   )Úparse_requirements)ÚInstallRequirement)ÚRequirementSetr   r
   r	   Úinstall_given_reqsc               @   s*   e Zd Zeddœdd„Zedœdd„ZdS )ÚInstallationResultN)ÚnameÚreturnc             C   s
   || _ d S )N)r   )Úselfr   © r   ú9/tmp/pip-build-red6nood/pip/pip/_internal/req/__init__.pyÚ__init__   s    zInstallationResult.__init__)r   c             C   s   d| j ›d�S )NzInstallationResult(name=ú))r   )r   r   r   r   Ú__repr__   s    zInstallationResult.__repr__)Ú__name__Ú
__module__Ú__qualname__Ústrr   r   r   r   r   r   r      s   r   )Úrequirementsr   c             c   s2   x,| D ]$}|j std|› �ƒ‚|j |fV  qW d S )Nz%invalid to-be-installed requirement: )r   ÚAssertionError)r   Úreqr   r   r   Ú_validate_requirements   s    
r   )
r   Úinstall_optionsÚglobal_optionsÚrootÚhomeÚprefixÚwarn_script_locationÚuse_user_siteÚ	pycompiler   c	             C   sø   t jt| ƒƒ}	|	r(tjddj|	jƒ ƒƒ g }
tƒ �¼ x´|	jƒ D ]¨\}}|j	rxtjd|ƒ tƒ � |j
dd�}W dQ R X nd}y|j||||||||d� W n* tk
rÄ   |r¾|j r¾|jƒ  ‚ Y nX |rØ|jrØ|jƒ  |
jt|ƒƒ q>W W dQ R X |
S )zu
    Install everything in the given list.

    (to be called after having downloaded and unpacked the packages)
    z!Installing collected packages: %sz, zAttempting uninstall: %sT)Úauto_confirmN)r    r!   r"   r#   r$   r%   )ÚcollectionsÚOrderedDictr   ÚloggerÚinfoÚjoinÚkeysr   ÚitemsZshould_reinstallÚ	uninstallÚinstallÚ	ExceptionÚinstall_succeededÚrollbackÚcommitÚappendr   )r   r   r   r    r!   r"   r#   r$   r%   Ú
to_installÚ	installedZreq_nameÚrequirementZuninstalled_pathsetr   r   r   r   %   s>    
)r'   ÚloggingÚtypingr   r   r   r   r   Zpip._internal.utils.loggingr   Úreq_filer	   Úreq_installr
   Úreq_setr   Ú__all__Ú	getLoggerr   r)   r   r   r   Úboolr   r   r   r   r   Ú<module>   s0   
	