
    L-Phb                        d Z ddlm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
 ddlmZ dZej        j        Zej        Z G d de          Z G d	 d
          ZddZdS )z>Monkey-patching to add multiprocessing support for coverage.py    )annotationsN)Any)DebugControlz_coverage$patchedc                      e Zd ZdZd ZdS )ProcessWithCoveragez<A replacement for multiprocess.Process that starts coverage.c                   d}	 ddl m}  |dd          }d|_        |                                 |j        }|J |                    d          r|}|r|                    d           ng# t          $ rZ t          d	t          j
        
           t          j        t          j
        
           t          j
                                          w xY w	 t          | g|R i ||r|                    d           	 |                                 |                                 n,# t          $ r}|r|                    d|            d}~ww xY w|r|                    d           S S # |r|                    d           	 |                                 |                                 n,# t          $ r}|r|                    d|            d}~ww xY w|r|                    d           w w xY w)z,Wrapper around _bootstrap to start coverage.Nr   )CoverageT)data_suffix	auto_dataF	multiprocz!Calling multiprocessing bootstrapz0Exception during multiprocessing bootstrap init:)filez"Finished multiprocessing bootstrapz2Exception during multiprocessing bootstrap cleanup)exczSaved multiprocessing data)coverager	   _warn_preimported_sourcestart_debugshouldwrite	Exceptionprintsysstderr	traceback	print_excflushoriginal_bootstrapstopsave)selfargskwargsdebugr	   covr   r   s           R/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/coverage/multiproc.py
_bootstrapzProcessWithCoverage._bootstrap   s^   %)	))))))(tt<<<C+0C(IIKKKZF%%%}}[))  A?@@@ 	 	 	D3:VVVVSZ0000J		
	:%d<T<<<V<< B@AAA






    _KK TZ]K^^^  :89999:  B@AAA






    _KK TZ]K^^^  :89999:sU   A'A, ,A$CE) ;(D$$
E.EE)G0(F+*G0+
G5GGG0N)__name__
__module____qualname____doc__r%        r$   r   r      s)        FF :  :  :  :  :r+   r   c                  *    e Zd ZdZddZddZdd
ZdS )StowawayzLAn object to pickle, so when it is unpickled, it can apply the monkey-patch.rcfilestrreturnNonec                    || _         d S )Nr.   )r   r.   s     r$   __init__zStowaway.__init__B   s    r+   dict[str, str]c                    d| j         iS Nr.   r3   )r   s    r$   __getstate__zStowaway.__getstate__E   s    $+&&r+   statec                0    t          |d                    d S r7   )patch_multiprocessing)r   r9   s     r$   __setstate__zStowaway.__setstate__H   s    eHo.....r+   Nr.   r/   r0   r1   )r0   r5   )r9   r5   r0   r1   )r&   r'   r(   r)   r4   r8   r<   r*   r+   r$   r-   r-   @   sV        VV   ' ' ' '/ / / / / /r+   r-   r.   r/   r0   r1   c                d    t          t          t                    rdS t          j        t
          _        t          j                                       t          j	        d<   	 ddlm
} |j        d fd	}||_        n# t          t          f$ r Y nw xY wt          t          t          d
           dS )zMonkey-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.

    NCOVERAGE_RCFILEr   )spawnnamer/   r0   dict[str, Any]c                B     |           }t                    |d<   |S )z@Get the original preparation data, and also insert our stowaway.stowaway)r-   )rA   doriginal_get_preparation_datar.   s     r$   "get_preparation_data_with_stowawayzApatch_multiprocessing.<locals>.get_preparation_data_with_stowawayk   s)    --d33A$V,,AjMHr+   T)rA   r/   r0   rB   )hasattrmultiprocessingPATCHED_MARKERr   r%   OriginalProcessospathabspathenvironr@   get_preparation_dataImportErrorAttributeErrorsetattr)r.   r@   rG   rF   s   `  @r$   r;   r;   L   s     // !4!?O %'GOOF$;$;BJ !H))))))(-(B%	 	 	 	 	 	 	 &H"" (    O^T22222s   "A> >BBr=   )r)   
__future__r   rI   multiprocessing.processrL   os.pathr   r   typingr   coverage.debugr   rJ   processBaseProcessrK   r%   r   r   r-   r;   r*   r+   r$   <module>r[      s   E D " " " " " "         				  



           ' ' ' ' ' ' % ")5$/ #: #: #: #: #:/ #: #: #:J	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/'3 '3 '3 '3 '3 '3r+   