§
    0›jq{  ã                  ó  — 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	Z	ddl
Z
ddlmZ ddlmZmZ ddlmZmZ ddlZddlmZmZ ddlmZ dd	lmZ dd
lmZmZmZmZmZm Z m!Z!m"Z" ddl#m$Z$ ddl%m&Z&m'Z'm(Z( ddl)m*Z* ddl+m,Z,m-Z- ddl.m/Z/ erddlm0Z0 ddl1m2Z2  e e¦  «        Zd:d„Z3d:d„Z4d;d„Z5e G d„ d¦  «        ¦   «         Z6e G d„ d¦  «        ¦   «         Z7e G d„ d¦  «        ¦   «         Z8e G d „ d!¦  «        ¦   «         Z9 G d"„ d#¦  «        Z: G d$„ d%¦  «        Z;e
j<        e
j=        z   d&z   Z>ej?        d<d)„¦   «         Z@d=d,„ZA G d-„ d.¦  «        ZBe G d/„ d0¦  «        ¦   «         ZC G d1„ d2¦  «        ZDd>d4„ZEd?d7„ZFd@d9„ZGdS )AzHTML reporting for coverage.py.é    )ÚannotationsN)ÚIterable)Ú	dataclassÚfield)ÚTYPE_CHECKINGÚAny)ÚCoverageDataÚadd_data_to_hash)ÚNoDataError)Úflat_rootname)ÚHasherÚ
ensure_dirÚfile_be_goneÚformat_local_datetimeÚhuman_sortedÚisolate_moduleÚpluralÚstdout_link)Úget_analysis_to_report)ÚAnalysisÚAnalysisNarrowerÚNumbers)ÚTemplite)ÚTLineNoÚTMorfs)Ú__url__)ÚCoverage)ÚFileReporterÚfnameÚstrÚreturnc                óÊ   — t           j                             t           j                             t          ¦  «        d¦  «        }t           j                             || ¦  «        }|S )z4Return the path to an "htmlfiles" data file of ours.Ú	htmlfiles)ÚosÚpathÚjoinÚdirnameÚ__file__)r   Ú
static_dirÚstatic_filenames      úL/home/lighthouse/health/venv/lib64/python3.11/site-packages/coverage/html.pyÚdata_filenamer,   0   s@   € å”—’�bœgŸošo­hÑ7Ô7¸ÑEÔE€JÝ”g—l’l :¨uÑ5Ô5€OØÐó    c                óš   — t          t          | ¦  «        d¬¦  «        5 }|                     ¦   «         cddd¦  «         S # 1 swxY w Y   dS )z+Return the contents of a data file of ours.úutf-8©ÚencodingN)Úopenr,   Úread)r   Ú	data_files     r+   Ú	read_datar5   7   s‹   € å	�m˜EÑ"Ô"¨WÐ	5Ñ	5Ô	5ð  ¸Ø�~Š~ÑÔð ð  ð  ð  ñ  ô  ð  ð  ð  ð  ð  ð  øøøð  ð  ð  ð  ð  ð  s   ŸA Á AÁAÚhtmlÚNonec                óô   — t          j        dd|t           j        ¬¦  «        dz   }t          | d¦  «        5 }|                     |                     dd¦  «        ¦  «         ddd¦  «         dS # 1 swxY w Y   dS )	z*Write `html` to `fname`, properly encoded.z(\A\s+)|(\s+$)Ú )Úflagsú
ÚwbÚasciiÚxmlcharrefreplaceN)ÚreÚsubÚ	MULTILINEr2   ÚwriteÚencode)r   r6   Úfouts      r+   Ú
write_htmlrE   =   s´   € åŒ6Ð# R¨µR´\ÐBÑBÔBÀTÑI€DÝ	ˆe�TÑ	Ô	ð >˜dØ�
Š
�4—;’;˜wÐ(;Ñ<Ô<Ñ=Ô=Ð=ð>ð >ð >ñ >ô >ð >ð >ð >ð >ð >ð >ð >øøøð >ð >ð >ð >ð >ð >s   ¶*A-Á-A1Á4A1c                  óª   — e Zd ZU dZded<   ded<   ded<   ded	<   ded
<   ded<   ded<   ded<   dZded<   dZded<   dZded<   dZded<   dZ	ded<   dS )ÚLineDataz-The data for each source line of HTML output.zlist[tuple[str, str]]Útokensr   Únumberr    Úcategoryz	list[str]ÚcontextsÚcontexts_labelÚcontext_listÚshort_annotationsÚlong_annotationsr9   r6   Nz
str | NoneÚcontext_strÚannotateÚannotate_longÚ	css_class)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r6   rP   rQ   rR   rS   © r-   r+   rG   rG   D   sÃ   € € € € € € à7Ð7à!Ð!Ð!Ñ!Ø€O€O�OØ€M€M�MØÐÐÑØÐÐÑØÐÐÑØ Ð Ð Ñ ØÐÐÑØ€D€N€N€N�NØ"€KÐ"Ð"Ð"Ñ"Ø€HÐÐÐÑØ $€MÐ$Ð$Ð$Ñ$Ø€IÐÐÐÑÐÐr-   rG   c                  ó2   — e Zd ZU dZded<   ded<   ded<   dS )	ÚFileDataz-The data for each source file of HTML output.r    Úrelative_filenamer   Únumszlist[LineData]ÚlinesN©rT   rU   rV   rW   rX   rY   r-   r+   r[   r[   W   s9   € € € € € € à7Ð7àÐÐÑØ€M€M�MØÐÐÑÐÐr-   r[   c                  ó`   — e Zd ZU dZdZded<   dZded<   dZded<    ee	¬¦  «        Z
ded	<   d
S )Ú	IndexItemz:Information for each index entry, to render an index page.r9   r    ÚurlÚfileÚdescription©Údefault_factoryr   r]   N)rT   rU   rV   rW   rb   rX   rc   rd   r   r   r]   rY   r-   r+   ra   ra   `   sa   € € € € € € àDÐDà€C€M€M€M�MØ€D€N€N€N�NØ€KÐÐÐÑØ�E¨'Ð2Ñ2Ô2€DÐ2Ð2Ð2Ñ2Ð2Ð2r-   ra   c                  óZ   — e Zd ZU dZded<   ded<   ded<   ded<   ded	<   d
ed<   d
ed<   dS )Ú	IndexPagezData for each index page.r    Únounr   Úfilenamezlist[IndexItem]Ú	summariesr   ÚtotalsÚintÚskipped_covered_countÚskipped_empty_countNr_   rY   r-   r+   rh   rh   j   s`   € € € € € € à#Ð#à€I€I�IØ€K€K�KØ€M€M�MØÐÐÑØ€O€O�OØÐÐÑØÐÐÑÐÐr-   rh   c                  ó&   — e Zd ZdZdZdd„Zdd„ZdS )ÚHtmlDataGenerationz8Generate structured data to be turned into HTML reports.z(empty)Úcovr   r!   r7   c                ó~  — || _         | j         j        | _        | j                              ¦   «         | _        | j                             ¦   «         | _        | j        j        r8| j                             ¦   «         dhk    r| j                              d¦  «         | j                             | j        j	        ¦  «         d S )Nr9   zNo contexts were measured)
ÚcoverageÚconfigÚget_dataÚdataÚhas_arcsÚshow_contextsÚmeasured_contextsÚ_warnÚset_query_contextsÚreport_contexts)Úselfrr   s     r+   Ú__init__zHtmlDataGeneration.__init__|   s    € ØˆŒØ”mÔ*ˆŒØ”M×*Ò*Ñ,Ô,ˆŒ	Øœ	×*Ò*Ñ,Ô,ˆŒØŒ;Ô$ð 	AØŒy×*Ò*Ñ,Ô,°°Ò4Ð4Ø”×#Ò#Ð$?Ñ@Ô@Ð@ØŒ	×$Ò$ T¤[Ô%@ÑAÔAÐAÐAÐAr-   Úfrr   Úanalysisr   r[   c                ó”  ‡ — ‰ j         r|                     ¦   «         }|j        }ni }g }‰ j        j        r‰ j                             |j        ¦  «        }g }|                     ¦   «         }i }t          |d¦  «        r| 
                    ¦   «         }t          |                     ¦   «         d¬¦  «        D �]ê\  }	}
dx}}g }g }|	|j        v rd}�n8|	|j        v rd}�n+‰ j         rÐ|	|v rÌd}||	         }t          |¦  «        ||	         d         k    r/|                     d	¦  «         |                     d
|	› d�¦  «         nÈ||	         D ]j}|dk     r|                     d¦  «         n"|                     t#          |¦  «        ¦  «         |                     |                     |	||¦  «        ¦  «         ŒknT|	|j        v rd}nH|                     |	¦  «        x}r1||j        v rd}n%||j        v rd}n‰ j         r||v rd}n||j        v rd}g }d}g }|rc‰ j        j        rWt+          ˆ fd„|                     |	d¦  «        D ¦   «         ¦  «        }|‰ j        gk    r‰ j        }nt          |¦  «        › d�}|}|                     t/          |
|	|p||||||¬¦  «        ¦  «         �Œìt1          |                     ¦   «         |j        |¬¦  «        }|S )z.Produce the data needed for one file's report.Úmultiline_mapé   )Ústartr9   ÚexcÚmisÚparr   Úanywherezline z5 didn't jump anywhere: it always raised an exception.ÚexitÚrunÚexc2Úmis2Úpar2Úrun2c              3  ó*   •K  — | ]}|p‰j         V — Œd S ©N)ÚEMPTY)Ú.0Úcr~   s     €r+   ú	<genexpr>z3HtmlDataGeneration.data_for_file.<locals>.<genexpr>Ç   s)   øè è € Ð'dÐ'd¸A¨¨¨T¬ZÐ'dÐ'dÐ'dÐ'dÐ'dÐ'dr-   rY   z ctx)rH   rI   rJ   rK   rL   rM   rN   rO   )r\   r]   r^   )rx   Úmissing_branch_arcsÚarcs_executedru   ry   rw   Úcontexts_by_linenorj   Úbranch_statsÚhasattrrƒ   Ú	enumerateÚsource_token_linesÚexcludedÚmissingÚlenÚappendr    Úmissing_arc_descriptionÚ
statementsÚgetr   r’   rG   r[   r\   Únumbers)r~   r€   r�   r–   r—   r˜   r^   r™   rƒ   ÚlinenorH   rJ   Ú	category2rN   rO   ÚmbaÚbÚ
first_linerK   rL   rM   Ú	file_datas   `                     r+   Údata_for_filez HtmlDataGeneration.data_for_file†   s¢  ø€ àŒ=ð 	Ø"*×">Ò">Ñ"@Ô"@ÐØ$Ô2ˆMˆMà"$ÐØˆMàŒ;Ô$ð 	QØ!%¤×!=Ò!=¸hÔ>OÑ!PÔ!PÐàˆØ×,Ò,Ñ.Ô.ˆØˆÝ�2�Ñ'Ô'ð 	/Ø×,Ò,Ñ.Ô.ˆMå'¨×(=Ò(=Ñ(?Ô(?ÀqÐIÑIÔIð A	ñ A	‰NˆF�Fà#%Ð%ˆH�yØ "ÐØ!Ðà˜Ô*Ð*Ð*Ø �‘Ø˜8Ô+Ð+Ð+Ø �‘Ø”ð ' 6Ð-@Ð#@Ð#@Ø �Ø)¨&Ô1�Ý�s‘8”8˜|¨FÔ3°AÔ6Ò6Ð6à%×,Ò,¨ZÑ8Ô8Ð8Ø$×+Ò+Ø] Ð]Ð]Ð]ñô ð ð ð 1°Ô8ð ð ˜Ø˜qš5˜5Ø-×4Ò4°VÑ<Ô<Ð<Ð<à-×4Ò4µS¸±V´VÑ<Ô<Ð<Ø(×/Ò/Ø×6Ò6°v¸qÀ-ÑPÔPñô ð ð ðð ˜8Ô.Ð.Ð.Ø ��Ø,×0Ò0°Ñ8Ô8Ð8�ð 'Ø Ô!2Ð2Ð2Ø &�I�IØ 8Ô#3Ð3Ð3Ø &�I�IØ”]ð ' zÐ5HÐ'HÐ'HØ &�I�Ið   8Ô#6Ð6Ð6Ø &�IàˆHØˆNØˆLØð ,˜DœKÔ5ð ,Ý'Ð'dÐ'dÐ'dÐ'dÐAS×AWÒAWÐX^Ð`bÑAcÔAcÐ'dÑ'dÔ'dÑdÔd�Ø ¤
˜|Ò+Ð+Ø%)¤Z�N�Nå(+¨H©¬Ð%;Ð%;Ð%;�NØ#+�Là�LŠLÝØ!Ø!Ø%Ð2¨Ø%Ø#1Ø!-Ø&7Ø%5ð	ñ 	ô 	ñô ð ñ õ Ø ×2Ò2Ñ4Ô4ØÔ!Øð
ñ 
ô 
ˆ	ð Ðr-   N©rr   r   r!   r7   )r€   r   r�   r   r!   r[   )rT   rU   rV   rW   r’   r   r«   rY   r-   r+   rq   rq   w   sQ   € € € € € ØBÐBà€EðBð Bð Bð Bð[ð [ð [ð [ð [ð [r-   rq   c                  ó   — e Zd ZdZd
d„Zd	S )ÚFileToReportz#A file we're considering reporting.r€   r   r�   r   r!   r7   c                ó¨   — || _         || _        t          |                     ¦   «         ¦  «        | _        | j        dz   | _        dx| _        | _        d S )Nz.htmlr9   )r€   r�   r   r\   ÚrootnameÚhtml_filenameÚ	prev_htmlÚ	next_html)r~   r€   r�   s      r+   r   zFileToReport.__init__ç   sL   € ØˆŒØ ˆŒÝ% b×&:Ò&:Ñ&<Ô&<Ñ=Ô=ˆŒØ!œ]¨WÑ4ˆÔØ*,Ð,ˆŒ˜œ˜˜r-   N)r€   r   r�   r   r!   r7   )rT   rU   rV   rW   r   rY   r-   r+   r®   r®   ä   s.   € € € € € Ø-Ð-ð-ð -ð -ð -ð -ð -r-   r®   z!#$%'()*+,-./:;=?@[]^_`{|}~Únrm   c                óè   — | dk    rt           d         S g }| rGt          | t          t           ¦  «        ¦  «        \  } }|                     t           |         ¦  «         | °Gd                     |¦  «        S )zACreate a short HTML-safe string from an integer, using HTML_SAFE.r   r9   )Ú	HTML_SAFEÚdivmodrŸ   r    r&   )r´   ÚrÚts      r+   Ú
encode_intrº   ò   so   € ð 	ˆA‚v€vÝ˜Œ|Ðà
€AØ
ð Ý�a��Y™œÑ(Ô(‰ˆˆ1Ø	�Š•˜1”ÑÔÐð ð ð �7Š7�1‰:Œ:Ðr-   ÚsrcÚdest_dirc                ó$  — t          | d¦  «        5 }|                     ¦   «         }ddd¦  «         n# 1 swxY w Y   t          ¦   «         }|                     |¦  «         |                     ¦   «         dd…         }t
          j                             | ¦  «        }|                     dd|› d�¦  «        }t          t
          j         	                    ||¦  «        d¦  «        5 }| 
                    |¦  «         ddd¦  «         n# 1 swxY w Y   |S )zsCopy `src` to `dest_dir`, adding a hash to the name.

    Returns the updated destination file name with hash.
    ÚrbNé   ú.Ú_cb_r<   )r2   r3   r   ÚupdateÚ	hexdigestr$   r%   ÚbasenameÚreplacer&   rB   )r»   r¼   ÚfÚtextÚhÚ
cache_bustÚsrc_baseÚdests           r+   Úcopy_with_cache_bustrÌ   ÿ   s[  € õ
 
ˆc�4‰Œð ˜AØ�vŠv‰xŒxˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð å‰Œ€AØ‡H‚HˆT�N„N€NØ—’‘”˜r ˜rÔ"€JÝŒw×Ò Ñ$Ô$€HØ×Ò˜CÐ!5¨
Ð!5Ð!5Ð!5Ñ6Ô6€DÝ	�bŒg�lŠl˜8 TÑ*Ô*¨DÑ	1Ô	1ð °QØ	�Š�‰Œˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð à€Ks   ‘2²6¹6Ã#DÄD	ÄD	c                  ót   — e Zd ZdZg d¢Zd(d„Zd)d„Zd*d„Zd+d„Zd,d-d„Z	d+d„Z
d.d„Zd/d„Zd0d!„Zd1d$„Zd2d&„Zd'S )3ÚHtmlReporterzHTML reporting.)z	style.csszcoverage_html.jszkeybd_closed.pngzfavicon_32.pngrr   r   r!   r7   c                ó  — || _         | j         j        | _        | j        j        | _        | j        j        | _        | j        €| j        j        | _        | j        j        | _        | j        €| j        j        | _        | j        j        }t          | j        j
        ¦  «        | _
        | j                              ¦   «         | _        | j                             ¦   «         | _        d|                      dd¦  «        i| _        t!          | j        ¦  «        | _        t%          | j         ¦  «        | _        d| _        d | _        d | _        t.          t0          t2          t4          t           j        |t9          t:          j                             ¦   «         ¦  «        | j
        | j        i dddddd	d
ddœdœ| _        tA          tC          d¦  «        | j        ¦  «        | _"        tC          d¦  «        | _#        tA          | j#        | j        ¦  «        | _$        d S )Nrc   ÚfilesFzexc show_exczmis show_miszpar run show_parr‹   zexc exc2 show_exczmis mis2 show_miszpar par2 ru2 show_parzrun run2)r†   r‡   rˆ   r‹   rŒ   r�   rŽ   r�   )ÚescapeÚpairÚpretty_filer   Ú__version__ÚtitleÚ
time_stampÚ	extra_cssrx   ÚstaticsrJ   ú
index.htmlzpyfile.html)%rt   ru   Úhtml_dirÚ	directoryÚhtml_skip_coveredÚskip_coveredÚhtml_skip_emptyÚ
skip_emptyÚ
html_titleÚboolr×   rv   rw   rx   Únew_index_pageÚindex_pagesÚIncrementalCheckerÚincrrq   ÚdatagenÚdirectory_was_emptyÚfirst_frÚfinal_frrÑ   rÒ   rÓ   r   rÔ   r   ÚdatetimeÚnowÚtemplate_globalsr   r5   Ú
index_tmplÚpyfile_html_sourceÚsource_tmpl)r~   rr   rÕ   s      r+   r   zHtmlReporter.__init__  sÄ  € ØˆŒØ”mÔ*ˆŒØœÔ-ˆŒà œKÔ9ˆÔØÔÐ$Ø $¤Ô 8ˆDÔØœ+Ô5ˆŒØŒ?Ð"Ø"œkÔ4ˆDŒOà”Ô&ˆå˜dœkÔ3Ñ4Ô4ˆŒà”M×*Ò*Ñ,Ô,ˆŒ	Øœ	×*Ò*Ñ,Ô,ˆŒð �D×'Ò'¨°Ñ8Ô8ð2
ˆÔõ ' t¤~Ñ6Ô6ˆŒ	Ý)¨$¬-Ñ8Ô8ˆŒØ#(ˆÔ ØˆŒØˆŒõ ÝÝ&åÝ#Ô/ØÝ/µÔ0A×0EÒ0EÑ0GÔ0GÑHÔHØœØœØð &Ø%Ø)ØØ+Ø+Ø/Ø"ð	ð 	ð!
ð !
ˆÔõ4 #¥9¨\Ñ#:Ô#:¸DÔ<QÑRÔRˆŒÝ"+¨MÑ":Ô":ˆÔÝ# DÔ$;¸TÔ=RÑSÔSˆÔÐÐr-   ri   r    Úplural_nounrh   c           	     ót   — t          |||dk    rdn|› d�g t          | j        j        ¬¦  «        dd¬¦  «        S )z)Create an IndexPage for a kind of region.rc   rÙ   z_index.html)Ú	precisionr   )ri   r   rj   rk   rl   rn   ro   )rh   r   ru   rò   )r~   ri   rð   s      r+   râ   zHtmlReporter.new_index_pageV  sS   € åØØØ%)¨V¢^ ^�\�\¸DÐ9MÐ9MÐ9MØÝ T¤[Ô%:Ð;Ñ;Ô;Ø"#Ø !ð
ñ 
ô 
ð 	
r-   Úmorfsr   Úfloatc                ó–  — | j                              ¦   «          | j                              | j        | j        ¦  «         g }d}t          | j        |¦  «        D ]…\  }}d}t          ||¦  «        }|                      || j	        d         ¦  «        r| 
                    |¦  «         ŒNt          t          j                             | j        |j        ¦  «        ¦  «         Œ†|st#          d¦  «        ‚|                      ¦   «          |                      ¦   «          |rXt)          |dd…         |dd…         ¦  «        D ]\  }}|j        |_        |j        |_        Œd|d	         _        d|d         _        |D ]]}|                      |¦  «         |j                             ¦   «         D ],\  }	}
|	| j	        vr|                      |	|
¦  «        | j	        |	<   Œ-Œ^|r|d	         j        }|d         j        }ndx}}|                      ||¦  «         |                      |¦  «         | j	        d         j        j        o| j	        d         j        j        S )
zcGenerate an HTML report for `morfs`.

        `morfs` is a list of modules or file names.

        FTrc   zNo data to report.Néÿÿÿÿr„   rÙ   r   ) rå   r3   Úcheck_global_dataru   rî   r   rt   r®   Úshould_reportrã   r    r   r$   r%   r&   rÛ   r±   r   Úmake_directoryÚmake_local_static_report_filesÚzipr³   r²   Úwrite_html_pager€   Úcode_region_kindsrâ   Úwrite_file_index_pageÚwrite_region_index_pagesrl   Ún_statementsÚ
pc_covered)r~   ró   Úfiles_to_reportÚ	have_datar€   r�   ÚftrÚftr1Úftr2ri   rð   Ú
first_htmlÚ
final_htmls                r+   ÚreportzHtmlReporter.reportb  sy  € ð 	Œ	�ŠÑÔÐØŒ	×#Ò# D¤K°Ô1HÑIÔIÐIð ˆàˆ	Ý2°4´=À%ÑHÔHð 	Nð 	N‰LˆB�ØˆIÝ˜r 8Ñ,Ô,ˆCØ×!Ò! (¨DÔ,<¸VÔ,DÑEÔEð NØ×&Ò& sÑ+Ô+Ð+Ð+å�RœWŸ\š\¨$¬.¸#Ô:KÑLÔLÑMÔMÐMÐMàð 	4ÝÐ2Ñ3Ô3Ð3à×ÒÑÔÐØ×+Ò+Ñ-Ô-Ð-àð 	9Ý! /°#°2°#Ô"6¸ÈÈÈÔ8KÑLÔLð 4ð 4‘
��dØ!%Ô!3�”Ø!%Ô!3�”�Ø+7ˆO˜AÔÔ(Ø,8ˆO˜BÔÔ)à"ð 	Tð 	TˆCØ× Ò  Ñ%Ô%Ð%Ø%(¤V×%=Ò%=Ñ%?Ô%?ð Tð TÑ!��kØ˜tÔ/Ð/Ð/Ø-1×-@Ò-@ÀÀ{Ñ-SÔ-S�DÔ$ TÑ*øðTð
 ð 	3Ø(¨Ô+Ô9ˆJØ(¨Ô,Ô:ˆJˆJà&2Ð2ˆJ˜Ø×"Ò" :¨zÑ:Ô:Ð:ð 	×%Ò% oÑ6Ô6Ð6ð Ô˜VÔ$Ô+Ô8ð ;ØÔ  Ô(Ô/Ô:ð	
r-   c                ór   — t          | j        ¦  «         t          j        | j        ¦  «        s	d| _        dS dS )z'Make sure our htmlcov directory exists.TN)r   rÛ   r$   Úlistdirrç   ©r~   s    r+   rù   zHtmlReporter.make_directory�  s>   € å�4”>Ñ"Ô"Ð"ÝŒz˜$œ.Ñ)Ô)ð 	,Ø'+ˆDÔ$Ð$Ð$ð	,ð 	,r-   r9   r»   Úslugc                óº   — t          || j        ¦  «        }|s3t          j                             |¦  «                             dd¦  «        }|| j        d         |<   dS )z@Copy a static file into the output directory with cache busting.rÀ   Ú_rØ   N)rÌ   rÛ   r$   r%   rÄ   rÅ   rì   )r~   r»   r  rË   s       r+   Úcopy_static_filezHtmlReporter.copy_static_file£  sX   € å# C¨¬Ñ8Ô8ˆØð 	;Ý”7×#Ò# CÑ(Ô(×0Ò0°°cÑ:Ô:ˆDØ15ˆÔ˜iÔ(¨Ñ.Ð.Ð.r-   c                ó¢  — | j         D ]$}|                      t          |¦  «        ¦  «         Œ%| j        r/| j        j        €J ‚|                      | j        j        d¬¦  «         | j        ret          t          j         	                    | j
        d¦  «        dd¬¦  «        5 }|                     d¦  «         ddd¦  «         dS # 1 swxY w Y   dS dS )	z5Make local instances of static files for HTML report.Nr×   )r  z
.gitignoreÚwr/   r0   z# Created by coverage.py
*
)ÚSTATIC_FILESr  r,   r×   ru   rç   r2   r$   r%   r&   rÛ   rB   )r~   ÚstaticÚfgis      r+   rú   z+HtmlReporter.make_local_static_report_filesª  s%  € ð Ô'ð 	9ð 	9ˆFØ×!Ò!¥-°Ñ"7Ô"7Ñ8Ô8Ð8Ð8ð Œ>ð 	KØ”;Ô(Ð4Ð4Ð4Ø×!Ò! $¤+Ô"7¸kÐ!ÑJÔJÐJð
 Ô#ð 	;Ý•b”g—l’l 4¤>°<Ñ@Ô@À#ÐPWÐXÑXÔXð ;Ð\_Ø—	’	Ð9Ñ:Ô:Ð:ð;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;ð ;ð ;ð	;ð 	;s   ÂCÃCÃ	Cr�   r   Ú
index_pagerá   c                óâ   — |j         }|xj        |z  c_        | j        r,|j        dk    }|j        dk    }|r|r|xj        dz  c_        dS | j        r|j        dk    r|xj        dz  c_        dS dS )z.Determine if we'll report this file or region.r   r„   FT)	r¤   rl   rÝ   Ú	n_missingÚn_partial_branchesrn   rß   r   ro   )r~   r�   r  r]   Úno_missing_linesÚno_missing_branchess         r+   rø   zHtmlReporter.should_report½  s¥   € ð ÔˆØÐÔ˜TÑ!ÐÔàÔð 	à $¤°!Ò 3ÐØ#'Ô#:¸aÒ#?ÐØð Ð$7ð ØÐ0Ô0°AÑ5Ð0Ô0Ø�uàŒ?ð 	àÔ  AÒ%Ð%ØÐ.Ô.°!Ñ3Ð.Ô.Ø�uàˆtr-   r  r®   c           	     ó  ‡‡‡— | j                              | j        |j        |j        ¦  «        rD| j        d         j                             | j                              |j        ¦  «        ¦  «         dS | j	         
                    |j        |j        ¦  «        }t          j        d„ |j        D ¦   «         ¦  «        }d„ t          d„ |                     ¦   «         D ¦   «         ¦  «        D ¦   «         Š‰r3t#          j        d„ ‰                     ¦   «         D ¦   «         d¬¦  «        }nd}|j        D �]ÚŠg }‰j        D ][\  }}|d	k    r#|                     t+          |¦  «        ¦  «         Œ.t+          |¦  «        pd
}|                     d|› d|› d�¦  «         Œ\d                     |¦  «        ‰_        ‰j        rcˆfd„‰j        D ¦   «         }	t3          d„ |	D ¦   «         ¦  «        Št5          ‰¦  «        d                     ˆfd„|	D ¦   «         ¦  «        z   ‰_        nd‰_        ‰j        r,d                     ˆfd„‰j        D ¦   «         ¦  «        ‰_        nd‰_        ‰j        rO‰j        }
t?          |
¦  «        dk    s'J d|j                              ¦   «         › d|
› �¦   «         ‚|
d         ‰_!        nd‰_!        g }‰j"        r+|                     | j#        d         ‰j"                 ¦  «         d                     |¦  «        pd‰_$        �ŒÜtJ          j&                             | j'        |j(        ¦  «        }| j)         *                    i |j+        ¥||j,        |j-        dœ¥¦  «        }t]          ||¦  «         t_          |j(        t+          |j                              ¦   «         ¦  «        |j        j0        ¬¦  «        }| j        d         j                             |¦  «         | j          1                    |j        |¦  «         dS )a   Generate an HTML page for one source file.

        If the page on disk is already correct based on our incremental status
        checking, then the page doesn't have to be generated, and this function
        only does page summary bookkeeping.

        rc   Nc              3  ó.   K  — | ]}|j         D ]}|V — ŒŒd S r‘   )rK   )r“   Úcliner”   s      r+   r•   z/HtmlReporter.write_html_page.<locals>.<genexpr>ã  s1   è è € Ð&^Ð&^¨UÈuÌ~Ð&^Ð&^È! qÐ&^Ð&^Ð&^Ð&^Ð&^Ð&^Ð&^r-   c                ó   — i | ]\  }}||“Œ	S rY   rY   )r“   ÚiÚys      r+   ú
<dictcomp>z0HtmlReporter.write_html_page.<locals>.<dictcomp>ä  s   € Ð\Ð\Ð\¡& 1 a˜˜AÐ\Ð\Ð\r-   c              3  ó&   K  — | ]}|d          V — ŒdS )r   NrY   )r“   Úxs     r+   r•   z/HtmlReporter.write_html_page.<locals>.<genexpr>ä  s&   è è € Ð5[Ð5[¸q°a¸´dÐ5[Ð5[Ð5[Ð5[Ð5[Ð5[r-   c                ó4   — i | ]\  }}t          |¦  «        |“ŒS rY   ©rº   )r“   ÚkÚvs      r+   r"  z0HtmlReporter.write_html_page.<locals>.<dictcomp>ç  s$   € ÐFÐFÐF¡f q¨!•˜A‘” ÐFÐFÐFr-   é   )ÚindentÚwsz&nbsp;z<span class="z">z</span>r9   c                ó:   •— g | ]}t          ‰|         ¦  «        ‘ŒS rY   r&  )r“   Ú	c_contextÚcontext_codess     €r+   ú
<listcomp>z0HtmlReporter.write_html_page.<locals>.<listcomp>ø  s3   ø€ ð $ð $ð $Ø=F•J˜}¨YÔ7Ñ8Ô8ð$ð $ð $r-   c              3  ó4   K  — | ]}t          |¦  «        V — Œd S r‘   )rŸ   )r“   Úecs     r+   r•   z/HtmlReporter.write_html_page.<locals>.<genexpr>û  s(   è è € Ð DÐ D¨R¥ R¡¤Ð DÐ DÐ DÐ DÐ DÐ Dr-   c              3  óB   •K  — | ]}|                      ‰¦  «        V — Œd S r‘   )Úljust)r“   r1  Ú
code_widths     €r+   r•   z/HtmlReporter.write_html_page.<locals>.<genexpr>ü  s@   øè è € ð >ð >Ø-/�B—H’H˜ZÑ(Ô(ð>ð >ð >ð >ð >ð >r-   z,&nbsp;&nbsp; c              3  ó0   •K  — | ]}‰j         › d |› �V — ŒdS )z&#x202F;&#x219B;&#x202F;N)rI   )r“   ÚdÚldatas     €r+   r•   z/HtmlReporter.write_html_page.<locals>.<genexpr>  sD   øè è € ð 7ð 7ØEF�u”|Ð@Ð@¸QÐ@Ð@ð7ð 7ð 7ð 7ð 7ð 7r-   r„   zHad long annotations in z: r   rJ   ú Úpln)Úcontexts_jsonr²   r³   )rb   rc   r]   )2rå   Úcan_skip_filerw   r€   r°   rã   rk   r    Ú
index_inforæ   r«   r�   ÚcollectionsÚCounterr^   r›   Úmost_commonÚjsonÚdumpsÚitemsrH   rÑ   r&   r6   rM   Úmaxr    rP   rN   rQ   rO   rŸ   r\   rR   rJ   rì   rS   r$   r%   rÛ   r±   rï   ÚrenderÚ__dict__r²   r³   rE   ra   r¤   Úset_index_info)r~   r  rª   rK   r:  Ú
html_partsÚtok_typeÚtok_textÚtok_htmlÚencoded_contextsÚlongsÚcss_classesÚ	html_pathr6   r<  r4  r.  r7  s                  @@@r+   rü   zHtmlReporter.write_html_pageÓ  sr  øøø€ ð Œ9×"Ò" 4¤9¨c¬f°c´lÑCÔCð 	ØÔ˜VÔ$Ô.×5Ò5°d´i×6JÒ6JÈ3Ì<Ñ6XÔ6XÑYÔYÐYØˆFð ”L×.Ò.¨s¬v°s´|ÑDÔDˆ	åÔ&Ð&^Ð&^°i´oÐ&^Ñ&^Ô&^Ñ^Ô^ˆØ\Ð\­IÐ5[Ð5[ÀH×DXÒDXÑDZÔDZÐ5[Ñ5[Ô5[Ñ,[Ô,[Ð\Ñ\Ô\ˆØð 	!Ý œJØFÐF°×0CÒ0CÑ0EÔ0EÐFÑFÔFØðñ ô ˆMˆMð
 !ˆMà”_ð .	=ñ .	=ˆEàˆJØ&+¤lð Uð UÑ"�˜(Ø˜tÒ#Ð#Ø×%Ò%¥f¨XÑ&6Ô&6Ñ7Ô7Ð7Ð7å% hÑ/Ô/Ð;°8�HØ×%Ò%Ð&S°hÐ&SÐ&SÀ(Ð&SÐ&SÐ&SÑTÔTÐTÐTØŸš Ñ,Ô,ˆEŒJØÔ!ð 	'ð$ð $ð $ð $ØJOÔJ\ð$ñ $ô $Ð õ !Ð DÐ DÐ3CÐ DÑ DÔ DÑDÔD�
Ý$'¨
¡O¤O°b·g²gð >ð >ð >ð >Ø3Cð>ñ >ô >ñ 7ô 7ñ %�Ô!Ð!ð %'�Ô!àÔ&ð &ð "2×!6Ò!6ð 7ð 7ð 7ð 7ØJOÔJað7ñ 7ô 7ñ "ô "�”�ð "&�”àÔ%ð 	+ØÔ.�õ ˜5‘z”z Q’��ØT¨s¬v×/GÒ/GÑ/IÔ/IÐTÐTÈUÐTÐTñ '”�ð ',¨A¤h�Ô#Ð#à&*�Ô#àˆKØŒ~ð Ø×"Ò"ØÔ)¨*Ô5°e´nÔEñô ð ð "Ÿhšh {Ñ3Ô3Ð<°uˆEŒO‰Oå”G—L’L ¤°Ô1BÑCÔCˆ	ØÔ×&Ò&ðØÔ$ðà!.Ø œ]Ø œ]ð	ð ð ñ
ô 
ˆõ 	�9˜dÑ#Ô#Ð#õ ØÔ!Ý˜œ×0Ò0Ñ2Ô2Ñ3Ô3Ø”Ô%ð
ñ 
ô 
ˆ
ð
 	Ô˜Ô Ô*×1Ò1°*Ñ=Ô=Ð=ØŒ	× Ò  ¤¨zÑ:Ô:Ð:Ð:Ð:r-   r  r  c                ó  — |                       | j        d         ||¬¦  «        }t          |dt          j                             |¦  «        › �¦  «        }| j                             d|› �¦  «         | j         	                    ¦   «          dS )z*Write the file index page for this report.rc   )r  r  zfile://zWrote HTML report to N)
Úwrite_index_pagerã   r   r$   r%   Úabspathrt   Ú_messagerå   rB   )r~   r  r  Ú
index_fileÚ
print_hrefs        r+   rþ   z"HtmlReporter.write_file_index_page1  sŽ   € à×*Ò*ØÔ˜VÔ$Ø!Ø!ð +ñ 
ô 
ˆ
õ ! Ð-Tµr´w·²ÀzÑ7RÔ7RÐ-TÐ-TÑUÔUˆ
ØŒ×ÒÐC°zÐCÐCÑDÔDÐDð 	Œ	�ŠÑÔÐÐÐr-   r  úIterable[FileToReport]c                óÞ  ‡— |D �]­}d„ |j                              ¦   «         D ¦   «         }t          |j                              ¦   «                              ¦   «         ¦  «        }|j                              ¦   «         }|D �]2Š| j        ‰         }t          t          d|dz   ¦  «        ¦  «        }|D ]}|j	        ‰k    rŒ||j
        z  }Œt          |j        ¦  «        }	|	                     ˆfd„|D ¦   «         ¦  «         |	                     |g¦  «         |D ]þ}|j	        ‰k    rŒ|	                     |j
        ¦  «        }
|                      |
|¦  «        sŒ?|j                             d¦  «        d                              d¦  «        }|j                             t+          |j        › d|j        › �t1          |j                              ¦   «         ¦  «        dt1          |¦  «        › d	�t1          |j        ¦  «        z   d
z   |
j        ¬¦  «        ¦  «         Œÿ|	                     |¦  «        }
|                      |
|¦  «        rp|j                             t+          |j        t1          |j                              ¦   «         ¦  «        ddt1          ‰¦  «        › d�z   d
z   |
j        ¬¦  «        ¦  «         �Œ4�Œ¯| j                             ¦   «         D ] \  Š}‰dk    r|                      |¦  «         Œ!dS )z,Write the other index pages for this report.c                ó   — g | ]
}|d          ‘ŒS )r   rY   )r“   rÒ   s     r+   r/  z9HtmlReporter.write_region_index_pages.<locals>.<listcomp>B  s   € ÐKÐKÐK¨˜D œGÐKÐKÐKr-   r„   c              3  ó<   •K  — | ]}|j         ‰k    ¯|j        V — Œd S r‘   )Úkindr^   )r“   r¸   ri   s     €r+   r•   z8HtmlReporter.write_region_index_pages.<locals>.<genexpr>P  s+   øè è € Ð$PÐ$P°ÀÄÈ4ÂÀ Q¤WÀÀÀÀÐ$PÐ$Pr-   rÀ   rö   r  z#tz<data value='z'>z</data>)rb   rc   rd   r]   z<data value=''>z<span class='no-noun'>(no z)</span>rc   N)r€   rý   rŸ   ÚsourceÚ
splitlinesÚcode_regionsrã   ÚsetÚrangerY  r^   r   r�   Úadd_regionsÚnarrowrø   ÚnameÚ
rpartitionÚlstriprk   r    ra   r±   r…   rÑ   r\   r¤   rB  rP  )r~   r  r  Úregion_nounsÚ	num_linesÚregionsÚ	page_dataÚoutside_linesÚregionÚnarrowerr�   Úsorting_namer  ri   s                @r+   rÿ   z%HtmlReporter.write_region_index_pages?  s"  ø€ à"ð 3	ñ 3	ˆCØKÐK°´×0HÒ0HÑ0JÔ0JÐKÑKÔKˆLÝ˜CœFŸMšM™OœO×6Ò6Ñ8Ô8Ñ9Ô9ˆIØ”f×)Ò)Ñ+Ô+ˆGà$ð .ñ .�Ø Ô,¨TÔ2�	å #¥E¨!¨Y¸©]Ñ$;Ô$;Ñ <Ô <�Ø%ð 2ð 2�FØ”{ dÒ*Ð*Ø Ø! V¤\Ñ1�M�Må+¨C¬LÑ9Ô9�Ø×$Ò$Ð$PÐ$PÐ$PÐ$P°gÐ$PÑ$PÔ$PÑPÔPÐPØ×$Ò$ m _Ñ5Ô5Ð5à%ð ð �FØ”{ dÒ*Ð*Ø Ø'Ÿš¨v¬|Ñ<Ô<�HØ×-Ò-¨h¸	ÑBÔBð !Ø Ø#)¤;×#9Ò#9¸#Ñ#>Ô#>¸rÔ#B×#IÒ#IÈ#Ñ#NÔ#N�LØÔ'×.Ò.Ý!Ø#&Ô#4Ð FÐ F¸¼Ð FÐ FÝ!'¨¬×(@Ò(@Ñ(BÔ(BÑ!CÔ!Cà Hµ°|Ñ0DÔ0DÐ HÐ HÐ HÝ"(¨¬Ñ"5Ô"5ñ!6à"+ñ!,ð "*Ô!1ð	ñ 	ô 	ñô ð ð ð $Ÿ?š?¨=Ñ9Ô9�Ø×%Ò% h°	Ñ:Ô:ð ØÔ'×.Ò.Ý!Ø #Ô 1Ý!'¨¬×(@Ò(@Ñ(BÔ(BÑ!CÔ!Cà 1Ø"U½vÀd¹|¼|Ð"UÐ"UÐ"Uñ!Và"+ñ!,ð "*Ô!1ð	ñ 	ô 	ñô ð ùñG.ð` !%Ô 0× 6Ò 6Ñ 8Ô 8ð 	2ð 	2ÑˆD�*Ø�vŠ~ˆ~Ø×%Ò% jÑ1Ô1Ð1øð	2ð 	2r-   Úkwargsc                óB  ‡— dx}}‰j         x}r t          |‰j        ‰j        ¦  «        }|› d�}‰j        x}r&t          |d‰j        z   d‰j        z   ¦  «        }|› d�}ˆfd„| j                             ¦   «         D ¦   «         }‰j        ‰j        ‰j        ‰j        dk    r‰j        nd| j        ||dd|dœ
}| 	                    |¦  «         | j
                             |¦  «        }	t          j                             | j        ‰j        ¦  «        }
t#          |
|	¦  «         |
S )z^Write an index page specified by `index_page`.

        Returns the filename created.
        r9   z" skipped due to complete coverage.zempty z	 skipped.c                ó”   •— g | ]D}|j                              ¦   «         |j        ‰j        k    r|j        nd |j        ‰j        k    dœ‘ŒES )r9   )Úlabelrb   Úcurrent)r   rÕ   ri   rj   )r“   Úipr  s     €r+   r/  z1HtmlReporter.write_index_page.<locals>.<listcomp>‡  sd   ø€ ð 
ð 
ð 
ð ð	 œŸšÑ*Ô*Ø&(¤g°´Ò&@Ð&@�r”{�{ÀbØœ7 j¤oÒ5ðð ð
ð 
ð 
r-   rc   )
rf  rl   ri   Úregion_nounrÝ   Úskipped_covered_msgÚskipped_empty_msgr  r  Úindex_buttons)rn   r   ri   ro   rã   Úvaluesrk   rl   rÝ   rÂ   rí   rD  r$   r%   r&   rÛ   rj   rE   )r~   r  rl  rs  rt  r´   Úthingsru  Úrender_datar6   rS  s    `         r+   rP  zHtmlReporter.write_index_pagez  sc  ø€ ð
 35Ð4ÐÐ/ØÔ0Ð0ˆ1ð 	PÝ˜A˜zœ°
Ô0AÑBÔBˆFØ%+Ð"OÐ"OÐ"OÐØÔ.Ð.ˆ1ð 	5Ý˜A˜x¨*¬/Ñ9¸8ÀjÔFWÑ;WÑXÔXˆFØ#)Ð 4Ð 4Ð 4Ðð
ð 
ð 
ð 
ð Ô&×-Ò-Ñ/Ô/ð
ñ 
ô 
ˆð "Ô+Ø Ô'Ø”OØ.8¬oÀÒ.GÐ.G˜:œ?˜?ÈRØ Ô-Ø#6Ø!2ØØØ*ð
ð 
ˆð 	×Ò˜6Ñ"Ô"Ð"ØŒ×%Ò% kÑ2Ô2ˆå”W—\’\ $¤.°*Ô2EÑFÔFˆ
Ý�:˜tÑ$Ô$Ð$ØÐr-   Nr¬   )ri   r    rð   r    r!   rh   )ró   r   r!   rô   ©r!   r7   )r9   )r»   r    r  r    r!   r7   )r�   r   r  rh   r!   rá   )r  r®   r!   r7   )r  r    r  r    r!   r7   )r  rU  r!   r7   )r  rh   rl  r    r!   r    )rT   rU   rV   rW   r  r   râ   r	  rù   r  rú   rø   rü   rþ   rÿ   rP  rY   r-   r+   rÎ   rÎ     s  € € € € € ØÐðð ð €Lð8Tð 8Tð 8Tð 8Tðt

ð 

ð 

ð 

ð9
ð 9
ð 9
ð 9
ðv,ð ,ð ,ð ,ð6ð 6ð 6ð 6ð 6ð;ð ;ð ;ð ;ð&ð ð ð ð,\;ð \;ð \;ð \;ð|ð ð ð ð92ð 92ð 92ð 92ðv&ð &ð &ð &ð &ð &r-   rÎ   c                  óD   — e Zd ZU dZdZded<    ee¬¦  «        Zded<   dS )	ÚFileInfozHSummary of the information from last rendering, to avoid duplicate work.r9   r    Úhashre   ra   ÚindexN)	rT   rU   rV   rW   r|  rX   r   ra   r}  rY   r-   r+   r{  r{  £  sC   € € € € € € àRÐRà€D€N€N€N�NØ�u¨YÐ7Ñ7Ô7€EÐ7Ð7Ð7Ñ7Ð7Ð7r-   r{  c                  ó^   — e Zd ZdZdZdZdZdd	„Zdd
„Zdd„Z	dd„Z
dd„Zdd„Zd d„Zd!d„ZdS )"rä   a‹  Logic and data to support incremental reporting.

    When generating an HTML report, often only a few of the source files have
    changed since the last time we made the HTML report.  This means previously
    created HTML pages can be reused without generating them again, speeding
    the command.

    This class manages a JSON data file that captures enough information to
    know whether an HTML page for a .py file needs to be regenerated or not.
    The data file also needs to store all the information needed to create the
    entry for the file on the index page so that if the HTML page is reused,
    the index page can still be created to refer to it.

    The data looks like::

        {
            "note": "This file is an internal implementation detail ...",
            // A fixed number indicating the data format.  STATUS_FORMAT
            "format": 5,
            // The version of coverage.py
            "version": "7.4.4",
            // A hash of a number of global things, including the configuration
            // settings and the pyfile.html template itself.
            "globals": "540ee119c15d52a68a53fe6f0897346d",
            "files": {
                // An entry for each source file keyed by the flat_rootname().
                "z_7b071bdc2a35fa80___init___py": {
                    // Hash of the source, the text of the .py file.
                    "hash": "e45581a5b48f879f301c0f30bf77a50c",
                    // Information for the index.html file.
                    "index": {
                        "url": "z_7b071bdc2a35fa80___init___py.html",
                        "file": "cogapp/__init__.py",
                        "description": "",
                        // The Numbers for this file.
                        "nums": { "precision": 2, "n_files": 1, "n_statements": 43, ... }
                    }
                },
                ...
            }
        }

    zstatus.jsoné   zÊThis file is an internal implementation detail to speed up HTML report generation. Its format can change at any time. You might be looking for the JSON report: https://coverage.rtfd.io/cmd.html#cmd-jsonrÛ   r    r!   r7   c                ó<   — || _         |                      ¦   «          d S r‘   )rÛ   Ú_reset)r~   rÛ   s     r+   r   zIncrementalChecker.__init__à  s   € Ø"ˆŒØ�Š‰Œˆˆˆr-   c                ó"   — d| _         i | _        dS )z5Initialize to empty. Causes all files to be reported.r9   N)ÚglobalsrÐ   r  s    r+   r�  zIncrementalChecker._resetä  s   € àˆŒØ*,ˆŒ
ˆ
ˆ
r-   c                ó˜  — 	 t           j                             | j        | j        ¦  «        }t          |d¬¦  «        5 }t          j        |¦  «        }ddd¦  «         n# 1 swxY w Y   |d         | j        k    rd}n5|d         t          j
        k    rd}nd}n# t          t          f$ r d}Y nw xY w|r‚i | _        |d                              ¦   «         D ]Q\  }}|d	         }t          di |¤Ž}t!          di |d
         ¤Ž|_        t%          |d         |¬¦  «        }	|	| j        |<   ŒR|d         | _        dS |                      ¦   «          dS )z)Read the information we stored last time.r/   r0   NÚformatFÚversionTrÐ   r}  r]   r|  )r|  r}  rƒ  rY   )r$   r%   r&   rÛ   ÚSTATUS_FILEr2   r@  ÚloadÚSTATUS_FORMATrt   rÔ   ÚOSErrorÚ
ValueErrorrÐ   rB  ra   r   r]   r{  rƒ  r�  )
r~   Ústatus_fileÚfstatusÚstatusÚusablerj   ÚfiledictÚ	indexdictÚ
index_itemÚfileinfos
             r+   r3   zIncrementalChecker.readé  sº  € ð	Ýœ'Ÿ,š, t¤~°tÔ7GÑHÔHˆKÝ�k¨GÐ4Ñ4Ô4ð ,¸Ýœ 7Ñ+Ô+�ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,ð �hÔ 4Ô#5Ò5Ð5Ø��Ø˜	Ô"¥hÔ&:Ò:Ð:Ø��à��øõ �Ð$ð 	ð 	ð 	àˆFˆFˆFð	øøøð ð 	ØˆDŒJØ&,¨W¤o×&;Ò&;Ñ&=Ô&=ð 0ð 0Ñ"�˜(Ø$ WÔ-�	Ý&Ð3Ð3¨Ð3Ð3�
Ý")Ð">Ð">¨I°fÔ,=Ð">Ð">�
”Ý#Ø! &Ô)Ø$ðñ ô �ð (0�”
˜8Ñ$Ð$Ø! )Ô,ˆDŒLˆLˆLà�KŠK‰MŒMˆMˆMˆMs4   ‚;B ½AÁB ÁA"Á"B Á%A"Á&B ÂB/Â.B/c                ób  — t           j                             | j        | j        ¦  «        }| j        | j        t          j        | j	        d„ | j
                             ¦   «         D ¦   «         dœ}t          |dd¬¦  «        5 }t          j        ||d¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS )	zWrite the current status.c                ó>   — i | ]\  }}|t          j        |¦  «        “ŒS rY   )ÚdataclassesÚasdict)r“   r   Úfinfos      r+   r"  z,IncrementalChecker.write.<locals>.<dictcomp>  s)   € Ð^Ð^Ð^¹<¸5À%�e�[Ô/°Ñ6Ô6Ð^Ð^Ð^r-   )Únoter…  r†  rƒ  rÐ   r  r/   r0   )ú,ú:)Ú
separatorsN)r$   r%   r&   rÛ   r‡  ÚNOTEr‰  rt   rÔ   rƒ  rÐ   rB  r2   r@  Údump)r~   rŒ  Ústatus_datarD   s       r+   rB   zIncrementalChecker.write	  sÿ   € å”g—l’l 4¤>°4Ô3CÑDÔDˆà”IØÔ(ÝÔ+Ø”|Ø^Ð^È4Ì:×K[ÒK[ÑK]ÔK]Ð^Ñ^Ô^ð
ð 
ˆõ �+˜s¨WÐ5Ñ5Ô5ð 	@¸ÝŒI�k 4°JÐ?Ñ?Ô?Ð?ð	@ð 	@ð 	@ñ 	@ô 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øøøð 	@ð 	@ð 	@ð 	@ð 	@ð 	@s   Á?B$Â$B(Â+B(rw   r   c                óÎ   — t          ¦   «         }|D ]}|                     |¦  «         Œ|                     ¦   «         }| j        |k    r|                      ¦   «          || _        dS dS )a  Check the global data that can affect incremental reporting.

        Pass in whatever global information could affect the content of the
        HTML pages.  If the global data has changed since last time, this will
        clear the data so that all files are regenerated.

        N)r   rÂ   rÃ   rƒ  r�  )r~   rw   rÈ   r6  Úthese_globalss        r+   r÷   z$IncrementalChecker.check_global_data  sg   € õ ‰HŒHˆØð 	ð 	ˆAØ�HŠH�Q‰KŒKˆKˆKØŸš™œˆØŒ<˜=Ò(Ð(Ø�KŠK‰MŒMˆMØ(ˆDŒLˆLˆLð )Ð(r-   r	   r€   r   r°   rá   c                ó`  — t          ¦   «         }|                     |                     ¦   «                              d¦  «        ¦  «         t	          ||j        |¦  «         |                     ¦   «         }| j                             |t          ¦   «         ¦  «        }||j
        k    rdS ||_
        dS )a  Can we skip reporting this file?

        `data` is a CoverageData object, `fr` is a `FileReporter`, and
        `rootname` is the name being used for the file.

        Returns True if the HTML page is fine as-is, False if we need to recreate
        the HTML page.

        r/   TF)r   rÂ   rZ  rC   r
   rj   rÃ   rÐ   Ú
setdefaultr{  r|  )r~   rw   r€   r°   rÈ   Ú	this_hashÚ	file_infos          r+   r;  z IncrementalChecker.can_skip_file&  s‘   € õ ‰HŒHˆØ	�Š�—’‘”×#Ò# GÑ,Ô,Ñ-Ô-Ð-Ý˜˜rœ{¨AÑ.Ô.Ð.Ø—K’K‘M”Mˆ	à”J×)Ò)¨(µH±J´JÑ?Ô?ˆ	à˜	œÒ&Ð&à�4ð 'ˆIŒNØ�5r-   r   ra   c                óZ   — | j                              |t          ¦   «         ¦  «        j        S )z/Get the information for index.html for `fname`.)rÐ   r£   r{  r}  )r~   r   s     r+   r<  zIncrementalChecker.index_info?  s   € àŒz�~Š~˜e¥X¡Z¤ZÑ0Ô0Ô6Ð6r-   Úinfoc                ó^   — || j                              |t          ¦   «         ¦  «        _        dS )z/Set the information for index.html for `fname`.N)rÐ   r£  r{  r}  )r~   r   r§  s      r+   rF  z!IncrementalChecker.set_index_infoC  s&   € à9=ˆŒ
×Ò˜e¥X¡Z¤ZÑ0Ô0Ô6Ð6Ð6r-   N)rÛ   r    r!   r7   ry  )rw   r   r!   r7   )rw   r	   r€   r   r°   r    r!   rá   )r   r    r!   ra   )r   r    r§  ra   r!   r7   )rT   rU   rV   rW   r‡  r‰  r�  r   r�  r3   rB   r÷   r;  r<  rF  rY   r-   r+   rä   rä   «  sÛ   € € € € € ð*ð *ðX  €KØ€Mð	Mð 	ðð ð ð ð-ð -ð -ð -ð
ð ð ð ð@@ð @ð @ð @ð)ð )ð )ð )ð ð ð ð ð27ð 7ð 7ð 7ð>ð >ð >ð >ð >ð >r-   rä   r¹   c                óV   — |                       dd¦  «                              dd¦  «        S )z\HTML-escape the text in `t`.

    This is only suitable for HTML text, not attributes.

    ú&z&amp;ú<z&lt;)rÅ   )r¹   s    r+   rÑ   rÑ   K  s(   € ð �9Š9�S˜'Ñ"Ô"×*Ò*¨3°Ñ7Ô7Ð7r-   Úratioútuple[int, int]c                ó   —  dj         | Ž S )zEFormat a pair of numbers so JavaScript can read them in an attribute.z{} {})r…  )r¬  s    r+   rÒ   rÒ   U  s   € àˆ7Œ>˜5Ð!Ð!r-   rj   c                ó.   — t          j        dd| ¦  «        S )zƒReturn a prettier version of `filename` for display.

    This is a filter for the template engine, so HTML output is literal.
    z[/\\]z<span class="sep">\g<0></span>)r?   r@   )rj   s    r+   rÓ   rÓ   Z  s   € õ
 Œ6�(Ð=¸xÑHÔHÐHr-   )r   r    r!   r    )r   r    r6   r    r!   r7   )r´   rm   r!   r    )r»   r    r¼   r    r!   r    )r¹   r    r!   r    )r¬  r­  r!   r    )rj   r    r!   r    )HrW   Ú
__future__r   r=  r–  rê   Ú	functoolsr@  r$   r?   ÚstringÚcollections.abcr   r   r   Útypingr   r   rt   Úcoverage.datar	   r
   Úcoverage.exceptionsr   Úcoverage.filesr   Úcoverage.miscr   r   r   r   r   r   r   r   Úcoverage.report_corer   Úcoverage.resultsr   r   r   Úcoverage.templiter   Úcoverage.typesr   r   Úcoverage.versionr   r   Úcoverage.pluginsr   r,   r5   rE   rG   r[   ra   rh   rq   r®   Úascii_lettersÚdigitsr¶   Úcacherº   rÌ   rÎ   r{  rä   rÑ   rÒ   rÓ   rY   r-   r+   ú<module>rÂ     sš  ðð &Ð %à "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø 	€	€	€	Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %à €€€Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø +Ð +Ð +Ð +Ð +Ð +Ø (Ð (Ð (Ð (Ð (Ð (ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 8Ð 7Ð 7Ð 7Ð 7Ð 7Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø &Ð &Ð &Ð &Ð &Ð &Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø $Ð $Ð $Ð $Ð $Ð $àð .Ø!Ð!Ð!Ð!Ð!Ð!Ø-Ð-Ð-Ð-Ð-Ð-ð €^�BÑÔ€ðð ð ð ð ð  ð  ð  ð>ð >ð >ð >ð ðð ð ð ð ñ ô ñ „ðð$ ðð ð ð ð ñ ô ñ „ðð ð3ð 3ð 3ð 3ð 3ñ 3ô 3ñ „ð3ð ð	ð 	ð 	ð 	ð 	ñ 	ô 	ñ „ð	ðjð jð jð jð jñ jô jð jðZ-ð -ð -ð -ð -ñ -ô -ð -ð Ô  6¤=Ñ0Ð3PÑP€	ð „ð	ð 	ð 	ñ „ð	ðð ð ð ð"Pð Pð Pð Pð Pñ Pô Pð Pðf ð8ð 8ð 8ð 8ð 8ñ 8ô 8ñ „ð8ðZ>ð Z>ð Z>ð Z>ð Z>ñ Z>ô Z>ð Z>ð@8ð 8ð 8ð 8ð"ð "ð "ð "ð
Ið Ið Ið Ið Ið Ir-   