ó
    Ð]j[&  ã                  ó:  • S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSK	J
r
  SSKJrJrJr  SSKJrJr  SSKJrJrJr  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr  \(       a  SSKJ r   \" \5      rSr!SS jr"\
 " S S5      5       r#SS jr$ " S S5      r%SS jr&g)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.dtdc                ó   • US:X  a  gX-  S $ )z0Return the fraction of `hit`/`num`, as a string.r   Ú1z.4g© )ÚhitÚnums     ÚO/home/mande/repo/quber/.venv/lib/python3.13/site-packages/coverage/xmlreport.pyÚrater   !   s   € à
ˆaƒxØà‘)˜C�Ð!ó    c                  óL   • \ rS rSr% SrS\S'   S\S'   S\S'   S\S'   S\S	'   S
rg)ÚPackageDataé)   z2Data we keep about each "package" (in Java terms).z"dict[str, xml.dom.minidom.Element]ÚelementsÚintÚhitsÚlinesÚbr_hitsÚbranchesr   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__Ú__static_attributes__r   r   r   r   r   )   s   ‡ á<à0Ó0Ø
ƒIØƒJØƒLØ†Mr   r   c                ó&   • U R                  U5        g)z=Append a child to a parent, in a way mypy will shut up about.N)ÚappendChild)ÚparentÚchilds     r   r,   r,   4   s   € à
×Ñ�uÕr   c                  ó>   • \ rS rSrSrSrS	S jrS
SS jjrSS jrSr	g)ÚXmlReporteré9   z<A reporter for writing Cobertura-style XML coverage results.z
XML reportc                óî  • Xl         U R                   R                  U l        [        5       U l        U R                  R                  (       a¡  U R                  R                   H‡  n[
        R                  R                  U5      (       d  M)  U R                  R                  (       a  UR                  S5      nO[        R                  " U5      nU R                  R                  U5        M‰     0 U l        U   g )Nú\/)ÚcoverageÚconfigÚsetÚsource_pathsÚsourceÚosÚpathÚexistsÚrelative_filesÚrstripr	   Úcanonical_filenameÚaddÚpackages)Úselfr4   Úsrcs      r   Ú__init__ÚXmlReporter.__init__>   s¡   € Ø ŒØ—m‘m×*Ñ*ˆŒä›EˆÔØ�;‰;××Ø—{‘{×)Ô)�Ü—7‘7—>‘> #×&Ó&Ø—{‘{×1×1Ø!Ÿj™j¨Ó/™ä#×6Ò6°sÓ;˜Ø×%Ñ%×)Ñ)¨#Ö.ñ *ð 13ˆŒÚr   Nc           	     ó>
  • U=(       d    [         R                  nU R                  R                  5       R	                  5       n[
        R                  R                  R                  5       nUc   eUR                  SSS5      U l
        U R                  R                  nUc   eUR                  S[        5        UR                  S[        [        [         R                   " 5       S-  5      5      5        UR#                  U R                  R%                  S[&         S35      5        UR#                  U R                  R%                  S[(         S35      5        [+        U R                  U5       H  u  pgU R-                  XgU5        M     U R                  R/                  S	5      nUR#                  U5        [1        U R2                  5       HO  n	U R                  R/                  S
5      n
[#        XŠ5        U R                  R5                  U	5      n[#        X«5        MQ     Su  pÍSu  pïU R                  R/                  S5      nUR#                  U5        [7        U R8                  R;                  5       5       GHx  u  nnU R                  R/                  S5      n[#        UU5        U R                  R/                  S5      n[#        UU5        [7        UR<                  R;                  5       5       H  u  nn[#        UU5        M     UR                  SUR?                  [@        RB                  S5      5        UR                  S[E        URF                  URH                  5      5        U(       a!  [E        URJ                  URL                  5      nOSnUR                  SU5        UR                  SS5        UURF                  -  nUURH                  -  nUURJ                  -  nUURL                  -  nGM{     UR                  S[        U5      5        UR                  S[        U5      5        UR                  S[E        XÜ5      5        U(       aR  UR                  S[        U5      5        UR                  S[        U5      5        UR                  S[E        Xþ5      5        O6UR                  SS5        UR                  SS5        UR                  SS5        UR                  SS5        URO                  [Q        U R                  5      5        XÎ-   nUS:X  a  SnU$ SXß-   -  U-  nU$ )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.

Nr4   ÚversionÚ	timestampiè  z Generated by coverage.py: Ú z
 Based on Úsourcesr8   )r   r   r@   ÚpackageÚclassesÚnameÚ.ú	line-rateÚ0úbranch-rateÚ
complexityzlines-validzlines-coveredzbranches-validzbranches-coveredr   g        g      Y@))ÚsysÚstdoutr4   Úget_dataÚhas_arcsÚxmlÚdomÚminidomÚgetDOMImplementationÚcreateDocumentÚxml_outÚdocumentElementÚsetAttributer   Ústrr   Útimer,   ÚcreateCommentr   ÚDTD_URLr   Úxml_fileÚcreateElementr
   r7   ÚcreateTextNoder   r@   Úitemsr   Úreplacer9   Úsepr   r    r!   r"   r#   ÚwriteÚserialize_xml)rA   ÚmorfsÚoutfilerU   ÚimplÚ	xcoverageÚfrÚanalysisÚxsourcesr:   ÚxsourceÚtxtÚlnum_totÚ	lhits_totÚbnum_totÚ	bhits_totÚ	xpackagesÚpkg_nameÚpkg_dataÚxpackageÚxclassesÚ_Ú	class_eltÚbranch_rateÚdenomÚpcts                             r   ÚreportÚXmlReporter.reportN   s5  € ð ×'œSŸZ™ZˆØ—=‘=×)Ñ)Ó+×4Ñ4Ó6ˆô �w‰w�‰×3Ñ3Ó5ˆØÑÐÐØ×*Ñ*¨4°¸TÓBˆŒð —L‘L×0Ñ0ˆ	ØÑ$Ð$Ð$Ø×Ñ˜y¬+Ô6Ø×Ñ˜{¬C´´D·I²I³KÀ$Ñ4FÓ0GÓ,HÔIØ×ÑØ�L‰L×&Ñ&Ø-¬g¨Y°aÐ8óô	
ð
 	×Ñ˜dŸl™l×8Ñ8¸:ÄgÀYÈaÐ9PÓQÔRô 3°4·=±=À%ÖH‰LˆBØ�M‰M˜"¨Ö1ñ Ið —<‘<×-Ñ-¨iÓ8ˆØ×Ñ˜hÔ'ô ! ×!2Ñ!2Ö3ˆDØ—l‘l×0Ñ0°Ó:ˆGÜ˜Ô*Ø—,‘,×-Ñ-¨dÓ3ˆCÜ˜Ö%ñ	 4ð #ÑˆØ"Ñˆà—L‘L×.Ñ.¨zÓ:ˆ	Ø×Ñ˜iÔ(ô #5°T·]±]×5HÑ5HÓ5J×"KÑˆH�hØ—|‘|×1Ñ1°)Ó<ˆHÜ˜	 8Ô,Ø—|‘|×1Ñ1°)Ó<ˆHÜ˜ (Ô+Ü 2°8×3DÑ3D×3JÑ3JÓ3LÖ M‘��9Ü˜H iÖ0ñ !Nà×!Ñ! &¨(×*:Ñ*:¼2¿6¹6À3Ó*GÔHØ×!Ñ! +¬t°H·M±MÀ8Ç>Á>Ó/RÔSÞÜ" 8×#3Ñ#3°X×5FÑ5FÓG‘à!�Ø×!Ñ! -°Ô=Ø×!Ñ! ,°Ô4à˜Ÿ™Ñ&ˆIØ˜Ÿ™Ñ&ˆHØ˜×)Ñ)Ñ)ˆIØ˜×)Ñ)Ñ)‹Hñ' #Lð* 	×Ñ˜}¬c°(«mÔ<Ø×Ñ˜´°I³Ô?Ø×Ñ˜{¬D°Ó,EÔFÞØ×"Ñ"Ð#3´S¸³]ÔCØ×"Ñ"Ð#5´s¸9³~ÔFØ×"Ñ" =´$°yÓ2KÕLà×"Ñ"Ð#5°sÔ;Ø×"Ñ"Ð#3°SÔ9Ø×"Ñ" =°#Ô6Ø×Ñ˜|¨SÔ1ð 	�‰”m D§L¡LÓ1Ô2ð Ñ#ˆØ�A‹:ØˆCð ˆ
ð ˜9Ñ0Ñ1°EÑ9ˆCØˆ
r   c           
     ó 
  • U R                   R                  (       a  UR                  R                  S:X  a  gUR                  R                  SS5      nU R                   Hp  nU R                   R                  (       d  [        R                  " U5      nUR                  UR                  SS5      S-   5      (       d  M_  U[        U5      S-   S n  Oc   UR                  5       R                  SS5      nU R                  R                  UR                  S[        U5      *  R                  S5      5        [        R                   R#                  U5      =(       d    SnSR%                  UR'                  S5      SU R                   R(                   5      nUR                  SS5      nU R*                  R-                  U[/        0 SSSS5      5      n	U R0                  R3                  S5      n
[5        X R0                  R3                  S	5      5        U R0                  R3                  S
5      n[5        X«5        U
R7                  S[        R                   R9                  Xg5      5        U
R7                  SUR                  SS5      5        U
R7                  SS5        UR;                  5       nUR=                  5       n[?        UR@                  5       GH  nU R0                  R3                  S5      nUR7                  S[C        U5      5        UR7                  S[C        [E        XâRF                  ;  5      5      5        U(       aŠ  Xì;   a:  XÎ   u  nnUR7                  SS5        UR7                  SSU-  U-   SU SU S35        Xí;   aF  XÞ    Vs/ s H  nUS:  a  SO
[C        U5      PM     nnUR7                  SSR%                  U5      5        [5        X¿5        GM	     [        UR@                  5      nU[        URF                  5      -
  nU(       aF  [I        S URK                  5        5       5      n[I        S URK                  5        5       5      nUU-
  nOSnSnU
R7                  S[M        UU5      5        U(       a  [M        UU5      nOSnU
R7                  SU5        X©RN                  U'   U	=RP                  U-  sl(        U	=RR                  U-  sl)        U	=RT                  U-  sl*        U	=RV                  U-  sl+        gs  snf )z(Add to the XML report for a single file.r   NÚ\Ú/é   r3   rM   ÚclassÚmethodsr!   rL   ÚfilenamerQ   rO   ÚlineÚnumberr    ÚbranchÚtruezcondition-coverageéd   z% (Ú)Úexitzmissing-branchesÚ,c              3  ó*   #   • U  H	  u  pUv •  M     g 7f©Nr   ©Ú.0ÚtÚks      r   Ú	<genexpr>Ú'XmlReporter.xml_file.<locals>.<genexpr>ï   s   é € Ð EÒ/D¡t q¥Ò/Dùs   ‚c              3  ó.   #   • U  H  u  pX-
  v •  M     g 7fr“   r   r”   s      r   r˜   r™   ð   s   é € Ð"KÒ5J©T¨Q 1¦5Ò5Jùs   ‚rN   rP   ),r5   Ú
skip_emptyÚnumbersÚn_statementsr‰   rf   r7   r<   r	   r>   Ú
startswithÚlenÚrelative_filenamer?   r=   r9   r:   ÚdirnameÚjoinÚsplitÚxml_package_depthr@   Ú
setdefaultr   r[   rc   r,   r]   ÚrelpathÚbranch_statsÚmissing_branch_arcsÚsortedÚ
statementsr^   r   ÚmissingÚsumÚvaluesr   r   r    r!   r"   r#   )rA   rn   ro   rU   r‰   Úsource_pathÚrel_namer¡   Úpackage_namerJ   ÚxclassÚxlinesr§   r¨   rŠ   ÚxlineÚtotalÚtakenÚbÚannlinesÚclass_linesÚ
class_hitsÚclass_branchesÚmissing_branchesÚclass_br_hitsr~   s                             r   rb   ÚXmlReporter.xml_file­   s$  € ð �;‰;×!×!Ø×Ñ×,Ñ,°Ó1Øð —;‘;×&Ñ& t¨SÓ1ˆØ×,Ô,ˆKØ—;‘;×-×-Ü#×6Ò6°{ÓC�Ø×"Ñ" ;×#6Ñ#6°t¸SÓ#AÀCÑ#G×HÓHØ#¤C¨Ó$4°qÑ$8Ð$:Ð;�Ùñ -ð ×+Ñ+Ó-×5Ñ5°d¸CÓ@ˆHØ×Ñ×!Ñ! "§+¡+Ð.>´°X³°Ð"?×"FÑ"FÀuÓ"MÔNä—'‘'—/‘/ (Ó+×2¨sˆØ—(‘(˜7Ÿ=™=¨Ó-Ð.M°·±×0MÑ0MÐNÓOˆØ—‘ s¨CÓ0ˆà—-‘-×*Ñ*¨<¼ÀRÈÈAÈqÐRSÓ9TÓUˆà*.¯,©,×*DÑ*DÀWÓ*Mˆä�FŸL™L×6Ñ6°yÓAÔBà—‘×+Ñ+¨GÓ4ˆÜ�FÔ#à×Ñ˜F¤B§G¡G§O¡O°HÓ$FÔGØ×Ñ˜J¨×(8Ñ(8¸¸sÓ(CÔDØ×Ñ˜L¨#Ô.à×,Ñ,Ó.ˆØ&×:Ñ:Ó<Ðô ˜8×.Ñ.×/ˆDØ—L‘L×.Ñ.¨vÓ6ˆEØ×Ñ˜x¬¨T«Ô3ð ×Ñ˜v¤s¬3¨t×;KÑ;KÑ/KÓ+LÓ'MÔNæØÓ'Ø#/Ñ#5‘L�E˜5Ø×&Ñ& x°Ô8Ø×&Ñ&Ø,Ø ™;¨%Ñ/Ð0°°E°7¸!¸E¸7À!ÐDôð Ó.ØEXÒE^Ó_ÒE^À¨!¨a«%¡´S¸³VÒ ;ÑE^�HÐ_Ø×&Ñ&Ð'9¸3¿8¹8ÀHÓ;MÔNÜ˜×&ñ' 0ô* ˜(×-Ñ-Ó.ˆØ ¤3 x×'7Ñ'7Ó#8Ñ8ˆ
æÜ Ñ E¨|×/BÑ/BÔ/DÓ EÓEˆNÜ"Ñ"K°\×5HÑ5HÔ5JÓ"KÓKÐØ*Ð-=Ñ=‰MàˆNØˆMð 	×Ñ˜K¬¨j¸+Ó)FÔGÞÜ˜}¨nÓ=‰KàˆKØ×Ñ˜M¨;Ô7à%+×Ñ˜Ñ"Ø�Š˜
Ñ"�Ø�Š˜Ñ$�Ø�Š˜=Ñ(�Ø×Ò˜NÑ*Öùò7  `s   ÎS;)r5   r4   r@   r7   r[   )r4   r   ÚreturnÚNoner“   )rj   r   rk   zIO[str] | Noner¾   Úfloat)rn   r   ro   r   rU   Úboolr¾   r¿   )
r$   r%   r&   r'   r(   Úreport_typerC   r�   rb   r*   r   r   r   r0   r0   9   s   † ÙFà€Kô/ö ]÷~U+r   r0   c                ó"   • U R                  5       $ )z Serialize a minidom node to XML.)Útoprettyxml)rW   s    r   ri   ri     s   € à�?‰?ÓÐr   )r   r   r   r   r¾   r^   )r-   r   r.   r   r¾   r¿   )rW   zxml.dom.minidom.Documentr¾   r^   )'r(   Ú
__future__r   r9   Úos.pathrR   r_   Úxml.dom.minidomrV   Údataclassesr   Útypingr   r   r   r4   r   r	   Úcoverage.miscr
   r   r   Úcoverage.pluginr   Úcoverage.report_corer   Úcoverage.resultsr   Úcoverage.typesr   Úcoverage.versionr   r   ra   r   r   r,   r0   ri   r   r   r   Ú<module>rÐ      sŠ   ðñ $å "ã 	Û Û 
Û Û Ý !ß )Ñ )ç 'ß JÑ JÝ (Ý 7Ý %Ý !Ý $æÝ!á�BÓ€ð ^€ô"ð ÷ð ó ðô÷
I+ñ I+õXr   