Your IP : 216.73.216.213


Current Path : /opt/alt/python35/lib64/python3.5/site-packages/coverage/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/site-packages/coverage/__pycache__/multiproc.cpython-35.pyc



�ÔW��@s�dZddlZddlZddlZddlZddlmZdZdZej	dkrpej
jZn	ej
ZejZGdd	�d	e�ZGd
d�de�Zede�d
d��ZdS)z>Monkey-patching to add multiprocessing support for coverage.py�N)�contractz_coverage$patchedZ_COVERAGE_RCFILE��c@s"eZdZdZdd�ZdS)�ProcessWithCoveragez<A replacement for multiprocess.Process that starts coverage.c
Csfddlm}tjt}|ddd|�}|j�zt|�SWd|j�|j�XdS)z,Wrapper around _bootstrap to start coverage.r)�CoverageZdata_suffixT�config_fileN)	�coverager�os�environ�COVERAGE_RCFILE_ENV�start�original_bootstrap�stopZsave)�selfr�rcfileZcov�r�E/opt/alt/python35/lib64/python3.5/site-packages/coverage/multiproc.py�
_bootstraps


zProcessWithCoverage._bootstrapN)�__name__�
__module__�__qualname__�__doc__rrrrrrsrc@s:eZdZdZdd�Zdd�Zdd�ZdS)	�StowawayzLAn object to pickle, so when it is unpickled, it can apply the monkey-patch.cCs
||_dS)N)r)rrrrr�__init__.szStowaway.__init__cCs
d|jiS)Nr)r)rrrr�__getstate__1szStowaway.__getstate__cCst|d�dS)Nr)�patch_multiprocessing)r�staterrr�__setstate__4szStowaway.__setstate__N)rrrrrrrrrrrr,srrcs�ttt�rdStjd	kr1tjt_n	tt_�t	j
t<yddlm}|j
�Wnttfk
r~YnX��fdd�}||_
tttd�dS)
z�Monkey-patch the multiprocessing module.

    This enables coverage measurement of processes started by multiprocessing.
    This involves aggressive monkey-patching.

    `rcfile` is the path to the rcfile being used.

    Nrrr)�spawncs �|�}t��|d<|S)z@Get the original preparation data, and also insert our stowaway.Zstowaway)r)�name�d)�original_get_preparation_datarrr�"get_preparation_data_with_stowaway[szApatch_multiprocessing.<locals>.get_preparation_data_with_stowawayT)rr)�hasattr�multiprocessing�PATCHED_MARKER�sys�version_inforr�OriginalProcess�Processr	r
rrZget_preparation_data�ImportError�AttributeError�setattr)rrr"r)r!rrr8s	

	r)rr)rr$Zmultiprocessing.processr	r&Z
coverage.miscrr%rr'�processZBaseProcessr(r)rr
r�objectr�strrrrrr�<module>s