ó
    Ð]jE  ã                  óò   • 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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)ÚIOÚTYPE_CHECKINGÚAny)Ú__version__)Úget_analysis_to_report)ÚAnalysisÚAnalysisNarrowerÚNumbers)ÚTLineNoÚTMorfs)ÚCoverage)ÚCoverageData)ÚFileReporteré   c                  óx   • \ 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     ÚP/home/mande/repo/quber/.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
                  UR                  UR                  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_summaryÚJsonReporter.make_summary-   sN   € ð "Ÿ_™_Ø"×/Ñ/Ø#Ÿ™Ø'+×':Ñ':Ø!Ÿ^™^Ø"Ÿo™oØ*.×*<Ñ*<Ø26×2HÑ2Hñ	
ð 		
r!   c                óŒ   • UR                   UR                  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Úpercent_branches_coveredÚ percent_branches_covered_display)Ú
n_branchesÚn_partial_branchesÚn_executed_branchesÚn_missing_branchesÚpc_branchesÚpc_branches_strr3   s     r   Úmake_branch_summaryÚ JsonReporter.make_branch_summary:   sB   € ð !ŸO™OØ$(×$;Ñ$;Ø $× 8Ñ 8Ø $× 7Ñ 7Ø(,×(8Ñ(8Ø04×0DÑ0Dñ
ð 	
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_filenamer5   r   ÚupdaterD   ÚjsonÚdumpÚjson_pretty_printr,   r-   )r   ÚmorfsÚoutfileÚcoverage_dataÚmeasured_filesÚfile_reporterÚanalysiss          r   ÚreportÚJsonReporter.reportE   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       nUR-                  5        GH  u  mn	[/        [1        SUS-   5      5      n
U H#  nUR2                  T:w  a  M  X«R4                  -  n
M%     [7        U5      nUR9                  U4S jU 5       5        UR9                  U
/5        0 =Xi'   nU HW  nUR2                  T:w  a  M  U R;                  UUR=                  UR4                  5      UR>                  5      XÛR@                  '   MY     U R;                  UUR=                  U
5      [C        U
SS95      US'   GM     U$ )	z3Extract the relevant report data for a single file.)Úexecuted_linesÚsummaryr'   r(   ÚcontextsÚexecuted_branchesr;   é   c              3  ó^   >#   • U  H"  oR                   T:X  d  M  UR                  v •  M$     g 7fr   )ÚkindÚlines)Ú.0ÚrÚnouns     €r   Ú	<genexpr>Ú/JsonReporter.report_one_file.<locals>.<genexpr>�   s   øé € Ð L²'¨Q¿V¹VÀt¹^£ §¦²'ùs   ƒ-š-)ÚdefaultÚ )"Únumbersr   r5   ÚsortedÚexecutedÚmissingÚexcludedr   r[   Úcontexts_by_linenoÚfilenamerZ   r^   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   rd   rg   rf   r4   rl   Úreported_fileÚ	num_linesÚregionsÚpluralÚoutside_linesÚregionÚnarrowerÚregion_dataru   s                 @r   r\   ÚJsonReporter.report_one_filen   s1  ø€ ð ×ÑˆØ�
Š
�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ó,�ŸK™KÓ(ñ "ð #×3Ñ3ØØ—‘ Ó.Ü�M¨1Ñ-óˆK˜ŒOñ+ >ð4 Ðr!   c                ó4  • UR                   nU R                  U5      n[        UR                  5      U[        UR                  5      [        UR
                  5      US.nU R                  R                  (       a  UR                  UR                  5      nXvS'   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.)rk   rl   r'   r(   Ú
start_linerm   rn   r;   )rz   r5   r{   r|   r}   r~   r   r[   r   r€   rZ   r^   rD   r�   r‚   rƒ   r„   )r   rd   Únarrowed_analysisrœ   Únarrowed_numsÚnarrowed_summaryÚthis_regionrm   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)r4   r   r¢   ÚJsonObj)rb   r   rc   zIO[str]r¢   Úfloat)rd   r   rg   r
   rf   r   r¢   r¤   )rd   r   r�   r
   rœ   Úintr¢   r¤   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Úreport_typer   r5   rD   rh   r\   r�   Ú__static_attributes__© r!   r   r   r   "   sq   † Ù7à€Kô'ô
ô	
ô'AðR4Ø)ð4Ø5=ð4ØNZð4à	ô4ðlà#ðð $ðð ð	ð
 
÷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_arcsr†   ÚtargetsÚtargets       r   r‚   r‚   Â   s.   é € ð '×,Ñ,Ö.‰ˆÛˆFØ�.Ô ó ò /ùs   ‚)+)r±   zdict[TLineNo, list[TLineNo]]r¢   z!Iterable[tuple[TLineNo, TLineNo]])"r«   Ú
__future__r   rW   r_   rQ   Úcollections.abcr   Útypingr   r   r   r   r   Úcoverage.report_corer	   Úcoverage.resultsr
   r   r   Úcoverage.typesr   r   r   Úcoverage.datar   Úcoverage.pluginr   ÚdictÚstrr¤   rV   r   r‚   r®   r!   r   Ú<module>r¾      sr   ðñ %å "ã Û Û 
Ý $ß )Ñ )å  Ý 7ß @Ñ @ß *æÝ!Ý*Ý,ð ˆs�Cˆx‰.€ð
 €÷]ñ ]ð@!Ø-ð!à&õ!r!   