
    zi[&                    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     ]/var/www/tmov.alphamb/tmov_inventario/venv/lib/python3.11/site-packages/coverage/xmlreport.pyrater   !   s     
axx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.   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*EE; 	/{) / /7>>#&& /{1 <!jj//#6s;;%))#...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 )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.

        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-    'SZ=))++4466 w3355**4TBB L0	$$$y+666{CDIKK$4F0G0G,H,HIIIL&&8g888 	
 	
 	

 	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   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         } 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 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-coveraged   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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   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 ;&&tS11, 	O 	OK;- D#6{CC"";#6#6tS#A#AC#GHH #C$4$4q$8$:$:; ++--55dC@@H!!"+.>X.>"?"F"Fu"M"MNNN'//(++2s((7==--.M0M.MNOO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&&,;%/DDEDDEDDD   ...__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   )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   