§
    0›jE  ã                  óì   — d Z ddlm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
mZ ddlmZ ddlmZ ddlmZmZmZ dd	lmZmZ e
rdd
lmZ ddlmZ ddlmZ eeef         ZdZ G d„ d¦  «        Z dd„Z!dS )zJson reporting for coverage.pyé    )ÚannotationsN)ÚIterable)ÚIOÚTYPE_CHECKINGÚAny)Ú__version__)Úget_analysis_to_report)ÚAnalysisÚAnalysisNarrowerÚNumbers)ÚTLineNoÚTMorfs)ÚCoverage)ÚCoverageData)ÚFileReporteré   c                  óF   — e 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S )$ÚJsonReporterz-A reporter for writing JSON coverage results.zJSON reportÚcoverager   ÚreturnÚNonec                ó€   — || _         | j         j        | _        t          | j        j        ¦  «        | _        i | _        d S ©N)r   Úconfigr   Ú	precisionÚtotalÚreport_data)Úselfr   s     úR/home/lighthouse/health/venv/lib64/python3.11/site-packages/coverage/jsonreport.pyÚ__init__zJsonReporter.__init__'   s7   € Ø ˆŒØ”mÔ*ˆŒÝ˜Tœ[Ô2Ñ3Ô3ˆŒ
Ø$&ˆÔÐÐó    Únumsr   ÚJsonObjc           	     óh   — |j         |j        |j        |j        |j        |j        |j        |j        dœS )z!Create a dict summarizing `nums`.)Úcovered_linesÚnum_statementsÚpercent_coveredÚpercent_covered_displayÚmissing_linesÚexcluded_linesÚpercent_statements_coveredÚ"percent_statements_covered_display)Ú
n_executedÚn_statementsÚ
pc_coveredÚpc_covered_strÚ	n_missingÚ
n_excludedÚpc_statementsÚpc_statements_str©r   r"   s     r   Úmake_summaryzJsonReporter.make_summary-   s?   € ð "œ_Ø"Ô/Ø#œØ'+Ô':Ø!œ^Ø"œoØ*.Ô*<Ø26Ô2Hð	
ð 	
ð 		
r!   c                óP   — |j         |j        |j        |j        |j        |j        dœS )z4Create a dict summarizing the branch info in `nums`.)Únum_branchesÚnum_partial_branchesÚcovered_branchesÚmissing_branchesÚpercent_branches_coveredÚ percent_branches_covered_display)Ú
n_branchesÚn_partial_branchesÚn_executed_branchesÚn_missing_branchesÚpc_branchesÚpc_branches_strr5   s     r   Úmake_branch_summaryz JsonReporter.make_branch_summary:   s6   € ð !œOØ$(Ô$;Ø $Ô 8Ø $Ô 7Ø(,Ô(8Ø04Ô0Dð
ð 
ð 	
r!   Úmorfsr   ÚoutfileúIO[str]Úfloatc                ó\  — |pt           j        }| j                             ¦   «         }|                     | j        j        ¦  «         t          t          t          j	         
                    ¦   «                              ¦   «         |                     ¦   «         | j        j        dœ| j        d<   i }t          | j        |¦  «        D ]1\  }}|                      |||¦  «        ||                     ¦   «         <   Œ2|| j        d<   |                      | j        ¦  «        | j        d<   |                     ¦   «         r8| j        d                              |                      | j        ¦  «        ¦  «         t-          j        | j        || j        j        rdnd¬¦  «         | j        j        o| j        j        S )zœGenerate a json report for `morfs`.

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

        `outfile` is a file object to write the json to.

        )ÚformatÚversionÚ	timestampÚbranch_coverageÚshow_contextsÚmetaÚfilesÚtotalsé   N)Úindent)ÚsysÚstdoutr   Úget_dataÚset_query_contextsr   Úreport_contextsÚFORMAT_VERSIONr   ÚdatetimeÚnowÚ	isoformatÚhas_arcsÚjson_show_contextsr   r	   Úreport_one_fileÚrelative_filenamer6   r   ÚupdaterD   ÚjsonÚdumpÚjson_pretty_printr.   r/   )r   rE   rF   Úcoverage_dataÚmeasured_filesÚfile_reporterÚanalysiss          r   ÚreportzJsonReporter.reportE   s�  € ð Ð'�SœZˆØœ×.Ò.Ñ0Ô0ˆØ×(Ò(¨¬Ô)DÑEÔEÐEå$Ý"Ý!Ô*×.Ò.Ñ0Ô0×:Ò:Ñ<Ô<Ø,×5Ò5Ñ7Ô7Ø!œ[Ô;ð$
ð $
ˆÔ˜Ñ ð ˆÝ'=¸d¼mÈUÑ'SÔ'Sð 	ð 	Ñ#ˆM˜8Ø@D×@TÒ@TØØØñAô AˆN˜=×:Ò:Ñ<Ô<Ñ=Ð=ð %3ˆÔ˜Ñ!Ø%)×%6Ò%6°t´zÑ%BÔ%BˆÔ˜Ñ"à×!Ò!Ñ#Ô#ð 	TØÔ˜XÔ&×-Ò-¨d×.FÒ.FÀtÄzÑ.RÔ.RÑSÔSÐSåŒ	ØÔØØœÔ6Ð@�A�A¸Dð	
ñ 	
ô 	
ð 	
ð ŒzÔ&Ð@¨4¬:Ô+@Ð@r!   re   r   rh   r
   rg   r   c           	     óP  ‡— |j         }| xj        |z  c_        |                      |¦  «        }t          |j        ¦  «        |t          |j        ¦  «        t          |j        ¦  «        dœ}| j        j        r| 	                    |j
        ¦  «        |d<   |                     ¦   «         rŠ|                     |                      |¦  «        ¦  «         t          t          |                     ¦   «         ¦  «        ¦  «        |d<   t          t          |                     ¦   «         ¦  «        ¦  «        |d<   t%          |                     ¦   «                              ¦   «         ¦  «        }|                     ¦   «         }|                     ¦   «         D �]\  Š}	t/          t1          d|dz   ¦  «        ¦  «        }
|D ]}|j        ‰k    rŒ|
|j        z  }
Œt7          |¦  «        }|                     ˆfd„|D ¦   «         ¦  «         |                     |
g¦  «         i x||	<   }|D ]J}|j        ‰k    rŒ|                      ||                     |j        ¦  «        |j        ¦  «        ||j         <   ŒK|                      ||                     |
¦  «        tC          |
d¬¦  «        ¦  «        |d<   �Œ|S )	z3Extract the relevant report data for a single file.)Úexecuted_linesÚsummaryr)   r*   ÚcontextsÚexecuted_branchesr;   é   c              3  ó<   •K  — | ]}|j         ‰k    ¯|j        V — Œd S r   )ÚkindÚlines)Ú.0ÚrÚnouns     €r   ú	<genexpr>z/JsonReporter.report_one_file.<locals>.<genexpr>�   s+   øè è € Ð LÐ L¨Q¸Q¼VÀtº^¸^ ¤¸^¸^¸^¸^Ð LÐ Lr!   )ÚdefaultÚ )"Únumbersr   r6   ÚsortedÚexecutedÚmissingÚexcludedr   r^   Úcontexts_by_linenoÚfilenamer]   ra   rD   ÚlistÚ_convert_branch_arcsÚexecuted_branch_arcsÚmissing_branch_arcsÚlenÚsourceÚ
splitlinesÚcode_regionsÚcode_region_kindsÚsetÚrangerq   rr   r   Úadd_regionsÚmake_region_dataÚnarrowÚstartÚnameÚmin)r   re   rh   rg   r"   rl   Úreported_fileÚ	num_linesÚregionsÚpluralÚoutside_linesÚregionÚnarrowerÚregion_dataru   s                 @r   r_   zJsonReporter.report_one_filen   sº  ø€ ð ÔˆØˆ
Œ
�dÑˆ
Œ
Ø×#Ò# DÑ)Ô)ˆå$ XÔ%6Ñ7Ô7ØÝ# HÔ$4Ñ5Ô5Ý$ XÔ%6Ñ7Ô7ð	"
ð "
ˆð Œ;Ô)ð 	\Ø(5×(HÒ(HÈÔIZÑ([Ô([ˆM˜*Ñ%Ø×!Ò!Ñ#Ô#ð 	Ø�NŠN˜4×3Ò3°DÑ9Ô9Ñ:Ô:Ð:Ý15Ý$ X×%BÒ%BÑ%DÔ%DÑEÔEñ2ô 2ˆMÐ-Ñ.õ 15Ý$ X×%AÒ%AÑ%CÔ%CÑDÔDñ1ô 1ˆMÐ,Ñ-õ ˜×,Ò,Ñ.Ô.×9Ò9Ñ;Ô;Ñ<Ô<ˆ	Ø×,Ò,Ñ.Ô.ˆØ)×;Ò;Ñ=Ô=ð 	ñ 	‰LˆD�&Ý¥ a¨°Q©Ñ 7Ô 7Ñ8Ô8ˆMØ!ð .ð .�Ø”; $Ò&Ð&ØØ ¤Ñ-��å'¨Ñ1Ô1ˆHØ× Ò Ð LÐ LÐ LÐ L°'Ð LÑ LÔ LÑLÔLÐLØ× Ò  - Ñ1Ô1Ð1à24Ð4ˆM˜&Ñ! KØ!ð ð �Ø”; $Ò&Ð&ØØ+/×+@Ò+@Ø!Ø—O’O F¤LÑ1Ô1Ø”Lñ,ô ,�˜FœKÑ(Ð(ð #×3Ò3ØØ—’ Ñ.Ô.Ý�M¨1Ð-Ñ-Ô-ñô ˆK˜‰O‰Oð
 Ðr!   Únarrowed_analysisÚ
start_lineÚintc                óL  — |j         }|                      |¦  «        }t          |j        ¦  «        |t          |j        ¦  «        t          |j        ¦  «        |dœ}| j        j        r|                     |j	        ¦  «        }||d<   | 
                    ¦   «         rŠ|                     |                      |¦  «        ¦  «         t          t          |                     ¦   «         ¦  «        ¦  «        |d<   t          t          |                     ¦   «         ¦  «        ¦  «        |d<   |S )z0Create the data object for one region of a file.)rk   rl   r)   r*   rš   rm   rn   r;   )ry   r6   rz   r{   r|   r}   r   r^   r~   r   r]   ra   rD   r€   r�   r‚   rƒ   )r   re   r™   rš   Únarrowed_numsÚnarrowed_summaryÚthis_regionrm   s           r   rŒ   zJsonReporter.make_region_data¤   s)  € ð *Ô1ˆØ×,Ò,¨]Ñ;Ô;Ðå$Ð%6Ô%?Ñ@Ô@Ø'Ý#Ð$5Ô$=Ñ>Ô>Ý$Ð%6Ô%?Ñ@Ô@Ø$ð
ð 
ˆð Œ;Ô)ð 	/Ø$×7Ò7Ð8IÔ8RÑSÔSˆHØ&.ˆK˜
Ñ#Ø×!Ò!Ñ#Ô#ð 	Ø×#Ò# D×$<Ò$<¸]Ñ$KÔ$KÑLÔLÐLÝ/3Ý$Ð%6×%KÒ%KÑ%MÔ%MÑNÔNñ0ô 0ˆKÐ+Ñ,õ /3Ý$Ð%6×%JÒ%JÑ%LÔ%LÑMÔMñ/ô /ˆKÐ*Ñ+ð Ðr!   N)r   r   r   r   )r"   r   r   r#   )rE   r   rF   rG   r   rH   )re   r   rh   r
   rg   r   r   r#   )re   r   r™   r
   rš   r›   r   r#   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úreport_typer    r6   rD   ri   r_   rŒ   © r!   r   r   r   "   s�   € € € € € Ø7Ð7à€Kð'ð 'ð 'ð 'ð
ð 
ð 
ð 
ð	
ð 	
ð 	
ð 	
ð'Að 'Að 'Að 'AðR4ð 4ð 4ð 4ðlð ð ð ð ð r!   r   Úbranch_arcsúdict[TLineNo, list[TLineNo]]r   ú!Iterable[tuple[TLineNo, TLineNo]]c              #  óT   K  — |                       ¦   «         D ]\  }}|D ]}||fV — Œ	ŒdS )z4Convert branch arcs to a list of two-element tuples.N)Úitems)r¦   r…   ÚtargetsÚtargets       r   r�   r�   Â   sX   è è € ð '×,Ò,Ñ.Ô.ð !ð !‰ˆ�Øð 	!ð 	!ˆFØ˜&�.Ð Ð Ð Ð ð	!ð!ð !r!   )r¦   r§   r   r¨   )"r£   Ú
__future__r   rZ   rb   rT   Úcollections.abcr   Útypingr   r   r   r   r   Úcoverage.report_corer	   Úcoverage.resultsr
   r   r   Úcoverage.typesr   r   r   Úcoverage.datar   Úcoverage.pluginr   ÚdictÚstrr#   rY   r   r�   r¥   r!   r   ú<module>r·      sg  ðð %Ð $à "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø 
€
€
€
Ø $Ð $Ð $Ð $Ð $Ð $Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )à  Ð  Ð  Ð  Ð  Ð  Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *àð -Ø!Ð!Ð!Ð!Ð!Ð!Ø*Ð*Ð*Ð*Ð*Ð*Ø,Ð,Ð,Ð,Ð,Ð,ð ˆs�CˆxŒ.€ð
 €ð]ð ]ð ]ð ]ð ]ñ ]ô ]ð ]ð@!ð !ð !ð !ð !ð !r!   