
    zi5                        d Z ddlmZ ddlZddlZddlmZmZmZ ddl	m
Z
 ddlmZ ddlmZmZ erddl	mZ dd	lmZ dd
lmZ ddZddZddZddZddZdS )z!Invasive patches for coverage.py.    )annotationsN)TYPE_CHECKINGAnyNoReturn)env)DevNullDebug)ConfigErrorCoverageException)Coverage)CoverageConfig)	TDebugCtlcovr   configr   debugr   returnNonec                z   |                     d          r|nt                      }t          t          |j                            D ]s}|xdk    r t          | |           xdk    r t          | ||           4xdk    r t          |           Kdk    rt          ||           a	 t          d|          dS )z3Apply invasive patches requested by `[run] patch=`.patch_exitexecvfork
subprocesszUnknown patch N)
shouldr   sortedsetr   _patch__exit_patch_execv_patch_fork_patch_subprocessr	   )r   r   r   r   s       Y/var/www/tmov.alphamb/tmov_inventario/venv/lib/python3.11/site-packages/coverage/patch.pyapply_patchesr!      s     \\'**>EEEFL))** > >S%((((S&%0000E""""!&%0000!"<5"<"<===> >    c                v                          d           t          j        d fd}|t          _        dS )	zPatch os._exit.zPatching _exitstatusintr   r   c                :   t          j        t                    5                      d           d d d            n# 1 swxY w Y   t          j        t                    5                                   d d d            n# 1 swxY w Y    |            d S )NzUsing _exit patch with cov = )
contextlibsuppress	Exceptionwritesave)r$   r   r   old_exits    r    coverage_os_exit_patchz,_patch__exit.<locals>.coverage_os_exit_patch5   s    ++ 	< 	<KK:#::;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< ++ 	 	HHJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s#   A  AA$BB	B	N)r$   r%   r   r   )r*   osr   )r   r   r-   r,   s   `` @r    r   r   /   sT    	KK !!!xH        &BHHHr"   c                     t           j        rt          d                              d           d fd} |d	t          j                  t          _         |d
t          j                  t          _        dS )z$Patch the execv family of functions.z+patch=execv isn't supported yet on Windows.zPatching execvfnamestr	old_execvr   r   c                      d fd}|S )Nargsr   kwargsr   c                 L   t          j        t                    5                      d d           d d d            n# 1 swxY w Y   t          j        t                    5                                   d d d            n# 1 swxY w Y                       d          rt| d         }                                |d<   t          j        rIt          j
        d          |d<   t          j
        d          x}||d<   t          j
        d          |d<    | i | d S )	NzUsing execv patch for z with cov = eCOVERAGE_PROCESS_CONFIGCOVERAGE_COREPYTHONPYCACHEPREFIXPATH)r'   r(   r)   r*   r+   endswith	serializer   TESTINGr.   getenv)	r4   r5   new_envcache_prefixr   r   r   r0   r2   s	       r    coverage_execv_patchzD_patch_execv.<locals>.make_execv_patch.<locals>.coverage_execv_patchG   s   $Y// L LJUJJ#JJKKKL L L L L L L L L L L L L L L$Y//  


               ~~c"" 8r(5;5E5E5G5G12; 8/1y/I/IGO,
 )+	2G(H(HHU9E 56 ')i&7&7GFOIt&v&&&&&s#   AA
A'BBB)r4   r   r5   r   r   r    )r0   r2   rC   r   r   r   s   `` r    make_execv_patchz&_patch_execv.<locals>.make_execv_patchF   s?    	' 	' 	' 	' 	' 	' 	' 	' 	' 	'2 $#r"   r   execveN)r0   r1   r2   r   r   r   )r   WINDOWSr
   r*   r.   r   rF   )r   r   r   rE   s   ``` r    r   r   ?   s    
{ O MNNN	KK !!!$ $ $ $ $ $ $ $:  22BH  2955BIIIr"   c                    ddl m} t          j        rt	          d          |                     d           t          j        |           dS )z/Ensure Coverage is properly reset after a fork.r   )_after_fork_in_childz*patch=fork isn't supported yet on Windows.zPatching fork)after_in_childN)coverage.controlrI   r   rG   r
   r*   r.   register_at_fork)r   rI   s     r    r   r   g   s[    555555
{ N LMMM	KK   ';<<<<<<r"   c                    |                     d           | j        J |                                 t          j        d<   dS )zBWrite .pth files and set environment vars to measure subprocesses.zPatching subprocessNr9   )r*   config_filer>   r.   environ)r   r   s     r    r   r   r   sC    	KK%&&&))),2,<,<,>,>BJ()))r"   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   )r   r   r   r   r   r   )__doc__
__future__r   r'   r.   typingr   r   r   coverager   coverage.debugr   coverage.exceptionsr	   r
   r   coverage.configr   coverage.typesr   r!   r   r   r   r   rD   r"   r    <module>rX      s;   ( ' " " " " " "     				 / / / / / / / / / /       ' ' ' ' ' ' > > > > > > > > )!!!!!!......((((((> > > >2& & & & %6 %6 %6 %6P= = = =? ? ? ? ? ?r"   