ó
    Ð]jŽ  ã                  ó  • S r SSKJr  SSKrSSKrSSKrSSK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  \(       a  SS	KJr  SS
 jr          SS jr        SS jr          SS jr " S S5      rg)zLCOV reporting for coverage.py.é    )ÚannotationsN)ÚIOÚTYPE_CHECKING)ÚFileReporter)Úget_analysis_to_report)ÚAnalysisÚAnalysisNarrowerÚNumbers)ÚTMorfs)ÚCoveragec                óÎ   • [         R                  " U R                  S5      SS9R                  5       n[        R
                  " U5      R                  S5      R                  S5      $ )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     ÚP/home/mande/repo/quber/.venv/lib/python3.13/site-packages/coverage/lcovreport.pyÚ	line_hashr      sM   € ô �[Š[˜Ÿ™ WÓ-¸uÑE×LÑLÓN€FÜ×Ò˜FÓ#×*Ñ*¨7Ó3×:Ñ:¸3Ó?Ð?ó    c           	     óŠ  • SnU HN  nU(       a  S[        X%S-
     5      -   n[        XPR                  ;  5      nUR                  SU SU U S35        MP     U R                  R
                  S:”  aS  UR                  SU R                  R
                   S35        UR                  SU R                  R                   S35        g	g	)
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)ÚanalysisÚlinesÚsource_linesÚoutfileÚhash_suffixr   Úhits          r   Ú
lcov_linesr/   "   s¿   € ð €KÛˆÞØ¤	¨,¸a±xÑ*@Ó AÑAˆKô �$×.Ñ.Ñ.Ó/ˆØ�‰˜˜D˜6  3 %¨ }°BÐ7Ö8ñ ð ×Ñ×$Ñ$ qÓ(Ø�‰˜˜H×,Ñ,×9Ñ9Ð:¸"Ð=Ô>Ø�‰˜˜H×,Ñ,×7Ñ7Ð8¸Ð;Õ<ð )r   c           
     óB  • U R                  5        Vs/ s H{  nUR                  S:X  d  M  UR                  (       d  M(  [        UR                  [        UR                  5      5      [        UR                  [        UR                  5      5      U4PM}     nnU(       d  g[        U5      nUR                  S U 5       5        UR                  5         SnU HŽ  u  pxnUR                  UR                  5      n	[        U	R                  R                  S:„  5      n
Xj-  nUR                  SU SU SUR                   S35        UR                  SU
 SUR                   S35        M�     UR                  S	[        U5       S35        UR                  S
U S35        gs  snf )z4Emit function coverage records for an analyzed file.ÚfunctionNc              3  ó@   #   • U  H  u    pUR                   v •  M     g 7f©N)r*   )Ú.0Ú_Úrs      r   Ú	<genexpr>Ú!lcov_functions.<locals>.<genexpr>T   s   é € Ð:²	¡W Q¨˜Ÿž²	ùs   ‚r   zFN:r    r"   zFNDA:zFNF:zFNH:)Úcode_regionsÚkindr*   ÚminÚstartÚmaxr	   Úadd_regionsÚsortÚnarrowr#   r&   r(   r%   ÚnameÚlen)ÚfrÚfile_analysisr,   ÚregionÚ	functionsÚnarrowerÚfunctions_hitÚ
first_lineÚ	last_liner)   r.   s              r   Úlcov_functionsrK   7   st  € ð, —o‘oÔ'óò (ˆFØ�;‰;˜*Ñ$ó	
ð *0¯­ó	
Ü�—‘œc &§,¡,Ó/Ó0Ü�—‘œc &§,¡,Ó/Ó0Øó	
ñ
 (ð ð ö Øä Ó.€HØ×ÑÑ:±	Ó:Ô:à‡N�NÔØ€MÛ)2Ñ%ˆ
˜vð —?‘? 6§<¡<Ó0ˆÜ�(×"Ñ"×-Ñ-°Ñ1Ó2ˆØÑˆà�‰˜˜J˜< q¨¨°1°V·[±[°MÀÐDÔEØ�‰˜˜c˜U ! F§K¡K =°Ð3Ö4ñ *3ð ‡M�M�Dœ˜Y›Ð(¨Ð+Ô,Ø‡M�M�D˜˜ rÐ*Õ+ùò9s   “F«F¾AFc                óÖ  • UR                  5       nUR                  5       nUR                  5       nU Hµ  nXt;  a  M
  XG   u  p‰U	S:X  a)  [        XW   5      S:X  d   eXg    V
s/ s H  oªS4PM     nn
O/XW    V
s/ s H  oªS4PM     nn
UR	                  S Xg    5       5        UR                  S S9  U H1  u  p¬U R                  Xz5      nUR                  SU SU S	U S
35        M3     M·     [        S UR                  5        5       5      nU[        S UR                  5        5       5      -
  nUS:”  a+  UR                  SU S
35        UR                  SU S
35        ggs  sn
f s  sn
f )z2Emit branch coverage records for an analyzed file.r   Ú-Ú1c              3  ó(   #   • U  H  oS 4v •  M
     g7f)Ú0N© )r4   Údsts     r   r7   Úlcov_arcs.<locals>.<genexpr>„   s   é € ÐIÒ6H¨s c¥
Ò6Hùs   ‚c                ó   • U S   S:  U 4$ )Nr   rQ   )Úds    r   Ú<lambda>Úlcov_arcs.<locals>.<lambda>Œ   s   € ¨¨1©°©°1©r   )ÚkeyzBRDA:z,0,r    r"   c              3  ó*   #   • U  H	  u  pUv •  M     g 7fr3   rQ   ©r4   ÚtÚks      r   r7   rS   “   s   é € Ð2Ò1‘D�A�aÒ1ùs   ‚c              3  ó.   #   • U  H  u  pX-
  v •  M     g 7fr3   rQ   rZ   s      r   r7   rS   ”   s   é € Ð<Ò&;™d˜a�A–EÒ&;ùs   ‚zBRF:zBRH:N)
Úbranch_statsÚexecuted_branch_arcsÚmissing_branch_arcsrB   Úextendr?   Úarc_descriptionr%   ÚsumÚvalues)rC   r)   r*   r,   r^   Úexecuted_arcsÚmissing_arcsr   r5   ÚtakenrR   Údestinationsr.   ÚbranchÚbrfÚbrhs                   r   Ú	lcov_arcsrl   f   s‰  € ð ×(Ñ(Ó*€LØ×1Ñ1Ó3€MØ×/Ñ/Ó1€LãˆØÓ#Ùð
  Ñ%‰ˆà�A‹:ô �}Ñ*Ó+¨qÓ0Ð0Ð0Ø2>Ò2DÓEÒ2D¨3 #›JÑ2DˆLÐEˆLð
 3@Ò2EÓFÒ2E¨3 #›JÑ2EˆLÐFØ×ÑÑI°lÒ6HÓIÔIð 	×ÑÑ5ÐÑ6ã$‰HˆCØ×'Ñ'¨Ó2ˆ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!Á8E&c                  óN   • \ rS rSrSrSrS	S jrS
S jr          SS jrSr	g)ÚLcovReporteréš   z-A reporter for writing LCOV coverage reports.zLCOV reportc                óŽ   • Xl         UR                  U l        [        U R                   R                  R                  5      U l        g r3   )ÚcoverageÚconfigr
   Ú	precisionÚtotal)Úselfrq   s     r   Ú__init__ÚLcovReporter.__init__Ÿ   s.   € Ø ŒØ—o‘oˆŒÜ˜TŸ]™]×1Ñ1×;Ñ;Ó<ˆ�
r   c                óè  • U R                   R                  5         U=(       d    [        R                  n[	        U R                   U5       VVs/ s H  u  p4UR                  5       X44PM     nnnUR                  5         U H7  u  pcnU =R                  UR                  -  sl        U R                  XcXB5        M9     U R                  R                  =(       a    U R                  R                  $ s  snnf )z}Renders the full lcov report.

`morfs` is a list of modules or filenames

outfile is the file object to write the file into.
)rq   Úget_dataÚsysÚstdoutr   Úrelative_filenamer?   rt   r&   Ú	lcov_filer'   Ú
pc_covered)ru   Úmorfsr,   rC   r)   Ú	to_reportÚfnames          r   ÚreportÚLcovReporter.report¤   sÂ   € ð 	�‰×ÑÔ Ø×'œSŸZ™Zˆô
 !7°t·}±}ÀeÔ Lô
â L‘�ð ×!Ñ!Ó# RÓ2Ù Lð 	ñ 
ð 	�‰Ôã#,ÑˆE�xØ�JŠJ˜(×*Ñ*Ñ*�JØ�N‰N˜5 hÖ8ñ $-ð �z‰z×&Ñ&×@¨4¯:©:×+@Ñ+@Ð@ùó
s   ÁC.c                óÈ  • UR                   R                  S:X  a  U R                  R                  (       a  gUR	                  SU S35        [        UR                  5      nU R                  R                  (       a  UR                  5       R                  5       nO/ n[        X5Xd5        [        X#U5        UR                  (       a  [        X#XT5        UR	                  S5        g)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
)r&   r'   rr   Ú
skip_emptyr%   ÚsortedÚ
statementsÚlcov_line_checksumsÚsourceÚ
splitlinesr/   rK   Úhas_arcsrl   )ru   Ú	rel_fnamerC   r)   r,   r*   r+   s          r   r}   ÚLcovReporter.lcov_file¼   s§   € ð ×Ñ×(Ñ(¨AÓ-Ø�{‰{×%×%Øà�‰˜˜I˜; bÐ)Ô*ä�x×*Ñ*Ó+ˆØ�;‰;×*×*ØŸ9™9›;×1Ñ1Ó3‰LàˆLä�8 LÔ:Ü�r WÔ-Ø××Ü�b EÔ3à�‰Ð'Õ(r   )rr   rq   rt   N)rq   r   ÚreturnÚNone)r   r   r,   úIO[str]rŽ   Úfloat)
rŒ   ÚstrrC   r   r)   r   r,   r�   rŽ   r�   )
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Úreport_typerv   r‚   r}   Ú__static_attributes__rQ   r   r   rn   rn   š   sJ   † Ù7à€Kô=ô
Að0)àð)ð ð)ð ð	)ð
 ð)ð 
÷)r   rn   )r   r’   rŽ   r’   )
r)   r   r*   ú	list[int]r+   z	list[str]r,   r�   rŽ   r�   )rC   r   rD   r   r,   r�   rŽ   r�   )
rC   r   r)   r   r*   rš   r,   r�   rŽ   r�   )r—   Ú
__future__r   r   r   rz   Útypingr   r   Úcoverage.pluginr   Úcoverage.report_corer   Úcoverage.resultsr   r	   r
   Úcoverage.typesr   rq   r   r   r/   rK   rl   rn   rQ   r   r   Ú<module>r¡      sÑ   ðñ &å "ã Û Û 
ß $å (Ý 7ß @Ñ @Ý !æÝ!ô	@ð=Øð=àð=ð ð=ð ð	=ð
 
ô=ð*,,Øð,,àð,,ð ð,,ð 
ô	,,ð^1&Øð1&àð1&ð ð1&ð ð	1&ð
 
ô1&÷h@)ò @)r   