ó
    Ð]j%{  ã                  óâ  • S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKJr  SSKJrJr  SSKJrJr  SSKrSSKJrJr  SSKJr  SS	KJr  SS
KJrJrJrJrJrJ r J!r!J"r"  SSK#J$r$  SSK%J&r&J'r'J(r(  SSK)J*r*  SSK+J,r,J-r-  SSK.J/r/  \(       a  SSKJ0r0  SSK1J2r2  \ " \5      rS-S jr3S-S jr4S.S jr5\ " S S5      5       r6\ " S S5      5       r7\ " S S5      5       r8\ " S S5      5       r9 " S S5      r: " S S 5      r;\
Rx                  \
Rz                  -   S!-   r>\R~                  S/S" j5       r@S0S# jrA " S$ S%5      rB\ " S& S'5      5       rC " S( S)5      rDS1S* jrES2S+ jrFS3S, jrGg)4z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)ÚFileReporterc                óÆ   • [         R                  R                  [         R                  R                  [        5      S5      n[         R                  R                  X5      nU$ )z4Return the path to an "htmlfiles" data file of ours.Ú	htmlfiles)ÚosÚpathÚjoinÚdirnameÚ__file__)ÚfnameÚ
static_dirÚstatic_filenames      ÚJ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/coverage/html.pyÚdata_filenamer*   0   s;   € ä—‘—‘œbŸg™gŸo™o¬hÓ7¸ÓE€JÜ—g‘g—l‘l :Ó5€OØÐó    c                ó~   • [        [        U 5      SS9 nUR                  5       sSSS5        $ ! , (       d  f       g= f)z+Return the contents of a data file of ours.úutf-8©ÚencodingN)Úopenr*   Úread)r&   Ú	data_files     r)   Ú	read_datar3   7   s)   € ä	Œm˜EÓ"¨WÒ	5¸Ø�~‰~Ó÷ 
6×	5×	5ús   ”.®
<c                óâ   • [         R                  " SSU[         R                  S9S-   n[        U S5       nUR	                  UR                  SS5      5        SSS5        g! , (       d  f       g= f)	z*Write `html` to `fname`, properly encoded.z(\A\s+)|(\s+$)Ú )ÚflagsÚ
ÚwbÚasciiÚxmlcharrefreplaceN)ÚreÚsubÚ	MULTILINEr0   ÚwriteÚencode)r&   ÚhtmlÚfouts      r)   Ú
write_htmlrB   =   sP   € ä�6Š6Ð# R¨´R·\±\ÑBÀTÑI€DÜ	ˆe�TÔ	˜dØ�
‰
�4—;‘;˜wÐ(;Ó<Ô=÷ 
×	Ö	ús   µ"A Á 
A.c                  ó°   • \ rS rSr% SrS\S'   S\S'   S\S'   S	\S
'   S\S'   S	\S'   S	\S'   S	\S'   SrS\S'   SrS\S'   SrS\S'   Sr	S\S'   Sr
S\S'   Srg)ÚLineDataéD   z-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_annotationsr5   r@   Nz
str | NoneÚcontext_strÚannotateÚannotate_longÚ	css_class© )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__r@   rO   rP   rQ   rR   Ú__static_attributes__rS   r+   r)   rD   rD   D   sd   ‡ á7à!Ó!ØƒOØƒMØÓØÓØÓØ Ó ØÓØ€Dˆ#ƒNØ"€K�Ó"Ø€HˆjÓØ $€M�:Ó$Ø€IˆsÖr+   rD   c                  ó8   • \ rS rSr% SrS\S'   S\S'   S\S'   S	rg
)ÚFileDataéW   z-The data for each source file of HTML output.rH   Úrelative_filenamer   Únumszlist[LineData]ÚlinesrS   N©rT   rU   rV   rW   rX   rY   rZ   rS   r+   r)   r\   r\   W   s   ‡ á7àÓØ
ƒMØÖr+   r\   c                  óZ   • \ rS rSr% SrSrS\S'   SrS\S'   SrS\S'   \	" \
S9rS	\S
'   Srg)Ú	IndexItemé`   z:Information for each index entry, to render an index page.r5   rH   ÚurlÚfileÚdescription©Údefault_factoryr   r_   rS   N)rT   rU   rV   rW   rX   re   rY   rf   rg   r   r   r_   rZ   rS   r+   r)   rc   rc   `   s0   ‡ áDà€CˆƒMØ€Dˆ#ƒNØ€K�ÓÙ¨'Ñ2€Dˆ'Ö2r+   rc   c                  ó`   • \ rS rSr% SrS\S'   S\S'   S\S'   S\S'   S	\S
'   S\S'   S\S'   Srg)Ú	IndexPageéj   zData for each index page.rH   Únounr   Úfilenamezlist[IndexItem]Ú	summariesr   ÚtotalsÚintÚskipped_covered_countÚskipped_empty_countrS   Nra   rS   r+   r)   rk   rk   j   s+   ‡ á#à
ƒIØƒKØƒMØÓØƒOØÓØÖr+   rk   c                  ó0   • \ rS rSrSrSrSS jrS	S jrSrg)
ÚHtmlDataGenerationéw   z8Generate structured data to be turned into HTML reports.z(empty)c                óÊ  • Xl         U R                   R                  U l        U R                   R                  5       U l        U R                  R	                  5       U l        U R                  R
                  (       a:  U R                  R                  5       S1:X  a  U R                   R                  S5        U R                  R                  U R                  R                  5        g )Nr5   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__ÚHtmlDataGeneration.__init__|   s“   € ØŒØ—m‘m×*Ñ*ˆŒØ—M‘M×*Ñ*Ó,ˆŒ	ØŸ	™	×*Ñ*Ó,ˆŒØ�;‰;×$×$Ø�y‰y×*Ñ*Ó,°°Ó4Ø—‘×#Ñ#Ð$?Ô@Ø�	‰	×$Ñ$ T§[¡[×%@Ñ%@ÕAr+   c                óè  ^ • T R                   (       a  UR                  5       nUR                  nO0 n/ nT R                  R                  (       a%  T R
                  R                  UR                  5      n/ nUR                  5       n0 n[        US5      (       a  UR                  5       n[        UR                  5       SS9 GH	  u  pšS=p¼/ n/ nX’R                  ;   a  SnGOFX’R                  ;   a  SnGO3T R                   (       a¦  X“;   a¡  SnX9   n[        U5      Xy   S   :X  a'  UR!                  S	5        UR!                  S
U	 S35        OÜX9    HW  nUS:  a  UR!                  S5        OUR!                  [#        U5      5        UR!                  UR%                  U	UU5      5        MY     O|X’R&                  ;   a  SnOjUR)                  U	5      =n(       aR  UUR                  ;   a  SnO?UUR                  ;   a  SnO,T R                   (       a	  UU;   a  SnOUUR&                  ;   a  Sn/ nSn/ nU(       an  T R                  R                  (       aS  [+        U 4S jWR)                  U	S5       5       5      nUT R,                  /:X  a  T R,                  nO[        U5       S3nUnUR!                  [/        U
U	U=(       d    UUUUUUS95        GM     [1        UR3                  5       UR4                  US9nU$ )z.Produce the data needed for one file's report.Úmultiline_mapé   )Ústartr5   ÚexcÚmisÚparr   Úanywherezline z5 didn't jump anywhere: it always raised an exception.ÚexitÚrunÚexc2Úmis2Úpar2Úrun2c              3  óL   >#   • U  H  o=(       d    TR                   v •  M     g 7f©N)ÚEMPTY)Ú.0Úcr‚   s     €r)   Ú	<genexpr>Ú3HtmlDataGeneration.data_for_file.<locals>.<genexpr>Ç   s   øé € Ð'dÒAc¸A¯¨T¯Z©Z¬ÒAcùs   ƒ!$rS   z ctx)rF   rG   rI   rJ   rK   rL   rM   rN   )r^   r_   r`   )r|   Úmissing_branch_arcsÚarcs_executedry   r}   r{   Úcontexts_by_linenorn   Úbranch_statsÚhasattrr‡   Ú	enumerateÚsource_token_linesÚexcludedÚmissingÚlenÚappendrH   Úmissing_arc_descriptionÚ
statementsÚgetr   r–   rD   r\   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_fileÚ HtmlDataGeneration.data_for_file†   sÊ  ø€ à�=�=Ø"*×">Ñ">Ó"@ÐØ$×2Ñ2‰Mà"$ÐØˆMà�;‰;×$×$Ø!%§¡×!=Ñ!=¸h×>OÑ>OÓ!PÐàˆØ×,Ñ,Ó.ˆØˆÜ�2�×'Ñ'Ø×,Ñ,Ó.ˆMä'¨×(=Ñ(=Ó(?ÀqÕI‰NˆFà#%Ð%ˆHØ "ÐØ!Ðà×*Ñ*Ó*Ø ’Ø×+Ñ+Ó+Ø ’Ø—— 6Ó#@Ø �Ø)Ñ1�Ü�s“8˜|Ñ3°AÑ6Ó6à%×,Ñ,¨ZÔ8Ø$×+Ñ+Ø ˜xÐ'\Ð]õð 1Ô8˜Ø˜q›5Ø-×4Ñ4°VÕ<à-×4Ñ4´S¸³VÔ<Ø(×/Ñ/Ø×6Ñ6°v¸qÀ-ÓPöò 9ð ×.Ñ.Ó.Ø ‘Ø,×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 JôF Ø ×2Ñ2Ó4Ø×!Ñ!Øñ
ˆ	ð Ðr+   )ry   rx   r{   r|   N©rƒ   r   ÚreturnÚNone)rª   r   r«   r   rµ   r\   )	rT   rU   rV   rW   rX   r–   r„   r²   rZ   rS   r+   r)   ru   ru   w   s   † ÙBà€EôB÷[r+   ru   c                  ó"   • \ rS rSrSrSS jrSrg)ÚFileToReportéä   z#A file we're considering reporting.c                óœ   • Xl         X l        [        UR                  5       5      U l        U R                  S-   U l        S=U l        U l        g )Nz.htmlr5   )rª   r«   r   r^   ÚrootnameÚhtml_filenameÚ	prev_htmlÚ	next_html)r‚   rª   r«   s      r)   r„   ÚFileToReport.__init__ç   s@   € ØŒØ ŒÜ% b×&:Ñ&:Ó&<Ó=ˆŒØ!Ÿ]™]¨WÑ4ˆÔØ*,Ð,ˆŒ˜�r+   )r«   rª   r¼   r¾   r½   r»   N)rª   r   r«   r   rµ   r¶   )rT   rU   rV   rW   rX   r„   rZ   rS   r+   r)   r¸   r¸   ä   s
   † Ù-÷-r+   r¸   z!#$%'()*+,-./:;=?@[]^_`{|}~c                óÌ   • U S:X  a	  [         S   $ / nU (       a<  [        U [        [         5      5      u  pUR                  [         U   5        U (       a  M<  SR	                  U5      $ )zACreate a short HTML-safe string from an integer, using HTML_SAFE.r   r5   )Ú	HTML_SAFEÚdivmodr¤   r¥   r#   )ÚnÚrÚts      r)   Ú
encode_intrÆ   ò   sV   € ð 	ˆAƒvÜ˜‰|Ðà
€AÞ
Ü�aœœY›Ó(‰ˆØ	�‰”˜1‘Ô÷ ˆ!ð �7‰7�1‹:Ðr+   c                óâ  • [        U S5       nUR                  5       nSSS5        [        5       nUR                  W5        UR	                  5       SS n[
        R                  R                  U 5      nUR                  SSU S35      n[        [
        R                  R                  X5      S5       nUR                  U5        SSS5        U$ ! , (       d  f       N¶= f! , (       d  f       U$ = f)zkCopy `src` to `dest_dir`, adding a hash to the name.

Returns the updated destination file name with hash.
ÚrbNé   Ú.Ú_cb_r8   )r0   r1   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Ó*¨DÔ	1°QØ	�‰�Œ÷ 
2à€K÷ 
�ú÷ 
2Ô	1à€Kús   �CÂ2CÃ
CÃ
C.c                  ó’   • \ rS rSrSr/ SQrSS jrSS jrSS jrSS jr	SSS jjr
SS	 jrSS
 jrSS jrSS jrSS jrSS jrSrg)ÚHtmlReporteri  zHTML reporting.)z	style.csszcoverage_html.jszkeybd_closed.pngzfavicon_32.pngc                óÔ  • Xl         U R                   R                  U l        U R                  R                  U l        U R                  R                  U l        U R
                  c  U R                  R
                  U l        U R                  R                  U l        U R                  c  U R                  R                  U l        U R                  R                  n[        U R                  R                  5      U l
        U R                   R                  5       U l        U R                  R                  5       U l        SU R                  SS5      0U l        [!        U R                  5      U l        [%        U R                   5      U l        SU l        S U l        S U l        [.        [0        [2        [4        [         R6                  U[9        [:        R:                  R=                  5       5      U R                  U R                  0 SSSSSS	S
SS.S.U l        [A        [C        S5      U R>                  5      U l"        [C        S5      U l#        [A        U RF                  U R>                  5      U l$        g )Nrf   Ú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_cssr|   ÚstaticsrI   ú
index.htmlzpyfile.html)%rx   ry   Úhtml_dirÚ	directoryÚhtml_skip_coveredÚskip_coveredÚhtml_skip_emptyÚ
skip_emptyÚ
html_titleÚboolrã   rz   r{   r|   Únew_index_pageÚindex_pagesÚIncrementalCheckerÚincrru   ÚdatagenÚdirectory_was_emptyÚfirst_frÚfinal_frrÝ   rÞ   rß   r   rà   r   ÚdatetimeÚnowÚtemplate_globalsr   r3   Ú
index_tmplÚpyfile_html_sourceÚsource_tmpl)r‚   rƒ   rá   s      r)   r„   Ú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           
     ól   • [        UUUS:X  a  SOU S3/ [        U R                  R                  S9SSS9$ )z)Create an IndexPage for a kind of region.rf   rå   z_index.html)Ú	precisionr   )rm   r   rn   ro   rp   rr   rs   )rk   r   ry   rþ   )r‚   rm   Úplural_nouns      r)   rî   ÚHtmlReporter.new_index_pageV  sB   € äØØØ%)¨V£^‘\¸D¸6ÀÐ9MØÜ T§[¡[×%:Ñ%:Ñ;Ø"#Ø !ñ
ð 	
r+   c                óø  • U R                   R                  5         U R                   R                  U R                  U R                  5        / nSn[        U R                  U5       H…  u  pESn[        XE5      nU R                  XPR                  S   5      (       a  UR                  U5        MH  [        [        R                  R                  U R                  UR                   5      5        M‡     U(       d  [#        S5      eU R%                  5         U R'                  5         U(       aQ  [)        USS USS 5       H'  u  pxUR                   Ul        UR                   Ul        M)     SUS	   l        SUS   l        U Hf  nU R/                  U5        UR0                  R3                  5        H4  u  pšX�R                  ;  d  M  U R5                  Xš5      U R                  U	'   M6     Mh     U(       a  US	   R                   nUS   R                   nOS=p¼U R7                  X¼5        U R9                  U5        U R                  S   R:                  R<                  =(       a#    U R                  S   R:                  R>                  $ )
zSGenerate an HTML report for `morfs`.

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

FTrf   zNo data to report.Néÿÿÿÿrˆ   rå   r   ) rñ   r1   Úcheck_global_datary   rú   r   rx   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_pagesrp   Ún_statementsÚ
pc_covered)r‚   ÚmorfsÚfiles_to_reportÚ	have_datarª   r«   ÚftrÚftr1Úftr2rm   rÿ   Ú
first_htmlÚ
final_htmls                r)   ÚreportÚHtmlReporter.reportb  s  € ð 	�	‰	�‰ÔØ�	‰	×#Ñ# D§K¡K°×1HÑ1HÔIð ˆàˆ	Ü2°4·=±=À%ÖH‰LˆBØˆIÜ˜rÓ,ˆCØ×!Ñ! (×,<Ñ,<¸VÑ,D×EÑEØ×&Ñ& sÖ+äœRŸW™WŸ\™\¨$¯.©.¸#×:KÑ:KÓLÖMñ Iö ÜÐ2Ó3Ð3à×ÑÔØ×+Ñ+Ô-æÜ! /°#°2Ð"6¸ÈÈÐ8KÖL‘
�Ø!%×!3Ñ!3�”Ø!%×!3Ñ!3�–ñ Mð ,8ˆO˜AÑÔ(Ø,8ˆO˜BÑÔ)ã"ˆCØ× Ñ  Ô%Ø%(§V¡V×%=Ñ%=Ö%?Ñ!�Ø×/Ñ/Õ/Ø-1×-@Ñ-@ÀÓ-S�D×$Ñ$ TÓ*ó &@ñ #ö Ø(¨Ñ+×9Ñ9ˆJØ(¨Ñ,×:Ñ:‰Jà&2Ð2ˆJØ×"Ñ" :Ô:ð 	×%Ñ% oÔ6ð ×Ñ˜VÑ$×+Ñ+×8Ñ8÷ ;Ø× Ñ  Ñ(×/Ñ/×:Ñ:ð	
r+   c                óˆ   • [        U R                  5        [        R                  " U R                  5      (       d  SU l        gg)z'Make sure our htmlcov directory exists.TN)r   rç   r!   Úlistdirró   ©r‚   s    r)   r  ÚHtmlReporter.make_directory�  s.   € ä�4—>‘>Ô"Ü�zŠz˜$Ÿ.™.×)Ñ)Ø'+ˆDÕ$ð *r+   c                ó¼   • [        XR                  5      nU(       d/  [        R                  R	                  U5      R                  SS5      nX0R                  S   U'   g)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_fileÚHtmlReporter.copy_static_file£  sG   € ä# C¯©Ó8ˆÞÜ—7‘7×#Ñ# CÓ(×0Ñ0°°cÓ:ˆDØ15×Ñ˜iÑ(¨Ò.r+   c                óÚ  • U R                    H  nU R                  [        U5      5        M     U R                  (       a=  U R                  R                  c   eU R                  U R                  R                  SS9  U R
                  (       aN  [        [        R                  R                  U R                  S5      SSS9 nUR                  S5        SSS5        gg! , (       d  f       g= f)	z5Make local instances of static files for HTML report.Nrã   )r  z
.gitignoreÚwr-   r.   z# Created by coverage.py
*
)ÚSTATIC_FILESr  r*   rã   ry   ró   r0   r!   r"   r#   rç   r>   )r‚   ÚstaticÚfgis      r)   r  Ú+HtmlReporter.make_local_static_report_filesª  s³   € ð ×'Ô'ˆFØ×!Ñ!¤-°Ó"7Ö8ñ (ð �>�>Ø—;‘;×(Ñ(Ñ4Ð4Ð4Ø×!Ñ! $§+¡+×"7Ñ"7¸kÐ!ÑJð
 ×#×#Ü”b—g‘g—l‘l 4§>¡>°<Ó@À#ÐPWÒXÐ\_Ø—	‘	Ð9Ô:÷ YÐXð $ßXÕXús   Ã CÃ
C*c                óZ  • UR                   nU=R                  U-  sl        U R                  (       aB  UR                  S:H  nUR                  S:H  nU(       a  U(       a  U=R
                  S-  sl        gU R                  (       a&  UR                  S:X  a  U=R                  S-  sl        gg)z.Determine if we'll report this file or region.r   rˆ   FT)	r©   rp   ré   Ú	n_missingÚn_partial_branchesrr   rë   r  rs   )r‚   r«   Ú
index_pager_   Úno_missing_linesÚno_missing_branchess         r)   r  ÚHtmlReporter.should_report½  s�   € ð ×ÑˆØ×Ò˜TÑ!Õà××à $§¡°!Ñ 3ÐØ#'×#:Ñ#:¸aÑ#?ÐÞÖ$7Ø×0Ò0°AÑ5Õ0Øà�?�?à× Ñ  AÓ%Ø×.Ò.°!Ñ3Õ.Øàr+   c           	     óD	  ^^• U R                   R                  U R                  UR                  UR                  5      (       aL  U R
                  S   R                  R                  U R                   R                  UR                  5      5        gU R                  R                  UR                  UR                  5      n[        R                  " S UR                   5       5      n[        S UR!                  5        5       5       VVs0 s H  u  pEXT_M	     nnnU(       aC  ["        R$                  " UR'                  5        VVs0 s H  u  px[)        U5      U_M     snnSS9n	OSn	UR                   GH   m/ n
TR*                   HS  u  p¼US:X  a  U
R                  [-        U5      5        M'  [-        U5      =(       d    SnU
R                  S	U S
U S35        MU     SR/                  U
5      Tl        TR2                  (       af  TR2                   Vs/ s H  n[)        Xn   5      PM     nn[5        S U 5       5      m[7        T5      SR/                  U4S jU 5       5      -   Tl        OSTl        TR:                  (       a+  SR/                  U4S jTR:                   5       5      Tl        OSTl        TR>                  (       aK  TR>                  n[A        U5      S:X  d%   SUR                  RC                  5        SU 35       eUS   Tl"        OSTl"        / nTRF                  (       a+  UR                  U RH                  S   TRF                     5        SR/                  U5      =(       d    STl%        GM     [L        RN                  R/                  U RP                  URR                  5      nU RT                  RW                  0 URX                  EU	URZ                  UR\                  S.E5      n[_        UU5        [a        URR                  [-        UR                  RC                  5       5      UR                  Rb                  S9nU R
                  S   R                  R                  U5        U R                   Re                  UR                  U5        gs  snnf s  snnf s  snf )zà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.

rf   Nc              3  óJ   #   • U  H  oR                     H  o"v •  M     M     g 7fr•   )rJ   )r—   Úcliner˜   s      r)   r™   Ú/HtmlReporter.write_html_page.<locals>.<genexpr>ã  s   é € Ð&^²o¨UÏ~Í~È!¤qÉ~¡q²oùs   ‚!#c              3  ó*   #   • U  H	  oS    v •  M     g7f)r   NrS   )r—   Úxs     r)   r™   r1  ä  s   é € Ð5[ÒDZ¸q¸¶dÒDZùs   ‚é   )ÚindentÚwsz&nbsp;z<span class="z">z</span>r5   c              3  ó8   #   • U  H  n[        U5      v •  M     g 7fr•   )r¤   )r—   Úecs     r)   r™   r1  û  s   é € Ð DÒ3C¨R¤ R§ Ò3Cùs   ‚c              3  óD   >#   • U  H  oR                  T5      v •  M     g 7fr•   )Úljust)r—   r8  Ú
code_widths     €r)   r™   r1  ü  s   øé € ð >Ú3C¨R—H‘H˜Z×(Ð(Ò3Cùs   ƒ z,&nbsp;&nbsp; c              3  óF   >#   • U  H  nTR                    S U 3v •  M     g7f)z&#x202F;&#x219B;&#x202F;N)rG   )r—   ÚdÚldatas     €r)   r™   r1    s%   øé € ð 7ÚJaÀQ�u—|‘|�nÐ$<¸Q¸CÕ@ÒJaùs   ƒ!rˆ   zHad long annotations in z: r   rI   Ú Úpln)Úcontexts_jsonr½   r¾   )re   rf   r_   )3rñ   Úcan_skip_filer{   rª   r»   rï   ro   r¥   Ú
index_inforò   r²   r«   ÚcollectionsÚCounterr`   r    Úmost_commonÚjsonÚdumpsÚitemsrÆ   rF   rÝ   r#   r@   rL   ÚmaxrH   rO   rM   rP   rN   r¤   r^   rQ   rI   rø   rR   r!   r"   rç   r¼   rû   ÚrenderÚ__dict__r½   r¾   rB   rc   r©   Úset_index_info)r‚   r  r±   rJ   ÚiÚyÚcontext_codesÚkÚvrA  Ú
html_partsÚtok_typeÚtok_textÚtok_htmlÚ	c_contextÚencoded_contextsÚlongsÚcss_classesÚ	html_pathr@   rC  r;  r>  s                        @@r)   r  ÚHtmlReporter.write_html_pageÓ  sÒ  ù€ ð �9‰9×"Ñ" 4§9¡9¨c¯f©f°c·l±l×CÑCØ×Ñ˜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˜šÑ,[ˆÑ\ÞÜ ŸJšJØ0=×0CÑ0CÔ0EÔFÒ0E¡f q”˜A“ Ò!Ñ0EÒFØñ‰Mð
 !ˆMà—_•_ˆEàˆJØ&+§l¤lÑ"�Ø˜tÓ#Ø×%Ñ%¤f¨XÓ&6Ö7ä% hÓ/×;°8�HØ×%Ñ%¨°h°Z¸rÀ(ÀÈ7Ð&SÖTñ '3ð Ÿ™ Ó,ˆEŒJØ×!×!àJO×J\ÒJ\ó$ÚJ\¸Y”J˜}Ñ7Ö8ÑJ\ð !ð $ô !Ñ 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Ô#ô Ø×!Ñ!Ü˜Ÿ™×0Ñ0Ó2Ó3Ø—‘×%Ñ%ñ
ˆ
ð
 	×Ñ˜Ñ ×*Ñ*×1Ñ1°*Ô=Ø�	‰	× Ñ  §¡¨zÕ:ùóW ]ùó Gùò"$s   Ä	RÅR
ÈRc                ó  • U R                  U R                  S   UUS9n[        US[        R                  R                  U5       35      nU R                  R                  SU 35        U R                  R                  5         g)z*Write the file index page for this report.rf   )r  r  zfile://zWrote HTML report to N)
Úwrite_index_pagerï   r   r!   r"   Úabspathrx   Ú_messagerñ   r>   )r‚   r  r  Ú
index_fileÚ
print_hrefs        r)   r
  Ú"HtmlReporter.write_file_index_page1  sx   € à×*Ñ*Ø×Ñ˜VÑ$Ø!Ø!ð +ð 
ˆ
ô ! ¨w´r·w±w·±ÀzÓ7RÐ6SÐ-TÓUˆ
Ø�‰×ÑÐ!6°z°lÐCÔDð 	�	‰	�‰Õr+   c                ó  ^• U GH»  nUR                   R                  5        Vs/ s H  o3S   PM	     nn[        UR                   R                  5       R	                  5       5      nUR                   R                  5       nU GH9  mU R                  T   n[        [        SUS-   5      5      nU H#  n	U	R                  T:w  a  M  X‰R                  -  nM%     [        UR                  5      n
U
R                  U4S jU 5       5        U
R                  U/5        U GH  n	U	R                  T:w  a  M  U
R                  U	R                  5      nU R                  X·5      (       d  MI  U	R                   R#                  S5      S   R%                  S5      nUR&                  R)                  [+        UR,                   SU	R.                   3[1        UR                   R3                  5       5      S[1        U5       S	3[1        U	R                   5      -   S
-   UR4                  S95        GM     U
R                  U5      nU R                  X·5      (       d  GMÌ  UR&                  R)                  [+        UR,                  [1        UR                   R3                  5       5      SS[1        T5       S3-   S
-   UR4                  S95        GM<     GM¾     U R                  R7                  5        H  u  mnTS:w  d  M  U R9                  U5        M!     gs  snf )z,Write the other index pages for this report.r   rˆ   c              3  ó^   >#   • U  H"  oR                   T:X  d  M  UR                  v •  M$     g 7fr•   )Úkindr`   )r—   rÄ   rm   s     €r)   r™   Ú8HtmlReporter.write_region_index_pages.<locals>.<genexpr>P  s   øé € Ð$P²g°ÇÁÈ4Á£W Q§W¦W²gùs   ƒ-š-rÊ   r  r  z#tz<data value='z'>z</data>)re   rf   rg   r_   z<data value=''>z<span class='no-noun'>(no z)</span>rf   N)rª   r	  r¤   ÚsourceÚ
splitlinesÚcode_regionsrï   ÚsetÚrangerf  r`   r   r«   Úadd_regionsÚnarrowr  ÚnameÚ
rpartitionÚlstripro   r¥   rc   r¼   r‰   rÝ   r^   r©   rI  r^  )r‚   r  r  rÞ   Úregion_nounsÚ	num_linesÚregionsÚ	page_dataÚoutside_linesÚregionÚnarrowerr«   Úsorting_namer*  rm   s                 @r)   r  Ú%HtmlReporter.write_region_index_pages?  s‘  ø€ ä"ˆCØ03·±×0HÑ0HÔ0JÓKÒ0J¨ œGÑ0JˆLÐKÜ˜CŸF™FŸM™M›O×6Ñ6Ó8Ó9ˆIØ—f‘f×)Ñ)Ó+ˆGä$�Ø ×,Ñ,¨TÑ2�	ä #¤E¨!¨Y¸©]Ó$;Ó <�Û%�FØ—{‘{ dÓ*Ù Ø!§\¡\Ñ1’Mñ &ô
 ,¨C¯L©LÓ9�Ø×$Ñ$Ô$P±gÓ$PÔPØ×$Ñ$ m _Ô5ä%�FØ—{‘{ dÓ*Ù Ø'Ÿ™¨v¯|©|Ó<�HØ×-Ñ-¨h×BÑBÙ Ø#)§;¡;×#9Ñ#9¸#Ó#>¸rÑ#B×#IÑ#IÈ#Ó#N�LØ×'Ñ'×.Ñ.Ü!Ø#&×#4Ñ#4Ð"5°R¸¿¹°~Ð FÜ!'¨¯©×(@Ñ(@Ó(BÓ!Cà"/´°|Ó0DÐ/EÀRÐ HÜ"(¨¯©Ó"5ñ!6à"+ñ!,ð "*×!1Ñ!1ñ	÷ñ &ð( $Ÿ?™?¨=Ó9�Ø×%Ñ% h×:Ô:Ø×'Ñ'×.Ñ.Ü!Ø #× 1Ñ 1Ü!'¨¯©×(@Ñ(@Ó(BÓ!Cà 1Ø$>¼vÀd»|¸nÈHÐ"Uñ!Và"+ñ!,ð "*×!1Ñ!1ñ	÷ôG %ñ #ðj !%× 0Ñ 0× 6Ñ 6Ö 8ÑˆD�*Ø�v�~Ø×%Ñ% jÖ1ò !9ùòi Ls   ¤Lc                ó‚  • S=p4UR                   =n(       a%  [        XQR                  UR                  5      nU S3nUR                  =n(       a,  [        USUR                  -   SUR                  -   5      nU S3nU R                  R                  5        Vs/ s H^  nUR                  R                  5       UR                  UR                  :w  a  UR                  OSUR                  UR                  :H  S.PM`     nnUR                  UR                  UR                  UR                  S:w  a  UR                  OSU R                  UUSSUS.
n	U	R                  U5        U R                  R                  U	5      n
[        R                  R!                  U R"                  UR                  5      n[%        Xº5        U$ s  snf )zNWrite an index page specified by `index_page`.

Returns the filename created.
r5   z" skipped due to complete coverage.zempty z	 skipped.)Úlabelre   Úcurrentrf   )
rt  rp   rm   Úregion_nounré   Úskipped_covered_msgÚskipped_empty_msgr  r  Úindex_buttons)rr   r   rm   rs   rï   Úvaluesrá   rn   ro   rp   ré   rÌ   rù   rK  r!   r"   r#   rç   rB   )r‚   r*  Úkwargsr  r€  rÃ   ÚthingsÚipr�  Úrender_datar@   ra  s               r)   r^  ÚHtmlReporter.write_index_pagez  s’  € ð
 35Ð4ÐØ×0Ñ0Ð0ˆ1Õ0Ü˜AŸ™°
×0AÑ0AÓBˆFØ%+ HÐ,NÐ"OÐØ×.Ñ.Ð.ˆ1Õ.Ü˜A˜x¨*¯/©/Ñ9¸8Àj×FWÑFWÑ;WÓXˆFØ#) (¨)Ð 4Ðð ×&Ñ&×-Ñ-Ô/ó
ò 0�ð	 Ÿ™Ÿ™Ó*Ø&(§g¡g°·±Ó&@�r—{’{ÀbØŸ7™7 j§o¡oÑ5ôñ
 0ð 	ð 
ð "×+Ñ+Ø ×'Ñ'Ø—O‘OØ.8¯o©oÀÓ.G˜:Ÿ?š?ÈRØ ×-Ñ-Ø#6Ø!2ØØØ*ñ
ˆð 	×Ñ˜6Ô"Ø�‰×%Ñ% kÓ2ˆä—W‘W—\‘\ $§.¡.°*×2EÑ2EÓFˆ
Ü�:Ô$ØÐùò3
s   ÂA%F<)ry   rx   r{   rò   rç   ró   rã   rõ   rô   r|   rñ   rï   rù   rú   ré   rë   rû   rø   Nr´   )rm   rH   rÿ   rH   rµ   rk   )r  r   rµ   Úfloat©rµ   r¶   )r5   )rÐ   rH   r  rH   rµ   r¶   )r«   r   r*  rk   rµ   rí   )r  r¸   rµ   r¶   )r  rH   r  rH   rµ   r¶   )r  zIterable[FileToReport]rµ   r¶   )r*  rk   rƒ  rH   rµ   rH   )rT   rU   rV   rW   rX   r#  r„   rî   r  r  r  r  r  r  r
  r  r^  rZ   rS   r+   r)   rÚ   rÚ     sI   † Ùò€Lô8Tôt

ô9
ôv,ö6ô;ô&ô,\;ô|ô92÷v&r+   rÚ   c                  ó>   • \ rS rSr% SrSrS\S'   \" \S9r	S\S'   S	r
g
)ÚFileInfoi£  zHSummary of the information from last rendering, to avoid duplicate work.r5   rH   Úhashrh   rc   ÚindexrS   N)rT   rU   rV   rW   rX   rŒ  rY   r   rc   r�  rZ   rS   r+   r)   r‹  r‹  £  s   ‡ áRà€Dˆ#ƒNÙ¨YÑ7€Eˆ9Ö7r+   r‹  c                  ót   • \ rS rSrSrSrSrSrSS jrSS jr	SS jr
SS	 jrSS
 jrSS jrSS jrSS jrSrg)rð   i«  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                ó0   • Xl         U R                  5         g r•   )rç   Ú_reset)r‚   rç   s     r)   r„   ÚIncrementalChecker.__init__à  s   € Ø"ŒØ�‰�r+   c                ó    • SU l         0 U l        g)z5Initialize to empty. Causes all files to be reported.r5   N)ÚglobalsrÜ   r  s    r)   r‘  ÚIncrementalChecker._resetä  s   € àˆŒØ*,ˆ�
r+   c                ó~  •  [         R                  R                  U R                  U R                  5      n[        USS9 n[        R                  " U5      nSSS5        WS   U R                  :w  a  SnOUS   [        R                  :w  a  SnOSn U(       al  0 U l        WS   R                  5        HC  u  pVUS	   n[        S0 UD6n[!        S0 US
   D6Ul        [%        US   US9n	X�R                  U'   ME     US   U l        gU R)                  5         g! , (       d  f       NÅ= f! [        [        4 a    Sn N©f = f)z)Read the information we stored last time.r-   r.   NÚformatFÚversionTrÜ   r�  r_   rŒ  )rŒ  r�  r”  rS   )r!   r"   r#   rç   ÚSTATUS_FILEr0   rG  ÚloadÚSTATUS_FORMATrx   rà   ÚOSErrorÚ
ValueErrorrÜ   rI  rc   r   r_   r‹  r”  r‘  )
r‚   Ústatus_fileÚfstatusÚstatusÚusablern   ÚfiledictÚ	indexdictÚ
index_itemÚfileinfos
             r)   r1   ÚIncrementalChecker.readé  s%  € ð	ÜŸ'™'Ÿ,™, t§~¡~°t×7GÑ7GÓHˆKÜ�k¨GÒ4¸ÜŸš 7Ó+�÷ 5ð �hÑ 4×#5Ñ#5Ó5Ø‘Ø˜	Ñ"¤h×&:Ñ&:Ó:Ø‘à‘æØˆDŒJØ&,¨W¡o×&;Ñ&;Ö&=Ñ"�Ø$ WÑ-�	Ü&Ñ3¨Ñ3�
Ü")Ñ">¨I°fÑ,=Ñ">�
”Ü#Ø! &Ñ)Ø$ñ�ð (0—
‘
˜8Ó$ñ '>ð " )Ñ,ˆD�Là�K‰K�M÷5 5Õ4ûäœÐ$ó 	àŠFð	ús)   ‚>D' Á DÁD' Ä
D$Ä D' Ä'D<Ä;D<c                óØ  • [         R                  R                  U R                  U R                  5      nU R
                  U R                  [        R                  U R                  U R                  R                  5        VVs0 s H  u  p#U[        R                  " U5      _M     snnS.n[        USSS9 n[        R                   " XESS9  SSS5        gs  snnf ! , (       d  f       g= f)zWrite the current status.)Únoter—  r˜  r”  rÜ   r"  r-   r.   )Ú,Ú:)Ú
separatorsN)r!   r"   r#   rç   r™  ÚNOTEr›  rx   rà   r”  rÜ   rI  ÚdataclassesÚasdictr0   rG  Údump)r‚   rž  r&   ÚfinfoÚstatus_datarA   s         r)   r>   ÚIncrementalChecker.write	  s­   € ä—g‘g—l‘l 4§>¡>°4×3CÑ3CÓDˆà—I‘IØ×(Ñ(Ü×+Ñ+Ø—|‘|ØKOÏ:É:×K[ÑK[ÔK]Ô^ÒK]¹<¸5�eœ[×/Ò/°Ó6Ò6ÑK]Ò^ñ
ˆô �+˜s¨WÒ5¸Ü�IŠI�k°JÒ?÷ 6Ð5ùó _ç5Õ5ús   Â#CÂ6CÃ
C)c                óº   • [        5       nU H  nUR                  U5        M     UR                  5       nU R                  U:w  a  U R	                  5         X@l        gg)zü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‚   r{   rÔ   r=  Úthese_globalss        r)   r  Ú$IncrementalChecker.check_global_data  sJ   € ô ‹HˆÛˆAØ�H‰H�QŽKñ àŸ™›ˆØ�<‰<˜=Ó(Ø�K‰KŒMØ(�Lð )r+   c                ó4  • [        5       nUR                  UR                  5       R                  S5      5        [	        XR
                  U5        UR                  5       nU R                  R                  U[        5       5      nXVR                  :X  a  gXVl
        g)zì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Ì   rh  r?   r
   rn   rÍ   rÜ   Ú
setdefaultr‹  rŒ  )r‚   r{   rª   r»   rÔ   Ú	this_hashÚ	file_infos          r)   rB  Ú IncrementalChecker.can_skip_file&  sp   € ô ‹HˆØ	�‰�—‘“×#Ñ# GÓ,Ô-Ü˜Ÿ{™{¨AÔ.Ø—K‘K“Mˆ	à—J‘J×)Ñ)¨(´H³JÓ?ˆ	àŸ™Ó&àð 'ŒNØr+   c                ó^   • U R                   R                  U[        5       5      R                  $ )z/Get the information for index.html for `fname`.)rÜ   r¨   r‹  r�  )r‚   r&   s     r)   rC  ÚIncrementalChecker.index_info?  s   € à�z‰z�~‰~˜e¤X£ZÓ0×6Ñ6Ð6r+   c                óT   • X R                   R                  U[        5       5      l        g)z/Set the information for index.html for `fname`.N)rÜ   r·  r‹  r�  )r‚   r&   Úinfos      r)   rM  Ú!IncrementalChecker.set_index_infoC  s   € à9=�
‰
×Ñ˜e¤X£ZÓ0Õ6r+   )rç   rÜ   r”  N)rç   rH   rµ   r¶   r‰  )r{   r   rµ   r¶   )r{   r	   rª   r   r»   rH   rµ   rí   )r&   rH   rµ   rc   )r&   rH   r¾  rc   rµ   r¶   )rT   rU   rV   rW   rX   r™  r›  r¬  r„   r‘  r1   r>   r  rB  rC  rM  rZ   rS   r+   r)   rð   rð   «  sI   † ñ*ðX  €KØ€Mð	Mð 	ôô-ô
ô@@ô)ô ô27÷>r+   rð   c                óF   • U R                  SS5      R                  SS5      $ )zTHTML-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Ð7r+   c                ó    • SR                   " U 6 $ )zEFormat a pair of numbers so JavaScript can read them in an attribute.z{} {})r—  )Úratios    r)   rÞ   rÞ   U  s   € à�>Š>˜5Ð!Ð!r+   c                ó2   • [         R                  " SSU 5      $ )z4Return a prettier version of `filename` for display.z[/\\]u   â€‰\g<0>â€‰)r;   r<   )rn   s    r)   rß   rß   Z  s   € ä�6Š6�(Ð@À(ÓKÐKr+   )r&   rH   rµ   rH   )r&   rH   r@   rH   rµ   r¶   )rÃ   rq   rµ   rH   )rÐ   rH   rÑ   rH   rµ   rH   )rÅ   rH   rµ   rH   )rÄ  ztuple[int, int]rµ   rH   )rn   rH   rµ   rH   )HrX   Ú
__future__r   rD  r­  rö   Ú	functoolsrG  r!   r;   ÚstringÚcollections.abcr   r   r   Útypingr   r   rx   Ú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*   r3   rB   rD   r\   rc   rk   ru   r¸   Úascii_lettersÚdigitsrÁ   ÚcacherÆ   rØ   rÚ   r‹  rð   rÝ   rÞ   rß   rS   r+   r)   Ú<module>rØ     sx  ðñ &å "ã Û Û Û Û Û 	Û 	Û Ý $ß (ß %ã ß 8Ý +Ý (÷	÷ 	ó 	õ 8ß @Ñ @Ý &ß *Ý $æÝ!Ý-ñ �BÓ€ôô ô>ð ÷ð ó ðð$ ÷ð ó ðð ÷3ð 3ó ð3ð ÷	ð 	ó ð	÷jñ j÷Z-ñ -ð × Ñ  6§=¡=Ñ0Ð3PÑP€	ð ‡�ó	ó ð	ô÷"Pñ Pðf ÷8ð 8ó ð8÷Z>ñ Z>ô@8ô"õ
Lr+   