§
    <›jÕ?  ã                   óL  — 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	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  G d
„ de¦  «        Z G d„ d¦  «        Zd„ Z G d„ d¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        ZdS )z8Coverage controllers for use by pytest-cov and nose-cov.é    N)ÚPath)ÚUnion)ÚCoverageData)Úfilename_suffixé   )ÚCentralCovContextWarning)ÚDistCovErrorc                   ó   — e Zd ZdS )ÚBrokenCovConfigErrorN)Ú__name__Ú
__module__Ú__qualname__© ó    úN/home/lighthouse/health/venv/lib/python3.11/site-packages/pytest_cov/engine.pyr   r      s   € € € € € Ø€Dr   r   c                   ó$   — e Zd Zed„ ¦   «         ZdS )Ú	_NullFilec                 ó   — d S ©Nr   )Úvs    r   Úwritez_NullFile.write   s   € àˆr   N)r   r   r   Ústaticmethodr   r   r   r   r   r      s-   € € € € € Øðð ñ „\ðð ð r   r   c                 óF   ‡ — t          j        ‰ ¦  «        ˆ fd„¦   «         }|S )Nc                 ó  •— 	 t          j        ¦   «         }n# t          $ r d }Y nw xY wt          j        | j        ¦  «         	  ‰| g|¢R i |¤Ž|�t          j        |¦  «         S S # |�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™:œ:ˆLˆLøÝð 	 ð 	 ð 	 ð  ˆLˆLˆLð	 øøøõ 	Œ�”ÑÔÐð	'Ø�4˜Ð.˜tÐ.Ð.Ð. vÐ.Ð.àÐ'Ý”˜Ñ&Ô&Ð&Ð&ð (øˆ|Ð'Ý”˜Ñ&Ô&Ð&Ð&ð (øøøs   ƒ —&¥&ÁA& Á&A?)Ú	functoolsÚwraps)r$   r%   s   ` r   Ú_ensure_topdirr(   !   s9   ø€ Ý„_�TÑÔð'ð 'ð 'ð 'ñ Ôð'ð !Ð r   c                   óð   — e Zd ZdZdej        dedef         dedef         fd„Z	e
j        d„ ¦   «         Zed„ ¦   «         Zed	„ ¦   «         Zd
„ Zd„ Zed„ ¦   «         Zed„ ¦   «         Zd„ Zed„ ¦   «         ZdS )ÚCovControllerz0Base class for different plugin implementations.ÚoptionsÚconfigNÚnodeidc                 ó€  — |j         | _         |j        | _        |j        | _        |j        | _        |j        | _        |j        | _        || _        || _        d| _        d| _	        d| _
        t          ¦   «         | _        g | _        t          j        t!          j        ¦   «         ¦  «        | _        d| _        d| _        dS )z8Get some common config used by multiple derived classes.NF)Ú
cov_sourceÚ
cov_reportÚ
cov_configÚ
cov_appendÚ
cov_branchÚcov_precisionr,   r-   ÚcovÚcombining_covÚ	data_fileÚsetÚ
node_descsÚfailed_workersr   Úfspathr   r   r   Úis_collocatedÚstarted)r    r+   r,   r-   s       r   Ú__init__zCovController.__init__7   s    € à!Ô,ˆŒØ!Ô,ˆŒØ!Ô,ˆŒØ!Ô,ˆŒØ!Ô,ˆŒØ$Ô2ˆÔØˆŒØˆŒàˆŒØ!ˆÔØˆŒÝ™%œ%ˆŒØ ˆÔÝ”i¥¤¡
¤
Ñ+Ô+ˆŒØ!ˆÔØˆŒˆˆr   c              #   ó’   K  — t          j        ¦   «         }t          j        | j        ¦  «         d V — t          j        |¦  «         d S r   )r   r   r   r   r   )r    r#   s     r   Úensure_topdirzCovController.ensure_topdirK   sB   è è € å”x‘z”zˆÝ
Œ�”ÑÔÐØˆˆˆÝ
Œ�ÑÔÐÐÐr   c                 óF   — d| _         | j                             ¦   «          d S ©NF)r=   r5   Ústop©r    s    r   ÚpausezCovController.pauseR   s   € àˆŒØŒ�Š‰Œˆˆˆr   c                 óF   — | j                              ¦   «          d| _        d S ©NT)r5   Ústartr=   rD   s    r   ÚresumezCovController.resumeW   s   € àŒ�ŠÑÔÐØˆŒˆˆr   c                 ó   — d| _         d S rG   ©r=   rD   s    r   rH   zCovController.start\   s   € ØˆŒˆˆr   c                 ó   — d| _         d S rB   rK   rD   s    r   ÚfinishzCovController.finish_   s   € ØˆŒˆˆr   c                 óN   — d                      |  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_descb   s3   € ð (×.Ò.¨xÐ9PÐ9IÔ9PÐR^Ð_aÐ`aÐ_aÔRbÐ9cÑdÔdÐdr   c                  óF   — t          j        d¬¦  «        \  } }| dk     rd} | S )N)éP   é   )Úfallbacké(   rU   )ÚshutilÚget_terminal_size)ÚwidthÚ_s     r   Ú	get_widthzCovController.get_widthh   s.   € õ Ô+°XÐ>Ñ>Ô>‰ˆˆqà�2Š:ˆ:ØˆEØˆr   c                 óþ  — t          |d¦  «        r|                     ||¦  «         d S |                      ¦   «         }t          j        dk    r|dz  }t          |t          |¦  «        z
  dz
  dt          |¦  «        z  z  d¦  «        }||z  }|› d|› d|› �}t          |¦  «        t          |                     ¦   «         ¦  «        z   |k    r||                     ¦   «         z  }|dz  }|                     |¦  «         d S )NÚsepÚwin32r   é   ú z

)	Úhasattrr_   r]   ÚsysrQ   ÚmaxÚlenÚrstripr   )r    ÚstreamÚsÚtxtÚ	fullwidthÚNÚfillÚlines           r   r_   zCovController.sepq   s  € Ý�6˜5Ñ!Ô!ð 	Ø�JŠJ�q˜#ÑÔÐÐÐàŸšÑ(Ô(ˆIõ Œ|˜wÒ&Ð&ð
 ˜Q‘�	Ý�Y¥ S¡¤Ñ)¨AÑ-°1µs¸1±v´v±:Ñ>ÀÑBÔBˆAØ�q‘5ˆDØÐ)Ð)˜SÐ)Ð) 4Ð)Ð)ˆDõ �4‰yŒy�3˜qŸxšx™zœz™?œ?Ñ*¨iÒ7Ð7Ø˜Ÿš™
œ
Ñ"�à�F‰NˆDØ�LŠL˜ÑÔÐÐÐr   c                 ó¨	  ‡ — ‰ j                              dd‰ j        t          ¬¦  «        }t	          ‰ j        ¦  «        dk    r3‰                      |ddd                     ‰ j        ¦  «        › �¦  «         nF‰                      |dd¦  «         t          ‰ j        ¦  «        D ]}‰                      |d	|› ¦  «         Œ‰ j	        rX‰                      |dd
¦  «         | 
                    d¦  «         ‰ j	        D ]$}| 
                    |j        j        › d�¦  «         Œ%t          ˆ fd„dD ¦   «         ¦  «        rud‰ j        v pdd|‰ j        dœ}t          ‰ j        t           ¦  «        od‰ j                             ¦   «         v }|                     d|pdi¦  «          ‰ j         j        d)i |¤Ž d‰ j        v r{‰ j        d         }‰ j                              d|¬¦  «         ‰ j                              dt          ¬¦  «         |r| 
                    d|› d�¦  «         n| 
                    d¦  «         d‰ j        v rU‰ j        d         }‰ j                              d|¬¦  «         | 
                    d|€‰ j         j        j        n|› d�¦  «         d‰ j        v rU‰ j        d         }‰ j                              d|¬¦  «         | 
                    d|€‰ j         j        j        n|› d�¦  «         d‰ j        v rT‰ j        d         }‰ j                              d|¬¦  «         | 
                    d|€‰ j         j        j        n|z  ¦  «         d ‰ j        v r}‰ j        d          }t7          |¦  «                             d!¦  «        5 }	‰ j                              d|	d ¬"¦  «         ddd¦  «         n# 1 swxY w Y   | 
                    d#|› d�¦  «         d$‰ j        v r}‰ j        d$         }t7          |¦  «                             d%¦  «        5 }	‰ j                              d|	d ¬"¦  «         ddd¦  «         n# 1 swxY w Y   | 
                    d&|› d�¦  «         d'‰ j        v rv‰ j        d'         }‰ j                              d|¬¦  «         ‰ j                              dt          ¬¦  «         | 
                    d(|€‰ j         j        j        n|› d�¦  «         |S )*zProduce coverage reports.TÚtotal)Úignore_errorsÚoutput_formatÚ	precisionÚfiler   r\   z
coverage: Ú Úcoveragerb   zcoverage: failed workerszlThe following workers failed to return coverage data, ensure that pytest-cov is installed on these workers.
ú
c              3   ó*   •K  — | ]}|‰j         v V — Œd S r   )r0   )Ú.0Úxr    s     €r   ú	<genexpr>z(CovController.summary.<locals>.<genexpr>¡   s*   øè è € ÐFÐF¨ˆq�D”OÐ#ÐFÐFÐFÐFÐFÐFr   )Útermúterm-missingr}   N)Úshow_missingrq   rt   rs   zskip-coveredÚskip_coveredÚannotate)rq   Ú	directory)rq   rt   z)Coverage annotated source written to dir z1Coverage annotated source written next to source
ÚhtmlzCoverage HTML written to dir Úxml)rq   ÚoutfilezCoverage XML written to file Újsonz!Coverage JSON written to file %s
ÚmarkdownÚw)rq   rt   rr   z.Coverage Markdown information written to file zmarkdown-appendÚaz/Coverage Markdown information appended to file ÚlcovzCoverage LCOV written to file r   )r5   Úreportr4   r   rf   r9   r_   ÚjoinÚsortedr:   r   ÚgatewayÚidÚanyr0   Ú
isinstanceÚdictÚvaluesÚupdater€   Úhtml_reportr,   Úhtml_dirÚ
xml_reportÚ
xml_outputÚjson_reportÚjson_outputr   ÚopenÚlcov_reportÚlcov_output)
r    rh   rp   Ú	node_descÚnoder+   r   Úannotate_dirÚoutputÚoutput_files
   `         r   ÚsummaryzCovController.summary‹   sÂ  ø€ ð ”—’¨dÀ'ÐUYÔUgÕnw�ÑxÔxˆõ ˆtŒÑÔ 1Ò$Ð$Ø�HŠH�V˜SÐ"I¨r¯wªw°t´Ñ/GÔ/GÐ"IÐ"IÑJÔJÐJÐJà�HŠH�V˜S *Ñ-Ô-Ð-Ý# D¤OÑ4Ô4ð 6ð 6�	Ø—’˜ ¨ nÑ5Ô5Ð5Ð5ð Ôð 	5Ø�HŠH�V˜SÐ"<Ñ=Ô=Ð=Ø�LŠLð  Iñ  Jô  Jð  JØÔ+ð 5ð 5�Ø—’ ¤¤Ð3Ð3Ð3Ñ4Ô4Ð4Ð4õ ÐFÐFÐFÐFÐ-EÐFÑFÔFÑFÔFð 		'à!/°4´?Ð!BÐ KÀtØ!%ØØ!Ô/ð	ð ˆGõ & d¤oµtÑ<Ô<ÐkÀÐSWÔSb×SiÒSiÑSkÔSkÐAkˆLØ�NŠN˜N¨LÐ,@¸DÐAÑBÔBÐBØˆDŒHŒOÐ&Ð&˜gÐ&Ð&Ð&ð ˜œÐ(Ð(Øœ?¨:Ô6ˆLàŒH×Ò¨D¸LÐÑIÔIÐIð ŒH�OŠO¨$µYˆOÑ?Ô?Ð?Øð SØ—’ÐYÈÐYÐYÐYÑZÔZÐZÐZà—’ÐQÑRÔRÐRð �T”_Ð$Ð$Ø”_ VÔ,ˆFØŒH× Ò ¨t¸vÐ ÑFÔFÐFØ�LŠLÐsÐU[ÐUc¸¼¼Ô9QÐ9QÐioÐsÐsÐsÑtÔtÐtð �D”OÐ#Ð#Ø”_ UÔ+ˆFØŒH×Ò¨d¸FÐÑCÔCÐCØ�LŠLÐuÐW]ÐWe¸¼¼Ô9SÐ9SÐkqÐuÐuÐuÑvÔvÐvð �T”_Ð$Ð$Ø”_ VÔ,ˆFØŒH× Ò ¨t¸VÐ ÑDÔDÐDØ�LŠLÐ=Ð`fÐ`nÀÄÄÔA\ÐA\ÐtzÑ{Ñ|Ô|Ð|ð ˜œÐ(Ð(Ø”_ ZÔ0ˆFÝ�f‘”×"Ò" 3Ñ'Ô'ð `¨;Ø”—’¨d¸ÐT^�Ñ_Ô_Ð_ð`ð `ð `ñ `ô `ð `ð `ð `ð `ð `ð `øøøð `ð `ð `ð `à�LŠLÐTÈ&ÐTÐTÐTÑUÔUÐUð  ¤Ð/Ð/Ø”_Ð%6Ô7ˆFÝ�f‘”×"Ò" 3Ñ'Ô'ð `¨;Ø”—’¨d¸ÐT^�Ñ_Ô_Ð_ð`ð `ð `ñ `ô `ð `ð `ð `ð `ð `ð `øøøð `ð `ð `ð `à�LŠLÐUÈ6ÐUÐUÐUÑVÔVÐVð �T”_Ð$Ð$Ø”_ VÔ,ˆFØŒH× Ò ¨t¸VÐ ÑDÔDÐDð ŒH�OŠO¨$µYˆOÑ?Ô?Ð?à�LŠLÐwÐY_ÐYg¸$¼(¼/Ô:UÐ:UÐmsÐwÐwÐwÑxÔxÐxàˆs$   Í?N)Î)N-Î0N-ÐP/Ð/P3Ð6P3)r   r   r   Ú__doc__ÚargparseÚ	Namespacer   ÚobjectÚstrr>   Ú
contextlibÚcontextmanagerr@   r(   rE   rI   rH   rM   r   rS   r]   r_   r¢   r   r   r   r*   r*   4   s7  € € € € € Ø:Ð:ð Ô 2ð ¸EÀ$ÈÀ,Ô<Oð ÐY^Ð_cÐehÐ_hÔYið ð ð ð ð( Ôðð ñ Ôðð ðð ñ „^ðð ðð ñ „^ððð ð ðð ð ð ðeð eñ „\ðeð
 ðð ñ „\ððð ð ð4 ðYð Yñ „^ðYð Yð Yr   r*   c                   óL   ‡ — e Zd ZdZeˆ fd„¦   «         Zeˆ fd„¦   «         Zˆ xZS )ÚCentralz)Implementation for centralised operation.c                 óX  •— t          j        | j        | j        d| j        ¬¦  «        | _        | j        j        j        dk    r%d}t          j	        t          |¦  «        d¬¦  «         t          j        | j        | j        t          d¦  «        › d�t          j                             | j        j        j        ¦  «        | j        ¬¦  «        | _        | j        s| j                             ¦   «          | j                             ¦   «          t)          ¦   «                              ¦   «          d S )	NT©ÚsourceÚbranchÚdata_suffixÚconfig_fileÚ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ú.combine©r®   r¯   r°   r7   r±   )rv   ÚCoverager/   r3   r1   r5   r,   Údynamic_contextÚwarningsÚwarnr   r   r   ÚpathÚabspathr7   r6   r2   ÚeraserH   Úsuper)r    ÚmessageÚ	__class__s     €r   rH   zCentral.startë   s  ø€ åÔ$Ø”?Ø”?ØØœð	
ñ 
ô 
ˆŒð Œ8Œ?Ô*¨oÒ=Ð=ðfð õ ŒMÕ2°7Ñ;Ô;ÈÐJÑJÔJÐJå%Ô.Ø”?Ø”?Ý*¨4Ñ0Ô0Ð:Ð:Ð:Ý”g—o’o d¤h¤oÔ&?Ñ@Ô@Øœð
ñ 
ô 
ˆÔð Œð 	ØŒH�NŠNÑÔÐØŒ�ŠÑÔÐå‰Œ�Š‰Œˆˆˆr   c                 óâ  •— t          ¦   «                              ¦   «          | j                             ¦   «          | j                             ¦   «          | j        | _        | j                             ¦   «          | j                             ¦   «          | j                             ¦   «          |                      t          j
        t          j        ¦  «        }| j                             |¦  «         dS )zSStop coverage, save data to file and set the list of coverage objects to report on.N)r½   rM   r5   rC   Úsaver6   ÚloadÚcombinerS   rd   rQ   rR   r9   Úadd)r    r�   r¿   s     €r   rM   zCentral.finish	  s©   ø€ õ 	‰Œ�ŠÑÔÐàŒ�Š‰ŒˆØŒ�Š‰ŒˆàÔ%ˆŒØŒ�Š‰ŒˆØŒ×ÒÑÔÐØŒ�Š‰Œˆà×&Ò&¥s¤|µSÔ5EÑFÔFˆ	ØŒ×Ò˜IÑ&Ô&Ð&Ð&Ð&r   )r   r   r   r£   r(   rH   rM   Ú__classcell__©r¿   s   @r   r«   r«   è   sm   ø€ € € € € Ø3Ð3àðð ð ð ñ „^ðð: ð'ð 'ð 'ð 'ñ „^ð'ð 'ð 'ð 'ð 'r   r«   c                   óJ   — e Zd ZdZed„ ¦   «         Zd„ Zd„ Zed„ ¦   «         ZdS )Ú
DistMasterz&Implementation for distributed master.c                 óf  — t          j        | j        | j        d| j        ¬¦  «        | _        | j        j        j        dk    rt          d¦  «        ‚d| j        _	        d| j        _
        d| j        _        t          j        | j        | j        t          d¦  «        › d�t          j                             | j        j        j        ¦  «        | j        ¬¦  «        | _        | j        s| j                             ¦   «          | j                             ¦   «          | j        g| j        j        j        d<   d S )	NTr­   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.Fr´   rµ   r®   )rv   r¶   r/   r3   r1   r5   r,   r·   r	   Ú_warn_no_dataÚ_warn_unimported_sourceÚ_warn_preimported_sourcer   r   rº   r»   r7   r6   r2   r¼   rH   r   ÚpathsrD   s    r   rH   zDistMaster.start  s  € åÔ$Ø”?Ø”?ØØœð	
ñ 
ô 
ˆŒð Œ8Œ?Ô*¨oÒ=Ð=ÝðBñô ð ð
 "'ˆŒÔØ+0ˆŒÔ(Ø,1ˆŒÔ)Ý%Ô.Ø”?Ø”?Ý*¨4Ñ0Ô0Ð:Ð:Ð:Ý”g—o’o d¤h¤oÔ&?Ñ@Ô@Øœð
ñ 
ô 
ˆÔð Œð 	ØŒH�NŠNÑÔÐØŒ�ŠÑÔÐØ+/¬;¨-ˆŒŒÔ˜hÑ'Ð'Ð'r   c                 ó–   — |j                              t          j        ¦   «         | j        d„ |j        j        D ¦   «         dœ¦  «         dS )zFWorkers need to know if they are collocated and what files have moved.c                 ó,   — g | ]}t          |¦  «        ‘ŒS r   )r§   )ry   Úroots     r   ú
<listcomp>z-DistMaster.configure_node.<locals>.<listcomp>A  s   € Ð*XÐ*XÐ*X¸­3¨t©9¬9Ð*XÐ*XÐ*Xr   )Úcov_master_hostÚcov_master_topdirÚcov_master_rsync_rootsN)Úworkerinputr“   ÚsocketÚgethostnamer   ÚnodemanagerÚroots)r    rž   s     r   Úconfigure_nodezDistMaster.configure_node:  s[   € ð 	Ô×Òå#)Ô#5Ñ#7Ô#7Ø%)¤[Ø*XÐ*XÀÔAQÔAWÐ*XÑ*XÔ*Xðð ñ	
ô 	
ð 	
ð 	
ð 	
r   c                 óX  — t          |di ¦  «        }d|vr| j                             |¦  «         dS d|v r¡dt          j        ¦   «         t          j        ¦   «         t          j        dd¦  «        |d         fz  }t          |¬¦  «        }| 
                    |d         ¦  «         |d	         }| j        j        j        d
                              |¦  «         |j                             ¦   «         }|                      |j        |j        ¦  «        }| j                             |¦  «         dS )z#Collect data file name from worker.ÚworkeroutputÚcov_worker_node_idNÚcov_worker_dataz%s.%s.%06d.%sr   i?B )ÚsuffixÚcov_worker_pathr®   )Úgetattrr:   ÚappendrÖ   r×   r   ÚgetpidÚrandomÚrandintr   Úloadsr5   r,   rÍ   r�   Ú_rinforS   rQ   rR   r9   rÄ   )	r    rž   Úerrorr    r°   Úcov_datarº   Úrinfor�   s	            r   ÚtestnodedownzDistMaster.testnodedownE  s.  € õ
 ˜˜~¨rÑ2Ô2ˆØ vÐ-Ð-ØÔ×&Ò& tÑ,Ô,Ð,ØˆFð  Ð&Ð&Ø)ÝÔ"Ñ$Ô$Ý”	‘”Ý”˜q &Ñ)Ô)ØÐ+Ô,ð	-ñ ˆKõ $Ø"ðñ ô ˆHð �NŠN˜6Ð"3Ô4Ñ5Ô5Ð5ØÐ+Ô,ˆDØŒHŒOÔ! (Ô+×2Ò2°4Ñ8Ô8Ð8ð ”×#Ò#Ñ%Ô%ˆØ×&Ò& u¤~°uÔ7IÑJÔJˆ	ØŒ×Ò˜IÑ&Ô&Ð&Ð&Ð&r   c                 ó  — | j                              ¦   «          | j                              ¦   «          | j        | _         | j                              ¦   «          | j                              ¦   «          | j                              ¦   «          dS )zJCombines coverage data and sets the list of coverage objects to report on.N)r5   rC   rÁ   r6   rÂ   rÃ   rD   s    r   rM   zDistMaster.finishe  sb   € ð
 	Œ�Š‰ŒˆØŒ�Š‰ŒˆØÔ%ˆŒØŒ�Š‰ŒˆØŒ×ÒÑÔÐØŒ�Š‰Œˆˆˆr   N)	r   r   r   r£   r(   rH   rÚ   rë   rM   r   r   r   rÈ   rÈ     sm   € € € € € Ø0Ð0àð8ð 8ñ „^ð8ð8	
ð 	
ð 	
ð'ð 'ð 'ð@ ð	ð 	ñ „^ð	ð 	ð 	r   rÈ   c                   óR   ‡ — e Zd ZdZeˆ fd„¦   «         Zeˆ fd„¦   «         Zd„ Zˆ xZS )Ú
DistWorkerz'Implementation for distributed workers.c                 ó<  •‡‡— t          j        ¦   «         | j        j        d         k    o| j        | j        j        d         k    | _        | j        sY| j        j        d         Š| j        Š| j        �ˆˆfd„| j        D ¦   «         | _        | j                             ‰‰¦  «        | _        t          j
        | j        | j        d| j        ¬¦  «        | _        d| j        _        | j                             ¦   «          t          ¦   «                              ¦   «          d S )NrÒ   rÓ   c                 ó<   •— g | ]}|                      ‰‰¦  «        ‘ŒS r   )Úreplace)ry   r®   Úmaster_topdirÚworker_topdirs     €€r   rÑ   z$DistWorker.start.<locals>.<listcomp>‚  s(   ø€ Ð"nÐ"nÐ"nÐTZ 6§>¢>°-ÀÑ#OÔ#OÐ"nÐ"nÐ"nr   Tr­   F)rÖ   r×   r,   rÕ   r   r<   r/   r1   rñ   rv   r¶   r3   r5   rË   rH   r½   )r    rò   ró   r¿   s    @@€r   rH   zDistWorker.startu  s  øøø€ õ ÔÑ Ô  D¤KÔ$;Ð<MÔ$NÒNð LØ”˜tœ{Ô6Ð7JÔKÒKð 	Ôð Ô!ð 	TØ œKÔ3Ð4GÔHˆMØ œKˆMØŒÐ*Ø"nÐ"nÐ"nÐ"nÐ"nÐ^bÔ^mÐ"nÑ"nÔ"n�”Ø"œo×5Ò5°mÀ]ÑSÔSˆDŒOõ Ô$Ø”?Ø”?ØØœð	
ñ 
ô 
ˆŒð ,1ˆŒÔ(ØŒ�ŠÑÔÐå‰Œ�Š‰Œˆˆˆr   c                 óú  •— t          ¦   «                              ¦   «          | j                             ¦   «          | j        r/| j                             ¦   «          | j        | j        j        d<   dS | j         	                    ¦   «          | j                             ¦   «          | j         
                    ¦   «                              ¦   «         }| j        j                             | j        | j        |dœ¦  «         dS )z8Stop coverage and send relevant info back to the master.rÝ   )rà   rÝ   rÞ   N)r½   rM   r5   rC   r<   rÁ   r-   r,   rÜ   rÃ   Úget_dataÚdumpsr“   r   )r    Údatar¿   s     €r   rM   zDistWorker.finish’  sá   ø€ õ 	‰Œ�ŠÑÔÐàŒ�Š‰ŒˆàÔð 	ð ŒH�MŠM‰OŒOˆOð >B¼[ˆDŒKÔ$Ð%9Ñ:Ð:Ð:àŒH×ÒÑÔÐØŒH�MŠM‰OŒOˆOð ”8×$Ò$Ñ&Ô&×,Ò,Ñ.Ô.ˆDàŒKÔ$×+Ò+à'+¤{Ø*.¬+Ø'+ðð ñô ð ð ð r   c                 ó   — dS )z&Only the master reports so do nothing.Nr   )r    rh   s     r   r¢   zDistWorker.summary´  s   € € € r   )	r   r   r   r£   r(   rH   rM   r¢   rÅ   rÆ   s   @r   rî   rî   r  s}   ø€ € € € € Ø1Ð1àðð ð ð ñ „^ðð8 ðð ð ð ñ „^ððB5ð 5ð 5ð 5ð 5ð 5ð 5r   rî   )r£   r¤   r¨   r&   r   rä   rY   rÖ   rd   r¸   Úpathlibr   Útypingr   rv   Úcoverage.datar   Úcoverage.sqldatar   ru   r   r	   Ú	Exceptionr   r   r(   r*   r«   rÈ   rî   r   r   r   ú<module>rþ      s  ðØ >Ð >à €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø 	€	€	€	Ø €€€Ø €€€Ø €€€Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à €€€Ø &Ð &Ð &Ð &Ð &Ð &Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,à &Ð &Ð &Ð &Ð &Ð &Ø Ð Ð Ð Ð Ð ð	ð 	ð 	ð 	ð 	˜9ñ 	ô 	ð 	ðð ð ð ð ñ ô ð ð!ð !ð !ð&qð qð qð qð qñ qô qð qðh/'ð /'ð /'ð /'ð /'ˆmñ /'ô /'ð /'ðdUð Uð Uð Uð U�ñ Uô Uð UðpC5ð C5ð C5ð C5ð C5�ñ C5ô C5ð C5ð C5ð C5r   