Ë
    oPê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	 	 	 	 	 	 	 	 	 	 dd„Z G d„ d«      Zy)zLCOV reporting for coverage.py.é    )ÚannotationsN)ÚIOÚTYPE_CHECKING)ÚFileReporter)Úget_analysis_to_report)ÚAnalysisÚAnalysisNarrowerÚNumbers)ÚTMorfs)ÚCoveragec                óV   — | j                  «       r| S dj                  d„ | D «       «      S )at  Make `text` safe to write as a field in a single LCOV record.

    LCOV records are newline-delimited and the format has no escaping, so a
    value carrying a newline (a legal character in a POSIX file name) would
    spill into fabricated records. Replace any control characters, which can't
    appear in a valid one-line field, and leave printable text untouched.
    Ú c              3  óD   K  — | ]  }|j                  «       r|nd –— Œ y­w)ú?N)Úisprintable)Ú.0Úchs     úX/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/coverage/lcovreport.pyú	<genexpr>zlcov_field.<locals>.<genexpr>"   s   è ø€ ÒB°r˜Ÿ™Ô)‘2¨sÓ2ÑBùs   ‚ )r   Újoin)Útexts    r   Ú
lcov_fieldr      s*   € ð ×ÑÔØˆØ�7‰7ÑB¸TÔBÓBÐBó    c                óÐ   — t        j                  | j                  d«      d¬«      j                  «       }t	        j
                  |«      j                  d«      j                  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)ÚlineÚhasheds     r   Ú	line_hashr(   %   sM   € ô �[‰[˜Ÿ™ WÓ-¸uÔE×LÑLÓN€FÜ×Ñ˜FÓ#×*Ñ*¨7Ó3×:Ñ:¸3Ó?Ð?r   c           	     ó|  — d}|D ]I  }|rdt        ||dz
     «      z   }t        || j                  v«      }|j                  d|› d|› |› d�«       ŒK | j                  j
                  dkD  rS|j                  d| j                  j
                  › d�«       |j                  d| j                  j                  › d�«       y	y	)
z0Emit line coverage records for an analyzed file.r   ú,é   zDA:ú
r   zLF:zLH:N)r(   ÚintÚmissingÚwriteÚnumbersÚn_statementsÚ
n_executed)ÚanalysisÚlinesÚsource_linesÚoutfileÚhash_suffixr&   Úhits          r   Ú
lcov_linesr9   1   sÈ   € ð €KØò 9ˆÙØ¤	¨,°t¸a±xÑ*@Ó AÑAˆKô �$˜h×.Ñ.Ð.Ó/ˆØ�‰˜˜D˜6  3 %¨ }°BÐ7Õ8ð9ð ×Ñ×$Ñ$ qÒ(Ø�‰˜˜H×,Ñ,×9Ñ9Ð:¸"Ð=Ô>Ø�‰˜˜H×,Ñ,×7Ñ7Ð8¸Ð;Õ<ð )r   c           
     ó   — | j                  «       D �cg c]p  }|j                  dk(  r_|j                  rSt        |j                  t        |j                  «      «      t        |j                  t        |j                  «      «      |f‘Œr }}|syt        |«      }|j                  d„ |D «       «       |j                  «        d}d}t        «       }|D ]Í  \  }	}
}|j                  |j                  «      }|j                  j                  dk(  rŒ<|dz  }t        |j                  j                  dkD  «      }||z  }t        |j                   «      }||v r	|d|	› �z  }n|j#                  |«       |j%                  d|	› d|
› d|› d	�«       |j%                  d
|› d|› d	�«       ŒÏ |j%                  d|› d	�«       |j%                  d|› d	�«       yc c}w )z4Emit function coverage records for an analyzed file.ÚfunctionNc              3  ó<   K  — | ]  \  }}}|j                   –— Œ y ­w©N)r4   )r   Ú_Úrs      r   r   z!lcov_functions.<locals>.<genexpr>c   s   è ø€ Ò:¡W Q¨¨1˜Ÿ�Ñ:ùs   ‚r   r+   ú@zFN:r*   r,   zFNDA:zFNF:zFNH:)Úcode_regionsÚkindr4   ÚminÚstartÚmaxr	   Úadd_regionsÚsortÚsetÚnarrowr0   r1   r-   r2   r   ÚnameÚaddr/   )ÚfrÚfile_analysisr6   ÚregionÚ	functionsÚnarrowerÚfunctions_foundÚfunctions_hitÚfunction_namesÚ
first_lineÚ	last_liner3   r8   rJ   s                 r   Úlcov_functionsrV   F   sÄ  € ð, —o‘oÓ'öð Ø�;‰;˜*Ò$¨¯ªô �—‘œc &§,¡,Ó/Ó0Ü�—‘œc &§,¡,Ó/Ó0Øò	
ð€Ið ñ Øä Ó.€HØ×ÑÑ:°	Ô:Ô:à‡N�NÔØ€OØ€MÜ"›u€NØ)2ò .Ñ%ˆ
�I˜vð —?‘? 6§<¡<Ó0ˆØ×Ñ×(Ñ(¨AÒ-Øà˜1ÑˆÜ�(×"Ñ"×-Ñ-°Ñ1Ó2ˆØ˜Ñˆä˜&Ÿ+™+Ó&ˆØ�>Ñ!Ø�a˜
�|Ð$Ñ$‰Dà×Ñ˜tÔ$Ø�‰˜˜J˜< q¨¨°1°T°F¸"Ð=Ô>Ø�‰˜˜c˜U ! D 6¨Ð,Õ-ð#.ð& ‡M�M�D˜Ð)¨Ð,Ô-Ø‡M�M�D˜˜ rÐ*Õ+ùòOs   “A5Gc                óä  — |j                  «       }|j                  «       }|j                  «       }|D ]¾  }||vrŒ||   \  }}	|	dk(  r(t        ||   «      dk(  sJ ‚||   D �
cg c]  }
|
df‘Œ }}
n/||   D �
cg c]  }
|
df‘Œ }}
|j	                  d„ ||   D «       «       |j                  d„ ¬«       |D ];  \  }
}t        | j                  ||
«      «      }|j                  d|› d|› d	|› d
�«       Œ= ŒÀ t        d„ |j                  «       D «       «      }|t        d„ |j                  «       D «       «      z
  }|dkD  r+|j                  d|› d
�«       |j                  d|› d
�«       yyc c}
w c c}
w )z2Emit branch coverage records for an analyzed file.r   ú-Ú1c              3  ó$   K  — | ]  }|d f–— Œ
 y­w)Ú0N© )r   Údsts     r   r   zlcov_arcs.<locals>.<genexpr>ž   s   è ø€ ÒI¨s  c¤
ÑIùs   ‚c                ó   — | d   dk  | fS )Nr   r\   )Úds    r   ú<lambda>zlcov_arcs.<locals>.<lambda>¦   s   € ¨¨1©°©°1¨€ r   )ÚkeyzBRDA:z,0,r*   r,   c              3  ó&   K  — | ]	  \  }}|–— Œ y ­wr=   r\   ©r   ÚtÚks      r   r   zlcov_arcs.<locals>.<genexpr>­   s   è ø€ Ò2‘D�A�qŒaÑ2ùs   ‚c              3  ó,   K  — | ]  \  }}||z
  –— Œ y ­wr=   r\   rc   s      r   r   zlcov_arcs.<locals>.<genexpr>®   s   è ø€ Ò<™d˜a �A˜•EÑ<ùs   ‚zBRF:zBRH:N)Úbranch_statsÚexecuted_branch_arcsÚmissing_branch_arcsÚlenÚextendrG   r   Úarc_descriptionr/   ÚsumÚvalues)rL   r3   r4   r6   rg   Úexecuted_arcsÚmissing_arcsr&   r>   Útakenr]   Údestinationsr8   ÚbranchÚbrfÚbrhs                   r   Ú	lcov_arcsrv   €   s¦  € ð ×(Ñ(Ó*€LØ×1Ñ1Ó3€MØ×/Ñ/Ó1€Làò =ˆØ�|Ñ#Øð
   Ñ%‰ˆˆ5à�AŠ:ô �} TÑ*Ó+¨qÒ0Ð0Ð0Ø2>¸tÑ2DÖE¨3˜S #šJÐEˆLÑEð
 3@ÀÑ2EÖF¨3˜S #šJÐFˆLÐFØ×ÑÑI°lÀ4Ñ6HÔIÔIð 	×ÑÑ5ÐÔ6à$ò 	=‰HˆC�Ü × 2Ñ 2°4¸Ó =Ó>ˆFØ�M‰M˜E $  s¨6¨(°!°C°5¸Ð;Õ<ñ	=ð;=ôD Ñ2˜L×/Ñ/Ó1Ô2Ó
2€CØ
”Ñ< l×&9Ñ&9Ó&;Ô<Ó<Ñ
<€CØ
ˆQ‚wØ�‰˜˜S˜E �nÔ%Ø�‰˜˜S˜E �nÕ%ð ùò/ Fùò
 Gs   Á"E(Á7E-c                  ó@   — e Zd ZdZdZdd„Zdd„Z	 	 	 	 	 	 	 	 	 	 d	d„Zy)
ÚLcovReporterz-A reporter for writing LCOV coverage reports.zLCOV reportc                ó�   — || _         |j                  | _        t        | j                   j                  j                  «      | _        y r=   )ÚcoverageÚconfigr
   Ú	precisionÚtotal)Úselfrz   s     r   Ú__init__zLcovReporter.__init__¹   s0   € Ø ˆŒØ—o‘oˆŒÜ˜TŸ]™]×1Ñ1×;Ñ;Ó<ˆ�
r   c                óÔ  — | j                   j                  «        |xs t        j                  }t	        | j                   |«      D ��cg c]  \  }}|j                  «       ||f‘Œ }}}|j                  «        |D ]9  \  }}}| xj                  |j                  z  c_        | j                  ||||«       Œ; | j                  j                  xr | j                  j                  S c c}}w )z•Renders the full lcov report.

        `morfs` is a list of modules or filenames

        outfile is the file object to write the file into.
        )rz   Úget_dataÚsysÚstdoutr   Úrelative_filenamerG   r}   r0   Ú	lcov_filer1   Ú
pc_covered)r~   Úmorfsr6   rL   r3   Ú	to_reportÚfnames          r   ÚreportzLcovReporter.report¾   sÎ   € ð 	�‰×ÑÔ ØÒ'œSŸZ™Zˆô
 !7°t·}±}ÀeÓ L÷
á��Hð ×!Ñ!Ó# R¨Ò2ð
ˆ	ñ 
ð 	�‰Ôà#,ò 	9ÑˆE�2�xØ�JŠJ˜(×*Ñ*Ñ*�JØ�N‰N˜5 " h°Õ8ð	9ð �z‰z×&Ñ&Ò@¨4¯:©:×+@Ñ+@Ð@ùó
s   ÁC$c                óÄ  — |j                   j                  dk(  r| j                  j                  ry|j	                  dt        |«      › d�«       t        |j                  «      }| j                  j                  r|j                  «       j                  «       }ng }t        ||||«       t        |||«       |j                  rt        ||||«       |j	                  d«       y)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   r{   Ú
skip_emptyr/   r   ÚsortedÚ
statementsÚlcov_line_checksumsÚsourceÚ
splitlinesr9   rV   Úhas_arcsrv   )r~   Ú	rel_fnamerL   r3   r6   r4   r5   s          r   r…   zLcovReporter.lcov_fileÖ   s·   € ð ×Ñ×(Ñ(¨AÒ-Ø�{‰{×%Ò%Øà�‰˜œJ yÓ1Ð2°"Ð5Ô6ä�x×*Ñ*Ó+ˆØ�;‰;×*Ò*ØŸ9™9›;×1Ñ1Ó3‰LàˆLä�8˜U L°'Ô:Ü�r˜8 WÔ-Ø×ÒÜ�b˜( E¨7Ô3à�‰Ð'Õ(r   N)rz   r   ÚreturnÚNone)r‡   r   r6   úIO[str]r”   Úfloat)
r“   ÚstrrL   r   r3   r   r6   r–   r”   r•   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úreport_typer   rŠ   r…   r\   r   r   rx   rx   ´   sJ   „ Ù7à€Kó=ó
Að0)àð)ð ð)ð ð	)ð
 ð)ð 
ô)r   rx   )r   r˜   r”   r˜   )r&   r˜   r”   r˜   )
r3   r   r4   ú	list[int]r5   z	list[str]r6   r–   r”   r•   )rL   r   rM   r   r6   r–   r”   r•   )
rL   r   r3   r   r4   rž   r6   r–   r”   r•   )rœ   Ú
__future__r   r"   r   r‚   Útypingr   r   Úcoverage.pluginr   Úcoverage.report_corer   Úcoverage.resultsr   r	   r
   Úcoverage.typesr   rz   r   r   r(   r9   rV   rv   rx   r\   r   r   ú<module>r¥      sÙ   ðñ &õ #ã Û Û 
ß $å (Ý 7ß @Ñ @Ý !áÝ!ó
Có	@ð=Øð=àð=ð ð=ð ð	=ð
 
ó=ð*7,Øð7,àð7,ð ð7,ð 
ó	7,ðt1&Øð1&àð1&ð ð1&ð ð	1&ð
 
ó1&÷h@)ò @)r   