L i&6dZddlmZddlZddlZddlZddlZddlZddl m Z ddl m Z ddl mZmZmZddlmZmZddlmZmZmZdd lmZdd lmZdd lmZdd lmZdd l m!Z!erddlm"Z"eeZdZ#ddZ$e GddZ%ddZ&GddZ'ddZ(y)zXML reporting for coverage.py) annotationsN)Iterable) dataclass)IO TYPE_CHECKINGAny) __version__files) human_sortedhuman_sorted_itemsisolate_module) FileReporter)get_analysis_to_report)Analysis)TMorf)__url__)CoveragezQhttps://raw.githubusercontent.com/cobertura/web/master/htdocs/xml/coverage-04.dtdc|dk(ry||z dS)z0Return the fraction of `hit`/`num`, as a string.r1z.4g)hitnums X/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/coverage/xmlreport.pyrater"s ax)C!cDeZdZUdZded<ded<ded<ded<ded<y ) PackageDataz2Data we keep about each "package" (in Java terms).z"dict[str, xml.dom.minidom.Element]elementsinthitslinesbr_hitsbranchesN)__name__ __module__ __qualname____doc____annotations__rrrrr*s<00 I J LMrrc&|j|y)z=Append a child to a parent, in a way mypy will shut up about.N) appendChild)parentchilds rr*r*5s urc.eZdZdZdZddZdd dZd dZy) XmlReporterz>#&{{11!jj/#66s;%%))#.  /13  rNc  |xstj}|jjj }t j jj}|J|jddd|_ |jj}|J|jdt|jdttt!j dz|j#|jj%dt&d|j#|jj%dt(dt+|j|D]\}}|j-||||jj/d }|j#|t1|j2D]P} |jj/d } t#|| |jj5| } t#| | Rd \} } d \}}|jj/d }|j#|t7|j8j;D]p\}}|jj/d }t#|||jj/d}t#||t7|j<j;D]\}}t#|||jd|j?t@jBd|jdtE|jF|jH|r!tE|jJ|jL}nd}|jd||jdd| |jFz } | |jHz } ||jJz }||jLz }s|jdt| |jdt| |jdtE| | |rS|jdt||jdt||jdtE||n6|jdd|jdd|jdd|jdd|jOtQ|j| |z}|dk(rd}|Sd| |zz|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. Nr1version timestampiz Generated by coverage.py:  z Based on sourcesr5)rrr=packageclassesname. line-rate0 branch-rate complexityz lines-validz lines-coveredzbranches-validzbranches-coveredrggY@))sysstdoutr1get_datahas_arcsxmldomminidomgetDOMImplementationcreateDocumentxml_outdocumentElement setAttributer strrtimer* createCommentrDTD_URLrxml_file createElementr r4createTextNoder r=itemsrreplacer6seprr r!r"r#write serialize_xml)r>morfsoutfilerQimpl xcoveragefranalysisxsourcesr7xsourcetxtlnum_tot lhits_totbnum_tot bhits_tot xpackagespkg_namepkg_dataxpackagexclasses_ class_elt branch_ratedenompcts rreportzXmlReporter.reportOsZ'SZZ==))+446ww335**4TB LL00 $$$y+6{CDIIK$4F0G,HI LL & &-gYa8  dll88:gYa9PQR34==%H 2LB MM"h 1 2<<--i8h'!!2!23 &Dll00:G ' *,,--d3C  %  & #)")LL..z: i(#5T]]5H5H5J"K * Hh||11)>/R S"8#3#3X5F5FG !  ! !- =  ! !, 4  &I  &H )) )I )) )H' ** }c(m<I?{DH,EF   " "#3S] C  " "#5s9~ F  " "=$y(2K L  " "#5s ;  " "#3S 9  " "=# 6|S1  mDLL128# A:C 9y01E9C rc  |jjr|jjdk(ry|jj dd}|j D]d}|jjstj|}|j|j dddzsS|t|dzd}nb|jj dd}|j j|jdt| jdtj j#|xsd}dj%|j'dd|jj(}|j dd}|j*j-|t/idddd} |j0j3d} t5| |j0j3d |j0j3d } t5| | | j7d tj j9||| j7d |j dd| j7d d|j;} |j=} t?|j@D]}|j0j3d}|j7dtC||j7dtCtE||jFv|r|| vr;| |\}}|j7dd|j7dd|z|zd|d|d|| vrC| |Dcgc]}|dkrdn tC|}}|j7ddj%|t5| |t|j@}|t|jFz }|rFtId| jKD}tId| jKD}||z }nd}d}| j7dtM|||r tM||}nd}| j7d|| | jN|<| xjP|z c_(| xjR|z c_)| xjT|z c_*| xjV|z c_+ycc}w)z(Add to the XML report for a single file.rN\/r0rIclassmethodsr!rHfilenamerMrKlinenumberr branchtruezcondition-coveragedz% ()exitzmissing-branches,c3&K|] \}}| ywNr.0tks r z'XmlReporter.xml_file..s Etq! Esc3,K|] \}}||z ywrrrs rrz'XmlReporter.xml_file..s"KTQ1q5"KsrJrL),r2 skip_emptynumbers n_statementsrrbr4r9r r; startswithlenrelative_filenamer<r:r6r7dirnamejoinsplitxml_package_depthr= setdefaultrrWr_r*rYrelpath branch_statsmissing_branch_arcssorted statementsrZrmissingsumvaluesrrr r!r"r#)r>rjrkrQr source_pathrel_namer package_namerFxclassxlinesrrrxlinetotaltakenbannlines class_lines class_hitsclass_branchesmissing_branches class_br_hitsrzs rr^zXmlReporter.xml_files@ ;; ! !,,1;;&&tS1,, OK;;--#66{C "";#6#6tS#AC#GH#C $4q$8$:;  O++-55dC@H    ! !"++.>X"?"F"Fu"M N''//(+2s((7==-.M 0M0MNOsC0 --**<RAqRS9TU*.,,*D*DW*MFDLL66yAB++G4FF#FBGGOOHg$FGJ(8(8s(CDL#.,,. &::<8../ 'DLL..v6E   xT 3   vs3t8;K;K/K+L'M N<'#/#5LE5&&x8&&,;%/0E7!E7!D..EXY]E^_!a%SV ;_H_&&'9388H;MN  &' '*(--.  3x'7'7#88  E|/B/B/D EEN""K\5H5H5J"KK *-==MNM Kj+)FG }n=KKM;7%+" "  $ =(N*7 `s+S)r1rreturnNoner)rfzIterable[TMorf] | NonergzIO[str] | Nonerfloat)rjrrkrrQboolrr)r$r%r&r' report_typer@r}r^rrrr.r.:sFK/ ]~U+rr.c"|jS)z Serialize a minidom node to XML.) toprettyxml)rSs rreres ?? r)rrrrrrZ)r+rr,rrr)rSzxml.dom.minidom.DocumentrrZ))r' __future__rr6os.pathrNr[xml.dom.minidomrRcollections.abcr dataclassesrtypingrrrr1r r coverage.miscr r r coverage.pluginrcoverage.report_corercoverage.resultsrcoverage.typesrcoverage.versionrrr]rrr*r.rerrrrs$"  $!))'JJ(7% $!B ^"   I+I+Xr