§
    0›j[&  ã                  óD  — d Z ddlmZ ddlZddl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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 ddlmZ ddlmZ erddlm Z   ee¦  «        ZdZ!d!d„Z"e
 G d„ d¦  «        ¦   «         Z#d"d„Z$ G d„ d¦  «        Z%d#d „Z&dS )$zXML reporting for coverage.pyé    )ÚannotationsN)Ú	dataclass)ÚIOÚTYPE_CHECKINGÚAny)Ú__version__Úfiles)Úhuman_sortedÚhuman_sorted_itemsÚisolate_module)ÚFileReporter)Úget_analysis_to_report)ÚAnalysis)ÚTMorfs)Ú__url__)ÚCoveragezQhttps://raw.githubusercontent.com/cobertura/web/master/htdocs/xml/coverage-04.dtdÚhitÚintÚnumÚreturnÚstrc                ó    — |dk    rdS | |z  d›S )z0Return the fraction of `hit`/`num`, as a string.r   Ú1z.4g© )r   r   s     úQ/home/lighthouse/health/venv/lib64/python3.11/site-packages/coverage/xmlreport.pyÚrater   !   s    € à
ˆa‚x€xØˆsà˜‘)Ð!Ð!Ð!ó    c                  óF   — e Zd ZU dZded<   ded<   ded<   ded<   ded<   d	S )
ÚPackageDataz2Data we keep about each "package" (in Java terms).z"dict[str, xml.dom.minidom.Element]Úelementsr   ÚhitsÚlinesÚbr_hitsÚbranchesN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   r   r   r   r   )   sF   € € € € € € à<Ð<à0Ð0Ð0Ñ0Ø€I€I�IØ€J€J�JØ€L€L�LØ€M€M�M€M€Mr   r   Úparentr   ÚchildÚNonec                ó0   — |                       |¦  «         dS )z=Append a child to a parent, in a way mypy will shut up about.N)ÚappendChild)r*   r+   s     r   r.   r.   4   s   € à
×Ò�uÑÔÐÐÐr   c                  ó0   — e Zd ZdZdZdd„Zddd„Zdd„ZdS )ÚXmlReporterz<A reporter for writing Cobertura-style XML coverage results.z
XML reportÚcoverager   r   r,   c                ó‚  — || _         | j         j        | _        t          ¦   «         | _        | j        j        r~| j        j        D ]q}t
          j                             |¦  «        rP| j        j        r| 	                    d¦  «        }nt          j        |¦  «        }| j                             |¦  «         Œri | _        |  d S )Nú\/)r1   ÚconfigÚsetÚsource_pathsÚsourceÚosÚpathÚexistsÚrelative_filesÚrstripr	   Úcanonical_filenameÚaddÚpackages)Úselfr1   Úsrcs      r   Ú__init__zXmlReporter.__init__>   s³   € Ø ˆŒØ”mÔ*ˆŒå™EœEˆÔØŒ;Ôð 	/Ø”{Ô)ð /ð /�Ý”7—>’> #Ñ&Ô&ð /Ø”{Ô1ð <Ø!Ÿjšj¨Ñ/Ô/˜˜å#Ô6°sÑ;Ô;˜ØÔ%×)Ò)¨#Ñ.Ô.Ð.øØ02ˆŒØÐ.Ð.Ð.r   NÚmorfsr   ÚoutfileúIO[str] | NoneÚfloatc           	     óÂ
  — |pt           j        }| j                             ¦   «                              ¦   «         }t
          j        j                             ¦   «         }|€J ‚| 	                    ddd¦  «        | _
        | j
        j        }|€J ‚|                     dt          ¦  «         |                     dt          t          t!          j        ¦   «         dz  ¦  «        ¦  «        ¦  «         |                     | j
                             dt&          › d�¦  «        ¦  «         |                     | j
                             dt(          › d�¦  «        ¦  «         t+          | j        |¦  «        D ]\  }}|                      |||¦  «         Œ| j
                             d	¦  «        }|                     |¦  «         t1          | j        ¦  «        D ]V}	| j
                             d
¦  «        }
t#          ||
¦  «         | j
                             |	¦  «        }t#          |
|¦  «         ŒWd\  }}d\  }}| j
                             d¦  «        }|                     |¦  «         t7          | j                             ¦   «         ¦  «        D �]k\  }}| j
                             d¦  «        }t#          ||¦  «         | j
                             d¦  «        }t#          ||¦  «         t7          |j                             ¦   «         ¦  «        D ]\  }}t#          ||¦  «         Œ|                     d|                     t@          j!        d¦  «        ¦  «         |                     dtE          |j#        |j$        ¦  «        ¦  «         |rtE          |j%        |j&        ¦  «        }nd}|                     d|¦  «         |                     dd¦  «         ||j#        z  }||j$        z  }||j%        z  }||j&        z  }�Œm|                     dt          |¦  «        ¦  «         |                     dt          |¦  «        ¦  «         |                     dtE          ||¦  «        ¦  «         |rk|                     dt          |¦  «        ¦  «         |                     dt          |¦  «        ¦  «         |                     dtE          ||¦  «        ¦  «         nB|                     dd¦  «         |                     dd¦  «         |                     dd¦  «         |                     dd¦  «         | '                    tQ          | j
        ¦  «        ¦  «         ||z   }|dk    rd}nd||z   z  |z  }|S )z¯Generate a Cobertura-compatible XML report for `morfs`.

        `morfs` is a list of modules or file names.

        `outfile` is a file object to write the XML to.

        Nr1   ÚversionÚ	timestampiè  z Generated by coverage.py: ú z
 Based on Úsourcesr7   )r   r   r?   ÚpackageÚclassesÚnameú.ú	line-rateÚ0úbranch-rateÚ
complexityzlines-validzlines-coveredzbranches-validzbranches-coveredr   g        g      Y@))ÚsysÚstdoutr1   Úget_dataÚhas_arcsÚxmlÚdomÚminidomÚgetDOMImplementationÚcreateDocumentÚxml_outÚdocumentElementÚsetAttributer   r   r   Útimer.   ÚcreateCommentr   ÚDTD_URLr   Úxml_fileÚcreateElementr
   r6   ÚcreateTextNoder   r?   Úitemsr    Úreplacer8   Úsepr   r!   r"   r#   r$   ÚwriteÚserialize_xml)r@   rC   rD   rW   ÚimplÚ	xcoverageÚfrÚanalysisÚxsourcesr9   ÚxsourceÚtxtÚlnum_totÚ	lhits_totÚbnum_totÚ	bhits_totÚ	xpackagesÚpkg_nameÚpkg_dataÚxpackageÚxclassesÚ_Ú	class_eltÚbranch_rateÚdenomÚpcts                             r   ÚreportzXmlReporter.reportN   s-  € ð Ð'�SœZˆØ”=×)Ò)Ñ+Ô+×4Ò4Ñ6Ô6ˆõ ŒwŒ×3Ò3Ñ5Ô5ˆØÐÐÐØ×*Ò*¨4°¸TÑBÔBˆŒð ”LÔ0ˆ	ØÐ$Ð$Ð$Ø×Ò˜y­+Ñ6Ô6Ð6Ø×Ò˜{­CµµD´I±K´KÀ$Ñ4FÑ0GÔ0GÑ,HÔ,HÑIÔIÐIØ×ÒØŒL×&Ò&Ø8­gÐ8Ð8Ð8ñô ñ	
ô 	
ð 	
ð
 	×Ò˜dœl×8Ò8Ð9PÅgÐ9PÐ9PÐ9PÑQÔQÑRÔRÐRõ 3°4´=À%ÑHÔHð 	2ð 	2‰LˆB�Ø�MŠM˜"˜h¨Ñ1Ô1Ð1Ð1à”<×-Ò-¨iÑ8Ô8ˆØ×Ò˜hÑ'Ô'Ð'õ ! Ô!2Ñ3Ô3ð 	&ð 	&ˆDØ”l×0Ò0°Ñ:Ô:ˆGÝ˜ 'Ñ*Ô*Ð*Ø”,×-Ò-¨dÑ3Ô3ˆCÝ˜ Ñ%Ô%Ð%Ð%à"Ñˆ�)Ø"Ñˆ�)à”L×.Ò.¨zÑ:Ô:ˆ	Ø×Ò˜iÑ(Ô(Ð(õ #5°T´]×5HÒ5HÑ5JÔ5JÑ"KÔ"Kð 	*ñ 	*ÑˆH�hØ”|×1Ò1°)Ñ<Ô<ˆHÝ˜	 8Ñ,Ô,Ð,Ø”|×1Ò1°)Ñ<Ô<ˆHÝ˜ (Ñ+Ô+Ð+Ý 2°8Ô3D×3JÒ3JÑ3LÔ3LÑ MÔ Mð 1ð 1‘��9Ý˜H iÑ0Ô0Ð0Ð0Ø×!Ò! &¨(×*:Ò*:½2¼6À3Ñ*GÔ*GÑHÔHÐHØ×!Ò! +­t°H´MÀ8Ä>Ñ/RÔ/RÑSÔSÐSØð "Ý" 8Ô#3°XÔ5FÑGÔG��à!�Ø×!Ò! -°Ñ=Ô=Ð=Ø×!Ò! ,°Ñ4Ô4Ð4à˜œÑ&ˆIØ˜œÑ&ˆHØ˜Ô)Ñ)ˆIØ˜Ô)Ñ)ˆH‰Hà×Ò˜}­c°(©m¬mÑ<Ô<Ð<Ø×Ò˜µ°I±´Ñ?Ô?Ð?Ø×Ò˜{­D°¸HÑ,EÔ,EÑFÔFÐFØð 	7Ø×"Ò"Ð#3µS¸±]´]ÑCÔCÐCØ×"Ò"Ð#5µs¸9±~´~ÑFÔFÐFØ×"Ò" =µ$°yÀ(Ñ2KÔ2KÑLÔLÐLÐLà×"Ò"Ð#5°sÑ;Ô;Ð;Ø×"Ò"Ð#3°SÑ9Ô9Ð9Ø×"Ò" =°#Ñ6Ô6Ð6Ø×Ò˜|¨SÑ1Ô1Ð1ð 	�Š•m D¤LÑ1Ô1Ñ2Ô2Ð2ð ˜8Ñ#ˆØ�AŠ:ˆ:ØˆCˆCà˜9 yÑ0Ñ1°EÑ9ˆCØˆ
r   rm   r   rn   r   rW   Úboolc           
     ó"
  — | j         j        r|j        j        dk    rdS |j                             dd¦  «        }| j        D ]j}| j         j        st          j	        |¦  «        }| 
                    |                     dd¦  «        dz   ¦  «        r|t          |¦  «        dz   d…         } nqŒk|                     ¦   «                              dd¦  «        }| j                             |j        dt          |¦  «         …                              d¦  «        ¦  «         t          j                             |¦  «        pd}d                     |                     d¦  «        d| j         j        …         ¦  «        }|                     dd¦  «        }| j                             |t/          i dddd¦  «        ¦  «        }	| j                             d¦  «        }
t5          |
| j                             d	¦  «        ¦  «         | j                             d
¦  «        }t5          |
|¦  «         |
                     dt          j                             ||¦  «        ¦  «         |
                     d|                     dd¦  «        ¦  «         |
                     dd¦  «         |                     ¦   «         }|                     ¦   «         }t?          |j         ¦  «        D �]}| j                             d¦  «        }|                     dtC          |¦  «        ¦  «         |                     dtC          tE          ||j#        v¦  «        ¦  «        ¦  «         |r‰||v rF||         \  }}|                     dd¦  «         |                     dd|z  |z  › d|› d|› d�¦  «         ||v r;d„ ||         D ¦   «         }|                     dd                     |¦  «        ¦  «         t5          ||¦  «         �Œt          |j         ¦  «        }|t          |j#        ¦  «        z
  }|r\tI          d„ | %                    ¦   «         D ¦   «         ¦  «        }tI          d„ | %                    ¦   «         D ¦   «         ¦  «        }||z
  }nd}d}|
                     dtM          ||¦  «        ¦  «         |rtM          ||¦  «        }nd}|
                     d|¦  «         |
|	j'        |<   |	xj(        |z  c_(        |	xj)        |z  c_)        |	xj*        |z  c_*        |	xj+        |z  c_+        dS )z(Add to the XML report for a single file.r   Nú\ú/é   r3   rO   ÚclassÚmethodsr"   rN   ÚfilenamerS   rQ   ÚlineÚnumberr!   ÚbranchÚtruezcondition-coverageéd   z% (ú)c                ó<   — g | ]}|d k     rdnt          |¦  «        ‘ŒS )r   Úexit)r   )Ú.0Úbs     r   ú
<listcomp>z(XmlReporter.xml_file.<locals>.<listcomp>ç   s*   € Ð_Ð_Ð_À¨!¨aª%¨%  µS¸±V´VÐ_Ð_Ð_r   zmissing-branchesú,c              3  ó    K  — | ]	\  }}|V — Œ
d S ©Nr   ©r‘   ÚtÚks      r   ú	<genexpr>z'XmlReporter.xml_file.<locals>.<genexpr>ï   s&   è è € Ð EÐ E¡t q¨! Ð EÐ EÐ EÐ EÐ EÐ Er   c              3  ó&   K  — | ]\  }}||z
  V — Œd S r–   r   r—   s      r   rš   z'XmlReporter.xml_file.<locals>.<genexpr>ð   s*   è è € Ð"KÐ"K©T¨Q° 1 q¡5Ð"KÐ"KÐ"KÐ"KÐ"KÐ"Kr   rP   rR   ),r4   Ú
skip_emptyÚnumbersÚn_statementsrˆ   rg   r6   r;   r	   r=   Ú
startswithÚlenÚrelative_filenamer>   r<   r8   r9   ÚdirnameÚjoinÚsplitÚxml_package_depthr?   Ú
setdefaultr   r]   rd   r.   r_   ÚrelpathÚbranch_statsÚmissing_branch_arcsÚsortedÚ
statementsr   r   ÚmissingÚsumÚvaluesr   r    r!   r"   r#   r$   )r@   rm   rn   rW   rˆ   Úsource_pathÚrel_namer¢   Úpackage_namerL   ÚxclassÚxlinesr¨   r©   r‰   ÚxlineÚtotalÚtakenÚannlinesÚclass_linesÚ
class_hitsÚclass_branchesÚmissing_branchesÚclass_br_hitsr}   s                            r   rc   zXmlReporter.xml_file­   s  € ð Œ;Ô!ð 	ØÔÔ,°Ò1Ð1Ø�ð ”;×&Ò& t¨SÑ1Ô1ˆØÔ,ð 	Oð 	OˆKØ”;Ô-ð DÝ#Ô6°{ÑCÔC�Ø×"Ò" ;×#6Ò#6°t¸SÑ#AÔ#AÀCÑ#GÑHÔHð Ø#¥C¨Ñ$4Ô$4°qÑ$8Ð$:Ð$:Ô;�Ø�ðð ×+Ò+Ñ-Ô-×5Ò5°d¸CÑ@Ô@ˆHØÔ×!Ò! "¤+Ð.>µ°X±´°Ð.>Ô"?×"FÒ"FÀuÑ"MÔ"MÑNÔNÐNå”'—/’/ (Ñ+Ô+Ð2¨sˆØ—(’(˜7Ÿ=š=¨Ñ-Ô-Ð.M°´Ô0MÐ.MÔNÑOÔOˆØ—’ s¨CÑ0Ô0ˆà”-×*Ò*¨<½ÀRÈÈAÈqÐRSÑ9TÔ9TÑUÔUˆà*.¬,×*DÒ*DÀWÑ*MÔ*Mˆå�F˜DœL×6Ò6°yÑAÔAÑBÔBÐBà”×+Ò+¨GÑ4Ô4ˆÝ�F˜FÑ#Ô#Ð#à×Ò˜F¥B¤G§O¢O°H¸gÑ$FÔ$FÑGÔGÐGØ×Ò˜J¨×(8Ò(8¸¸sÑ(CÔ(CÑDÔDÐDØ×Ò˜L¨#Ñ.Ô.Ð.à×,Ò,Ñ.Ô.ˆØ&×:Ò:Ñ<Ô<Ðõ ˜8Ô.Ñ/Ô/ð 	'ñ 	'ˆDØ”L×.Ò.¨vÑ6Ô6ˆEØ×Ò˜x­¨T©¬Ñ3Ô3Ð3ð ×Ò˜v¥s­3¨t¸8Ô;KÐ/KÑ+LÔ+LÑ'MÔ'MÑNÔNÐNàð 
OØ˜<Ð'Ð'Ø#/°Ô#5‘L�E˜5Ø×&Ò& x°Ñ8Ô8Ð8Ø×&Ò&Ø,Ø ™;¨%Ñ/ÐDÐD°EÐDÐD¸EÐDÐDÐDñô ð ð Ð.Ð.Ð.Ø_Ð_ÐEXÐY]ÔE^Ð_Ñ_Ô_�HØ×&Ò&Ð'9¸3¿8º8ÀHÑ;MÔ;MÑNÔNÐNÝ˜ Ñ&Ô&Ð&Ñ&å˜(Ô-Ñ.Ô.ˆØ ¥3 xÔ'7Ñ#8Ô#8Ñ8ˆ
àð 	Ý Ð EÐ E¨|×/BÒ/BÑ/DÔ/DÐ EÑ EÔ EÑEÔEˆNÝ"Ð"KÐ"K°\×5HÒ5HÑ5JÔ5JÐ"KÑ"KÔ"KÑKÔKÐØ*Ð-=Ñ=ˆMˆMàˆNØˆMð 	×Ò˜K­¨j¸+Ñ)FÔ)FÑGÔGÐGØð 	Ý˜}¨nÑ=Ô=ˆKˆKàˆKØ×Ò˜M¨;Ñ7Ô7Ð7à%+ˆÔ˜Ñ"ØˆŒ˜
Ñ"ˆŒØˆŒ˜Ñ$ˆŒØˆŒ˜=Ñ(ˆŒØÐÔ˜NÑ*ÐÔÐÐr   )r1   r   r   r,   r–   )rC   r   rD   rE   r   rF   )rm   r   rn   r   rW   r�   r   r,   )r%   r&   r'   r(   Úreport_typerB   r€   rc   r   r   r   r0   r0   9   sl   € € € € € ØFÐFà€Kð/ð /ð /ð /ð ]ð ]ð ]ð ]ð ]ð~U+ð U+ð U+ð U+ð U+ð U+r   r0   rY   úxml.dom.minidom.Documentc                ó*   — |                       ¦   «         S )z Serialize a minidom node to XML.)Útoprettyxml)rY   s    r   rj   rj     s   € à�?Š?ÑÔÐr   )r   r   r   r   r   r   )r*   r   r+   r   r   r,   )rY   r¾   r   r   )'r(   Ú
__future__r   r8   Úos.pathrT   r`   Úxml.dom.minidomrX   Údataclassesr   Útypingr   r   r   r1   r   r	   Úcoverage.miscr
   r   r   Úcoverage.pluginr   Úcoverage.report_corer   Úcoverage.resultsr   Úcoverage.typesr   Úcoverage.versionr   r   rb   r   r   r.   r0   rj   r   r   r   ú<module>rÌ      së  ðð $Ð #à "Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø €€€Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )à 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ (Ð (Ð (Ð (Ð (Ð (Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø %Ð %Ð %Ð %Ð %Ð %Ø !Ð !Ð !Ð !Ð !Ð !Ø $Ð $Ð $Ð $Ð $Ð $àð "Ø!Ð!Ð!Ð!Ð!Ð!à€^�BÑÔ€ð ^€ð"ð "ð "ð "ð ðð ð ð ð ñ ô ñ „ððð ð ð ð
I+ð I+ð I+ð I+ð I+ñ I+ô I+ð I+ðXð ð ð ð ð r   