Ë
    oPêj1(  ã                  ó.  — 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 ddlmZ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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'y)zXML reporting for coverage.pyé    )ÚannotationsN)Ú	dataclass)ÚIOÚTYPE_CHECKINGÚAny)Úfiles)Úhuman_sortedÚhuman_sorted_itemsÚisolate_moduleÚneutralize_control)ÚFileReporter)Úget_analysis_to_report)ÚAnalysis)ÚTMorfs)Ú__url__Ú__version__)ÚCoveragezQhttps://raw.githubusercontent.com/cobertura/web/master/htdocs/xml/coverage-04.dtdc                ó`   — |dk(  ry| |k(  ry| dk(  ryt        t        | |z  d«      d«      }|d›S )zçReturn the fraction of `hit`/`num`, as a string.

    Note that "0" is only returned when `hit` is truly zero, and "1"
    is only returned when `hit == num` (or `num == 0`). Rounding can never
    result in either "0" or "1".
    r   Ú1Ú0g-Cëâ6?g§èH.ÿï?z.4g)ÚminÚmax)ÚhitÚnumÚfracs      úW/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/coverage/xmlreport.pyÚrater   #   sC   € ð ˆa‚xàØ	�ŠØØ	�ŠØä”3�s˜S‘y &Ó)¨6Ó2ˆØ�s�Ðó    c                  óD   — e Zd ZU dZded<   ded<   ded<   ded<   ded<   y	)
ÚPackageDataz2Data we keep about each "package" (in Java terms).z"dict[str, xml.dom.minidom.Element]ÚelementsÚintÚhitsÚlinesÚbr_hitsÚbranchesN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__© r   r   r    r    6   s   … á<à0Ó0Ø
ƒIØƒJØƒLØ„Mr   r    c                ó&   — | j                  |«       y)z=Append a child to a parent, in a way mypy will shut up about.N)ÚappendChild)ÚparentÚchilds     r   r.   r.   A   s   € à
×Ñ�uÕr   c                  ó.   — e Zd ZdZdZdd„Zdd	d„Zd
d„Zy)ÚXmlReporterz<A reporter for writing Cobertura-style XML coverage results.z
XML reportc                óÊ  — || _         | j                   j                  | _        t        «       | _        | j                  j                  r“| j                  j                  D ]z  }t
        j                  j                  |«      sŒ#| j                  j                  r|j                  d«      }nt        j                  |«      }| j                  j                  |«       Œ| i | _        |  y )Nú\/)ÚcoverageÚconfigÚsetÚsource_pathsÚsourceÚosÚpathÚexistsÚrelative_filesÚrstripr   Úcanonical_filenameÚaddÚpackages)Úselfr5   Úsrcs      r   Ú__init__zXmlReporter.__init__K   s¥   € Ø ˆŒØ—m‘m×*Ñ*ˆŒä›EˆÔØ�;‰;×ÒØ—{‘{×)Ñ)ò /�Ü—7‘7—>‘> #Õ&Ø—{‘{×1Ò1Ø!Ÿj™j¨Ó/™ä#×6Ñ6°sÓ;˜Ø×%Ñ%×)Ñ)¨#Õ.ð/ð 13ˆŒÚr   Nc           	     ó.
  — |xs t         j                  }| j                  j                  «       j	                  «       }t
        j                  j                  j                  «       }|€J ‚|j                  ddd«      | _
        | j                  j                  }|€J ‚|j                  dt        «       |j                  dt        t        t!        j                   «       dz  «      «      «       |j#                  | j                  j%                  dt&        › d�«      «       |j#                  | j                  j%                  dt(        › d�«      «       t+        | j                  |«      D ]  \  }}| j-                  |||«       Œ | j                  j/                  d	«      }|j#                  |«       t1        | j2                  «      D ]Y  }	| j                  j/                  d
«      }
t#        ||
«       | j                  j5                  t7        |	«      «      }t#        |
|«       Œ[ d\  }}d\  }}| j                  j/                  d«      }|j#                  |«       t9        | j:                  j=                  «       «      D �]p  \  }}| j                  j/                  d«      }t#        ||«       | j                  j/                  d«      }t#        ||«       t9        |j>                  j=                  «       «      D ]  \  }}t#        ||«       Œ |j                  d|jA                  tB        jD                  d«      «       |j                  dtG        |jH                  |jJ                  «      «       |r!tG        |jL                  |jN                  «      }nd}|j                  d|«       |j                  dd«       ||jH                  z  }||jJ                  z  }||jL                  z  }||jN                  z  }�Œs |j                  dt        |«      «       |j                  dt        |«      «       |j                  dtG        ||«      «       |rS|j                  dt        |«      «       |j                  dt        |«      «       |j                  dtG        ||«      «       n6|j                  dd«       |j                  dd«       |j                  dd«       |j                  dd«       |jQ                  tS        | j                  «      «       ||z   }|dk(  rd}|S 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.

        Nr5   ÚversionÚ	timestampiè  z Generated by coverage.py: ú z
 Based on Úsourcesr9   )r   r   rA   ÚpackageÚclassesÚnameú.ú	line-rater   úbranch-rateÚ
complexityzlines-validzlines-coveredzbranches-validzbranches-coveredr   g        g      Y@)*ÚsysÚstdoutr5   Úget_dataÚhas_arcsÚxmlÚdomÚminidomÚgetDOMImplementationÚcreateDocumentÚxml_outÚdocumentElementÚsetAttributer   Ústrr"   Útimer.   ÚcreateCommentr   ÚDTD_URLr   Úxml_fileÚcreateElementr	   r8   ÚcreateTextNoder   r
   rA   Úitemsr!   Úreplacer:   Úsepr   r#   r$   r%   r&   ÚwriteÚserialize_xml)rB   ÚmorfsÚoutfilerT   Ú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   ÚreportzXmlReporter.report[   s`  € ð Ò'œ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ò 	2‰LˆB�Ø�M‰M˜"˜h¨Õ1ð	2ð —<‘<×-Ñ-¨iÓ8ˆØ×Ñ˜hÔ'ô ! ×!2Ñ!2Ó3ò 	&ˆDØ—l‘l×0Ñ0°Ó:ˆGÜ˜ 'Ô*Ø—,‘,×-Ñ-Ô.@ÀÓ.FÓGˆCÜ˜ Õ%ð		&ð #Ñˆ�)Ø"Ñˆ�)à—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ò 1‘��9Ü˜H iÕ0ð1à×!Ñ! &¨(×*:Ñ*:¼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ð'	*ð* 	×Ñ˜}¬c°(«mÔ<Ø×Ñ˜´°I³Ô?Ø×Ñ˜{¬D°¸HÓ,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ð ˜8Ñ#ˆØ�AŠ:ØˆCð ˆ
ð ˜9 yÑ0Ñ1°EÑ9ˆCØˆ
r   c           
     óÂ	  — | j                   j                  r|j                  j                  dk(  ry|j                  j                  dd«      }| j                  D ]d  }| j                   j                  st        j                  |«      }|j                  |j                  dd«      dz   «      sŒS|t        |«      dz   d } nb |j                  «       j                  dd«      }| j                  j                  |j                  dt        |«        j                  d«      «       t        |«      }t         j"                  j%                  |«      xs d}dj'                  |j)                  d«      d| j                   j*                   «      }|j                  dd«      }| j,                  j/                  |t1        i dddd«      «      }	| j2                  j5                  d«      }
t7        |
| j2                  j5                  d	«      «       | j2                  j5                  d
«      }t7        |
|«       |
j9                  dt         j"                  j;                  ||«      «       |
j9                  d|j                  dd«      «       |
j9                  dd«       |j=                  «       }|j?                  «       }tA        |jB                  «      D ]ü  }| j2                  j5                  d«      }|j9                  dtE        |«      «       |j9                  dtE        tG        ||jH                  v«      «      «       |r†||v r;||   \  }}|j9                  dd«       |j9                  dd|z  |z  › d|› d|› d�«       ||v rC||   D �cg c]  }|dk  rdn
tE        |«      ‘Œ }}|j9                  ddj'                  |«      «       t7        ||«       Œþ t        |jB                  «      }|t        |jH                  «      z
  }|rFtK        d„ |jM                  «       D «       «      }tK        d„ |jM                  «       D «       «      }||z
  }nd}d}|
j9                  dtO        ||«      «       |rtO        ||«      }nd}|
j9                  d|«       |
|	jP                  |<   |	xjR                  |z  c_)        |	xjT                  |z  c_*        |	xjV                  |z  c_+        |	xjX                  |z  c_,        yc c}w )z(Add to the XML report for a single file.r   Nú\ú/é   r4   rM   ÚclassÚmethodsr$   rL   ÚfilenamerP   r   ÚlineÚnumberr#   ÚbranchÚtruezcondition-coverageéd   z% (ú)Úexitzmissing-branchesú,c              3  ó&   K  — | ]	  \  }}|–— Œ y ­w©Nr,   ©Ú.0ÚtÚks      r   ú	<genexpr>z'XmlReporter.xml_file.<locals>.<genexpr>þ   s   è ø€ Ò E¡t q¨!¤Ñ Eùs   ‚c              3  ó,   K  — | ]  \  }}||z
  –— Œ y ­wr‘   r,   r’   s      r   r–   z'XmlReporter.xml_file.<locals>.<genexpr>ÿ   s   è ø€ Ò"K©T¨Q° 1 q¥5Ñ"Kùs   ‚rN   rO   )-r6   Ú
skip_emptyÚnumbersÚn_statementsr‡   re   r8   r=   r   r?   Ú
startswithÚlenÚrelative_filenamer@   r>   r   r:   r;   ÚdirnameÚjoinÚsplitÚxml_package_depthrA   Ú
setdefaultr    rZ   rb   r.   r\   ÚrelpathÚbranch_statsÚmissing_branch_arcsÚsortedÚ
statementsr]   r"   ÚmissingÚsumÚvaluesr   r!   r#   r$   r%   r&   )rB   rm   rn   rT   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   ra   zXmlReporter.xml_fileº   sJ  € ð �;‰;×!Ò!Ø×Ñ×,Ñ,°Ò1Øð —;‘;×&Ñ& t¨SÓ1ˆØ×,Ñ,ò 	OˆKØ—;‘;×-Ò-Ü#×6Ñ6°{ÓC�Ø×"Ñ" ;×#6Ñ#6°t¸SÓ#AÀCÑ#GÕHØ#¤C¨Ó$4°qÑ$8Ð$:Ð;�Ùð	Oð ×+Ñ+Ó-×5Ñ5°d¸CÓ@ˆHØ×Ñ×!Ñ! "§+¡+Ð.>´°X³°Ð"?×"FÑ"FÀuÓ"MÔNä% hÓ/ˆä—'‘'—/‘/ (Ó+Ò2¨sˆØ—(‘(˜7Ÿ=™=¨Ó-Ð.M°·±×0MÑ0MÐNÓOˆØ—‘ s¨CÓ0ˆà—-‘-×*Ñ*¨<¼ÀRÈÈAÈqÐRSÓ9TÓUˆà*.¯,©,×*DÑ*DÀWÓ*Mˆä�F˜DŸL™L×6Ñ6°yÓAÔBà—‘×+Ñ+¨GÓ4ˆÜ�F˜FÔ#à×Ñ˜F¤B§G¡G§O¡O°H¸gÓ$FÔGØ×Ñ˜J¨×(8Ñ(8¸¸sÓ(CÔDØ×Ñ˜L¨#Ô.à×,Ñ,Ó.ˆØ&×:Ñ:Ó<Ðô ˜8×.Ñ.Ó/ò 	'ˆDØ—L‘L×.Ñ.¨vÓ6ˆEØ×Ñ˜x¬¨T«Ô3ð ×Ñ˜v¤s¬3¨t¸8×;KÑ;KÐ/KÓ+LÓ'MÔNáØ˜<Ñ'Ø#/°Ñ#5‘L�E˜5Ø×&Ñ& x°Ô8Ø×&Ñ&Ø,Ø ™;¨%Ñ/Ð0°°E°7¸!¸E¸7À!ÐDôð Ð.Ñ.ØEXÐY]ÑE^Ö_À¨!¨aª%¡´S¸³VÑ ;Ð_�HÐ_Ø×&Ñ&Ð'9¸3¿8¹8ÀHÓ;MÔNÜ˜ Õ&ð'	'ô* ˜(×-Ñ-Ó.ˆØ ¤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   Í6S)r5   r   ÚreturnÚNoner‘   )ri   r   rj   zIO[str] | Nonerº   Úfloat)rm   r   rn   r   rT   Úboolrº   r»   )r'   r(   r)   r*   Úreport_typerD   r€   ra   r,   r   r   r2   r2   F   s   „ ÙFà€Kó/ô ]ô~W+r   r2   c                ó"   — | j                  «       S )z Serialize a minidom node to XML.)Útoprettyxml)rV   s    r   rh   rh     s   € à�?‰?ÓÐr   )r   r"   r   r"   rº   r]   )r/   r   r0   r   rº   r»   )rV   zxml.dom.minidom.Documentrº   r]   )(r*   Ú
__future__r   r:   Úos.pathrQ   r^   Úxml.dom.minidomrU   Údataclassesr   Útypingr   r   r   r5   r   Úcoverage.miscr	   r
   r   r   Úcoverage.pluginr   Úcoverage.report_corer   Úcoverage.resultsr   Úcoverage.typesr   Úcoverage.versionr   r   r   r`   r   r    r.   r2   rh   r,   r   r   ú<module>rÌ      sŒ   ðñ $õ #ã 	Û Û 
Û Û Ý !ß )Ñ )å ß ^Ó ^Ý (Ý 7Ý %Ý !ß 1áÝ!á�BÓ€ð ^€óð& ÷ð ó ðó÷
K+ñ K+ô\r   