Ë
    oPêjÅ|  ã                  óÔ  — 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ZddlmZ ddlmZmZ ddl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/m0Z0 ddl1m2Z2 erddlm3Z3 ddl4m5Z5  e#e	«      Z	d-d„Z6d-d„Z7d.d„Z8e G d„ d«      «       Z9e G d„ d«      «       Z:e G d„ d«      «       Z;e G d„ d«      «       Z< G d„ d«      Z= G d „ d!«      Z>ej~                  ej€                  z   d"z   ZAej„                  d/d#„«       ZCd0d$„ZD G d%„ d&«      ZEe G d'„ d(«      «       ZF G d)„ d*«      ZGd1d+„ZHd2d,„ZIy)3zHTML reporting for coverage.py.é    )ÚannotationsN)ÚIterable)Ú	dataclassÚfield)Úescape)Ú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)ÚFileReporterc                óÈ   — t         j                  j                  t         j                  j                  t        «      d«      }t         j                  j                  || «      }|S )z4Return the path to an "htmlfiles" data file of ours.Ú	htmlfiles)ÚosÚpathÚjoinÚdirnameÚ__file__)ÚfnameÚ
static_dirÚstatic_filenames      úR/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/coverage/html.pyÚdata_filenamer+   4   s=   € ä—‘—‘œbŸg™gŸo™o¬hÓ7¸ÓE€JÜ—g‘g—l‘l :¨uÓ5€OØÐó    c                óz   — t        t        | «      d¬«      5 }|j                  «       cddd«       S # 1 sw Y   yxY w)z+Return the contents of a data file of ours.úutf-8©ÚencodingN)Úopenr+   Úread)r'   Ú	data_files     r*   Ú	read_datar4   ;   s2   € ä	Œm˜EÓ"¨WÔ	5ð  ¸Ø�~‰~Ó÷ ÷  ò  ús   —1±:c                óÜ   — t        j                  dd|t         j                  ¬«      dz   }t        | d«      5 }|j	                  |j                  dd«      «       ddd«       y# 1 sw Y   yxY w)	z*Write `html` to `fname`, properly encoded.z(\A\s+)|(\s+$)Ú )Úflagsú
ÚwbÚasciiÚxmlcharrefreplaceN)ÚreÚsubÚ	MULTILINEr1   ÚwriteÚencode)r'   ÚhtmlÚfouts      r*   Ú
write_htmlrC   A   sY   € ä�6‰6Ð# R¨´R·\±\ÔBÀTÑI€DÜ	ˆe�TÓ	ð >˜dØ�
‰
�4—;‘;˜wÐ(;Ó<Ô=÷>÷ >ñ >ús   ·"A"Á"A+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<   y)ÚLineDataz-The data for each source line of HTML output.zlist[tuple[str, str]]Útokensr   ÚnumberÚstrÚcategoryz	list[str]ÚcontextsÚcontexts_labelÚcontext_listÚshort_annotationsÚlong_annotationsr6   rA   Nz
str | NoneÚcontext_strÚannotateÚannotate_longÚ	css_class)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__rA   rO   rP   rQ   rR   © r,   r*   rE   rE   H   sd   … á7à!Ó!ØƒOØƒMØÓØÓØÓØ Ó ØÓØ€Dˆ#ƒNØ"€K�Ó"Ø€HˆjÓØ $€M�:Ó$Ø€IˆsÔr,   rE   c                  ó0   — e Zd ZU dZded<   ded<   ded<   y)	ÚFileDataz-The data for each source file of HTML output.rH   Úrelative_filenamer   Únumszlist[LineData]ÚlinesN©rS   rT   rU   rV   rW   rX   r,   r*   rZ   rZ   [   s   … á7àÓØ
ƒMØÔr,   rZ   c                  óX   — 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	<   y
)Ú	IndexItemz:Information for each index entry, to render an index page.r6   rH   ÚurlÚfileÚdescription©Údefault_factoryr   r\   N)rS   rT   rU   rV   ra   rW   rb   rc   r   r   r\   rX   r,   r*   r`   r`   d   s0   … áDà€CˆƒMØ€Dˆ#ƒNØ€K�ÓÙ¨'Ô2€Dˆ'Ô2r,   r`   c                  óX   — 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<   y)Ú	IndexPagezData for each index page.rH   Únounr   Úfilenamezlist[IndexItem]Ú	summariesr   ÚtotalsÚintÚskipped_covered_countÚskipped_empty_countNr^   rX   r,   r*   rg   rg   n   s+   … á#à
ƒIØƒKØƒMØÓØƒOØÓØÔr,   rg   c                  ó$   — e Zd ZdZdZdd„Zdd„Zy)ÚHtmlDataGenerationz8Generate structured data to be turned into HTML reports.z(empty)c                óÀ  — || _         | j                   j                  | _        | j                   j                  «       | _        | j                  j	                  «       | _        | j                  j
                  r9| j                  j                  «       dhk(  r| j                   j                  d«       | j                  j                  | j                  j                  «       y )Nr6   zNo contexts were measured)
ÚcoverageÚconfigÚget_dataÚdataÚhas_arcsÚshow_contextsÚmeasured_contextsÚ_warnÚset_query_contextsÚreport_contexts)ÚselfÚcovs     r*   Ú__init__zHtmlDataGeneration.__init__€   s•   € ØˆŒØ—m‘m×*Ñ*ˆŒØ—M‘M×*Ñ*Ó,ˆŒ	ØŸ	™	×*Ñ*Ó,ˆŒØ�;‰;×$Ò$Ø�y‰y×*Ñ*Ó,°°Ò4Ø—‘×#Ñ#Ð$?Ô@Ø�	‰	×$Ñ$ T§[¡[×%@Ñ%@ÕAr,   c                ó‚  ‡ — ‰ j                   r|j                  «       }|j                  }ni }g }‰ j                  j                  r%‰ j
                  j                  |j                  «      }g }|j                  «       }i }t        |d«      r|j                  «       }t        |j                  «       d¬«      D �]à  \  }	}
dx}}g }g }|	|j                  v rd}�n+|	|j                  v rd}�n‰ j                   r¤|	|v r d}||	   }t        |«      ||	   d   k(  r'|j!                  d	«       |j!                  d
|	› d�«       nÇ||	   D ]U  }|dk  r|j!                  d«       n|j!                  t#        |«      «       |j!                  |j%                  |	||«      «       ŒW ni|	|j&                  v rd}nX|j)                  |	«      x}rE||j                  v rd}n4||j                  v rd}n#‰ j                   r||v rd}n||j&                  v rd}g }d}g }|rg‰ j                  j                  rQt+        ˆ fd„j)                  |	d«      D «       «      }|‰ j,                  gk(  r‰ j,                  }nt        |«      › d�}|}|j!                  t/        |
|	|xs ||||||¬«      «       �Œã t1        |j3                  «       |j4                  |¬«      }|S )z.Produce the data needed for one file's report.Úmultiline_mapé   )Ústartr6   ÚexcÚmisÚparr   Úanywherezline z5 didn't jump anywhere: it always raised an exception.ÚexitÚrunÚexc2Úmis2Úpar2Úrun2c              3  ó>   •K  — | ]  }|xs ‰j                   –— Œ y ­w©N)ÚEMPTY)Ú.0Úcr|   s     €r*   ú	<genexpr>z3HtmlDataGeneration.data_for_file.<locals>.<genexpr>Ë   s   øè ø€ Ò'd¸A¨ª¨T¯Z©Z«Ñ'dùs   ƒrX   z ctx)rF   rG   rI   rJ   rK   rL   rM   rN   )r[   r\   r]   )rv   Úmissing_branch_arcsÚarcs_executedrs   rw   ru   Úcontexts_by_linenori   Úbranch_statsÚhasattrr€   Ú	enumerateÚsource_token_linesÚexcludedÚmissingÚlenÚappendrH   Úmissing_arc_descriptionÚ
statementsÚgetr   r�   rE   rZ   r[   Únumbers)r|   ÚfrÚanalysisr“   r”   r•   r]   r–   r€   ÚlinenorF   rI   Ú	category2rM   rN   ÚmbaÚbÚ
first_linerJ   rK   rL   Ú	file_datas   `                     r*   Údata_for_filez HtmlDataGeneration.data_for_fileŠ   så  ø€ à�=Š=Ø"*×">Ñ">Ó"@ÐØ$×2Ñ2‰Mà"$ÐØˆMà�;‰;×$Ò$Ø!%§¡×!=Ñ!=¸h×>OÑ>OÓ!PÐàˆØ×,Ñ,Ó.ˆØˆÜ�2�Ô'Ø×,Ñ,Ó.ˆMä'¨×(=Ñ(=Ó(?ÀqÔIó A	‰NˆF�Fà#%Ð%ˆH�yØ "ÐØ!Ðà˜×*Ñ*Ñ*Ø ’Ø˜8×+Ñ+Ñ+Ø ’Ø—’ 6Ð-@Ñ#@Ø �Ø)¨&Ñ1�Ü�s“8˜|¨FÑ3°AÑ6Ò6à%×,Ñ,¨ZÔ8Ø$×+Ñ+Ø ˜xÐ'\Ð]õð 1°Ñ8ò ˜Ø˜qš5Ø-×4Ñ4°VÕ<à-×4Ñ4´S¸³VÔ<Ø(×/Ñ/Ø×6Ñ6°v¸qÀ-ÓPõñð ˜8×.Ñ.Ñ.Ø ‘Ø,×0Ñ0°Ó8Ð8�Ð8Ø ×!2Ñ!2Ñ2Ø &‘IØ 8×#3Ñ#3Ñ3Ø &‘IØ—]’] zÐ5HÑ'HØ &‘Ið   8×#6Ñ#6Ñ6Ø &�IàˆHØˆNØˆLÙ˜DŸK™K×5Ò5Ü'Ó'dÐAS×AWÑAWÐX^Ð`bÓAcÔ'dÓd�Ø §
¡
˜|Ò+Ø%)§Z¡Z‘Nä(+¨H« °dÐ%;�NØ#+�Là�L‰LÜØ!Ø!Ø%Ò2¨Ø%Ø#1Ø!-Ø&7Ø%5ô	öðmA	ôF Ø ×2Ñ2Ó4Ø×!Ñ!Øô
ˆ	ð Ðr,   N©r}   r   ÚreturnÚNone)r¢   r   r£   r   r¬   rZ   )rS   rT   rU   rV   r�   r~   rª   rX   r,   r*   rp   rp   {   s   „ ÙBà€EóBô[r,   rp   c                  ó   — e Zd ZdZdd„Zy)ÚFileToReportz#A file we're considering reporting.c                ó    — || _         || _        t        |j                  «       «      | _        | j                  dz   | _        dx| _        | _        y )Nz.htmlr6   )r¢   r£   r   r[   ÚrootnameÚhtml_filenameÚ	prev_htmlÚ	next_html)r|   r¢   r£   s      r*   r~   zFileToReport.__init__ë   sD   € ØˆŒØ ˆŒÜ% b×&:Ñ&:Ó&<Ó=ˆŒØ!Ÿ]™]¨WÑ4ˆÔØ*,Ð,ˆŒ˜�r,   N)r¢   r   r£   r   r¬   r­   )rS   rT   rU   rV   r~   rX   r,   r*   r¯   r¯   è   s
   „ Ù-ô-r,   r¯   z!#$%'()*+,-./:;=?@[]^_`{|}~c                ó¶   — | dk(  r	t         d   S g }| r7t        | t        t         «      «      \  } }|j                  t         |   «       | rŒ7dj	                  |«      S )zACreate a short HTML-safe string from an integer, using HTML_SAFE.r   r6   )Ú	HTML_SAFEÚdivmodrœ   r�   r$   )ÚnÚrÚts      r*   Ú
encode_intr»   ö   sV   € ð 	ˆA‚vÜ˜‰|Ðà
€AÙ
Ü�aœœY›Ó(‰ˆˆ1Ø	�‰”˜1‘Ôò ð �7‰7�1‹:Ðr,   c                óÐ  — t        | d«      5 }|j                  «       }ddd«       t        «       }|j                  «       |j	                  «       dd }t
        j                  j                  | «      }|j                  dd|› d�«      }t        t
        j                  j                  ||«      d«      5 }|j                  |«       ddd«       |S # 1 sw Y   Œ²xY w# 1 sw Y   |S xY w)zsCopy `src` to `dest_dir`, adding a hash to the name.

    Returns the updated destination file name with hash.
    ÚrbNé   ú.Ú_cb_r9   )r1   r2   r   ÚupdateÚ	hexdigestr"   r#   ÚbasenameÚreplacer$   r?   )ÚsrcÚdest_dirÚfÚtextÚhÚ
cache_bustÚsrc_baseÚdests           r*   Úcopy_with_cache_bustrÍ     sÂ   € ô
 
ˆc�4‹ð ˜AØ�v‰v‹xˆ÷ä‹€AØ‡H�HˆT„NØ—‘“˜r Ð"€JÜ�w‰w×Ñ Ó$€HØ×Ñ˜C 4¨
 |°1Ð!5Ó6€DÜ	Œb�g‰g�l‰l˜8 TÓ*¨DÓ	1ð °QØ	�‰�Œ÷à€K÷ð ú÷à€Kús   �CÂ3CÃCÃC%c                  ón   — e Zd ZdZ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dd„Zdd„Zdd„Zy)ÚHtmlReporterzHTML reporting.)z	style.csszcoverage_html.jszkeybd_closed.pngzfavicon_32.pngc                óÒ  — || _         | j                   j                  | _        | j                  j                  | _        | j                  j                  | _        | j
                  €| j                  j
                  | _        | j                  j                  | _        | j                  €| j                  j                  | _        | j                  j                  }t        | j                  j                  «      | _
        | j                   j                  «       | _        | j                  j                  «       | _        d| j                  dd«      i| _        t!        | j                  «      | _        t%        | j                   «      | _        d| _        d | _        d | _        t.        t0        t2        t4        t         j6                  |t9        t:        j:                  j=                  «       «      | j                  | j                  i dddddd	d
ddœdœ| _        tA        tC        d«      | j>                  «      | _"        tC        d«      | _#        tA        | jF                  | j>                  «      | _$        y )Nrb   Ú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Œ   )r   ÚpairÚpretty_filer   Ú__version__ÚtitleÚ
time_stampÚ	extra_cssrv   ÚstaticsrI   ú
index.htmlzpyfile.html)%rr   rs   Úhtml_dirÚ	directoryÚhtml_skip_coveredÚskip_coveredÚhtml_skip_emptyÚ
skip_emptyÚ
html_titleÚboolr×   rt   ru   rv   Únew_index_pageÚindex_pagesÚIncrementalCheckerÚincrrp   ÚdatagenÚdirectory_was_emptyÚfirst_frÚfinal_frr   rÒ   rÓ   r   rÔ   r   ÚdatetimeÚnowÚtemplate_globalsr   r4   Ú
index_tmplÚpyfile_html_sourceÚsource_tmpl)r|   r}   rÕ   s      r*   r~   zHtmlReporter.__init__   sØ  € ØˆŒØ—m‘m×*Ñ*ˆŒØŸ™×-Ñ-ˆŒà ŸK™K×9Ñ9ˆÔØ×ÑÐ$Ø $§¡× 8Ñ 8ˆDÔØŸ+™+×5Ñ5ˆŒØ�?‰?Ð"Ø"Ÿk™k×4Ñ4ˆDŒOà—‘×&Ñ&ˆä˜dŸk™k×3Ñ3Ó4ˆŒà—M‘M×*Ñ*Ó,ˆŒ	ØŸ	™	×*Ñ*Ó,ˆŒð �D×'Ñ'¨°Ó8ð2
ˆÔô ' t§~¡~Ó6ˆŒ	Ü)¨$¯-©-Ó8ˆŒØ#(ˆÔ ØˆŒØˆŒô ÜÜ&äÜ#×/Ñ/ØÜ/´×0AÑ0A×0EÑ0EÓ0GÓHØŸ™ØŸ™Øð &Ø%Ø)ØØ+Ø+Ø/Ø"ñ	ñ!
ˆÔô4 #¤9¨\Ó#:¸D×<QÑ<QÓRˆŒÜ"+¨MÓ":ˆÔÜ# D×$;Ñ$;¸T×=RÑ=RÓSˆÕr,   c           	     óv   — t        |||dk(  rdn|› d�g t        | j                  j                  ¬«      dd¬«      S )z)Create an IndexPage for a kind of region.rb   rÙ   z_index.html)Ú	precisionr   )rh   r   ri   rj   rk   rm   rn   )rg   r   rs   rñ   )r|   rh   Úplural_nouns      r*   râ   zHtmlReporter.new_index_pageZ  sB   € äØØØ%)¨V¢^‘\¸D¸6ÀÐ9MØÜ T§[¡[×%:Ñ%:Ô;Ø"#Ø !ô
ð 	
r,   c                óÆ  — | j                   j                  «        | j                   j                  | j                  | j                  «       g }d}t        | j                  |«      D ]�  \  }}d}t        ||«      }| j                  || j                  d   «      r|j                  |«       ŒEt        t        j                  j                  | j                  |j                   «      «       Œƒ |st#        d«      ‚| j%                  «        | j'                  «        |rSt)        j*                  |«      D ]'  \  }}|j                   |_        |j                   |_        Œ) d|d   _        d|d   _        |D ]c  }| j1                  |«       |j2                  j5                  «       D ]3  \  }	}
|	| j                  vsŒ| j7                  |	|
«      | j                  |	<   Œ5 Œe |r|d   j                   }|d   j                   }ndx}}| j9                  ||«       | j;                  |«       | j                  d   j<                  j>                  xr# | j                  d   j<                  j@                  S )zcGenerate an HTML report for `morfs`.

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

        FTrb   zNo data to report.rÙ   r   éÿÿÿÿ)!rå   r2   Úcheck_global_datars   rî   r   rr   r¯   Úshould_reportrã   r�   r   r"   r#   r$   rÛ   r²   r   Úmake_directoryÚmake_local_static_report_filesÚ	itertoolsÚpairwiser´   r³   Úwrite_html_pager¢   Úcode_region_kindsrâ   Úwrite_file_index_pageÚwrite_region_index_pagesrk   Ún_statementsÚ
pc_covered)r|   ÚmorfsÚfiles_to_reportÚ	have_datar¢   r£   ÚftrÚftr1Úftr2rh   rò   Ú
first_htmlÚ
final_htmls                r*   ÚreportzHtmlReporter.reportf  s3  € ð 	�	‰	�‰ÔØ�	‰	×#Ñ# D§K¡K°×1HÑ1HÔIð ˆàˆ	Ü2°4·=±=À%ÓHò 	N‰LˆB�ØˆIÜ˜r 8Ó,ˆCØ×!Ñ! (¨D×,<Ñ,<¸VÑ,DÔEØ×&Ñ& sÕ+äœRŸW™WŸ\™\¨$¯.©.¸#×:KÑ:KÓLÕMð	Nñ ÜÐ2Ó3Ð3à×ÑÔØ×+Ñ+Ô-áÜ'×0Ñ0°ÓAò 4‘
��dØ!%×!3Ñ!3�”Ø!%×!3Ñ!3�•ð4ð ,8ˆO˜AÑÔ(Ø,8ˆO˜BÑÔ)à"ò 	TˆCØ× Ñ  Ô%Ø%(§V¡V×%=Ñ%=Ó%?ò TÑ!��kØ˜t×/Ñ/Ò/Ø-1×-@Ñ-@ÀÀ{Ó-S�D×$Ñ$ TÒ*ñTð	Tñ Ø(¨Ñ+×9Ñ9ˆJØ(¨Ñ,×:Ñ:‰Jà&2Ð2ˆJ˜Ø×"Ñ" :¨zÔ:ð 	×%Ñ% oÔ6ð ×Ñ˜VÑ$×+Ñ+×8Ñ8ò ;Ø× Ñ  Ñ(×/Ñ/×:Ñ:ð	
r,   c                ó|   — t        | j                  «       t        j                  | j                  «      sd| _        yy)z'Make sure our htmlcov directory exists.TN)r   rÛ   r"   Úlistdirrç   ©r|   s    r*   r÷   zHtmlReporter.make_directory¡  s+   € ä�4—>‘>Ô"Ü�z‰z˜$Ÿ.™.Ô)Ø'+ˆDÕ$ð *r,   c                ó¶   — t        || j                  «      }|s/t        j                  j	                  |«      j                  dd«      }|| j                  d   |<   y)z@Copy a static file into the output directory with cache busting.r¿   Ú_rØ   N)rÍ   rÛ   r"   r#   rÃ   rÄ   rì   )r|   rÅ   ÚslugrÌ   s       r*   Úcopy_static_filezHtmlReporter.copy_static_file§  sK   € ä# C¨¯©Ó8ˆÙÜ—7‘7×#Ñ# CÓ(×0Ñ0°°cÓ:ˆDØ15ˆ×Ñ˜iÑ(¨Ò.r,   c                óÂ  — | j                   D ]  }| j                  t        |«      «       Œ | j                  r?| j                  j                  €J ‚| j                  | j                  j                  d¬«       | j
                  rQt        t        j                  j                  | j                  d«      dd¬«      5 }|j                  d«       ddd«       yy# 1 sw Y   yxY w)	z5Make local instances of static files for HTML report.Nr×   )r  z
.gitignoreÚwr.   r/   z# Created by coverage.py
*
)ÚSTATIC_FILESr  r+   r×   rs   rç   r1   r"   r#   r$   rÛ   r?   )r|   ÚstaticÚfgis      r*   rø   z+HtmlReporter.make_local_static_report_files®  sÂ   € ð ×'Ñ'ò 	9ˆFØ×!Ñ!¤-°Ó"7Õ8ð	9ð �>Š>Ø—;‘;×(Ñ(Ð4Ð4Ð4Ø×!Ñ! $§+¡+×"7Ñ"7¸kÐ!ÔJð
 ×#Ò#Ü”b—g‘g—l‘l 4§>¡>°<Ó@À#ÐPWÔXð ;Ð\_Ø—	‘	Ð9Ô:÷;ð ;ð $÷;ð ;ús   Â9CÃCc                ó0  — |j                   }|xj                  |z  c_        | j                  r8|j                  dk(  }|j                  dk(  }|r|r|xj
                  dz  c_        y| j                  r%|j                  dk(  r|xj                  dz  c_        yy)z.Determine if we'll report this file or region.r   r�   FT)	r¡   rk   rÝ   Ú	n_missingÚn_partial_branchesrm   rß   rÿ   rn   )r|   r£   Ú
index_pager\   Úno_missing_linesÚno_missing_branchess         r*   rö   zHtmlReporter.should_reportÁ  s�   € ð ×ÑˆØ×Ò˜TÑ!Õà×Òà $§¡°!Ñ 3ÐØ#'×#:Ñ#:¸aÑ#?ÐÙÑ$7Ø×0Ò0°AÑ5Õ0Øà�?Š?à× Ñ  AÒ%Ø×.Ò.°!Ñ3Õ.Øàr,   c           	     ó	  ‡‡— | j                   j                  | j                  |«      rL| j                  d   j                  j                  | j                   j                  |j                  «      «       y| j                  j                  |j                  |j                  «      }t        j                  d„ |j                  D «       «      }t        d„ |j!                  «       D «       «      D ��ci c]  \  }}||“Œ
 }}}|rst#        j$                  |j'                  «       D ��ci c]  \  }}t)        |«      |“Œ c}}d¬«      j+                  dd«      j+                  d	d
«      j+                  dd«      }	nd}	|j                  D �]Ù  Šg }
‰j,                  D ]L  \  }}|dk(  r|
j                  t/        |«      «       Œ&t/        |«      xs d}|
j                  d|› d|› d�«       ŒN dj1                  |
«      ‰_        ‰j4                  rc‰j4                  D �cg c]  }t)        ||   «      ‘Œ }}t7        d„ |D «       «      Št9        ‰«      dj1                  ˆfd„|D «       «      z   ‰_        nd‰_        ‰j<                  r*dj1                  ˆfd„‰j<                  D «       «      ‰_        nd‰_        ‰j@                  rJ‰j@                  }tC        |«      dk(  s%J d|j                  jE                  «       › d|› �«       ‚|d   ‰_#        nd‰_#        g }‰jH                  r+|j                  | jJ                  d   ‰jH                     «       dj1                  |«      xs d‰_&        �ŒÜ tN        jP                  j1                  | jR                  |jT                  «      }| jV                  jY                  i |jZ                  ¥|	|j\                  |j^                  dœ¥«      }ta        ||«       tc        |jT                  |j                  jE                  «       |j                  jd                  ¬«      }| j                  d   j                  j                  |«       | j                   jg                  |j                  |«       yc c}}w c c}}w c c}w ) 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.

        rb   Nc              3  óB   K  — | ]  }|j                   D ]  }|–— Œ Œ y ­wrŽ   )rJ   )r�   Úcliner‘   s      r*   r’   z/HtmlReporter.write_html_page.<locals>.<genexpr>ç  s    è ø€ Ò&^¨UÈuÏ~É~Ò&^È!¤qÐ&^ qÑ&^ùs   ‚c              3  ó&   K  — | ]	  }|d    –— Œ y­w)r   NrX   )r�   Úxs     r*   r’   z/HtmlReporter.write_html_page.<locals>.<genexpr>è  s   è ø€ Ò5[¸q°a¸µdÑ5[ùs   ‚é   )Úindentú<z\u003cú>z\u003eú&z\u0026Úwsz&nbsp;z<span class="z">z</span>r6   c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrŽ   )rœ   )r�   Úecs     r*   r’   z/HtmlReporter.write_html_page.<locals>.<genexpr>  s   è ø€ Ò D¨R¤ R§Ñ Dùs   ‚c              3  ó@   •K  — | ]  }|j                  ‰«      –— Œ y ­wrŽ   )Úljust)r�   r(  Ú
code_widths     €r*   r’   z/HtmlReporter.write_html_page.<locals>.<genexpr>	  s   øè ø€ ò >Ø-/�B—H‘H˜Z×(ñ>ùó   ƒz,&nbsp;&nbsp; c              3  ó@   •K  — | ]  }‰j                   › d |› �–— Œ y­w)z&#x202F;&#x219B;&#x202F;N)rG   )r�   ÚdÚldatas     €r*   r’   z/HtmlReporter.write_html_page.<locals>.<genexpr>  s&   øè ø€ ò 7ØEF�u—|‘|�nÐ$<¸Q¸CÔ@ñ7ùr,  r�   zHad long annotations in z: r   rI   ú Úpln)Úcontexts_jsonr³   r´   )ra   rb   r\   )4rå   Úcan_skip_fileru   rã   rj   r�   Ú
index_infor±   ræ   rª   r¢   r£   ÚcollectionsÚCounterr]   r˜   Úmost_commonÚjsonÚdumpsÚitemsr»   rÄ   rF   r   r$   rA   rL   ÚmaxrH   rO   rM   rP   rN   rœ   r[   rQ   rI   rì   rR   r"   r#   rÛ   r²   rï   ÚrenderÚ__dict__r³   r´   rC   r`   r¡   Úset_index_info)r|   r  r©   rJ   ÚiÚyÚcontext_codesÚkÚvr2  Ú
html_partsÚtok_typeÚtok_textÚtok_htmlÚ	c_contextÚencoded_contextsÚlongsÚcss_classesÚ	html_pathrA   r4  r+  r/  s                        @@r*   rû   zHtmlReporter.write_html_page×  sö  ù€ ð �9‰9×"Ñ" 4§9¡9¨cÔ2Ø×Ñ˜VÑ$×.Ñ.×5Ñ5°d·i±i×6JÑ6JÈ3Ï<É<Ó6XÔYØð —L‘L×.Ñ.¨s¯v©v°s·|±|ÓDˆ	ä×&Ñ&Ñ&^°i·o±oÔ&^Ó^ˆÜ,5Ñ5[ÀH×DXÑDXÓDZÔ5[Ó,[×\¡& 1 a˜˜A™Ð\ˆÑ\Ùô —
‘
Ø4A×4GÑ4GÓ4I×J©&¨1¨a”Z “] AÑ%ÓJØô÷ ‘˜˜iÓ(ß‘˜˜iÓ(ß‘˜˜iÓ(ñ ð !ˆMà—_‘_ó .	=ˆEàˆJØ&+§l¡lò UÑ"�˜(Ø˜tÒ#Ø×%Ñ%¤f¨XÓ&6Õ7ä% hÓ/Ò;°8�HØ×%Ñ%¨°h°Z¸rÀ(ÀÈ7Ð&SÕTðUð Ÿ™ Ó,ˆEŒJØ×!Ò!àJO×J\ÑJ\ö$Ø=F”J˜}¨YÑ7Õ8ð$Ð ð $ô !Ñ DÐ3CÔ DÓD�
Ü$'¨
£O°b·g±gó >Ø3Cô>ó 7ñ %�Õ!ð %'�Ô!à×&Ò&ð "2×!6Ñ!6ó 7ØJO×JaÑJaô7ó "�•ð "&�”à×%Ò%Ø×.Ñ.�ô ˜5“z Q’ð Ø.¨s¯v©v×/GÑ/GÓ/IÐ.JÈ"ÈUÈGÐTó�ð ',¨A¡h�Õ#à&*�Ô#àˆKØ�~Š~Ø×"Ñ"Ø×)Ñ)¨*Ñ5°e·n±nÑEôð "Ÿh™h {Ó3Ò<°uˆEŽOð].	=ô` —G‘G—L‘L §¡°×1BÑ1BÓCˆ	Ø×Ñ×&Ñ&ðØ×$Ñ$ðà!.Ø Ÿ]™]Ø Ÿ]™]ò	ó
ˆô 	�9˜dÔ#ô Ø×!Ñ!Ø—‘×)Ñ)Ó+Ø—‘×%Ñ%ô
ˆ
ð
 	×Ñ˜Ñ ×*Ñ*×1Ñ1°*Ô=Ø�	‰	× Ñ  §¡¨zÕ:ùói ]ùó Kùò*$s   Ã.Q2Ä"Q8
ÈQ>c                ó  — | j                  | j                  d   ||¬«      }t        |dt        j                  j                  |«      › �«      }| j                  j                  d|› �«       | j                  j                  «        y)z*Write the file index page for this report.rb   )r  r  zfile://zWrote HTML report to N)
Úwrite_index_pagerã   r   r"   r#   Úabspathrr   Ú_messagerå   r?   )r|   r  r  Ú
index_fileÚ
print_hrefs        r*   rý   z"HtmlReporter.write_file_index_page>  sx   € à×*Ñ*Ø×Ñ˜VÑ$Ø!Ø!ð +ó 
ˆ
ô ! ¨w´r·w±w·±ÀzÓ7RÐ6SÐ-TÓUˆ
Ø�‰×ÑÐ!6°z°lÐCÔDð 	�	‰	�‰Õr,   c                óº  ‡— |D �]–  }|j                   j                  «       D �cg c]  }|d   ‘Œ	 }}t        |j                   j                  «       j	                  «       «      }|j                   j                  «       }|D �]  Š| j                  ‰   }t        t        d|dz   «      «      }|D ]!  }	|	j                  ‰k7  rŒ||	j                  z  }Œ# t        |j                  «      }
|
j                  ˆfd„|D «       «       |
j                  |g«       |D ]ö  }	|	j                  ‰k7  rŒ|
j                  |	j                  «      }| j                  ||«      sŒA|	j                   j#                  d«      d   j%                  d«      }|j&                  j)                  t+        |j,                  › d|	j.                  › �|j                   j1                  «       dt3        |«      › d	�t3        |	j                   «      z   d
z   |j4                  ¬«      «       Œø |
j                  |«      }| j                  ||«      s�Œ²|j&                  j)                  t+        |j,                  |j                   j1                  «       ddt3        ‰«      › d�z   d
z   |j4                  ¬«      «       �Œ �Œ™ | j                  j7                  «       D ]  \  Š}‰dk7  sŒ| j9                  |«       Œ yc c}w )z,Write the other index pages for this report.r   r�   c              3  óV   •K  — | ]   }|j                   ‰k(  sŒ|j                  –— Œ" y ­wrŽ   )Úkindr]   )r�   r¹   rh   s     €r*   r’   z8HtmlReporter.write_region_index_pages.<locals>.<genexpr>]  s   øè ø€ Ò$P°ÀÇÁÈ4Ã Q§W¥WÑ$Pùs   ƒ)˜)r¿   rô   r  z#tz<data value='z'>z</data>)ra   rb   rc   r\   z<data value=''>z<span class='no-noun'>(no z)</span>rb   N)r¢   rü   rœ   ÚsourceÚ
splitlinesÚcode_regionsrã   ÚsetÚrangerU  r]   r   r£   Úadd_regionsÚnarrowrö   ÚnameÚ
rpartitionÚlstriprj   r�   r`   r²   r‚   r[   r   r¡   r:  rN  )r|   r  r  rÒ   Úregion_nounsÚ	num_linesÚregionsÚ	page_dataÚoutside_linesÚregionÚnarrowerr£   Úsorting_namer  rh   s                 @r*   rþ   z%HtmlReporter.write_region_index_pagesL  sŸ  ø€ à"ó 3	ˆCØ03·±×0HÑ0HÓ0JÖK¨˜D ›GÐKˆLÐKÜ˜CŸF™FŸM™M›O×6Ñ6Ó8Ó9ˆIØ—f‘f×)Ñ)Ó+ˆGà$ó .�Ø ×,Ñ,¨TÑ2�	ä #¤E¨!¨Y¸©]Ó$;Ó <�Ø%ò 2�FØ—{‘{ dÒ*Ø Ø! V§\¡\Ñ1‘Mð2ô
 ,¨C¯L©LÓ9�Ø×$Ñ$Ó$P°gÔ$PÔPØ×$Ñ$ m _Ô5à%ò �FØ—{‘{ dÒ*Ø Ø'Ÿ™¨v¯|©|Ó<�HØ×-Ñ-¨h¸	ÔBØ Ø#)§;¡;×#9Ñ#9¸#Ó#>¸rÑ#B×#IÑ#IÈ#Ó#N�LØ×'Ñ'×.Ñ.Ü!Ø#&×#4Ñ#4Ð"5°R¸¿¹°~Ð FØ!$§¡×!9Ñ!9Ó!;à"/´°|Ó0DÐ/EÀRÐ HÜ"(¨¯©Ó"5ñ!6à"+ñ!,ð "*×!1Ñ!1ô	õðð( $Ÿ?™?¨=Ó9�Ø×%Ñ% h°	Ö:Ø×'Ñ'×.Ñ.Ü!Ø #× 1Ñ 1Ø!$§¡×!9Ñ!9Ó!;à 1Ø$>¼vÀd»|¸nÈHÐ"Uñ!Và"+ñ!,ð "*×!1Ñ!1ô	öòG.ð3	ðj !%× 0Ñ 0× 6Ñ 6Ó 8ò 	2ÑˆD�*Ø�v‹~Ø×%Ñ% jÕ1ñ	2ùòi Ls   ¤Kc                ój  — dx}}|j                   x}r&t        ||j                  |j                  «      }|› d�}|j                  x}r,t        |d|j                  z   d|j                  z   «      }|› d�}| j                  j                  «       D �cg c]\  }|j                  j                  «       |j                  |j                  k7  r|j                  nd|j                  |j                  k(  dœ‘Œ^ }}|j                  |j                  |j                  |j                  dk7  r|j                  nd| j                  ||dd|dœ
}	|	j                  |«       | j                  j                  |	«      }
t        j                  j!                  | j"                  |j                  «      }t%        ||
«       |S c c}w )z^Write an index page specified by `index_page`.

        Returns the filename created.
        r6   z" skipped due to complete coverage.zempty z	 skipped.)Úlabelra   Úcurrentrb   )
rb  rk   rh   Úregion_nounrÝ   Úskipped_covered_msgÚskipped_empty_msgr  r  Úindex_buttons)rm   r   rh   rn   rã   ÚvaluesrÕ   ri   rj   rk   rÝ   rÁ   rí   r<  r"   r#   r$   rÛ   rC   )r|   r  Úkwargsrl  rm  r¸   ÚthingsÚiprn  Úrender_datarA   rQ  s               r*   rN  zHtmlReporter.write_index_page‡  s”  € ð
 35Ð4ÐÐ/Ø×0Ñ0Ð0ˆ1Ð0Ü˜A˜zŸ™°
×0AÑ0AÓBˆFØ%+ HÐ,NÐ"OÐØ×.Ñ.Ð.ˆ1Ð.Ü˜A˜x¨*¯/©/Ñ9¸8Àj×FWÑFWÑ;WÓXˆFØ#) (¨)Ð 4Ðð ×&Ñ&×-Ñ-Ó/ö
ð ð	 Ÿ™Ÿ™Ó*Ø&(§g¡g°·±Ò&@�r—{’{ÀbØŸ7™7 j§o¡oÑ5óð
ˆð 
ð "×+Ñ+Ø ×'Ñ'Ø—O‘OØ.8¯o©oÀÒ.G˜:Ÿ?š?ÈRØ ×-Ñ-Ø#6Ø!2ØØØ*ñ
ˆð 	×Ñ˜6Ô"Ø�‰×%Ñ% kÓ2ˆä—W‘W—\‘\ $§.¡.°*×2EÑ2EÓFˆ
Ü�:˜tÔ$ØÐùò3
s   ÂA!F0Nr«   )rh   rH   rò   rH   r¬   rg   )r  r   r¬   Úfloat©r¬   r­   )r6   )rÅ   rH   r  rH   r¬   r­   )r£   r   r  rg   r¬   rá   )r  r¯   r¬   r­   )r  rH   r  rH   r¬   r­   )r  zIterable[FileToReport]r¬   r­   )r  rg   rp  rH   r¬   rH   )rS   rT   rU   rV   r  r~   râ   r	  r÷   r  rø   rö   rû   rý   rþ   rN  rX   r,   r*   rÏ   rÏ     sI   „ Ùð€Ló8Tót

ó9
óv,ô6ó;ó&ó,e;óNó92ôv&r,   rÏ   c                  ó<   — e Zd ZU dZdZded<    ee¬«      Zded<   y)	ÚFileInfozHSummary of the information from last rendering, to avoid duplicate work.r6   rH   Úhashrd   r`   ÚindexN)	rS   rT   rU   rV   rx  rW   r   r`   ry  rX   r,   r*   rw  rw  °  s   … áRà€Dˆ#ƒNÙ¨YÔ7€Eˆ9Ô7r,   rw  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y)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-jsonc                ó2   — || _         | j                  «        y rŽ   )rÛ   Ú_reset)r|   rÛ   s     r*   r~   zIncrementalChecker.__init__í  s   € Ø"ˆŒØ�‰�r,   c                ó    — d| _         i | _        y)z5Initialize to empty. Causes all files to be reported.r6   N)ÚglobalsrÑ   r  s    r*   r}  zIncrementalChecker._resetñ  s   € àˆŒØ*,ˆ�
r,   c                ón  — 	 t         j                  j                  | j                  | j                  «      }t        |d¬«      5 }t        j                  |«      }ddd«       d   | j                  k7  rd}n|d   t        j                  k7  rd}nd}	 |roi | _        d   j                  «       D ]G  \  }}|d	   }t        di |¤Ž}t!        di |d
   ¤Ž|_        t%        |d   |¬«      }	|	| j                  |<   ŒI |d   | _        y| j)                  «        y# 1 sw Y   Œ¼xY w# t        t        f$ r d}Y Œ¡w xY w)z)Read the information we stored last time.r.   r/   NÚformatFÚversionTrÑ   ry  r\   rx  )rx  ry  r  rX   )r"   r#   r$   rÛ   ÚSTATUS_FILEr1   r8  ÚloadÚSTATUS_FORMATrr   rÔ   ÚOSErrorÚ
ValueErrorrÑ   r:  r`   r   r\   rw  r  r}  )
r|   Ústatus_fileÚfstatusÚstatusÚusableri   ÚfiledictÚ	indexdictÚ
index_itemÚfileinfos
             r*   r2   zIncrementalChecker.readö  s5  € ð	ÜŸ'™'Ÿ,™, t§~¡~°t×7GÑ7GÓHˆKÜ�k¨GÔ4ð ,¸ÜŸ™ 7Ó+�÷,ð �hÑ 4×#5Ñ#5Ò5Ø‘Ø˜	Ñ"¤h×&:Ñ&:Ò:Ø‘à‘áØˆDŒJØ&,¨W¡o×&;Ñ&;Ó&=ò 0Ñ"�˜(Ø$ WÑ-�	Ü&Ñ3¨Ñ3�
Ü")Ñ">¨I°fÑ,=Ñ">�
”Ü#Ø! &Ñ)Ø$ô�ð (0�—
‘
˜8Ò$ð0ð " )Ñ,ˆD�Là�K‰K�M÷5,ð ,ûäœÐ$ò 	àŠFð	ús*   ‚AD  ÁDÁD  ÄDÄD  Ä D4Ä3D4c                óÔ  — t         j                  j                  | j                  | j                  «      }| j
                  | j                  t        j                  | j                  | j                  j                  «       D ��ci c]  \  }}|t        j                  |«      “Œ c}}dœ}t        |dd¬«      5 }t        j                   ||d¬«       ddd«       yc c}}w # 1 sw Y   yxY w)zWrite the current status.)Únoter�  r‚  r  rÑ   r  r.   r/   )ú,ú:)Ú
separatorsN)r"   r#   r$   rÛ   rƒ  ÚNOTEr…  rr   rÔ   r  rÑ   r:  ÚdataclassesÚasdictr1   r8  Údump)r|   rˆ  r'   ÚfinfoÚstatus_datarB   s         r*   r?   zIncrementalChecker.write  s»   € ä—g‘g—l‘l 4§>¡>°4×3CÑ3CÓDˆà—I‘IØ×(Ñ(Ü×+Ñ+Ø—|‘|ØKOÏ:É:×K[ÑK[ÓK]×^¹<¸5À%�eœ[×/Ñ/°Ó6Ñ6Ó^ñ
ˆô �+˜s¨WÔ5ð 	@¸Ü�I‰I�k 4°JÕ?÷	@ð 	@ùó _÷	@ð 	@ús   Â CÂ6CÃC'c                ó¶   — t        «       }|D ]  }|j                  |«       Œ |j                  «       }| j                  |k7  r| j	                  «        || _        yy)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|   ru   rÉ   r.  Úthese_globalss        r*   rõ   z$IncrementalChecker.check_global_data#  sQ   € ô ‹HˆØò 	ˆAØ�H‰H�Q�Kð	àŸ™›ˆØ�<‰<˜=Ò(Ø�K‰KŒMØ(ˆD�Lð )r,   c                óà  — t        «       }|j                  |j                  j                  «       j	                  d«      «       t        ||j                  j                  |«       |j                  |j                  «       |j                  |j                  «       |j                  «       }| j                  j                  |j                  t        «       «      }||j                  k(  ry||_        y)zßCan we skip reporting this file?

        `data` is a CoverageData object, and `ftr` is the `FileToReport`.

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

        r.   TF)r   rÁ   r¢   rV  r@   r   ri   r³   r´   rÂ   rÑ   Ú
setdefaultr±   rw  rx  )r|   ru   r  rÉ   Ú	this_hashÚ	file_infos         r*   r3  z IncrementalChecker.can_skip_file3  s¢   € ô ‹HˆØ	�‰�—‘—‘“×'Ñ'¨Ó0Ô1Ü˜˜sŸv™vŸ™°Ô2à	�‰�—‘ÔØ	�‰�—‘ÔØ—K‘K“Mˆ	à—J‘J×)Ñ)¨#¯,©,¼»
ÓCˆ	à˜	Ÿ™Ò&àð 'ˆIŒNØr,   c                ó^   — | j                   j                  |t        «       «      j                  S )z/Get the information for index.html for `fname`.)rÑ   r    rw  ry  )r|   r'   s     r*   r4  zIncrementalChecker.index_infoN  s   € à�z‰z�~‰~˜e¤X£ZÓ0×6Ñ6Ð6r,   c                óV   — || j                   j                  |t        «       «      _        y)z/Set the information for index.html for `fname`.N)rÑ   rž  rw  ry  )r|   r'   Úinfos      r*   r>  z!IncrementalChecker.set_index_infoR  s   € à9=ˆ�
‰
×Ñ˜e¤X£ZÓ0Õ6r,   N)rÛ   rH   r¬   r­   ru  )ru   r	   r¬   r­   )ru   r
   r  r¯   r¬   rá   )r'   rH   r¬   r`   )r'   rH   r£  r`   r¬   r­   )rS   rT   rU   rV   rƒ  r…  r•  r~   r}  r2   r?   rõ   r3  r4  r>  rX   r,   r*   rä   rä   ¸  sI   „ ñ*ðX  €KØ€Mð	Mð 	óó-ó
ó@@ó)ó ó67ô>r,   rä   c                ó    —  dj                   | Ž S )zEFormat a pair of numbers so JavaScript can read them in an attribute.z{} {})r�  )Úratios    r*   rÒ   rÒ   Z  s   € àˆ7�>‰>˜5Ð!Ð!r,   c                ó0   — 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=   )ri   s    r*   rÓ   rÓ   _  s   € ô
 �6‰6�(Ð=¸xÓHÐHr,   )r'   rH   r¬   rH   )r'   rH   rA   rH   r¬   r­   )r¸   rl   r¬   rH   )rÅ   rH   rÆ   rH   r¬   rH   )r¥  ztuple[int, int]r¬   rH   )ri   rH   r¬   rH   )JrV   Ú
__future__r   r5  r–  rê   Ú	functoolsrù   r8  r"   r<   ÚstringÚcollections.abcr   r   r   rA   r   Útypingr   r	   rr   Ú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+   r4   rC   rE   rZ   r`   rg   rp   r¯   Úascii_lettersÚdigitsr¶   Úcacher»   rÍ   rÏ   rw  rä   rÒ   rÓ   rX   r,   r*   ú<module>r¹     s{  ðñ &õ #ã Û Û Û Û Û Û 	Û 	Û Ý $ß (Ý ß %ã ß 8Ý +Ý (÷	÷ 	ó 	õ 8ß @Ñ @Ý &ß *Ý $áÝ!Ý-ñ �BÓ€óó ó>ð ÷ð ó ðð$ ÷ð ó ðð ÷3ð 3ó ð3ð ÷	ð 	ó ð	÷jñ j÷Z-ñ -ð × Ñ  6§=¡=Ñ0Ð3PÑP€	ð ‡�ò	ó ð	ó÷"Yñ Yðx ÷8ð 8ó ð8÷\>ñ \>óD"ô
Ir,   