B
    =)H[Õ
  ã               @   sT   d Z ddlZddlmZ ddlmZ ddlmZ G dd„ deƒZ	G dd	„ d	e	ƒZ
dS )
z;Build Environment used for isolation during sdist building
é    N)Úget_python_lib)Ú	get_paths)ÚTempDirectoryc               @   s<   e Zd ZdZdd„ Zedd„ ƒZdd„ Zdd	„ Zd
d„ Z	dS )ÚBuildEnvironmentzFCreates and manages an isolated environment to install build deps
    c             C   s   t dd�| _|| _d S )Nz	build-env)Úkind)r   Ú	_temp_dirÚ	_no_clean)ÚselfÚno_clean© r   úXC:\Users\HIRONO~1\AppData\Local\Temp\pip-install-qz7kpjmn\pip\pip\_internal\build_env.pyÚ__init__   s    zBuildEnvironment.__init__c             C   s   | j jS )N)r   Úpath)r	   r   r   r   r      s    zBuildEnvironment.pathc             C   s  | j  ¡  tj dd ¡| _tj dd ¡| _tj dd ¡| _tjdkrHdnd}t	|| j
| j
dœd�}|d }| jrˆ|tj | j tjd< n|tj tj tjd< td	| j
d
�}td| j
d
�}||krÈ|}n|tj | }| jrô|tj | j tjd< n
|tjd< dtjd< | j
S )NÚPATHÚ
PYTHONPATHÚPYTHONNOUSERSITEÚntÚposix_prefix)ÚbaseÚplatbase)ÚvarsÚscriptsr   )Úplat_specificÚprefixé   Ú1)r   ÚcreateÚosÚenvironÚgetÚ	save_pathÚsave_pythonpathÚsave_nousersiteÚnamer   r   ÚpathsepÚdefpathr   )r	   Úinstall_schemeÚinstall_dirsr   ÚpurelibÚplatlibÚlib_dirsr   r   r   Ú	__enter__   s.    


zBuildEnvironment.__enter__c             C   s@   | j s| j ¡  dd„ }|d| jƒ |d| jƒ |d| jƒ d S )Nc             S   s&   |d krt j | d ¡ n
|t j| < d S )N)r   r   Úpop)ÚvarnameÚ	old_valuer   r   r   Úrestore_var@   s    z.BuildEnvironment.__exit__.<locals>.restore_varr   r   r   )r   r   Úcleanupr    r!   r"   )r	   Úexc_typeÚexc_valÚexc_tbr/   r   r   r   Ú__exit__<   s    
zBuildEnvironment.__exit__c             C   s   | j  ¡  d S )N)r   r0   )r	   r   r   r   r0   J   s    zBuildEnvironment.cleanupN)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úpropertyr   r+   r4   r0   r   r   r   r   r      s   %r   c               @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )ÚNoOpBuildEnvironmentz5A no-op drop-in replacement for BuildEnvironment
    c             C   s   d S )Nr   )r	   r
   r   r   r   r   R   s    zNoOpBuildEnvironment.__init__c             C   s   d S )Nr   )r	   r   r   r   r+   U   s    zNoOpBuildEnvironment.__enter__c             C   s   d S )Nr   )r	   r1   r2   r3   r   r   r   r4   X   s    zNoOpBuildEnvironment.__exit__c             C   s   d S )Nr   )r	   r   r   r   r0   [   s    zNoOpBuildEnvironment.cleanupN)r5   r6   r7   r8   r   r+   r4   r0   r   r   r   r   r:   N   s
   r:   )r8   r   Údistutils.sysconfigr   Ú	sysconfigr   Úpip._internal.utils.temp_dirr   Úobjectr   r:   r   r   r   r   Ú<module>   s   C