ó
    Ð]j5  ã                  óÔ   • S r SSKJr  SSKrSSKrSSKJrJrJr  SSK	J
r
  SSKJr  SSKJrJr  \(       a  SSK	Jr  SS	KJr  SS
KJr          SS jrSS jrSS jrSS jrSS jrg)z!Invasive patches for coverage.py.é    )ÚannotationsN)ÚTYPE_CHECKINGÚAnyÚNoReturn)Úenv)ÚDevNullDebug)ÚConfigErrorÚCoverageException)ÚCoverage)ÚCoverageConfig)Ú	TDebugCtlc                óN  • UR                  S5      (       a  UO	[        5       n[        [        UR                  5      5       Ha  nU=S:X  a    [        X5        M  =S:X  a    [        XU5        M-  =S:X  a    [        U5        MA  S:X  a  [        X5        MS   [        SU< 35      e   g)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	   )ÚcovÚconfigÚdebugr   s       ÚK/home/mande/repo/quber/.venv/lib/python3.13/site-packages/coverage/patch.pyÚapply_patchesr      sy   € ð —\‘\ '×*Ñ*‰E´³€EÜœ˜FŸL™LÓ)Ö*ˆØÞÜ˜SÖ(æÜ˜S¨%Ö0æÜ˜EÖ"äÜ! &Ö0àÜ! N°5±)Ð"<Ó=Ð=ò +ó    c                óv   ^ ^^• TR                  S5        [        R                  mSU UU4S jjnU[        l        g)zPatch os._exit.zPatching _exitc                ó0  >• [         R                  " [        5         TR                  ST< 35        S S S 5        [         R                  " [        5         TR	                  5         S S S 5        T" U 5        g ! , (       d  f       NJ= f! , (       d  f       N(= f)NzUsing _exit patch with cov = )Ú
contextlibÚsuppressÚ	ExceptionÚwriteÚsave)Ústatusr   r   Úold_exits    €€€r   Úcoverage_os_exit_patchÚ,_patch__exit.<locals>.coverage_os_exit_patch5   s^   ø€ Ü× Ò ¤Õ+Ø�K‰KÐ8°#±Ð:Ô;÷ ,ä× Ò ¤Õ+Ø�H‰HŒJ÷ ,á�Õ÷	 ,Õ+úç+Õ+ús   œA6ÁBÁ6
BÂ
BN)r(   ÚintÚreturnr   )r&   Úosr   )r   r   r*   r)   s   `` @r   r   r   /   s,   ú€ à	‡K�KÐ Ô!ä�x‰x€H÷ñ ð &„B…Hr    c                ó   ^ ^^• [         R                  (       a  [        S5      eTR                  S5        SUU U4S jjnU" S[        R
                  5      [        l        U" S[        R                  5      [        l        g)z$Patch the execv family of functions.z+patch=execv isn't supported yet on Windows.zPatching execvc                ó$   >^ ^• SUUUU U4S jjnU$ )Nc                 óZ  >• [         R                  " [        5         TR                  ST ST< 35        S S S 5        [         R                  " [        5         TR	                  5         S S S 5        TR                  S5      (       a|  U S   nTR                  5       US'   [        R                  (       aO  [        R                  " S5      US'   [        R                  " S5      =nb  X2S'   [        R                  " S5      US'   T" U 0 UD6  g ! , (       d  f       NÜ= f! , (       d  f       Nº= f)	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)	ÚargsÚkwargsÚnew_envÚcache_prefixr   r   r   ÚfnameÚ	old_execvs	       €€€€€r   Úcoverage_execv_patchÚD_patch_execv.<locals>.make_execv_patch.<locals>.coverage_execv_patchG   så   ø€ Ü×$Ò$¤YÕ/Ø—‘Ð4°U°G¸=À#ÁÐJÔK÷ 0ä×$Ò$¤YÕ/Ø—‘”
÷ 0ð �~‰~˜c×"Ñ"à˜r™(�à5;×5EÑ5EÓ5G�Ð1Ñ2Ü—;—;ä/1¯yªy¸Ó/I�G˜OÑ,ô
 )+¯	ª	Ð2GÓ(HÐH˜ÑUØ9EÐ 5Ñ6ô ')§i¢i°Ó&7�G˜F‘OÙ�tÐ&˜vÓ&÷- 0Õ/úç/Õ/ús   œDÁDÄ
DÄ
D*)r<   r   r=   r   r-   r   © )r@   rA   rB   r   r   r   s   `` €€€r   Úmake_execv_patchÚ&_patch_execv.<locals>.make_execv_patchF   s   ú€ ÷	'ó 	'ð2 $Ð#r    r   ÚexecveN)r@   ÚstrrA   r   r-   r   )r   ÚWINDOWSr
   r&   r.   r   rG   )r   r   r   rE   s   ``` r   r   r   ?   sS   ú€ ä
‡{‡{ÜÐ MÓNÐNà	‡K�KÐ Ô!÷$ñ $ñ:   ¬¯©Ó2„B„HÙ  ¬2¯9©9Ó5„B…Ir    c                óš   • SSK Jn  [        R                  (       a  [	        S5      eU R                  S5        [        R                  " US9  g)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.controlrK   r   rI   r
   r&   r.   Úregister_at_fork)r   rK   s     r   r   r   g   s3   € å5ä
‡{‡{ÜÐ LÓMÐMà	‡K�K�Ô Ü×ÒÐ';Ó<r    c                ó†   • UR                  S5        U R                  c   eU R                  5       [        R                  S'   g)zBWrite .pth files and set environment vars to measure subprocesses.zPatching subprocessNr4   )r&   Úconfig_filer9   r.   Úenviron)r   r   s     r   r   r   r   s9   € à	‡K�KÐ%Ô&Ø×ÑÑ)Ð)Ð)Ø,2×,<Ñ,<Ó,>„B‡J�JÐ(Ò)r    )r   r   r   r   r   r   r-   ÚNone)r   r   r   r   r-   rR   )r   r   r-   rR   )r   r   r   r   r-   rR   )Ú__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>r[      sl   ðñ (å "ã Û 	ß /Ñ /å Ý 'ß >æÝ!Ý.Ý(ð>Ø	ð>àð>ð ð>ð 
ô	>ô2&ô %6ôP=õ?r    