ó
    áÅŸg@  ã                   óT  • S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	J
r
  SSKJr  SSKrSSKJr  SSKJr  SSKJr  SS	KJr  SS
KJr   " S S\5      r " S S5      r\R4                  S 5       rS rS r " S S5      r " S S\5      r " S S\5      r  " S S\5      r!g)z8Coverage controllers for use by pytest-cov and nose-cov.é    N)ÚStringIO)ÚPath)ÚCoverageData©Úfilename_suffixé   )ÚCentralCovContextWarning)ÚDistCovError)Úcleanupc                   ó   • \ rS rSrSrg)ÚBrokenCovConfigErroré   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   ó    ÚR/var/www/blue/EV-Temp_rev04/venv/lib/python3.13/site-packages/pytest_cov/engine.pyr   r      s   † Úr   r   c                   ó$   • \ rS rSr\S 5       rSrg)Ú	_NullFileé   c                 ó   • g ©Nr   )Úvs    r   ÚwriteÚ_NullFile.write   s   € àr   r   N)r   r   r   r   Ústaticmethodr   r   r   r   r   r   r      s   † Øñó ór   r   c              #   ó¦   #   • [        X5      n [        X[        R                  " U5      5        S v •  [        XU5        g ! [        XU5        f = f7fr   )ÚgetattrÚsetattrÚcopy)ÚobjÚattrÚbackups      r   Ú_backupr'   !   s>   é € ä�SÓ€Fð#Ü�œ4Ÿ9š9 VÓ,Ô-Ûä�˜6Õ"øŒ�˜6Õ"üs   ‚A�$A  ³AÁ AÁAc                 óF   ^ • [         R                  " T 5      U 4S j5       nU$ )Nc                 ó   >•  [         R                  " 5       n[        R                  " U R
                  5         T" U /UQ70 UD6Ub  [        R                  " U5        $ $ ! [         a    S n NUf = f! Ub  [        R                  " U5        f f = fr   )r   ÚcwdÚOSErrorÚosÚchdirÚtopdir)ÚselfÚargsÚkwargsÚoriginal_cwdÚmeths       €r   Úensure_topdir_wrapperÚ-_ensure_topdir.<locals>.ensure_topdir_wrapper,   s…   ø€ ð	 ÜŸ8š8›:ˆLô
 	�Š�—‘Ôð	'Ù˜Ð.˜tÒ. vÑ.àÑ'Ü—’˜Õ&ð (øô ó 	 ð  ŠLð	 ûð Ñ'Ü—’˜Õ&ð (ús   ƒA ¹A1 ÁA.Á-A.Á1B)Ú	functoolsÚwraps)r3   r4   s   ` r   Ú_ensure_topdirr8   +   s&   ø€ Ü‡_‚_�TÓô'ó ð'ð !Ð r   c                 ó"   • [        S5       SU  3$ )NTÚ.r   )Únames    r   Ú_data_suffixr<   >   s   € Ü˜dÓ#Ð$ A d VÐ,Ð,r   c                   ó¶   • \ rS rSrSrSS jr\R                  S 5       r\	S 5       r
\	S 5       r\	S 5       r\S	 5       r\S
 5       r\S 5       r\	S 5       rSrg)ÚCovControlleréB   z0Base class for different plugin implementations.Nc                 ó  • Xl         X l        X0l        X@l        XPl        X`l        Xpl        SU l        SU l        SU l	        [        5       U l        / U l        [        R                  " [        R                   " 5       5      U l        SU l        g)z8Get some common config used by multiple derived classes.N)Ú
cov_sourceÚ
cov_reportÚ
cov_configÚ
cov_appendÚ
cov_branchÚconfigÚnodeidÚcovÚcombining_covÚ	data_fileÚsetÚ
node_descsÚfailed_workersr,   Úfspathr   r*   r.   Úis_collocated)r/   rA   rB   rC   rD   rE   rF   rG   s           r   Ú__init__ÚCovController.__init__E   sj   € à$ŒØ$ŒØ$ŒØ$ŒØ$ŒØŒØŒàˆŒØ!ˆÔØˆŒÜ›%ˆŒØ ˆÔÜ—i’i¤§¢£
Ó+ˆŒØ!ˆÕr   c              #   óª   #   • [         R                  " 5       n[        R                  " U R                  5        S v •  [        R                  " U5        g 7fr   )r   r*   r,   r-   r.   )r/   r2   s     r   Úensure_topdirÚCovController.ensure_topdirW   s/   é € ä—x’x“zˆÜ
�Š�—‘ÔÛÜ
�Š�Õùs   ‚AAc                 óX   • U R                   R                  5         U R                  5         g r   )rH   ÚstopÚ	unset_env©r/   s    r   ÚpauseÚCovController.pause^   s   € à�‰�‰ŒØ�‰Õr   c                 óX   • U R                   R                  5         U R                  5         g r   )rH   ÚstartÚset_envrX   s    r   ÚresumeÚCovController.resumec   s   € à�‰�‰ÔØ�‰�r   c                 ó¾  • U R                   c"  [        R                  [        R                  S'   O:[        R                  R	                  U R                   5      [        R                  S'   [        U R                  5      nUR                  5       (       a6  [        R                  " UR                  5       5      [        R                  S'   O![        R                  [        R                  S'   [        R                  R                  U R                  R                  R                  5      [        R                  S'   U R                  (       a  S[        R                  S'   gg)zPPut info about coverage into the env so that subprocesses can activate coverage.NÚCOV_CORE_SOURCEÚCOV_CORE_CONFIGÚCOV_CORE_DATAFILEÚenabledÚCOV_CORE_BRANCH)rA   r,   ÚpathsepÚenvironÚjoinr   rC   ÚexistsrN   ÚresolveÚpathÚabspathrH   rF   rJ   rE   )r/   Úconfig_files     r   r]   ÚCovController.set_envh   s×   € ð �?‰?Ñ"Ü,.¯J©JŒB�J‰JÐ(Ò)ä,.¯J©J¯O©O¸D¿O¹OÓ,LŒB�J‰JÐ(Ñ)Ü˜4Ÿ?™?Ó+ˆØ×Ñ×ÑÜ,.¯IªI°k×6IÑ6IÓ6KÓ,LŒB�J‰JÐ(Ò)ä,.¯J©JŒB�J‰JÐ(Ñ)ä*,¯'©'¯/©/¸$¿(¹(¿/¹/×:SÑ:SÓ*TŒ�
‰
Ð&Ñ'Ø�?�?Ø,5ŒB�J‰JÐ(Ò)ð r   c                  óD  • [         R                  R                  SS5        [         R                  R                  SS5        [         R                  R                  SS5        [         R                  R                  SS5        [         R                  R                  SS5        g)zRemove coverage info from env.ra   Nrb   rc   re   ÚCOV_CORE_CONTEXT)r,   rg   Úpopr   r   r   rW   ÚCovController.unset_envy   sc   € ô 	�
‰
�‰Ð(¨$Ô/Ü
�
‰
�‰Ð(¨$Ô/Ü
�
‰
�‰Ð*¨DÔ1Ü
�
‰
�‰Ð(¨$Ô/Ü
�
‰
�‰Ð)¨4Õ0r   c                 óF   • SR                  U SR                   " USS 6 5      $ )z"Return a description of this node.zplatform {}, python {}z{}.{}.{}-{}-{}Né   )Úformat)ÚplatformÚversion_infos     r   Úget_node_descÚCovController.get_node_desc‚   s-   € ð (×.Ñ.¨xÐ9I×9PÒ9PÐR^Ð_aÐ`aÐRbÐ9cÓdÐdr   c                 óÔ   • [        U S5      (       a  U R                  X5        g [        S[        U5      -
  S5      nUS-  nUS-  nX-   SU SXU-   -   S3nU R	                  U5        g )NÚsepéD   é   Ú Ú
)Úhasattrr{   ÚmaxÚlenr   )ÚstreamÚsÚtxtÚ	sep_totalÚsep_lenÚ	sep_extraÚouts          r   r{   ÚCovController.sepˆ   sq   € ä�6˜5×!Ñ!Ø�J‰J�qÕä˜V¤c¨#£hÑ.°Ó3ˆIØ 1‘nˆGØ! A™ˆIØ‘[�M  3 % q¨¸	Ñ.AÑ)BÐ(CÀ2ÐFˆCØ�L‰L˜Õr   c                 ó˜  ^ • SnT R                   (       d?  [        T R                  S5         T R                  R                  SS[        S9sSSS5        $ [        T R                  5      S:X  a0  T R                  USSSR                  T R                  5       35        OCT R                  USS	5        [        T R                  5       H  nT R                  US
U 5        M     T R                  (       a_  T R                  USS5        UR                  S5        T R                   H+  nUR                  UR                  R                   S35        M-     [        U 4S jS 5       5      (       a±  ST R                   ;   =(       d    SSUS.n[        T R                   [         5      =(       a    ST R                   R#                  5       ;   nUR%                  SU=(       d    S05        [        T R                  S5         T R                  R                  " S!0 UD6nSSS5        ST R                   ;   a³  T R                   S   n[        T R                  S5         T R                  R'                  SUS9  SSS5        [        T R                  S5         T R                  R                  S[        S9nSSS5        U(       a  UR                  SU S35        OUR                  S5        ST R                   ;   a€  T R                   S   n[        T R                  S5         T R                  R)                  SUS9nSSS5        UR                  SUc   T R                  R*                  R,                  OU S35        ST R                   ;   a€  T R                   S   n[        T R                  S5         T R                  R/                  SUS9nSSS5        UR                  SUc   T R                  R*                  R0                  OU S35        ST R                   ;   a  T R                   S   n[        T R                  S5         T R                  R3                  SUS9nSSS5        UR                  SUc   T R                  R*                  R4                  OU-  5        ST R                   ;   až  T R                   S   n[        T R                  S5         T R                  R7                  SUS9  T R                  R                  S[        S9nSSS5        UR                  S Uc   T R                  R*                  R8                  OU S35        U$ ! , (       d  f       GNø= f! , (       d  f       GNC= f! , (       d  f       GNý= f! , (       d  f       GNÒ= f! , (       d  f       GN^= f! , (       d  f       GNà= f! , (       d  f       GNb= f! , (       d  f       NÆ= f)"zProduce coverage reports.NrF   T)Úshow_missingÚignore_errorsÚfiler   Ú-z
coverage: Ú Úcoverager~   zcoverage: failed workerszlThe following workers failed to return coverage data, ensure that pytest-cov is installed on these workers.
r   c              3   ó>   >#   • U H  oTR                   ;   v •  M     g 7fr   )rB   )Ú.0Úxr/   s     €r   Ú	<genexpr>Ú(CovController.summary.<locals>.<genexpr>¬   s   øé € ÐFÑ-E¨�D—O‘OÖ#Ò-Eùs   ƒ)Útermúterm-missingr˜   zskip-coveredÚskip_coveredÚannotate)r�   Ú	directory)r�   rŽ   z)Coverage annotated source written to dir z1Coverage annotated source written next to source
ÚhtmlzCoverage HTML written to dir Úxml)r�   ÚoutfilezCoverage XML written to file Újsonz!Coverage JSON written to file %s
ÚlcovzCoverage LCOV written to file r   )rB   r'   rH   Úreportr   r‚   rL   r{   rh   ÚsortedrM   r   ÚgatewayÚidÚanyÚ
isinstanceÚdictÚvaluesÚupdaterš   Úhtml_reportrF   Úhtml_dirÚ
xml_reportÚ
xml_outputÚjson_reportÚjson_outputÚlcov_reportÚlcov_output)	r/   rƒ   ÚtotalÚ	node_descÚnodeÚoptionsr™   Úannotate_dirÚoutputs	   `        r   ÚsummaryÚCovController.summary“   sv  ø€ ð ˆà��Ü˜Ÿ™ 8Õ,Ø—x‘x—‘°DÈÔS\�Ð]÷ -Ñ,ô ˆt�‰Ó 1Ó$Ø�H‰H�V˜S J¨r¯w©w°t·±Ó/GÐ.HÐ"IÕJà�H‰H�V˜S *Ô-Ü# D§O¡OÖ4�	Ø—‘˜ ¨¨Ö5ñ 5ð ××Ø�H‰H�V˜SÐ"<Ô=Ø�L‰Lð  Iô  JØ×+Ô+�Ø—‘ §¡§¡Ð0°Ð3Ö4ñ ,ô ÔFÑ-EÓF×FÑFà!/°4·?±?Ñ!B× KÀtØ!%ØñˆGô
 & d§o¡o´tÓ<×kÀÐSW×SbÑSb×SiÑSiÓSkÑAkˆLØ�N‰N˜N¨L×,@¸DÐAÔBÜ˜Ÿ™ 8Õ,ØŸ™ŸšÑ2¨'Ñ2�÷ -ð ˜Ÿ™Ó(ØŸ?™?¨:Ñ6ˆLä˜Ÿ™ 8Õ,Ø—‘×!Ñ!°ÀÐ!ÑM÷ -ô
 ˜Ÿ™ 8Õ,ØŸ™Ÿ™°dÄ˜ÐK�÷ -æØ—‘ÐHÈÈÐVXÐYÕZà—‘ÐQÔRð �T—_‘_Ó$Ø—_‘_ VÑ,ˆFÜ˜Ÿ™ 8Õ,ØŸ™×,Ñ,¸4È6Ð,ÐR�÷ -à�L‰LÐ8ÐU[ÑUc¸¿¹¿¹×9QÒ9QÐioÐ8pÐprÐsÔtð �D—O‘OÓ#Ø—_‘_ UÑ+ˆFÜ˜Ÿ™ 8Õ,ØŸ™×+Ñ+¸$ÈÐ+ÐO�÷ -à�L‰LÐ8ÐW]ÑWe¸¿¹¿¹×9SÒ9SÐkqÐ8rÐrtÐuÔvð �T—_‘_Ó$Ø—_‘_ VÑ,ˆFÜ˜Ÿ™ 8Õ,ØŸ™×,Ñ,¸4ÈÐ,ÐP�÷ -à�L‰LÐ=Ð`fÑ`nÀÇÁÇÁ×A\ÒA\ÐtzÑ{Ô|ð �T—_‘_Ó$Ø—_‘_ VÑ,ˆFÜ˜Ÿ™ 8Õ,Ø—‘×$Ñ$°4ÀÐ$ÑHð Ÿ™Ÿ™°dÄ˜ÐK�÷ -ð �L‰LÐ9ÐY_ÑYg¸$¿(¹(¿/¹/×:UÒ:UÐmsÐ9tÐtvÐwÔxàˆ÷_ -Ö,ú÷6 -Ö,ú÷ -Ö,ú÷
 -Ö,ú÷ -Ö,ú÷ -Ö,ú÷ -Ö,ú÷ -Õ,ús_   «T=Ç6UÉU!Ê	U3ÌVÎ#VÐ3V)Ó9V;Ô=
UÕ
UÕ!
U0Õ3
VÖ
VÖ
V&Ö)
V8Ö;
W	)rI   rF   rH   rD   rE   rC   rB   rA   rJ   rM   rO   rL   rG   r.   )NN)r   r   r   r   Ú__doc__rP   Ú
contextlibÚcontextmanagerrS   r8   rY   r^   r]   r   rW   rx   r{   r¸   r   r   r   r   r>   r>   B   s´   † Ù:ô"ð$ ×Ññó ðð ñó ðð ñó ðð ñ6ó ð6ð  ñ1ó ð1ð ñeó ðeð
 ñó ðð ñTó óTr   r>   c                   ó8   • \ rS rSrSr\S 5       r\S 5       rSrg)ÚCentraléë   z)Implementation for centralised operation.c                 óÎ  • [        5         [        R                  " U R                  U R                  [        S5      U R                  S9U l        U R                  R                  R                  S:X  a   Sn[        R                  " [        U5      SS9  [        R                  " U R                  U R                  [        S5      [        R                  R                  U R                  R                  R                   5      U R                  S9U l        U R$                  (       d  U R                  R'                  5         U R                  R)                  5         U R+                  5         g )	NÚc©ÚsourceÚbranchÚdata_suffixrm   Útest_functionz•Detected dynamic_context=test_function in coverage configuration. This is unnecessary as this plugin provides the more complete --cov-context option.r   )Ú
stacklevelÚcc©rÃ   rÄ   rÅ   rJ   rm   )r   r‘   ÚCoveragerA   rE   r<   rC   rH   rF   Údynamic_contextÚwarningsÚwarnr	   r,   rk   rl   rJ   rI   rD   Úeraser\   r]   )r/   Úmessages     r   r\   ÚCentral.startî   së   € äŒ	ä×$Ò$Ø—?‘?Ø—?‘?Ü$ SÓ)ØŸ™ñ	
ˆŒð �8‰8�?‰?×*Ñ*¨oÓ=ðfð ô �MŠMÔ2°7Ó;ÈÒJä%×.Ò.Ø—?‘?Ø—?‘?Ü$ TÓ*Ü—g‘g—o‘o d§h¡h§o¡o×&?Ñ&?Ó@ØŸ™ñ
ˆÔð ��Ø�H‰H�N‰NÔØ�‰�‰ÔØ�‰�r   c                 óÜ  • U R                  5         U R                  R                  5         U R                  R                  5         U R                  U l        U R                  R                  5         U R                  R                  5         U R                  R                  5         U R                  [        R                  [        R                  5      nU R                  R                  U5        g)zSStop coverage, save data to file and set the list of coverage objects to report on.N)rW   rH   rV   ÚsaverI   ÚloadÚcombinerx   Úsysrv   rw   rL   Úadd)r/   r³   s     r   ÚfinishÚCentral.finish  s�   € ð 	�‰ÔØ�‰�‰ŒØ�‰�‰Œà×%Ñ%ˆŒØ�‰�‰ŒØ�‰×ÑÔØ�‰�‰Œà×&Ñ&¤s§|¡|´S×5EÑ5EÓFˆ	Ø�‰×Ñ˜IÕ&r   ©rI   rH   N)	r   r   r   r   rº   r8   r\   r×   r   r   r   r   r¾   r¾   ë   s+   † Ù3àñó ðð< ñ'ó ó'r   r¾   c                   óD   • \ rS rSrSr\S 5       rS rS r\S 5       r	Sr
g)	Ú
DistMasteri  z&Implementation for distributed master.c                 óF  • [        5         [        R                  " U R                  U R                  [        S5      U R                  S9U l        U R                  R                  R                  S:X  a  [        S5      eSU R                  l        SU R                  l        SU R                  l        [        R                  " U R                  U R                  [        S5      [        R                  R!                  U R                  R                  R"                  5      U R                  S9U l        U R&                  (       d  U R                  R)                  5         U R                  R+                  5         U R,                  /U R                  R                  R.                  S'   g )	NÚmrÂ   rÆ   zÚDetected dynamic_context=test_function in coverage configuration. This is known to cause issues when using xdist, see: https://github.com/pytest-dev/pytest-cov/issues/604
It is recommended to use --cov-context instead.FÚmcrÉ   rÃ   )r   r‘   rÊ   rA   rE   r<   rC   rH   rF   rË   r
   Ú_warn_no_dataÚ_warn_unimported_sourceÚ_warn_preimported_sourcer,   rk   rl   rJ   rI   rD   rÎ   r\   r.   ÚpathsrX   s    r   r\   ÚDistMaster.start!  s  € äŒ	ä×$Ò$Ø—?‘?Ø—?‘?Ü$ SÓ)ØŸ™ñ	
ˆŒð �8‰8�?‰?×*Ñ*¨oÓ=ÜðBóð ð
 "'ˆ�‰ÔØ+0ˆ�‰Ô(Ø,1ˆ�‰Ô)Ü%×.Ò.Ø—?‘?Ø—?‘?Ü$ TÓ*Ü—g‘g—o‘o d§h¡h§o¡o×&?Ñ&?Ó@ØŸ™ñ
ˆÔð ��Ø�H‰H�N‰NÔØ�‰�‰ÔØ+/¯;©;¨-ˆ�‰�‰×Ñ˜hÒ'r   c           
      óà   • UR                   R                  [        R                  " 5       U R                  UR
                  R                   Vs/ sH  n[        U5      PM     snS.5        gs  snf )zFWorkers need to know if they are collocated and what files have moved.)Úcov_master_hostÚcov_master_topdirÚcov_master_rsync_rootsN)Úworkerinputr©   ÚsocketÚgethostnamer.   ÚnodemanagerÚrootsÚstr)r/   r´   Úroots      r   Úconfigure_nodeÚDistMaster.configure_node@  sZ   € ð 	×Ñ×Ñä#)×#5Ò#5Ó#7Ø%)§[¡[ØAE×AQÑAQ×AWÒAWÓ*XÑAW¸¬3¨t®9ÑAWÑ*Xñõ	
ùò +Ys   ÁA+c                 ó  • [        US0 5      nSU;  a  U R                  R                  U5        gSU;   Gav  S[        R                  " 5       [
        R                  " 5       [        R                  " SS5      US   4-  n[        R                  " U R                  U R                  X@R                  S9nUR                  5         [        R                  S	:  aC  [!        5       nUR#                  [%        US   5      5        UR&                  R)                  U5        O=[!        S
SS9nUR+                  US   5        UR-                  5       R)                  U5        UR/                  5         UR1                  5         US   nU R2                  R4                  R6                  S   R                  U5        UR8                  R;                  5       nU R=                  UR>                  UR                  5      n	U R@                  RC                  U	5        g)z#Collect data file name from worker.ÚworkeroutputÚcov_worker_node_idNÚcov_worker_dataz%s.%s.%06d.%sr   i?B rÂ   ©rt   r   Tzshould-not-exist)Úno_diskÚsuffixÚcov_worker_pathrÃ   )"r!   rM   Úappendré   rê   r,   ÚgetpidÚrandomÚrandintr‘   rÊ   rA   rE   rC   r\   rw   r   Úread_fileobjr   Údatar©   ÚloadsÚget_datarV   rÒ   rH   rF   râ   r£   Ú_rinforx   rv   rL   rÖ   )
r/   r´   Úerrorr·   rÅ   rH   rþ   rk   Úrinfor³   s
             r   ÚtestnodedownÚDistMaster.testnodedownK  s   € ô
 ˜˜~¨rÓ2ˆØ vÓ-Ø×Ñ×&Ñ& tÔ,Øð  Ô&Ø)Ü×"Ò"Ó$Ü—	’	“Ü—’˜q &Ó)ØÐ+Ñ,ð	-ñ ˆKô ×#Ò#¨4¯?©?À4Ç?Á?Ð`k÷  zIñ  zIñ  JˆCØ�I‰IŒKÜ×$Ñ$ vÓ-Ü#“~�Ø×!Ñ!¤(¨6Ð2CÑ+DÓ"EÔFØ—‘—‘ Õ%ä#¨DÐ9KÑL�Ø—
‘
˜6Ð"3Ñ4Ô5Ø—‘“×%Ñ% dÔ+Ø�H‰HŒJØ�H‰HŒJØÐ+Ñ,ˆDØ�H‰H�O‰O×!Ñ! (Ñ+×2Ñ2°4Ô8ð —‘×#Ñ#Ó%ˆØ×&Ñ& u§~¡~°u×7IÑ7IÓJˆ	Ø�‰×Ñ˜IÕ&r   c                 ó*  • U R                   R                  5         U R                   R                  5         U R                  U l         U R                   R	                  5         U R                   R                  5         U R                   R                  5         g)zJCombines coverage data and sets the list of coverage objects to report on.N)rH   rV   rÒ   rI   rÓ   rÔ   rX   s    r   r×   ÚDistMaster.finishs  sU   € ð
 	�‰�‰ŒØ�‰�‰ŒØ×%Ñ%ˆŒØ�‰�‰ŒØ�‰×ÑÔØ�‰�‰�r   rÙ   N)r   r   r   r   rº   r8   r\   rï   r  r×   r   r   r   r   rÛ   rÛ     s6   † Ù0àñ8ó ð8ò<	
ò&'ðP ñ	ó ó	r   rÛ   c                   ó>   • \ rS rSrSr\S 5       r\S 5       rS rSr	g)Ú
DistWorkeri€  z'Implementation for distributed workers.c                 óü  • [        5         [        R                  " 5       U R                  R                  S   :H  =(       a&    U R
                  U R                  R                  S   :H  U l        U R                  (       d�  U R                  R                  S   nU R
                  nU R                  b/  U R                   Vs/ sH  o3R                  X5      PM     snU l        U R                  R                  X5      U l	        [        R                  " U R                  U R                  [        SU R                   35      U R                  S9U l        U R                  R!                  5         U R#                  5         g s  snf )Nrå   ræ   ÚwrÂ   )r   ré   rê   rF   rè   r.   rO   rA   ÚreplacerC   r‘   rÊ   rE   r<   rG   rH   r\   r]   )r/   Úmaster_topdirÚworker_topdirrÃ   s       r   r\   ÚDistWorker.startƒ  s  € äŒ	ô ×ÒÓ  D§K¡K×$;Ñ$;Ð<MÑ$NÑN÷ LØ—‘˜tŸ{™{×6Ñ6Ð7JÑKÑKð 	Ôð ×!×!Ø ŸK™K×3Ñ3Ð4GÑHˆMØ ŸK™KˆMØ�‰Ñ*Ø^b×^mÒ^mÓ"nÑ^mÐTZ§>¡>°-Ö#OÑ^mÑ"n�”Ø"Ÿo™o×5Ñ5°mÓSˆDŒOô ×$Ò$Ø—?‘?Ø—?‘?Ü$ q¨¯©¨Ð%6Ó7ØŸ™ñ	
ˆŒð 	�‰�‰ÔØ�‰�ùò #os   Â=E9c                 óÐ  • U R                  5         U R                  R                  5         U R                  (       a>  U R                  R	                  5         U R
                  U R                  R                  S'   gU R                  R                  5         U R                  R	                  5         [        R                  S:  a@  [        5       nU R                  R                  R                  U5        UR                  5       nO(U R                  R                  5       R!                  5       nU R                  R                  R#                  U R$                  U R
                  US.5        g)z8Stop coverage and send relevant info back to the master.ró   rõ   )rø   ró   rô   N)rW   rH   rV   rO   rÒ   rG   rF   rò   rÔ   r‘   rw   r   rþ   Úwrite_fileobjÚgetvaluer   Údumpsr©   r.   )r/   Úbuffrþ   s      r   r×   ÚDistWorker.finishŸ  sí   € ð 	�‰ÔØ�‰�‰Œà××ð �H‰H�M‰MŒOð >B¿[¹[ˆD�K‰K×$Ñ$Ð%9Ò:à�H‰H×ÑÔØ�H‰H�M‰MŒOô ×$Ñ$ vÓ-Ü“z�Ø—‘—‘×+Ñ+¨DÔ1Ø—}‘}“‘à—x‘x×(Ñ(Ó*×0Ñ0Ó2�à�K‰K×$Ñ$×+Ñ+à'+§{¡{Ø*.¯+©+Ø'+ñõr   c                 ó   • g)z&Only the master reports so do nothing.Nr   )r/   rƒ   s     r   r¸   ÚDistWorker.summaryÅ  s   � r   )rH   rC   rA   rO   N)
r   r   r   r   rº   r8   r\   r×   r¸   r   r   r   r   r	  r	  €  s1   † Ù1àñó ðð6 ñ#ó ð#õJ5r   r	  )"rº   r»   r#   r6   r,   rû   ré   rÕ   rÌ   Úior   Úpathlibr   r‘   Úcoverage.datar   Úcoverage.sqldatar   r�   r	   r
   Úembedr   Ú	Exceptionr   r   r¼   r'   r8   r<   r>   r¾   rÛ   r	  r   r   r   Ú<module>r     s©   ðÙ >ã Û Û Û 	Û Û Û 
Û Ý Ý ã Ý &Ý ,å &Ý Ý ô	˜9ô 	÷ñ ð ×Ññ#ó ð#ò!ò&-÷fñ fôR0'ˆmô 0'ôf_�ô _ôDF5�õ F5r   