
    L-Pho&                    P   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 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)AnyIOTYPE_CHECKING)Iterable)__version__files)isolate_modulehuman_sortedhuman_sorted_items)FileReporter)get_analysis_to_report)Analysis)TMorf)__url__)CoveragezQhttps://raw.githubusercontent.com/cobertura/web/master/htdocs/xml/coverage-04.dtdhitintnumreturnstrc                "    |dk    rdS d| |z  z  S )z0Return the fraction of `hit`/`num`, as a string.r   1z%.4g )r   r   s     R/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/coverage/xmlreport.pyrater   #   s    
axxs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IIIJJJLLLMMMMMr   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/   5   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\/)r2   configsetsource_pathssourceospathexistsrelative_filesrstripr
   canonical_filenameaddpackages)selfr2   srcs      r   __init__zXmlReporter.__init__?   s     m*EE; 	/{) / /7>>#&& /{1 <!jj//#6s;;%))#...02...r   NmorfsIterable[TMorf] | None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 )zGenerate 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.

        Nr2   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stdoutr2   get_datahas_arcsxmldomminidomgetDOMImplementationcreateDocumentxml_outdocumentElementsetAttributer	   r   r   timer/   createCommentr   DTD_URLr   xml_filecreateElementr   r7   createTextNoder   r@   itemsr!   replacer9   sepr   r"   r#   r$   r%   writeserialize_xml)rA   rD   rF   rY   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.reportO   s,    'SZ=))++4466 w3355**4TBB L0	$$$y+666{CDIKK4D0E0E,F,FGGGdl884'444
 
 	 	 	 	dl889Pg9P9P9PQQRRR 34=%HH 	2 	2LBMM"h1111<--i88h''' !!233 	& 	&Dl00::G'***,--d33C%%%%")")L..z::	i((( #5T]5H5H5J5J"K"K 	* 	*Hh|11)<<H	8,,,|11)<<H(+++ 283D3J3J3L3L M M 1 19Hi0000!!&(*:*:263*G*GHHH!!+tHM8>/R/RSSS ""8#3X5FGG!!!-===!!,444&I&H))I))HH}c(mm<<<I???{DH,E,EFFF 	7""#3S]]CCC""#5s9~~FFF""=$y(2K2KLLLL""#5s;;;""#3S999""=#666|S111 	mDL11222 8#A::CC9y01E9C
r   ro   r   rp   r   rY   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         } nqk|                                                    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 rC||         \  }}|                    dd           |                    ddd|z  |z  ||fz             ||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\/   r4   rQ   classmethodsr#   rP   filenamerU   rS   linenumberr"   branchtruezcondition-coveragez%d%% (%d/%d)d   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VV___r   zmissing-branches,c              3      K   | ]	\  }}|V  
d S Nr   r   tks      r   	<genexpr>z'XmlReporter.xml_file.<locals>.<genexpr>   s&       E Etq! 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"KTQ1q5"K"K"K"K"K"Kr   rR   rT   ),r5   
skip_emptynumbersn_statementsr   ri   r7   r<   r
   r>   
startswithlenrelative_filenamer?   r=   r9   r:   dirnamejoinsplitxml_package_depthr@   
setdefaultr    r_   rf   r/   ra   relpathbranch_statsmissing_branch_arcssorted
statementsr   r   missingsumvaluesr   r!   r"   r#   r$   r%   )rA   ro   rp   rY   r   source_pathrel_namer   package_namerN   xclassxlinesr   r   r   xlinetotaltakenannlinesclass_lines
class_hitsclass_branchesmissing_branchesclass_br_hitsr   s                            r   re   zXmlReporter.xml_file   s    ;! 	,11 ;&&tS11, 	N 	NK;- D#6{CC"";#6#6tS#A#AC#GHH #C$4$4Q$6$7$78 ++--55dC@@H!!"+oH~o">"E"Ee"L"LMMM'//(++2s((7==--.Lt{/L.LMNNsC00-**<RAqRS9T9TUU*.,*D*DW*M*MFDL66yAABBB++G44FF###FBGOOHg$F$FGGGJ(8(8s(C(CDDDL#...,,..&::<< 8.// 	' 	'DL..v66ExT333 vs3t8;K/K+L+L'M'MNNN 
O<''#/#5LE5&&x888&&,&#e)U*:E5)II   ...__EXY]E^___H&&'9388H;M;MNNN&&&&(-.. 3x'7#8#88
 	  E E|/B/B/D/D E E EEEN""K"K\5H5H5J5J"K"K"KKK*-==MMNM 	Kj+)F)FGGG 	}n==KKKM;777%+"
"$=(N*r   )r2   r   r   r-   r   )rD   rE   rF   rG   r   rH   )ro   r   rp   r   rY   r   r   r-   )r&   r'   r(   r)   report_typerC   r   re   r   r   r   r1   r1   :   sl        FFK/ / / / [ [ [ [ [zU+ U+ U+ U+ U+ U+r   r1   r[   xml.dom.minidom.Documentc                *    |                                  S )z Serialize a minidom node to XML.)toprettyxml)r[   s    r   rl   rl     s    ??r   )r   r   r   r   r   r   )r+   r   r,   r   r   r-   )r[   r   r   r   ))r)   
__future__r   r9   os.pathrV   rb   xml.dom.minidomrZ   dataclassesr   typingr   r   r   collections.abcr   r2   r	   r
   coverage.miscr   r   r   coverage.pluginr   coverage.report_corer   coverage.resultsr   coverage.typesr   coverage.versionr   r   rd   r   r    r/   r1   rl   r   r   r   <module>r      s   $ # " " " " " " 				  



      ! ! ! ! ! ! ) ) ) ) ) ) ) ) ) ) $ $ $ $ $ $ ' ' ' ' ' ' ' ' J J J J J J J J J J ( ( ( ( ( ( 7 7 7 7 7 7 % % % % % %             $ $ $ $ $ $ "!!!!!!^B ^$ $ $ $           
G+ G+ G+ G+ G+ G+ G+ G+T     r   