
    L-PhT                        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 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)AnyIOTYPE_CHECKING)__version__)get_analysis_to_report)AnalysisNumbers)TMorfTLineNo)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     S/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/coverage/jsonreport.py__init__zJsonReporter.__init__'   s7     m*T[233
$&    numsr   JsonObjc                P    |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)
n_executedn_statements
pc_coveredpc_covered_str	n_missing
n_excludedr   r    s     r   make_summaryzJsonReporter.make_summary-   s3     "_"/#'+':!^"o
 
 	
r   c                8    |j         |j        |j        |j        d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_summaryz JsonReporter.make_branch_summary8   s*     !O$($; $ 8 $ 7	
 
 	
r   morfsIterable[TMorf] | None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 )zGenerate 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_filenamer0   r   updater:   jsondumpjson_pretty_printr*   r+   )r   r;   r=   coverage_datameasured_filesfile_reporteranalysiss          r   reportzJsonReporter.reportA   s    'SZ..00(()DEEE$"!*..00::<<,5577![;$
 $
  '=dmU'S'S 	 	#M8@D@T@TA AN=::<<== %3!%)%6%6tz%B%B"!!## 	TX&--d.F.Ftz.R.RSSS	6@AAD	
 	
 	
 	
 z&@4:+@@r   r\   r   r_   r
   r^   r   c                l   |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 ]\  }}	i x||	<   }
t-          t/          d|dz                       }|                                D ]N}|j        |k    r||j        z  }|                     ||                    |j                            |
|j        <   O|                     ||                    |                    |
d<   |S )z3Extract the relevant report data for a single file.executed_linessummaryr'   r(   contextsexecuted_branchesr5       )numbersr   r0   sortedexecutedmissingexcludedr   rU   contexts_by_linenofilenamerT   rX   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   r\   r_   r^   r    rd   reported_file	num_linesnounpluralregion_dataoutside_linesregions                r   rV   zJsonReporter.report_one_filej   s2    

d

##D))$X%677#H$455$X%677	"
 "
 ;) 	\(5(H(HIZ([([M*%!!## 	NN433D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;;<<	);;== 	 	LD&244M&!KaQ 7 788M'4466  ;$&&-+/+@+@!OOFL11, ,FK((
 #33.. KOO r   narrowed_analysisc                J   |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.rb   re   rf   r5   )ri   r0   rj   rk   rl   rm   r   rU   rn   ro   rT   rX   r:   rp   rq   rr   rs   )r   r\   r   narrowed_numsnarrowed_summarythis_regionre   s          r   r}   zJsonReporter.make_region_data   s$   )1,,];;$%6%?@@'#$5$=>>$%6%?@@	
 
 ;) 	/$778I8RSSH&.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!   )r;   r<   r=   r>   r   r?   )r\   r   r_   r
   r^   r   r   r!   )r\   r   r   r
   r   r!   )__name__
__module____qualname____doc__report_typer   r0   r:   r`   rV   r}    r   r   r   r   "   s        77K' ' ' '	
 	
 	
 	

 
 
 
'A 'A 'A 'AR) ) ) )V     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   ru   targetstargets       r   rq   rq      sX       ',,.. ! ! 	! 	!F&.    	!! !r   )r   r   r   r   )!r   
__future__r   rQ   rY   rK   collections.abcr   typingr   r   r   r   r   coverage.report_corer	   coverage.resultsr
   r   coverage.typesr   r   r   coverage.datar   coverage.pluginr   dictstrr!   rP   r   rq   r   r   r   <module>r      sa   % $ " " " " " "   



 $ $ $ $ $ $ ) ) ) ) ) ) ) ) ) )             7 7 7 7 7 7 . . . . . . . . ) ) ) ) ) ) ) ) -!!!!!!******,,,,,, sCx.
 H H H H H H H HV! ! ! ! ! !r   