Ë
    oPêjn  ã                  óæ   — 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mZmZ ddlmZmZ dd	l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"y)zJson reporting for coverage.pyé    )ÚannotationsN)ÚIterable)ÚIOÚTYPE_CHECKINGÚAny)Úget_analysis_to_report)ÚAnalysisÚAnalysisNarrowerÚNumbers)ÚTLineNoÚTMorfs)Ú__version__)ÚCoverage)ÚCoverageData)ÚFileReporteré   c                  ód   — 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
y	)ÚJsonReporterz-A reporter for writing JSON coverage results.zJSON reportc                óž   — || _         | j                   j                  | _        t        | j                  j                  «      | _        i | _        y ©N)ÚcoverageÚconfigr   Ú	precisionÚtotalÚreport_data)Úselfr   s     úX/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/coverage/jsonreport.pyÚ__init__zJsonReporter.__init__)   s8   € Ø ˆŒØ—m‘m×*Ñ*ˆŒÜ˜TŸ[™[×2Ñ2Ó3ˆŒ
Ø$&ˆÕó    c           	     ó¸   — |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   Únumss     r   Úmake_summaryzJsonReporter.make_summary/   sN   € ð "Ÿ_™_Ø"×/Ñ/Ø#Ÿ™Ø'+×':Ñ':Ø!Ÿ^™^Ø"Ÿo™oØ*.×*<Ñ*<Ø26×2HÑ2Hñ	
ð 		
r   c                óŒ   — |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_strr1   s     r   Úmake_branch_summaryz JsonReporter.make_branch_summary<   sB   € ð !ŸO™OØ$(×$;Ñ$;Ø $× 8Ñ 8Ø $× 7Ñ 7Ø(,×(8Ñ(8Ø04×0DÑ0Dñ
ð 	
r   c                óÎ  — |xs t         j                  }| j                  j                  «       }|j	                  | j
                  j                  «       t        t        t        j                  j                  «       j                  «       |j                  «       | j
                  j                  dœ| j                  d<   i }t        | j                  |«      D ])  \  }}| j!                  |||«      ||j#                  «       <   Œ+ || j                  d<   | j%                  | j&                  «      | j                  d<   |j                  «       r7| j                  d   j)                  | j+                  | j&                  «      «       t-        j.                  | j                  || j
                  j0                  rdnd¬«       | j&                  j2                  xr | j&                  j4                  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_filenamer3   r   ÚupdaterA   ÚjsonÚdumpÚjson_pretty_printr*   r+   )r   ÚmorfsÚoutfileÚcoverage_dataÚmeasured_filesÚfile_reporterÚanalysiss          r   ÚreportzJsonReporter.reportG   s…  € ð Ò'œSŸZ™ZˆØŸ™×.Ñ.Ó0ˆØ×(Ñ(¨¯©×)DÑ)DÔEä$Ü"Ü!×*Ñ*×.Ñ.Ó0×:Ñ:Ó<Ø,×5Ñ5Ó7Ø!Ÿ[™[×;Ñ;ñ$
ˆ×Ñ˜Ñ ð ˆÜ'=¸d¿m¹mÈUÓ'Sò 	Ñ#ˆM˜8Ø@D×@TÑ@TØØØóAˆN˜=×:Ñ:Ó<Ò=ð	ð %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           	     óö  ‡— |j                   }| xj                  |z  c_        | j                  |«      }t        |j                  «      |t        |j
                  «      t        |j                  «      dœ}| j                  j                  r|j                  |j                  «      |d<   |j                  «       rj|j                  | j                  |«      «       t        t        |j!                  «       «      «      |d<   t        t        |j#                  «       «      «      |d<   t%        |j'                  «       j)                  «       «      }|j+                  «       }|j-                  «       D �]  \  Š}	t/        t1        d|dz   «      «      }
|D ]!  }|j2                  ‰k7  rŒ|
|j4                  z  }
Œ# t7        |«      }|j9                  ˆfd„|D «       «       |j9                  |
g«       i x||	<   }|D ]U  }|j2                  ‰k7  rŒ| j;                  ||j=                  |j4                  «      |j>                  «      ||j@                  <   ŒW | j;                  ||j=                  |
«      tC        |
d¬«      «      |d<   �Œ |S )	z3Extract the relevant report data for a single file.)Úexecuted_linesÚsummaryr%   r&   ÚcontextsÚexecuted_branchesr8   é   c              3  óV   •K  — | ]   }|j                   ‰k(  sŒ|j                  –— Œ" y ­wr   )ÚkindÚlines)Ú.0ÚrÚnouns     €r   ú	<genexpr>z/JsonReporter.report_one_file.<locals>.<genexpr>’   s   øè ø€ Ò L¨Q¸Q¿V¹VÀt»^ §¥Ñ Lùs   ƒ)˜))ÚdefaultÚ )"Únumbersr   r3   ÚsortedÚexecutedÚmissingÚexcludedr   rW   Úcontexts_by_linenoÚfilenamerV   rZ   rA   ÚlistÚ_convert_branch_arcsÚexecuted_branch_arcsÚmissing_branch_arcsÚlenÚsourceÚ
splitlinesÚcode_regionsÚcode_region_kindsÚsetÚrangerl   rm   r
   Úadd_regionsÚmake_region_dataÚnarrowÚstartÚnameÚmin)r   r`   rc   rb   r2   rg   Úreported_fileÚ	num_linesÚregionsÚpluralÚoutside_linesÚregionÚnarrowerÚregion_datarp   s                 @r   rX   zJsonReporter.report_one_filep   sC  ø€ ð ×ÑˆØ�
Š
�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�&Ü¤ a¨°Q©Ó 7Ó8ˆMØ!ò .�Ø—;‘; $Ò&ØØ §¡Ñ-‘ð.ô
 (¨Ó1ˆHØ× Ñ Ó L°'Ô LÔLØ× Ñ  - Ô1à24Ð4ˆM˜&Ñ! KØ!ò �Ø—;‘; $Ò&ØØ+/×+@Ñ+@Ø!Ø—O‘O F§L¡LÓ1Ø—L‘Ló,�˜FŸK™KÒ(ðð #×3Ñ3ØØ—‘ Ó.Ü�M¨1Ô-óˆK˜‹Oð+	ð4 Ðr   c                ó"  — |j                   }| j                  |«      }t        |j                  «      |t        |j                  «      t        |j
                  «      |dœ}| j                  j                  r |j                  |j                  «      }||d<   |j                  «       rj|j                  | j                  |«      «       t        t        |j                  «       «      «      |d<   t        t        |j!                  «       «      «      |d<   |S )z0Create the data object for one region of a file.)rf   rg   r%   r&   Ú
start_linerh   ri   r8   )rt   r3   ru   rv   rw   rx   r   rW   ry   rz   rV   rZ   rA   r{   r|   r}   r~   )r   r`   Únarrowed_analysisr•   Únarrowed_numsÚnarrowed_summaryÚthis_regionrh   s           r   r‡   zJsonReporter.make_region_data¦   sý   € ð *×1Ñ1ˆØ×,Ñ,¨]Ó;Ðä$Ð%6×%?Ñ%?Ó@Ø'Ü#Ð$5×$=Ñ$=Ó>Ü$Ð%6×%?Ñ%?Ó@Ø$ñ
ˆð �;‰;×)Ò)Ø$×7Ñ7Ð8I×8RÑ8RÓSˆHØ&.ˆK˜
Ñ#Ø×!Ñ!Ô#Ø×#Ñ# D×$<Ñ$<¸]Ó$KÔLÜ/3Ü$Ð%6×%KÑ%KÓ%MÓNó0ˆKÐ+Ñ,ô /3Ü$Ð%6×%JÑ%JÓ%LÓMó/ˆKÐ*Ñ+ð Ðr   N)r   r   ÚreturnÚNone)r2   r   rš   ÚJsonObj)r^   r   r_   zIO[str]rš   Úfloat)r`   r   rc   r	   rb   r   rš   rœ   )r`   r   r–   r	   r•   Úintrš   rœ   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úreport_typer   r3   rA   rd   rX   r‡   © r   r   r   r   $   sq   „ Ù7à€Kó'ó
ó	
ó'AðR4Ø)ð4Ø5=ð4ØNZð4à	ó4ðlà#ðð $ðð ð	ð
 
ôr   r   c              #  óV   K  — | j                  «       D ]  \  }}|D ]  }||f–— Œ
 Œ y­w)z4Convert branch arcs to a list of two-element tuples.N)Úitems)Úbranch_arcsr€   ÚtargetsÚtargets       r   r|   r|   Ä   s=   è ø€ ð '×,Ñ,Ó.ò !‰ˆ�Øò 	!ˆFØ˜&�.Ó ñ	!ñ!ùs   ‚'))r§   zdict[TLineNo, list[TLineNo]]rš   z!Iterable[tuple[TLineNo, TLineNo]])#r¢   Ú
__future__r   rS   r[   rM   Úcollections.abcr   Útypingr   r   r   Úcoverage.report_corer   Úcoverage.resultsr	   r
   r   Úcoverage.typesr   r   Úcoverage.versionr   r   r   Úcoverage.datar   Úcoverage.pluginr   ÚdictÚstrrœ   rR   r   r|   r¤   r   r   ú<module>rµ      st   ðñ %õ #ã Û Û 
Ý $ß )Ñ )å 7ß @Ñ @ß *Ý (áÝ!Ý*Ý,ð ˆs�Cˆx‰.€ð
 €÷]ñ ]ð@!Ø-ð!à&ô!r   