ó
    àÅŸgT  ã                  óî   • S r SSKJ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
Jr  SSKJr  SSKJr  SSKJrJr  SS	KJrJr  \(       a  SS
KJr  SSKJr  SSKJr  \\\	4   rSr " S S5      r    SS jr g)zJson reporting for coverage.pyé    )ÚannotationsN)ÚIterable)ÚAnyÚIOÚTYPE_CHECKING)Ú__version__)Úget_analysis_to_report)ÚAnalysisÚNumbers)ÚTMorfÚTLineNo)ÚCoverage)ÚCoverageData)ÚFileReporteré   c                  óh   • \ 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
rg)ÚJsonReporteré"   z-A reporter for writing JSON coverage results.zJSON reportc                óœ   • Xl         U R                   R                  U l        [        U R                  R                  5      U l        0 U l        g )N)ÚcoverageÚconfigr   Ú	precisionÚtotalÚreport_data)Úselfr   s     ÚT/var/www/blue/EV-Temp_rev04/venv/lib/python3.13/site-packages/coverage/jsonreport.pyÚ__init__ÚJsonReporter.__init__'   s6   € Ø ŒØ—m‘m×*Ñ*ˆŒÜ˜TŸ[™[×2Ñ2Ó3ˆŒ
Ø$&ˆÕó    c                óŒ   • UR                   UR                  UR                  UR                  UR                  UR
                  S.$ )z!Create a dict summarizing `nums`.)Úcovered_linesÚnum_statementsÚpercent_coveredÚpercent_covered_displayÚmissing_linesÚexcluded_lines)Ú
n_executedÚn_statementsÚ
pc_coveredÚpc_covered_strÚ	n_missingÚ
n_excluded©r   Únumss     r   Úmake_summaryÚJsonReporter.make_summary-   s<   € ð "Ÿ_™_Ø"×/Ñ/Ø#Ÿ™Ø'+×':Ñ':Ø!Ÿ^™^Ø"Ÿo™oñ
ð 	
r   c                ó`   • UR                   UR                  UR                  UR                  S.$ )z4Create a dict summarizing the branch info in `nums`.)Únum_branchesÚnum_partial_branchesÚcovered_branchesÚmissing_branches)Ú
n_branchesÚn_partial_branchesÚn_executed_branchesÚn_missing_branchesr-   s     r   Úmake_branch_summaryÚ JsonReporter.make_branch_summary8   s0   € ð !ŸO™OØ$(×$;Ñ$;Ø $× 8Ñ 8Ø $× 7Ñ 7ñ	
ð 	
r   c                óð  • U=(       d    [         R                  nU R                  R                  5       nUR	                  U R
                  R                  5        [        [        [        R                  R                  5       R                  5       UR                  5       U R
                  R                  S.U R                  S'   0 n[        U R                  U5       H(  u  pVU R!                  UUU5      XER#                  5       '   M*     X@R                  S'   U R%                  U R&                  5      U R                  S'   UR                  5       (       a7  U R                  S   R)                  U R+                  U R&                  5      5        [,        R.                  " U R                  UU R
                  R0                  (       a  SOSS9  U R&                  R2                  =(       a    U R&                  R4                  $ )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_filenamer/   r   Úupdater:   ÚjsonÚdumpÚjson_pretty_printr(   r)   )r   ÚmorfsÚoutfileÚcoverage_dataÚmeasured_filesÚfile_reporterÚanalysiss          r   ÚreportÚJsonReporter.reportA   s~  € ð ×'œSŸZ™ZˆØŸ™×.Ñ.Ó0ˆØ×(Ñ(¨¯©×)DÑ)DÔEä$Ü"Ü!×*Ñ*×.Ñ.Ó0×:Ñ:Ó<Ø,×5Ñ5Ó7Ø!Ÿ[™[×;Ñ;ñ$
ˆ×Ñ˜Ñ ð ˆÜ'=¸d¿m¹mÈUÖ'SÑ#ˆMØ@D×@TÑ@TØØØóAˆN×:Ñ:Ó<Ó=ñ (Tð %3×Ñ˜Ñ!Ø%)×%6Ñ%6°t·z±zÓ%Bˆ×Ñ˜Ñ"à×!Ñ!×#Ñ#Ø×Ñ˜XÑ&×-Ñ-¨d×.FÑ.FÀtÇzÁzÓ.RÔSä�	Š	Ø×ÑØØŸ™×6×6‘A¸Dò	
ð �z‰z×&Ñ&×@¨4¯:©:×+@Ñ+@Ð@r   c                ó:  • UR                   nU =R                  U-  sl        U R                  U5      n[        UR                  5      U[        UR
                  5      [        UR                  5      S.nU R                  R                  (       a  UR                  UR                  5      US'   UR                  5       (       aj  UR                  U R                  U5      5        [        [        UR!                  5       5      5      US'   [        [        UR#                  5       5      5      US'   [%        UR'                  5       R)                  5       5      nUR+                  5        Hµ  u  p‰0 =Xi'   n
[-        [/        SUS-   5      5      nUR1                  5        HZ  nUR2                  U:w  a  M  X¼R4                  -  nU R7                  UUR9                  UR4                  5      5      X¬R:                  '   M\     U R7                  UUR9                  U5      5      U
S'   M·     U$ )z3Extract the relevant report data for a single file.©Úexecuted_linesÚsummaryr%   r&   ÚcontextsÚexecuted_branchesr5   é   Ú )Únumbersr   r/   ÚsortedÚexecutedÚmissingÚexcludedr   rQ   Úcontexts_by_linenoÚfilenamerP   rT   r:   ÚlistÚ_convert_branch_arcsÚexecuted_branch_arcsÚmissing_branch_arcsÚlenÚsourceÚ
splitlinesÚcode_region_kindsÚsetÚrangeÚcode_regionsÚkindÚlinesÚmake_region_dataÚnarrowÚname)r   rZ   r]   r\   r.   rc   Úreported_fileÚ	num_linesÚnounÚpluralÚregion_dataÚoutside_linesÚregions                r   rR   ÚJsonReporter.report_one_filej   sÏ  € ð ×ÑˆØ�
Š
�dÑ�
Ø×#Ñ# DÓ)ˆä$ X×%6Ñ%6Ó7ØÜ# H×$4Ñ$4Ó5Ü$ X×%6Ñ%6Ó7ñ	"
ˆð �;‰;×)×)Ø(5×(HÑ(HÈ×IZÑIZÓ([ˆM˜*Ñ%Ø×!Ñ!×#Ñ#Ø�N‰N˜4×3Ñ3°DÓ9Ô:Ü15Ü$ X×%BÑ%BÓ%DÓEó2ˆMÐ-Ñ.ô 15Ü$ X×%AÑ%AÓ%CÓDó1ˆMÐ,Ñ-ô ˜×,Ñ,Ó.×9Ñ9Ó;Ó<ˆ	Ø)×;Ñ;Ö=‰LˆDØ24Ð4ˆMÑ! KÜ¤ a¨°Q©Ó 7Ó8ˆMØ'×4Ñ4Ö6�Ø—;‘; $Ó&ÙØ§¡Ñ-�Ø+/×+@Ñ+@Ø!Ø—O‘O F§L¡LÓ1ó,�ŸK™KÓ(ñ	 7ð #×3Ñ3ØØ—‘ Ó.óˆK˜‹Oñ >ð  Ðr   c                ó2  • UR                   nU R                  U5      n[        UR                  5      U[        UR                  5      [        UR
                  5      S.nU R                  R                  (       a  UR                  UR                  5      nXeS'   UR                  5       (       aj  UR                  U R                  U5      5        [        [        UR                  5       5      5      US'   [        [        UR!                  5       5      5      US'   U$ )z0Create the data object for one region of a file.ra   rd   re   r5   )rh   r/   ri   rj   rk   rl   r   rQ   rm   rn   rP   rT   r:   ro   rp   rq   rr   )r   rZ   Únarrowed_analysisÚnarrowed_numsÚnarrowed_summaryÚthis_regionrd   s          r   r|   ÚJsonReporter.make_region_data•   sù   € à)×1Ñ1ˆØ×,Ñ,¨]Ó;Ðä$Ð%6×%?Ñ%?Ó@Ø'Ü#Ð$5×$=Ñ$=Ó>Ü$Ð%6×%?Ñ%?Ó@ñ	
ˆð �;‰;×)×)Ø$×7Ñ7Ð8I×8RÑ8RÓSˆHØ&.˜
Ñ#Ø×!Ñ!×#Ñ#Ø×#Ñ# D×$<Ñ$<¸]Ó$KÔLÜ/3Ü$Ð%6×%KÑ%KÓ%MÓNó0ˆKÐ+Ñ,ô /3Ü$Ð%6×%JÑ%JÓ%LÓMó/ˆKÐ*Ñ+ð Ðr   )r   r   r   r   N)r   r   ÚreturnÚNone)r.   r   r�   ÚJsonObj)rX   zIterable[TMorf] | NonerY   zIO[str]r�   Úfloat)rZ   r   r]   r
   r\   r   r�   r�   )rZ   r   rˆ   r
   r�   r�   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Úreport_typer   r/   r:   r^   rR   r|   Ú__static_attributes__© r   r   r   r   "   sK   † Ù7à€Kô'ô	
ô
ô'AðR)Ø)ð)Ø5=ð)ØNZð)à	ô)÷Vr   r   c              #  óZ   #   • U R                  5        H  u  pU H  nX4v •  M
     M     g7f)z4Convert branch arcs to a list of two-element tuples.N)Úitems)Úbranch_arcsrt   ÚtargetsÚtargets       r   rp   rp   ­   s.   é € ð '×,Ñ,Ö.‰ˆÛˆFØ�.Ô ó ò /ùs   ‚)+)r›   zdict[TLineNo, list[TLineNo]]r�   z!Iterable[tuple[TLineNo, TLineNo]])!r•   Ú
__future__r   rM   rU   rG   Úcollections.abcr   Útypingr   r   r   r   r   Úcoverage.report_corer	   Úcoverage.resultsr
   r   Úcoverage.typesr   r   r   Úcoverage.datar   Úcoverage.pluginr   ÚdictÚstrr�   rL   r   rp   r˜   r   r   Ú<module>r¨      so   ðñ %å "ã Û Û 
å $ß )Ñ )å  Ý 7ß .ß )æÝ!Ý*Ý,ð ˆs�Cˆx‰.€ð
 €÷Hñ HðV!Ø-ð!à&õ!r   