o
    Zh                     @   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   P/var/www/html/lang_env/lib/python3.10/site-packages/setuptools/tests/contexts.py<lambda>   s    r   c              	   k   sV    t jdi |}t }z| | |V  W | | t| d S | | t| w )Nr   )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 | D ]	}tj|d q3tj| dS | D ]	}tj|d qGtj| w )zj
    In a context, patch the environment with replacements. Pass None values
    to clear the values.
    c                 s   s(    | ]}|t jv 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 u 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 |d |d | t _|t _dS |d |d | t _|t _w )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 | t _d S | t _w r   )siteENABLE_USER_SITE)r   r   r   r   save_user_site_settingD   s
   r(   c               
   c   sd    dd l } |  }tjd d  }z||fV  W |tjd d < | | d S |tjd d < | | w )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 d S  | y   Y d S w r   r   )Zexcsr   r   r   suppress_exceptions[   s   r/   c                 C   s*   z
|  d}W |dkS  ty   Y dS w )zO
    Return True if running under xdist and multiple
    workers are used.
    	worker_idFZmaster)Zgetfixturevalue	Exception)requestr0   r   r   r   	multiprocc   s   r3   c                 c   sl    |  }t| r|jn|}|| }t|d |jddd |V  W d   dS 1 s/w   Y  dS )zCUses a file lock to guarantee only one worker can access a temp dirz.lockT)exist_okparentsN)Zgetbasetempr3   parentr   with_suffixmkdir)r2   Ztmp_path_factorynamebaseZ
shared_dirZ
locked_dirr   r   r   session_locked_tmp_diro   s   "r;   c               
   c   sZ    t jdd t jdd t jdd f} zdV  W | \t _t _t _dS | \t _t _t _w )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   s0    t j} zt j t _dV  W | t _dS | t _w )z.Make sure initial ``sys.modules`` is preservedN)r   modulescopy)Zprev_modulesr   r   r   save_sys_modules   s   rB   )
contextlibr"   r
   r   r&   r   r   filelockr   contextmanagerr   r   r%   r(   r.   r/   r3   r;   r?   rB   r   r   r   r   <module>   s6    







