U
    aÊ¹j˜  ã                   @   sÖ   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ e j	dd„ fdd„ƒZ
e j	dd„ ƒZe j	d	d
„ ƒZe j	dd„ ƒZe j	dd„ ƒZe j	dd„ ƒZdd„ Ze j	dd„ ƒZe j	dd„ ƒZe j	dd„ ƒZdS )é    N)ÚFileLockc                 C   s   d S ©N© )Údirr   r   úX/var/www/html/bwave/python/venv/lib/python3.8/site-packages/setuptools/tests/contexts.pyÚ<lambda>   ó    r   c              	   k   s@   t jf |Ž}t ¡ }z| |ƒ |V  W 5 | |ƒ t |¡ X d S r   )ÚtempfileÚmkdtempÚosÚgetcwdÚshutilÚrmtree)ÚcdÚkwargsÚtemp_dirZorig_dirr   r   r   Útempdir   s    
r   c                  k   sŒ   t dd„ | D ƒƒ}dd„ |  ¡ D ƒ}t|ƒD ]}tj |d¡ |  |¡ q,tj | ¡ z
|V  W 5 | D ]}tj |d¡ qftj |¡ X dS )zj
    In a context, patch the environment with replacements. Pass None values
    to clear the values.
    c                 s   s&   | ]}|t jkr|t j| fV  qd S r   )r   Úenviron)Ú.0Úkeyr   r   r   Ú	<genexpr>   s     
 zenvironment.<locals>.<genexpr>c                 s   s   | ]\}}|d kr|V  qd S r   r   )r   r   Úvaluer   r   r   r   !   s      N)ÚdictÚitemsÚlistr   r   ÚpopÚupdate)ZreplacementsÚsavedÚremover   r   r   r   Úenvironment   s    
r   c               	   c   s^   t j} t j}t ¡  }t _t ¡  }t _z||fV  W 5 | d¡ | d¡ | t _|t _X dS )zk
    Redirect stdout/stderr to StringIO objects to prevent console output from
    distutils commands.
    r   N)ÚsysÚstdoutÚstderrÚioÚStringIOÚseek)Z
old_stdoutZ
old_stderrZ
new_stdoutZ
new_stderrr   r   r   Úquiet0   s    

r&   c                  c   s   t j} z
| V  W 5 | t _X d S r   )ÚsiteÚENABLE_USER_SITE)r   r   r   r   Úsave_user_site_settingD   s    
r)   c               
   c   sL   dd l } |  ¡ }tjd d … }z||fV  W 5 |tjd d …< |  |¡ X d S )Nr   )Úpkg_resourcesÚ__getstate__r    ÚpathÚ__setstate__)r*   Zpr_stateÚsys_pathr   r   r   Úsave_pkg_resources_stateM   s    r/   c                  g   s$   z
d V  W n | k
r   Y nX d S r   r   )Zexcsr   r   r   Úsuppress_exceptions[   s    
r0   c                 C   s.   z|   d¡}W n tk
r$   Y dS X |dkS )zO
    Return True if running under xdist and multiple
    workers are used.
    Ú	worker_idFZmaster)ZgetfixturevalueÚ	Exception)Úrequestr1   r   r   r   Ú	multiprocc   s
    r4   c              	   c   sT   |  ¡ }t| ƒr|jn|}|| }t| d¡ƒ� |jddd� |V  W 5 Q R X dS )zCUses a file lock to guarantee only one worker can access a temp dirz.lockT)Úexist_okÚparentsN)Zgetbasetempr4   Úparentr   Úwith_suffixÚmkdir)r3   Ztmp_path_factoryÚnameÚbaseZ
shared_dirZ
locked_dirr   r   r   Úsession_locked_tmp_diro   s    r<   c               
   c   sJ   t jdd… t jdd… t jdd… f} z
dV  W 5 | \t _t _t _X dS )zNMake sure ``sys.path``, ``sys.meta_path`` and ``sys.path_hooks`` are preservedN)r    r,   Ú	meta_pathÚ
path_hooks)Úprevr   r   r   Ú
save_paths}   s    (
r@   c                  c   s*   t j} zt j ¡ t _dV  W 5 | t _X dS )z.Make sure initial ``sys.modules`` is preservedN)r    ÚmodulesÚcopy)Zprev_modulesr   r   r   Úsave_sys_modulesˆ   s
    
rC   )Ú
contextlibr#   r   r   r'   r    r	   Úfilelockr   Úcontextmanagerr   r   r&   r)   r/   r0   r4   r<   r@   rC   r   r   r   r   Ú<module>   s4   







