Ë
    %V.j@  ã                   óT  — d 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ZddlZddl	m
Z
 ddlmZ ddlZddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ  G d„ de«      Z G d„ d«      Zej4                  d„ «       Zd„ Zd„ Z G d„ d«      Z G d„ de«      Z G d„ de«      Z  G d„ de«      Z!y)z8Coverage controllers for use by pytest-cov and nose-cov.é    N)ÚStringIO)ÚPath)ÚCoverageData©Úfilename_suffixé   )ÚCentralCovContextWarning)ÚDistCovError)Úcleanupc                   ó   — e Zd Zy)ÚBrokenCovConfigErrorN)Ú__name__Ú
__module__Ú__qualname__© ó    úSC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\pytest_cov/engine.pyr   r      s   „ Ør   r   c                   ó   — e Zd Zed„ «       Zy)Ú	_NullFilec                  ó   — y ©Nr   )Úvs    r   Úwritez_NullFile.write   s   € àr   N)r   r   r   Ústaticmethodr   r   r   r   r   r      s   „ Øñó ñr   r   c              #   ó¬   K  — t        | |«      }	 t        | |t        j                  |«      «       d –— t        | ||«       y # t        | ||«       w xY w­wr   )ÚgetattrÚsetattrÚcopy)ÚobjÚattrÚbackups      r   Ú_backupr"   !   sG   è ø€ ä�S˜$Ó€Fð#Ü��Tœ4Ÿ9™9 VÓ,Ô-Ûä��T˜6Õ"øŒ��T˜6Õ"üs   ‚A�$A ´AÁAÁAc                 óB   ‡ — t        j                  ‰ «      ˆ fd„«       }|S )Nc                 ó  •— 	 t        j                  «       }t        j                  | j
                  «       	  ‰| g|¢­i |¤Ž|�t        j                  |«       S S # t        $ r d }Y ŒQw xY w# |�t        j                  |«       w w xY wr   )r   ÚcwdÚOSErrorÚosÚchdirÚtopdir)ÚselfÚargsÚkwargsÚoriginal_cwdÚmeths       €r   Úensure_topdir_wrapperz-_ensure_topdir.<locals>.ensure_topdir_wrapper,   s…   ø€ ð	 ÜŸ8™8›:ˆLô
 	�‰�—‘Ôð	'Ù˜Ð.˜tÒ. vÑ.àÐ'Ü—‘˜Õ&ð (øô ò 	 ð  ŠLð	 ûð Ð'Ü—‘˜Õ&ð (ús   ƒA ·A, ÁA)Á(A)Á,B)Ú	functoolsÚwraps)r.   r/   s   ` r   Ú_ensure_topdirr2   +   s&   ø€ Ü‡_�_�TÓó'ó ð'ð !Ð r   c                 ó"   — t        d«      › d| › �S )NTÚ.r   )Únames    r   Ú_data_suffixr6   >   s   € Ü˜dÓ#Ð$ A d VÐ,Ð,r   c                   ó¬   — e Zd ZdZdd„Zej                  d„ «       Zed„ «       Z	ed„ «       Z
ed„ «       Zed„ «       Zed	„ «       Zed
„ «       Zed„ «       Zy)ÚCovControllerz0Base class for different plugin implementations.Nc                 ó"  — || _         || _        || _        || _        || _        || _        || _        d| _        d| _        d| _	        t        «       | _        g | _        t        j                  t        j                   «       «      | _        d| _        y)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*   r:   r;   r<   r=   r>   r?   r@   s           r   Ú__init__zCovController.__init__E   sx   € à$ˆŒØ$ˆŒØ$ˆŒØ$ˆŒØ$ˆŒØˆŒØˆŒàˆŒØ!ˆÔØˆŒÜ›%ˆŒØ ˆÔÜ—i‘i¤§¡£
Ó+ˆŒØ!ˆÕr   c              #   ó¤   K  — t        j                  «       }t        j                  | j                  «       d –— t        j                  |«       y ­wr   )r   r%   r'   r(   r)   )r*   r-   s     r   Úensure_topdirzCovController.ensure_topdirW   s0   è ø€ ä—x‘x“zˆÜ
�‰�—‘ÔÛÜ
�‰�Õùs   ‚AAc                 óX   — | j                   j                  «        | j                  «        y r   )rA   ÚstopÚ	unset_env©r*   s    r   ÚpausezCovController.pause^   s   € à�‰�‰ŒØ�‰Õr   c                 óX   — | j                   j                  «        | j                  «        y r   )rA   ÚstartÚset_envrO   s    r   ÚresumezCovController.resumec   s   € à�‰�‰ÔØ�‰�r   c                 ó¦  — | j                   €"t        j                  t        j                  d<   n:t        j                  j	                  | j                   «      t        j                  d<   t        | j                  «      }|j                  «       r5t        j                  |j                  «       «      t        j                  d<   n!t        j                  t        j                  d<   t        j                  j                  | j                  j                  j                  «      t        j                  d<   | j                  rdt        j                  d<   yy)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)r:   r'   ÚpathsepÚenvironÚjoinr   r<   ÚexistsrG   ÚresolveÚpathÚabspathrA   r?   rC   r>   )r*   Úconfig_files     r   rS   z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  — t         j                  j                  dd«       t         j                  j                  dd«       t         j                  j                  dd«       t         j                  j                  dd«       t         j                  j                  dd«       y)zRemove coverage info from env.rV   NrW   rX   rZ   ÚCOV_CORE_CONTEXT)r'   r\   Úpopr   r   r   rN   zCovController.unset_envy   sc   € ô 	�
‰
�‰Ð(¨$Ô/Ü
�
‰
�‰Ð(¨$Ô/Ü
�
‰
�‰Ð*¨DÔ1Ü
�
‰
�‰Ð(¨$Ô/Ü
�
‰
�‰Ð)¨4Õ0r   c                 óF   — dj                  |  dj                   |dd Ž «      S )z"Return a description of this node.zplatform {}, python {}z{}.{}.{}-{}-{}Né   )Úformat)ÚplatformÚversion_infos     r   Úget_node_desczCovController.get_node_desc‚   s0   € ð (×.Ñ.¨xÐ9PÐ9I×9PÑ9PÐR^Ð_aÐ`aÐRbÐ9cÓdÐdr   c                 óÐ   — t        | d«      r| j                  ||«       y t        dt        |«      z
  d«      }|dz  }|dz  }||z  › d|› d|||z   z  › d�}| j	                  |«       y )NÚsepéD   é   Ú Ú
)Úhasattrrm   ÚmaxÚlenr   )ÚstreamÚsÚtxtÚ	sep_totalÚsep_lenÚ	sep_extraÚouts          r   rm   zCovController.sepˆ   st   € ä�6˜5Ô!Ø�J‰J�q˜#Õä˜V¤c¨#£hÑ.°Ó3ˆIØ 1‘nˆGØ! A™ˆIØ˜‘[�M  3 % q¨¨g¸	Ñ.AÑ)BÐ(CÀ2ÐFˆCØ�L‰L˜Õr   c                 ó  ‡ — d}‰ j                   sBt        ‰ j                  d«      5  ‰ j                  j                  ddt        ¬«      cddd«       S t        ‰ j                  «      dk(  r0‰ j                  |dddj                  ‰ j                  «      › �«       nA‰ j                  |dd	«       t        ‰ j                  «      D ]  }‰ j                  |d
|› «       Œ ‰ j                  r]‰ j                  |dd«       |j                  d«       ‰ j                  D ]*  }|j                  |j                  j                  › d�«       Œ, t        ˆ fd„dD «       «      r d‰ j                   v xs dd|dœ}t        ‰ j                   t         «      xr d‰ j                   j#                  «       v }|j%                  d|xs di«       t        ‰ j                  d«      5   ‰ j                  j                  d!i |¤Ž}ddd«       d‰ j                   v r´‰ j                   d   }t        ‰ j                  d«      5  ‰ j                  j'                  d|¬«       ddd«       t        ‰ j                  d«      5  ‰ j                  j                  dt        ¬«      }ddd«       |r|j                  d|› d�«       n|j                  d«       d‰ j                   v r‚‰ j                   d   }t        ‰ j                  d«      5  ‰ j                  j)                  d|¬«      }ddd«       |j                  d|€ ‰ j                  j*                  j,                  n|› d�«       d‰ j                   v r‚‰ j                   d   }t        ‰ j                  d«      5  ‰ j                  j/                  d|¬«      }ddd«       |j                  d|€ ‰ j                  j*                  j0                  n|› d�«       d‰ j                   v r�‰ j                   d   }t        ‰ j                  d«      5  ‰ j                  j3                  d|¬«      }ddd«       |j                  d|€ ‰ j                  j*                  j4                  n|z  «       d‰ j                   v r£‰ j                   d   }t        ‰ j                  d«      5  ‰ j                  j7                  d|¬«       ‰ j                  j                  dt        ¬«      }ddd«       |j                  d |€ ‰ j                  j*                  j8                  n|› d�«       |S # 1 sw Y   �ŒÔxY w# 1 sw Y   �Œ;xY w# 1 sw Y   �ŒïxY w# 1 sw Y   �Œ¼xY w# 1 sw Y   �ŒGxY w# 1 sw Y   �ŒÄxY w# 1 sw Y   �ŒAxY w# 1 sw Y   Œ�xY w)"zProduce coverage reports.Nr?   T)Úshow_missingÚignore_errorsÚfiler   Ú-z
coverage: Ú Úcoveragerp   zcoverage: failed workerszlThe following workers failed to return coverage data, ensure that pytest-cov is installed on these workers.
rq   c              3   ó:   •K  — | ]  }|‰j                   v –— Œ y ­wr   )r;   )Ú.0Úxr*   s     €r   Ú	<genexpr>z(CovController.summary.<locals>.<genexpr>¬   s   øè ø€ ÐFÑ-E¨ˆq�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   )r;   r"   rA   Úreportr   rt   rE   rm   r]   ÚsortedrF   r   ÚgatewayÚidÚanyÚ
isinstanceÚdictÚvaluesÚupdaterŠ   Úhtml_reportr?   Úhtml_dirÚ
xml_reportÚ
xml_outputÚjson_reportÚjson_outputÚlcov_reportÚlcov_output)	r*   ru   ÚtotalÚ	node_descÚnodeÚoptionsr‰   Úannotate_dirÚoutputs	   `        r   ÚsummaryzCovController.summary“   su  ø€ ð ˆà�ŠÜ˜Ÿ™ 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à!/°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ÇT)È+T6É'"UË-UÍ=UÐU*Ò?U7ÔT&Ô)T3Ô6U ÕUÕUÕU'Õ*U4Õ7V )NN)r   r   r   Ú__doc__rI   Ú
contextlibÚcontextmanagerrK   r2   rP   rT   rS   r   rN   rk   rm   r¨   r   r   r   r8   r8   B   s´   „ Ù:ó"ð$ ×Ññó ðð ñó ðð ñó ðð ñ6ó ð6ð  ñ1ó ð1ð ñeó ðeð
 ñó ðð ñTó ñTr   r8   c                   ó0   — e Zd ZdZed„ «       Zed„ «       Zy)ÚCentralz)Implementation for centralised operation.c                 óÎ  — t        «        t        j                  | j                  | j                  t        d«      | j                  ¬«      | _        | j                  j                  j                  dk(  r"d}t        j                  t        |«      d¬«       t        j                  | j                  | j                  t        d«      t        j                  j                  | j                  j                  j                   «      | j                  ¬«      | _        | j$                  s| j                  j'                  «        | j                  j)                  «        | j+                  «        y )	NÚc©ÚsourceÚbranchÚdata_suffixrb   Ú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³   rC   rb   )r   r‚   ÚCoverager:   r>   r6   r<   rA   r?   Údynamic_contextÚwarningsÚwarnr	   r'   r`   ra   rC   rB   r=   ÚeraserR   rS   )r*   Úmessages     r   rR   z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                 óÜ  — | j                  «        | j                  j                  «        | j                  j                  «        | j                  | _        | j                  j                  «        | j                  j                  «        | j                  j                  «        | j                  t        j                  t        j                  «      }| j                  j                  |«       y)zSStop coverage, save data to file and set the list of coverage objects to report on.N)rN   rA   rM   ÚsaverB   ÚloadÚcombinerk   Úsysri   rj   rE   Úadd)r*   r£   s     r   ÚfinishzCentral.finish  s�   € ð 	�‰ÔØ�‰�‰ŒØ�‰�‰Œà×%Ñ%ˆŒØ�‰�‰ŒØ�‰×ÑÔØ�‰�‰Œà×&Ñ&¤s§|¡|´S×5EÑ5EÓFˆ	Ø�‰×Ñ˜IÕ&r   N)r   r   r   r©   r2   rR   rÄ   r   r   r   r­   r­   ë   s+   „ Ù3àñó ðð< ñ'ó ñ'r   r­   c                   ó<   — e Zd ZdZed„ «       Zd„ Zd„ Zed„ «       Zy)Ú
DistMasterz&Implementation for distributed master.c                 óB  — t        «        t        j                  | j                  | j                  t        d«      | j                  ¬«      | _        | j                  j                  j                  dk(  rt        d«      ‚d| j                  _        d| j                  _        d| j                  _        t        j                  | j                  | j                  t        d«      t        j                  j!                  | j                  j                  j"                  «      | j                  ¬«      | _        | j&                  s| j                  j)                  «        | j                  j+                  «        | j,                  g| j                  j                  j.                  d<   y )	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¸   r:   r>   r6   r<   rA   r?   r¹   r
   Ú_warn_no_dataÚ_warn_unimported_sourceÚ_warn_preimported_sourcer'   r`   ra   rC   rB   r=   r¼   rR   r)   ÚpathsrO   s    r   rR   z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           
      óÚ   — |j                   j                  t        j                  «       | j                  |j
                  j                  D �cg c]  }t        |«      ‘Œ c}dœ«       yc c}w )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_nodezDistMaster.configure_node@  sZ   € ð 	×Ñ×Ñä#)×#5Ñ#5Ó#7Ø%)§[¡[ØAE×AQÑAQ×AWÒAWÓ*XÑAW¸¬3¨t­9ÐAWÑ*Xñõ	
ùò +Ys   ÁA(c                 ó  — t        |di «      }d|vr| j                  j                  |«       yd|v �rxdt        j                  «       t        j                  «       t        j                  dd«      |d   fz  }t        j                  | j                  | j                  || j                  ¬«      }|j                  «        t        j                  d	k  rCt!        «       }|j#                  t%        |d   «      «       |j&                  j)                  |«       n@t!        d
d¬«      }|j+                  |d   «       |j-                  «       j)                  |«       |j/                  «        |j1                  «        |d   }| j2                  j4                  j6                  d   j                  |«       |j8                  j;                  «       }| j=                  |j>                  |j                  «      }	| j@                  jC                  |	«       y)z#Collect data file name from worker.ÚworkeroutputÚcov_worker_node_idNÚcov_worker_dataz%s.%s.%06d.%sr   i?B r°   ©rg   r   Tzshould-not-exist)Úno_diskÚsuffixÚcov_worker_pathr±   )"r   rF   ÚappendrÓ   rÔ   r'   ÚgetpidÚrandomÚrandintr‚   r¸   r:   r>   r<   rR   rj   r   Úread_fileobjr   Údatar™   ÚloadsÚget_datarM   r¿   rA   r?   rÍ   r“   Ú_rinfork   ri   rE   rÃ   )
r*   r¤   Úerrorr§   r³   rA   rç   r`   Úrinfor£   s
             r   ÚtestnodedownzDistMaster.testnodedownK  s£  € ô
 ˜˜~¨rÓ2ˆØ vÑ-Ø×Ñ×&Ñ& tÔ,Øð  Ò&Ø)Ü×"Ñ"Ó$Ü—	‘	“Ü—‘˜q &Ó)ØÐ+Ñ,ð	-ñ ˆKô ×#Ñ#¨4¯?©?À4Ç?Á?Ð`kÐy}÷  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                 ó*  — | j                   j                  «        | j                   j                  «        | j                  | _         | j                   j	                  «        | j                   j                  «        | j                   j                  «        y)zJCombines coverage data and sets the list of coverage objects to report on.N)rA   rM   r¿   rB   rÀ   rÁ   rO   s    r   rÄ   zDistMaster.finishs  sU   € ð
 	�‰�‰ŒØ�‰�‰ŒØ×%Ñ%ˆŒØ�‰�‰ŒØ�‰×ÑÔØ�‰�‰�r   N)	r   r   r   r©   r2   rR   rÙ   rí   rÄ   r   r   r   rÆ   rÆ     s6   „ Ù0àñ8ó ð8ò<	
ò&'ðP ñ	ó ñ	r   rÆ   c                   ó6   — e Zd ZdZed„ «       Zed„ «       Zd„ Zy)Ú
DistWorkerz'Implementation for distributed workers.c                 óê  — t        «        t        j                  «       | j                  j                  d   k(  xr& | j
                  | j                  j                  d   k(  | _        | j                  s�| j                  j                  d   }| j
                  }| j                  �/| j                  D �cg c]  }|j                  ||«      ‘Œ c}| _        | j                  j                  ||«      | _	        t        j                  | j                  | j                  t        d| j                  › �«      | j                  ¬«      | _        | j                  j!                  «        | j#                  «        y c c}w )NrÏ   rÐ   Úwr°   )r   rÓ   rÔ   r?   rÒ   r)   rH   r:   Úreplacer<   r‚   r¸   r>   r6   r@   rA   rR   rS   )r*   Úmaster_topdirÚworker_topdirr±   s       r   rR   z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 6§>¡>°-ÀÕ#OÐ^mÑ"n�”Ø"Ÿo™o×5Ñ5°mÀ]ÓSˆDŒOô ×$Ñ$Ø—?‘?Ø—?‘?Ü$ q¨¯©¨Ð%6Ó7ØŸ™ô	
ˆŒð 	�‰�‰ÔØ�‰�ùò #os   Â1E0c                 óÄ  — | j                  «        | j                  j                  «        | j                  r>| j                  j	                  «        | j
                  | j                  j                  d<   y| j                  j                  «        | j                  j	                  «        t        j                  dk  r@t        «       }| j                  j                  j                  |«       |j                  «       }n(| j                  j                  «       j!                  «       }| j                  j                  j#                  | j$                  | j
                  |dœ«       y)z8Stop coverage and send relevant info back to the master.rÜ   rÞ   )rá   rÜ   rÝ   N)rN   rA   rM   rH   r¿   r@   r?   rÛ   rÁ   r‚   rj   r   rç   Úwrite_fileobjÚgetvalueré   Údumpsr™   r)   )r*   Úbuffrç   s      r   rÄ   z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                  ó   — y)z&Only the master reports so do nothing.Nr   )r*   ru   s     r   r¨   zDistWorker.summaryÅ  s   � r   N)r   r   r   r©   r2   rR   rÄ   r¨   r   r   r   rð   rð   €  s1   „ Ù1àñó ðð6 ñ#ó ð#óJ5r   rð   )"r©   rª   r   r0   r'   rä   rÓ   rÂ   rº   Úior   Úpathlibr   r‚   Úcoverage.datar   Úcoverage.sqldatar   r�   r	   r
   Úembedr   Ú	Exceptionr   r   r«   r"   r2   r6   r8   r­   rÆ   rð   r   r   r   Ú<module>r     s©   ðÙ >ã Û Û Û 	Û Û Û 
Û Ý Ý ã Ý &Ý ,å &Ý Ý ô	˜9ô 	÷ñ ð ×Ññ#ó ð#ò!ò&-÷fñ fôR0'ˆmô 0'ôf_�ô _ôDF5�õ F5r   