
    V.jb'                    *   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&y)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                    |dk(  ry| |z  dS )z0Return the fraction of `hit`/`num`, as a string.r   1z.4g )hitnums     TC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\coverage/xmlreport.pyrater   !   s    
ax)C!    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   r   )   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)   4   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)selfr0   srcs      r   __init__zXmlReporter.__init__>   s     mm**E;;{{))77>>#&{{11!jj/#66s;%%))#. * 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 ]P  }	| j                  j/                  d
      }
t#        ||
       | j                  j5                  |	      }t#        |
|       R d\  }}d\  }}| j                  j/                  d      }|j#                  |       t7        | j8                  j;                               D ]p  \  }}| j                  j/                  d      }t#        ||       | j                  j/                  d      }t#        ||       t7        |j<                  j;                               D ]  \  }}t#        ||        |j                  d|j?                  t@        jB                  d             |j                  dtE        |jF                  |jH                               |r!tE        |jJ                  |jL                        }nd}|j                  d|       |j                  dd       ||jF                  z  }||jH                  z  }||jJ                  z  }||jL                  z  }s |j                  dt        |             |j                  dt        |             |j                  dtE        ||             |rS|j                  dt        |             |j                  dt        |             |j                  dtE        ||             n6|j                  dd       |j                  dd       |j                  dd       |j                  dd       |jO                  tQ        | j                               ||z   }|dk(  rd}|S 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.

        Nr0   version	timestampi  z Generated by coverage.py:  z
 Based on sourcesr4   )r   r   r<   packageclassesname.	line-rate0branch-rate
complexityzlines-validzlines-coveredzbranches-validzbranches-coveredr   g        g      Y@))sysstdoutr0   get_datahas_arcsxmldomminidomgetDOMImplementationcreateDocumentxml_outdocumentElementsetAttributer   strr   timer)   createCommentr   DTD_URLr   xml_filecreateElementr
   r3   createTextNoder   r<   itemsr   replacer5   sepr   r   r    r!   r"   writeserialize_xml)r=   morfsoutfilerP   impl	xcoveragefranalysisxsourcesr6   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   sI    'SZZ==))+446 ww335**4TB LL00	$$$y+6{CDIIK$4F0G,HILL&&-gYa8	

 	dll88:gYa9PQR 34==%HLBMM"h1 I <<--i8h' !!2!23Dll00:G'*,,--d3C%	 4 #)")LL..z:	i( #5T]]5H5H5J"KHh||11)<H	8,||11)<H(+ 283D3D3J3J3L M9Hi0 !N!!&(*:*:2663*GH!!+tHMM8>>/RS"8#3#3X5F5FG!!!-=!!,4&I&H)))I)))H' #L* 	}c(m<I?{DH,EF""#3S]C""#5s9~F""=$y(2KL""#5s;""#3S9""=#6|S1 	mDLL12 8#A:C 
 9y01E9C
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        j                   j#                  |      xs d}dj%                  |j'                  d      d| j                   j(                         }|j                  dd      }| j*                  j-                  |t/        i dddd            }	| j0                  j3                  d      }
t5        |
| j0                  j3                  d	             | j0                  j3                  d
      }t5        |
|       |
j7                  dt        j                   j9                  ||             |
j7                  d|j                  dd             |
j7                  dd       |j;                         }|j=                         }t?        |j@                        D ]  }| j0                  j3                  d      }|j7                  dtC        |             |j7                  dtC        tE        ||jF                  v                   |r||v r;||   \  }}|j7                  dd       |j7                  dd|z  |z   d| d| d       ||v rC||   D cg c]  }|dk  rdn
tC        |       }}|j7                  ddj%                  |             t5        ||        t        |j@                        }|t        |jF                        z
  }|rFtI        d |jK                         D              }tI        d |jK                         D              }||z
  }nd}d}|
j7                  dtM        ||             |rtM        ||      }nd}|
j7                  d|       |
|	jN                  |<   |	xjP                  |z  c_(        |	xjR                  |z  c_)        |	xjT                  |z  c_*        |	xjV                  |z  c_+        yc c}w )z(Add to the XML report for a single file.r   N\/   r/   rH   classmethodsr    rG   filenamerL   rJ   linenumberr   branchtruezcondition-coveraged   z% ()exitzmissing-branches,c              3  &   K   | ]	  \  }}|  y wNr   .0tks      r   	<genexpr>z'XmlReporter.xml_file.<locals>.<genexpr>   s      E/Dtq!/Ds   c              3  ,   K   | ]  \  }}||z
    y wr   r   r   s      r   r   z'XmlReporter.xml_file.<locals>.<genexpr>   s     "K5JTQ1q55Js   rI   rK   ),r1   
skip_emptynumbersn_statementsr   ra   r3   r8   r	   r:   
startswithlenrelative_filenamer;   r9   r5   r6   dirnamejoinsplitxml_package_depthr<   
setdefaultr   rV   r^   r)   rX   relpathbranch_statsmissing_branch_arcssorted
statementsrY   r   missingsumvaluesr   r   r   r    r!   r"   )r=   ri   rj   rP   r   source_pathrel_namer   package_namerE   xclassxlinesr   r   r   xlinetotaltakenbannlinesclass_lines
class_hitsclass_branchesmissing_branchesclass_br_hitsry   s                             r   r]   zXmlReporter.xml_file   s7    ;;!!,,1 ;;&&tS1,,K;;--#66{C"";#6#6tS#AC#GH#C$4q$8$:; - ++-55dC@H!!"++.>X"?"F"Fu"MN''//(+2s((7==-.M0M0MNOsC0--**<RAqRS9TU*.,,*D*DW*MFDLL66yAB++G4FF#FBGGOOHg$FGJ(8(8s(CDL#.,,.&::< 8../DLL..v6ExT3 vs3t8;K;K/K+L'MN<'#/#5LE5&&x8&&,;%/0E7!E7!D ..EXY]E^_E^!a%SV ;E^H_&&'9388H;MN&' 0* (--. 3x'7'7#88
  E|/B/B/D EEN""K\5H5H5J"KK*-==MNM 	Kj+)FG}n=KKM;7%+"
"$=(N*7  `s   +S)r0   r   returnNoner   )re   r   rf   zIO[str] | Noner   float)ri   r   rj   r   rP   boolr   r   )r#   r$   r%   r&   report_typer?   r|   r]   r   r   r   r-   r-   9   s    FK/ ]~U+r   r-   c                "    | j                         S )z Serialize a minidom node to XML.)toprettyxml)rR   s    r   rd   rd     s    ??r   )r   r   r   r   r   rY   )r*   r   r+   r   r   r   )rR   zxml.dom.minidom.Documentr   rY   )'r&   
__future__r   r5   os.pathrM   rZ   xml.dom.minidomrQ   dataclassesr   typingr   r   r   r0   r   r	   coverage.miscr
   r   r   coverage.pluginr   coverage.report_corer   coverage.resultsr   coverage.typesr   coverage.versionr   r   r\   r   r   r)   r-   rd   r   r   r   <module>r      s    $ " 	  
   ! ) ) ' J J ( 7 % ! $!B ^"   
I+ I+Xr   