§
    0›jŽ  ã                  óÀ   — d Z ddlmZ ddlZddlZddlZddl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 erdd	lmZ dd„Zd d„Zd!d„Zd"d„Z G d„ d¦  «        ZdS )#zLCOV reporting for coverage.py.é    )ÚannotationsN)ÚIOÚTYPE_CHECKING)ÚFileReporter)Úget_analysis_to_report)ÚAnalysisÚAnalysisNarrowerÚNumbers)ÚTMorfs)ÚCoverageÚlineÚstrÚreturnc                óì   — t          j        |                      d¦  «        d¬¦  «                             ¦   «         }t	          j        |¦  «                             d¦  «                             d¦  «        S )z9Produce a hash of a source line for use in the LCOV file.zutf-8F)ÚusedforsecurityÚasciiú=)ÚhashlibÚmd5ÚencodeÚdigestÚbase64Ú	b64encodeÚdecodeÚrstrip)r   Úhasheds     úR/home/lighthouse/health/venv/lib64/python3.11/site-packages/coverage/lcovreport.pyÚ	line_hashr      s]   € õ Œ[˜Ÿš WÑ-Ô-¸uÐEÑEÔE×LÒLÑNÔN€FÝÔ˜FÑ#Ô#×*Ò*¨7Ñ3Ô3×:Ò:¸3Ñ?Ô?Ð?ó    Úanalysisr   Úlinesú	list[int]Úsource_linesú	list[str]ÚoutfileúIO[str]ÚNonec           	     óf  — d}|D ]S}|rdt          ||dz
           ¦  «        z   }t          || j        v¦  «        }|                     d|› d|› |› d�¦  «         ŒT| j        j        dk    rH|                     d| j        j        › d�¦  «         |                     d| j        j        › d�¦  «         d	S d	S )
z0Emit line coverage records for an analyzed file.Ú ú,é   zDA:ú
r   zLF:zLH:N)r   ÚintÚmissingÚwriteÚnumbersÚn_statementsÚ
n_executed)r    r!   r#   r%   Úhash_suffixr   Úhits          r   Ú
lcov_linesr5   "   sè   € ð €KØð 9ð 9ˆØð 	BØ¥	¨,°t¸a±xÔ*@Ñ AÔ AÑAˆKõ �$˜hÔ.Ð.Ñ/Ô/ˆØ�ŠÐ7˜DÐ7Ð7 3Ð7¨Ð7Ð7Ð7Ñ8Ô8Ð8Ð8àÔÔ$ qÒ(Ð(Ø�ŠÐ=˜HÔ,Ô9Ð=Ð=Ð=Ñ>Ô>Ð>Ø�ŠÐ;˜HÔ,Ô7Ð;Ð;Ð;Ñ<Ô<Ð<Ð<Ð<ð )Ð(r   Úfrr   Úfile_analysisc           
     ód  — d„ |                       ¦   «         D ¦   «         }|sdS t          |¦  «        }|                     d„ |D ¦   «         ¦  «         |                     ¦   «          d}|D ]‡\  }}}|                     |j        ¦  «        }	t          |	j        j        dk    ¦  «        }
||
z  }| 	                    d|› d|› d|j
        › d�¦  «         | 	                    d|
› d|j
        › d�¦  «         Œˆ| 	                    d	t          |¦  «        › d�¦  «         | 	                    d
|› d�¦  «         dS )z4Emit function coverage records for an analyzed file.c           	     óÐ   — g | ]c}|j         d k    ¯|j        ¯t          |j        t          |j        ¦  «        ¦  «        t	          |j        t	          |j        ¦  «        ¦  «        |f‘ŒdS )Úfunction)Úkindr!   ÚminÚstartÚmax)Ú.0Úregions     r   ú
<listcomp>z"lcov_functions.<locals>.<listcomp>G   sq   € ð ð ð ð ØŒ;˜*Ò$Ð$¨¬Ð$õ �”�c &¤,Ñ/Ô/Ñ0Ô0Ý�”�c &¤,Ñ/Ô/Ñ0Ô0Øð	
ð %Ð$Ð$r   Nc              3  ó,   K  — | ]\  }}}|j         V — Œd S ©N)r!   )r?   Ú_Úrs      r   ú	<genexpr>z!lcov_functions.<locals>.<genexpr>T   s*   è è € Ð:Ð:¡W Q¨¨1˜œÐ:Ð:Ð:Ð:Ð:Ð:r   r   zFN:r*   r,   zFNDA:zFNF:zFNH:)Úcode_regionsr	   Úadd_regionsÚsortÚnarrowr!   r-   r0   r2   r/   ÚnameÚlen)r6   r7   r%   Ú	functionsÚnarrowerÚfunctions_hitÚ
first_lineÚ	last_liner@   r    r4   s              r   Úlcov_functionsrR   7   sp  € ð ð ð —o’oÑ'Ô'ðñ ô €Ið ð Øˆå Ñ.Ô.€HØ×ÒÐ:Ð:°	Ð:Ñ:Ô:Ñ:Ô:Ð:à‡N‚NÑÔÐØ€MØ)2ð 5ð 5Ñ%ˆ
�I˜vð —?’? 6¤<Ñ0Ô0ˆÝ�(Ô"Ô-°Ò1Ñ2Ô2ˆØ˜Ñˆà�ŠÐD˜JÐDÐD¨ÐDÐD°V´[ÐDÐDÐDÑEÔEÐEØ�ŠÐ3˜cÐ3Ð3 F¤KÐ3Ð3Ð3Ñ4Ô4Ð4Ð4à‡M‚MÐ+�˜Y™œÐ+Ð+Ð+Ñ,Ô,Ð,Ø‡M‚MÐ*˜Ð*Ð*Ð*Ñ+Ô+Ð+Ð+Ð+r   c                óL  — |                      ¦   «         }|                     ¦   «         }|                     ¦   «         }|D ]Ñ}||vrŒ||         \  }}	|	dk    r.t          ||         ¦  «        dk    sJ ‚d„ ||         D ¦   «         }
n7d„ ||         D ¦   «         }
|
                     d„ ||         D ¦   «         ¦  «         |
                     d„ ¬¦  «         |
D ]:\  }}|                      ||¦  «        }|                     d|› d|› d	|› d
�¦  «         Œ;ŒÒt          d„ | 	                    ¦   «         D ¦   «         ¦  «        }|t          d„ | 	                    ¦   «         D ¦   «         ¦  «        z
  }|dk    r4|                     d|› d
�¦  «         |                     d|› d
�¦  «         dS dS )z2Emit branch coverage records for an analyzed file.r   c                ó   — g | ]}|d f‘ŒS )ú-© ©r?   Údsts     r   rA   zlcov_arcs.<locals>.<listcomp>~   s   € ÐEÐEÐE¨3˜S #˜JÐEÐEÐEr   c                ó   — g | ]}|d f‘ŒS )Ú1rV   rW   s     r   rA   zlcov_arcs.<locals>.<listcomp>ƒ   s   € ÐFÐFÐF¨3˜S #˜JÐFÐFÐFr   c              3  ó   K  — | ]}|d fV — Œ	dS )Ú0NrV   rW   s     r   rF   zlcov_arcs.<locals>.<genexpr>„   s&   è è € ÐIÐI¨s  c 
ÐIÐIÐIÐIÐIÐIr   c                ó   — | d         dk     | fS )Nr   rV   )Úds    r   ú<lambda>zlcov_arcs.<locals>.<lambda>Œ   s   € ¨¨1¬°ª°1¨€ r   )ÚkeyzBRDA:z,0,r*   r,   c              3  ó    K  — | ]	\  }}|V — Œ
d S rC   rV   ©r?   ÚtÚks      r   rF   zlcov_arcs.<locals>.<genexpr>“   s&   è è € Ð2Ð2‘D�A�qˆaÐ2Ð2Ð2Ð2Ð2Ð2r   c              3  ó&   K  — | ]\  }}||z
  V — Œd S rC   rV   rb   s      r   rF   zlcov_arcs.<locals>.<genexpr>”   s*   è è € Ð<Ð<™d˜a �A˜‘EÐ<Ð<Ð<Ð<Ð<Ð<r   zBRF:zBRH:N)
Úbranch_statsÚexecuted_branch_arcsÚmissing_branch_arcsrL   ÚextendrI   Úarc_descriptionr/   ÚsumÚvalues)r6   r    r!   r%   rf   Úexecuted_arcsÚmissing_arcsr   rD   ÚtakenÚdestinationsrX   r4   ÚbranchÚbrfÚbrhs                   r   Ú	lcov_arcsrt   f   s  € ð ×(Ò(Ñ*Ô*€LØ×1Ò1Ñ3Ô3€MØ×/Ò/Ñ1Ô1€Làð =ð =ˆØ�|Ð#Ð#Øð
   Ô%‰ˆˆ5à�AŠ:ˆ:õ �} TÔ*Ñ+Ô+¨qÒ0Ð0Ð0Ð0ØEÐE°,¸tÔ2DÐEÑEÔEˆLˆLð
 GÐF°-ÀÔ2EÐFÑFÔFˆLØ×ÒÐIÐI°lÀ4Ô6HÐIÑIÔIÑIÔIÐIð 	×ÒÐ5Ð5ÐÑ6Ô6Ð6à$ð 	=ð 	=‰HˆC�Ø×'Ò'¨¨cÑ2Ô2ˆFØ�MŠMÐ; $Ð;Ð;¨6Ð;Ð;°CÐ;Ð;Ð;Ñ<Ô<Ð<Ð<ð	=õ
 Ð2Ð2˜L×/Ò/Ñ1Ô1Ð2Ñ2Ô2Ñ
2Ô
2€CØ
•Ð<Ð< l×&9Ò&9Ñ&;Ô&;Ð<Ñ<Ô<Ñ<Ô<Ñ
<€CØ
ˆQ‚w€wØ�Š�n˜S�n�n�nÑ%Ô%Ð%Ø�Š�n˜S�n�n�nÑ%Ô%Ð%Ð%Ð%ð €wr   c                  ó.   — e Zd ZdZdZdd„Zdd„Zdd„ZdS )ÚLcovReporterz-A reporter for writing LCOV coverage reports.zLCOV reportÚcoverager   r   r'   c                ór   — || _         |j        | _        t          | j         j        j        ¦  «        | _        d S rC   )rw   Úconfigr
   Ú	precisionÚtotal)Úselfrw   s     r   Ú__init__zLcovReporter.__init__Ÿ   s-   € Ø ˆŒØ”oˆŒÝ˜Tœ]Ô1Ô;Ñ<Ô<ˆŒ
ˆ
ˆ
r   Úmorfsr   r%   r&   Úfloatc                óR  — | j                              ¦   «          |pt          j        }d„ t	          | j         |¦  «        D ¦   «         }|                     ¦   «          |D ]3\  }}}| xj        |j        z  c_        |                      ||||¦  «         Œ4| j        j	        o| j        j
        S )z•Renders the full lcov report.

        `morfs` is a list of modules or filenames

        outfile is the file object to write the file into.
        c                óB   — g | ]\  }}|                      ¦   «         ||f‘ŒS rV   )Úrelative_filename)r?   r6   r    s      r   rA   z'LcovReporter.report.<locals>.<listcomp>°   s?   € ð 
ð 
ð 
á��Hð ×!Ò!Ñ#Ô# R¨Ð2ð
ð 
ð 
r   )rw   Úget_dataÚsysÚstdoutr   rI   r{   r0   Ú	lcov_filer1   Ú
pc_covered)r|   r~   r%   Ú	to_reportÚfnamer6   r    s          r   ÚreportzLcovReporter.report¤   s¹   € ð 	Œ×ÒÑ Ô Ð ØÐ'�SœZˆð
ð 
å 6°t´}ÀeÑ LÔ Lð
ñ 
ô 
ˆ	ð 	�ŠÑÔÐà#,ð 	9ð 	9ÑˆE�2�xØˆJŒJ˜(Ô*Ñ*ˆJŒJØ�NŠN˜5 " h°Ñ8Ô8Ð8Ð8àŒzÔ&Ð@¨4¬:Ô+@Ð@r   Ú	rel_fnamer   r6   r   r    r   c                ó¨  — |j         j        dk    r| j        j        rdS |                     d|› d�¦  «         t          |j        ¦  «        }| j        j        r'|                     ¦   «          	                    ¦   «         }ng }t          ||||¦  «         t          |||¦  «         |j        rt          ||||¦  «         |                     d¦  «         dS )z¦Produces the lcov data for a single file.

        This currently supports both line and branch coverage,
        however function coverage is not supported.
        r   NzSF:r,   zend_of_record
)r0   r1   ry   Ú
skip_emptyr/   ÚsortedÚ
statementsÚlcov_line_checksumsÚsourceÚ
splitlinesr5   rR   Úhas_arcsrt   )r|   r‹   r6   r    r%   r!   r#   s          r   r†   zLcovReporter.lcov_file¼   sà   € ð ÔÔ(¨AÒ-Ð-ØŒ{Ô%ð Ø�à�ŠÐ)˜IÐ)Ð)Ð)Ñ*Ô*Ð*å�xÔ*Ñ+Ô+ˆØŒ;Ô*ð 	ØŸ9š9™;œ;×1Ò1Ñ3Ô3ˆLˆLàˆLå�8˜U L°'Ñ:Ô:Ð:Ý�r˜8 WÑ-Ô-Ð-ØÔð 	4Ý�b˜( E¨7Ñ3Ô3Ð3à�ŠÐ'Ñ(Ô(Ð(Ð(Ð(r   N)rw   r   r   r'   )r~   r   r%   r&   r   r   )
r‹   r   r6   r   r    r   r%   r&   r   r'   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úreport_typer}   rŠ   r†   rV   r   r   rv   rv   š   s_   € € € € € Ø7Ð7à€Kð=ð =ð =ð =ð
Að Að Að Að0)ð )ð )ð )ð )ð )r   rv   )r   r   r   r   )
r    r   r!   r"   r#   r$   r%   r&   r   r'   )r6   r   r7   r   r%   r&   r   r'   )
r6   r   r    r   r!   r"   r%   r&   r   r'   )r—   Ú
__future__r   r   r   r„   Útypingr   r   Úcoverage.pluginr   Úcoverage.report_corer   Úcoverage.resultsr   r	   r
   Úcoverage.typesr   rw   r   r   r5   rR   rt   rv   rV   r   r   ú<module>rŸ      sR  ðð &Ð %à "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø 
€
€
€
Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $à (Ð (Ð (Ð (Ð (Ð (Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø !Ð !Ð !Ð !Ð !Ð !àð "Ø!Ð!Ð!Ð!Ð!Ð!ð	@ð 	@ð 	@ð 	@ð=ð =ð =ð =ð*,,ð ,,ð ,,ð ,,ð^1&ð 1&ð 1&ð 1&ðh@)ð @)ð @)ð @)ð @)ñ @)ô @)ð @)ð @)ð @)r   