
    i              
         U 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Zddl	Z	ddl
Z
ddlZddlmZmZ ddlmZm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 dd
l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(m)Z) ddl*m+Z+ 	 ej,        dk    r e- e	j.        d                    rdZ/nddl0m1Z1 dZ/n# e2$ r dZ/Y nw xY w ej3        e)j4        dfe)j5        dfe)j6        dfe)j7        dfe)j8        dfe)j9        dfe)j:        dfg          Z;de<d<   e=e>e?ede>gdf         e-f         f         Z@d e<d!<   i ZAd"e<d#<    G d$ d          ZB G d% de&          ZC	 dcddd/ZDded2ZEdfd4ZFdgd6ZG G d7 d8e&          ZH G d9 d:eC          ZI eDd;eI            G d< d=eC          ZJ eDd>eJ            G d? d@e&          ZK G dA dBeC          ZL eDdCeL            G dD dE          ZM G dF dGeC          ZN eDdHeNdI           dhdMZO G dN dO          ZP G dP dQeC          ZQ eDdReQdI            G dS dTeC          ZR G dU dVeR          ZS eDdWeSdI            G dX dYeR          ZT eDdZeTdI            G d[ d\eR          ZU eDd]eUdI            eEdZd^            eEd]d_            G d` daeC          ZV eDdbeV            eWeA           eWe          k    sJ dS )iz5Classes for producing HTML reports about imprecision.    )annotationsN)ABCMetaabstractmethod)CallableIterator)
attrgetter)AnyFinal	TypeAlias)pathname2url)stats)REPORTER_NAMES)
ExpressionFuncDefMypyFile)Options)TraverserVisitor)Type	TypeOfAny)__version__)      Py_GIL_DISABLEDF)etreeTUnannotatedExplicit
UnimportedzOmitted GenericsErrorzSpecial FormzImplementation Artifactz(Final[collections.OrderedDict[int, str]]type_of_any_name_mapReportsAbstractReporter
_TypeAliasReporterClasseszFinal[ReporterClasses]reporter_classesc                  .    e Zd ZddZddZddZddZdS )r    data_dirstrreport_dirsdict[str, str]returnNonec                    || _         g | _        i | _        t          |                                          D ]\  }}|                     ||           d S N)r&   	reportersnamed_reporterssorteditems
add_report)selfr&   r(   report_type
report_dirs        J/root/projects/qq-shell/venv/lib64/python3.11/site-packages/mypy/report.py__init__zReports.__init__;   sa     13<>'-k.?.?.A.A'B'B 	5 	5#KOOK4444	5 	5    r4   r5   r!   c                >   	 | j         |         S # t          $ r Y nw xY wt          |         \  }}|r<t          s5t	          d                    |          t          j                   t           || |          }| j	        
                    |           || j         |<   |S )NzYou must install the lxml package before you can run mypy with `--{}-report`.
You can do this with `python3 -m pip install lxml`.)file)r/   KeyErrorr$   LXML_INSTALLEDprintformatsysstderrImportErrorr.   append)r3   r4   r5   reporter_cls
needs_lxmlreporters         r6   r2   zReports.add_reportC   s    	'44 	 	 	D	#3K#@ j 		n 		J &%%Z    <j11h''',4[)s    
treer   modulesdict[str, MypyFile]type_mapdict[Expression, Type]optionsr   c                J    | j         D ]}|                    ||||           d S r-   )r.   on_file)r3   rF   rG   rI   rK   rE   s         r6   r:   zReports.fileX   s<      	? 	?HT7Hg>>>>	? 	?r8   c                B    | j         D ]}|                                 d S r-   )r.   	on_finish)r3   rE   s     r6   finishzReports.finishb   s2     	! 	!H    	! 	!r8   N)r&   r'   r(   r)   r*   r+   )r4   r'   r5   r'   r*   r!   
rF   r   rG   rH   rI   rJ   rK   r   r*   r+   r*   r+   )__name__
__module____qualname__r7   r2   r:   rP    r8   r6   r    r    :   sd        5 5 5 5   *? ? ? ?! ! ! ! ! !r8   c                  F    e Zd ZddZedd            Zedd            ZdS )r!   reportsr    
output_dirr'   r*   r+   c                P    || _         |dk    rt          j        |d           d S d S )N<memory>Texist_ok)rY   osmakedirs)r3   rX   rY   s      r6   r7   zAbstractReporter.__init__h   s7    $##K
T222222 $#r8   rF   r   rG   rH   rI   rJ   rK   r   c                    d S r-   rV   r3   rF   rG   rI   rK   s        r6   rM   zAbstractReporter.on_filem   s	     	r8   c                    d S r-   rV   r3   s    r6   rO   zAbstractReporter.on_finishw   s    r8   NrX   r    rY   r'   r*   r+   rQ   rR   )rS   rT   rU   r7   r   rM   rO   rV   r8   r6   r!   r!   g   sh        3 3 3 3
    ^    ^  r8   )	metaclassreport_namer'   rE   *Callable[[Reports, str], AbstractReporter]rD   boolr*   r+   c                    ||ft           | <   d S r-   r$   )rf   rE   rD   s      r6   register_reporterrk   |   s    
 &.z$:[!!!r8   source_reportertarget_reporterc                0    t           |          t           |<   d S r-   rj   )rl   rm   s     r6   alias_reporterro      s    (8(I_%%%r8   pathc                    t          j        |           rdS |                     d          rdS d|                     d          v s!d|                     t          j                  v rdS dS )NT..stubs/F)r   is_special_module
startswithsplitr^   sep)rp   s    r6   should_skip_pathry      sj    t$$ tt t$**S//!!W

260B0B%B%Bt5r8   Iterator[tuple[int, str]]c              #     K   t           j                            |           sEt          j        |           5 }t          |d          E d{V  ddd           dS # 1 swxY w Y   dS dS )zDReturn an iterator over (line number, line text) from a Python file.   N)r^   rp   isdirtokenizeopen	enumerate)rp   
input_files     r6   iterate_python_linesr      s      7== 0]4   	0J Q/////////	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	00 0s   AA!Ac                  (     e Zd Zd fdZddZ xZS )	FuncCounterVisitorr*   r+   c                Z    t                                                       ddg| _        d S Nr   superr7   counts)r3   	__class__s    r6   r7   zFuncCounterVisitor.__init__   s(    !fr8   defnr   c                >    | j         |j        d uxx         dz  cc<   d S Nr|   )r   type)r3   r   s     r6   visit_func_defz!FuncCounterVisitor.visit_func_def   s-    DIT)***a/*****r8   rR   r   r   r*   r+   )rS   rT   rU   r7   r   __classcell__r   s   @r6   r   r      sQ             0 0 0 0 0 0 0 0r8   r   c                  0     e Zd Zd fdZddZddZ xZS )LineCountReporterrX   r    rY   r'   r*   r+   c                Z    t                                          ||           i | _        d S r-   r   r3   rX   rY   r   s      r6   r7   zLineCountReporter.__init__   s(    *---<>r8   rF   r   rG   rH   rI   rJ   rK   r   c                   t           j                            |j                  sOt          |j        d          5 }t	          |                                          }d d d            n# 1 swxY w Y   nd}t                      }|                    |           |j        \  }}	|	|z   }
|j	        rd}	|
r||	z  |
z  n|}|||	|
f| j        |j
        <   d S )Nrbr   )r^   rp   r}   r   len	readlinesr   acceptr   ignore_errors	_fullname)r3   rF   rG   rI   rK   fphysical_linesfunc_counterunannotated_funcsannotated_funcstotal_funcsimputed_annotated_liness               r6   rM   zLineCountReporter.on_file   s*    w}}TY'' 	di&& 4!!$Q[[]]!3!34 4 4 4 4 4 4 4 4 4 4 4 4 4 4 N)++L!!!-9-@*?%(99   	 O @K^N_,;;P^ 	 
 $	'
DN###s   "A((A,/A,c                    t          d | j                                        D             d          t          fdt	          d          D                       }t          t          j                            | j	        d          d          5 }|
                     dj        |            D ]E\  }}|
                    |d	         d
d|d         d
d|d         dd|d         dd| d
           F	 d d d            d S # 1 swxY w Y   d S )Nc              3  $   K   | ]\  }}||fV  d S r-   rV   ).0pcs      r6   	<genexpr>z.LineCountReporter.on_finish.<locals>.<genexpr>   s*      441aV444444r8   T)reversec              3  P   K   | ]t          fd D                       V   dS )c              3  .   K   | ]\  }}|         V  d S r-   rV   )r   r   r   is      r6   r   z8LineCountReporter.on_finish.<locals>.<genexpr>.<genexpr>   s+       9 9$!Q1 9 9 9 9 9 9r8   N)sum)r   r   r   s    @r6   r   z.LineCountReporter.on_finish.<locals>.<genexpr>   sA      LLaS 9 9 9 9& 9 9 999LLLLLLr8      zlinecount.txtwz{:7} {:7} {:6} {:6} total
r   7 r|      6r   
)r0   r   r1   tupleranger   r^   rp   joinrY   writer>   )r3   total_countsr   r   r   r   s        @r6   rO   zLineCountReporter.on_finish   s   >D44 1 1 3 3444d?
 ?
 ?
 LLLL588LLLLL"',,t@@#FF 	F!GG818,GHHH F F11Q4DDDAaDDDDQqTDDDadDDDqDDDEEEEF	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	Fs   A&DD
Drd   rQ   rR   )rS   rT   rU   r7   rM   rO   r   r   s   @r6   r   r      sn        ? ? ? ? ? ?!
 !
 !
 !
FF F F F F F F Fr8   r   	linecountc                  L     e Zd ZdZd fdZddZddZddZddZddZ	 xZ
S ) AnyExpressionsReporterz3Report frequencies of different kinds of Any types.rX   r    rY   r'   r*   r+   c                h    t                                          ||           i | _        i | _        d S r-   )r   r7   r   any_types_counterr   s      r6   r7   zAnyExpressionsReporter.__init__   s2    *---24FHr8   rF   r   rG   rH   rI   rJ   rK   r   c                   t          j        d|j        ||dd          }|                    |           |j        | j        |j        <   t          |j                                                  	                    t           j
                  }|j        |z   }|j        |j        z   |z   }|dk    r||f| j        |j        <   d S d S )NTF)inferredfilenamerG   typemap	all_nodesvisit_untyped_defsr   )r   StatisticsVisitorfullnamer   type_of_any_counterr   listline_mapvaluescountTYPE_UNANALYZEDnum_any_exprsnum_imprecise_exprsnum_precise_exprsr   )	r3   rF   rG   rI   rK   visitornum_unanalyzed_linesnum_any	num_totals	            r6   rM   zAnyExpressionsReporter.on_file   s     )]$
 
 
 	G070Kt}-#G$4$;$;$=$=>>DDUEZ[['*>>/'2KKgU	q==*19)=DK&&& =r8   c                V    |                                   |                                  d S r-   )_report_any_exprs_report_types_of_anysrc   s    r6   rO   z AnyExpressionsReporter.on_finish   s,       ""$$$$$r8   r   header	list[str]rowslist[list[str]]footerc           
     8   t          |          t          fd|||gz   D                       sJ d}dgz  }|||gz   D ]=}t          |          D ]+\  }}	t          ||         t          |	                    ||<   ,>t          |          D ]\  }}
|dk    r|
|z   ||<   t	          t
          j                            | j        |          d          5 } dt          |          z  j	        t          j        t          ||            }dt          |          z  }|                    |dz              |                    |dz              |D ]N} dt          |          z  j	        t          j        t          ||            }|                    |dz              O|                    |dz               dt          |          z  j	        t          j        t          ||            }|                    |dz              d d d            d S # 1 swxY w Y   d S )	Nc              3  >   K   | ]}t          |          k    V  d S r-   r   )r   rowrow_lens     r6   r   z;AnyExpressionsReporter._write_out_report.<locals>.<genexpr>   s.      JJ33s88w&JJJJJJr8   r   r   r   z{:>{}}-r   )r   allr   maxr   r^   rp   r   rY   r>   	itertoolschainzipr   )r3   r   r   r   r   min_column_distancewidthsr   r   valuer   r   
header_str	separator
row_valuesr
footer_strr   s                    @r6   _write_out_reportz(AnyExpressionsReporter._write_out_report   sy    f++JJJJ$&&9I2IJJJJJJJJ66** 	7 	7C%cNN 7 75q	3u::66q		7f%% 	4 	4DAq1uu 33q	"',,t993?? 
	'18(S[[08)/3vW]K^K^:_`Jc*oo-IGGJ%&&&GGI$%%%" " "
3XF+3Y_c*V\F]F]5^_D!!!!GGI$%%%8(S[[08)/3vW]K^K^:_`JGGJ%&&&
	' 
	' 
	' 
	' 
	' 
	' 
	' 
	' 
	' 
	' 
	' 
	' 
	' 
	' 
	' 
	' 
	' 
	's   D,HHHc                   t          d | j                                        D                       }t          d | j                                        D                       }d}|dk    r%t          ||z
            t          |          z  dz  }g d}g }t	          | j                  D ]p}| j        |         \  }}t          ||z
            t          |          z  dz  }	|	dd}
|                    |t          |          t          |          |
g           q|                    d	 
           dt          |          t          |          |ddg}|                     d|||           d S )Nc              3      K   | ]	\  }}|V  
d S r-   rV   )r   r   _s      r6   r   z;AnyExpressionsReporter._report_any_exprs.<locals>.<genexpr>  s&      GGJGQGGGGGGr8   c              3      K   | ]	\  }}|V  
d S r-   rV   )r   r   totals      r6   r   z;AnyExpressionsReporter._report_any_exprs.<locals>.<genexpr>  s&      DD81eDDDDDDr8   g      Y@r   d   )NameAnysExprsCoveragez.2f%c                    | d         S r   rV   xs    r6   <lambda>z:AnyExpressionsReporter._report_any_exprs.<locals>.<lambda>$  
    ! r8   keyTotalzany-exprs.txt)	r   r   r   floatr0   rB   r'   sortr   )r3   	total_any
total_exprtotal_coveragecolumn_namesr   r   r   r   coveragecoverage_str	total_rows               r6   r   z(AnyExpressionsReporter._report_any_exprs  s   GG$+2D2D2F2FGGGGG	DDt{/A/A/C/CDDDDD
>>#J$:;;eJ>O>OOSVVN<<< "t{++ 	P 	PH!%X!6GYi'122U95E5EELH&----LKK3w<<YNOOOO		nn	%%%c)nnc*oo.?W?W?W?WX	dINNNNNr8   c                :  	
 t          j                    
| j                                        D ],		                                D ]\  }}
|xx         |z  cc<   -d}d}|gt          t                                                    z   }g }| j                                        D ]/\  }	|                    |g	fdt          D             z              0|                    d            |g
fdt          D             z   }| 	                    d|||           d S )Nr   r  c                :    g | ]}t          |                   S rV   r'   )r   typcounters     r6   
<listcomp>z@AnyExpressionsReporter._report_types_of_anys.<locals>.<listcomp>2  s%    %X%X%XCc'#,&7&7%X%X%Xr8   c                    | d         S r   rV   r   s    r6   r  z>AnyExpressionsReporter._report_types_of_anys.<locals>.<lambda>3  r  r8   r  c                :    g | ]}t          |                   S rV   r  )r   r  total_counters     r6   r  z@AnyExpressionsReporter._report_types_of_anys.<locals>.<listcomp>4  s&    '`'`'`CM#,>(?(?'`'`'`r8   ztypes-of-anys.txt)
collectionsCounterr   r   r1   r   r   rB   r  r   )r3   any_typer   file_column_nametotal_row_namer  r   r   r  r  r  s            @@r6   r   z,AnyExpressionsReporter._report_types_of_anys(  sR   2=2E2G2G-4466 	1 	1G#*==?? 1 1%h'''50''''1! ()D1E1L1L1N1N,O,OO "!%!7!=!=!?!? 	Z 	ZHgKK
%X%X%X%XCW%X%X%XXYYYY		nn	%%%#$'`'`'`'`K_'`'`'``	2L$	RRRRRr8   rd   rQ   rR   )
r   r'   r   r   r   r   r   r   r*   r+   )rS   rT   rU   __doc__r7   rM   rO   r   r   r   r   r   s   @r6   r   r      s        ==I I I I I I
> > > >0% % % %' ' ' '4O O O O$S S S S S S S Sr8   r   z	any-exprsc                  0     e Zd ZddZdd	Zd fdZ xZS )LineCoverageVisitorsourcer   r*   r+   c                6    || _         d |D             | _        d S )Nc                    g | ]}d S ))r   TrV   )r   ls     r6   r  z0LineCoverageVisitor.__init__.<locals>.<listcomp>D  s    999Qj999r8   )r   lines_covered)r3   r   s     r6   r7   zLineCoverageVisitor.__init__<  s'     :9&999r8   line_numberint
int | Nonec                    | j         |         }d}t          |          D ]5}|dk    r|dz  }|dk    rd|dz   dz  z  } |dk    r dS |dk    r dS |c S dS )	zReturn the indentation of a line of the source (specified by
        zero-indexed line number). Returns None for blank lines or comments.r   r   r|   	   #Nr   )r   r   )r3   r%  lineindentchars        r6   indentation_levelz%LineCoverageVisitor.indentation_levelP  s     {;'JJ 	 	Ds{{!vza/0tttt  tr8   r   r   c                F   |j         dz
  }d }|t          | j                  k     r5|                     |          }|n|dz  }|t          | j                  k     5|d S |dz   }|}|t          | j                  k     rD|                     |          }||dz  }n||k    r|dz  }|}nn|t          | j                  k     D|j        d u}t          ||          D ]$}| j        |         \  }	}
|	|k    r||f| j        |<   %t                                          |           d S r   )	r,  r   r   r/  r   r   r$  r   r   )r3   r   
start_linestart_indentcur_lineend_line
cur_indentis_typedr,  
old_indentr   r   s              r6   r   z"LineCoverageVisitor.visit_func_defh  sk   Y]
 3t{++++11*==L'!OJ	 3t{++++ F>T[))))//99J!Al**A#  T[)))) 9D(*h// 	D 	DD .t4MJ
 \)),8(+C"4( 	t$$$$$r8   )r   r   r*   r+   )r%  r&  r*   r'  r   )rS   rT   rU   r7   r/  r   r   r   s   @r6   r  r  ;  se        : : : :(   0+% +% +% +% +% +% +% +% +% +%r8   r  c                  4     e Zd ZdZd fdZddZddZ xZS )LineCoverageReportera[  Exact line coverage reporter.

    This reporter writes a JSON dictionary with one field 'lines' to
    the file 'coverage.json' in the specified report directory. The
    value of that field is a dictionary which associates to each
    source file's absolute pathname the list of line numbers that
    belong to typed functions in that file.
    rX   r    rY   r'   r*   r+   c                Z    t                                          ||           i | _        d S r-   )r   r7   r$  r   s      r6   r7   zLineCoverageReporter.__init__  s+    *---35r8   rF   r   rG   rH   rI   rJ   rK   r   c                   t           j                            |j                  rd S t          |j                  5 }|                                }d d d            n# 1 swxY w Y   t          |          }|                    |           g }t          |j                  D ]"\  }	\  }
}|r|	                    |	dz              #|| j        t           j        
                    |j                  <   d S r   )r^   rp   r}   r   r   r  r   r   r$  rB   abspath)r3   rF   rG   rI   rK   r   tree_sourcecoverage_visitorcovered_linesr%  r   typeds               r6   rM   zLineCoverageReporter.on_file  s    7==## 	F$)__ 	(++--K	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( /{;;$%%%'01A1O'P'P 	6 	6#K!U 6$$[1_5559F27??4955666s   AA #A c                    t          t          j                            | j        d          d          5 }t          j        d| j        i|           d d d            d S # 1 swxY w Y   d S )Nzcoverage.jsonr   lines)r   r^   rp   r   rY   jsondumpr$  )r3   r   s     r6   rO   zLineCoverageReporter.on_finish  s    "',,t@@#FF 	8!Iw 23Q777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s   AA"%A"rd   rQ   rR   rS   rT   rU   r  r7   rM   rO   r   r   s   @r6   r9  r9    ss         6 6 6 6 6 6G G G G.8 8 8 8 8 8 8 8r8   r9  linecoveragec                  &    e Zd ZddZddZdd
ZdS )FileInfonamer'   moduler*   r+   c                f    || _         || _        dgt          t          j                  z  | _        d S r   )rI  rJ  r   r   precision_namesr   )r3   rI  rJ  s      r6   r7   zFileInfo.__init__  s-    	cC 5666r8   r&  c                *    t          | j                  S r-   )r   r   rc   s    r6   r   zFileInfo.total  s    4;r8   r)   c                n    d t          t          t          j        | j                            D             S )Nc                4    i | ]\  }}|t          |          S rV   r  )r   rI  vals      r6   
<dictcomp>z#FileInfo.attrib.<locals>.<dictcomp>  s$    ```94c#hh```r8   )r0   r   r   rL  r   rc   s    r6   attribzFileInfo.attrib  s/    ``s5;PRVR]7^7^0_0_````r8   N)rI  r'   rJ  r'   r*   r+   )r*   r&  )r*   r)   )rS   rT   rU   r7   r   rR  rV   r8   r6   rH  rH    sV        7 7 7 7
       a a a a a ar8   rH  c                       e Zd ZU dZd fdZe                    d	                    d
  ed          D                       d          Z	de
d<   ddZed d            Zd!dZ xZS )"MemoryXmlReporterz}Internal reporter that generates XML in memory.

    This is used by all other XML-based reporters to avoid duplication.
    rX   r    rY   r'   r*   r+   c                   t                                          ||           t          j                            |j        dd          | _        t          j                            |j        dd          | _        t          j                            |j        dd          | _        t          j                            |j        dd          }t          j
        t          j        |                    | _        d | _        g | _        d S )Nxmlmypy-html.xsltzmypy-txt.xsltmypy-html.csszmypy.xsd)r   r7   r^   rp   r   r&   xslt_html_pathxslt_txt_pathcss_html_pathr   	XMLSchemaparseschemalast_xmlfiles)r3   rX   rY   xsd_pathr   s       r6   r7   zMemoryXmlReporter.__init__  s    *--- gll7+;UDTUUW\\'*:E?SSW\\'*:E?SS7<< 0%DDoek(&;&;<<$(%'


r8    c              #  @   K   | ]}|d k    t          |          V  dS )	   N)chr)r   r   s     r6   r   zMemoryXmlReporter.<genexpr>  s-      0U0UAaSTffQffff0U0Ur8       z???????????????????????????????r
   control_fixerrF   r   rG   rH   rI   rJ   rK   r   c           
        d | _         	 t          j                            |j                  }n# t          $ r Y d S w xY wt          |          st          j                            |          rd S t          j        d|j	        ||d          }|
                    |           t          j        d||j                  }t          j        |          }t          ||j                  }	t!          |          D ]\  }
}|j                            |
t          j                  }|	j        |xx         dz  cc<   t          j        |d|                     ||
          |                    d                              | j                  t5          |
          t          j        |                    t          j                            d	|          }t          j        d
dt;          |           d          }|                    |           | j                             |           || _         | j!        "                    |	           d S )NTr   r   rG   r   r   zmypy-report-file)rI  rJ  r|   r,  r   )any_infocontentnumber	precisionrW  xml-stylesheettype="text/xsl" href="")#r_  r^   rp   relpath
ValueErrorry   r}   r   r   r   r   r   Elementr   ElementTreerH  r   r   get
TYPE_EMPTYr   
SubElement_get_any_info_for_linerstrip	translaterg  r'   rL  ProcessingInstructionr   addpreviousr^  assertValidr`  rB   )r3   rF   rG   rI   rK   rp   r   rootdoc	file_infolineno	line_textstatus	xslt_pathtransform_pis                  r6   rM   zMemoryXmlReporter.on_file  sA    	7??49--DD 	 	 	FF	 D!! 	RW]]4%8%8 	F)]
 
 
 	G}/d4>RRR%%T4>22	!5d!;!; 
	 
	FI%))&%2BCCFV$$$)$$$44WfEE!((..889KLL6{{/7     GOO$4d;;	2Q|I7N7NQQQ
 
 	&&&$$$
)$$$$$s   $. 
<<r   stats.StatisticsVisitorr  r&  c                    || j         v rmd}t          j                    }| j         |         D ]}||j        xx         dz  cc<   |                                D ]\  }}|dt
          |          d| dz  }|S dS )NzAny Types on this line: r|   r   z (x)zNo Anys on this line!)any_line_mapr  r  type_of_anyr1   r   )r   r  resultr  r  r  occurrencess          r6   rx  z(MemoryXmlReporter._get_any_info_for_line  s    W)))/F0;0C0E0EG+F3 . .(((A-(((()0 Q Q%+P3H=PP+PPPPM**r8   c                \   d | _         t          | j        d           }t          j        dd          }t          j        |          }|D ]d}t          j        |d|                                |j        t          |j
                  t          |                                                     et          j                            dd	          }t          j        d
dt          |           d          }|                    |           | j                            |           || _         d S )Nc                    | j         S r-   rJ  r   s    r6   r  z-MemoryXmlReporter.on_finish.<locals>.<lambda>*       r8   r  zmypy-report-indexindex)rI  r:   )rJ  rI  r   rW  .rn  ro  rp  )r_  r0   r`  r   rs  rt  rw  rR  rJ  r   rI  r'   r   r^   rp   rq  r{  r|  r^  r}  )r3   output_filesr~  r  r  r  r  s          r6   rO   zMemoryXmlReporter.on_finish'  s+   dj.@.@AAA}0w???%%% 	 	I  "" '!).11)//++,,     GOO$4c::	2Q|I7N7NQQQ
 
 	&&&$$$r8   rd   rQ   )r   r  r  r&  r*   r'   rR   )rS   rT   rU   r  r7   r'   	maketransr   r   rg  __annotations__rM   staticmethodrx  rO   r   r   s   @r6   rT  rT    s          
	( 	( 	( 	( 	( 	( ==0U0Ur0U0U0U)U)UW_``M````2% 2% 2% 2%h 
+ 
+ 
+ \
+       r8   rT  
memory-xml)rD   r?  r&  total_linesc                :    |dk    rt          d          S | |z  dS )Nr   g      ?z.4fr  )r?  r  s     r6   get_line_rater  E  s)    a3xx+-333r8   c                  *    e Zd ZdZddZddZdd
ZdS )CoberturaPackagezMContainer for XML and statistics mapping python modules to Cobertura package.rI  r'   r*   r+   c                L    || _         i | _        i | _        d| _        d| _        d S r   )rI  classespackagesr  r?  )r3   rI  s     r6   r7   zCoberturaPackage.__init__O  s-    	')57r8   r	   c                X   t          j        dd| j                  }d|j        d<   t	          | j        | j                  |j        d<   t          j        |d          }t          | j	                  D ]"}|
                    | j	        |                    #|                     |           |S )Npackage1.0)
complexityrI  0branch-rate	line-rater  )r   rs  rI  rR  r  r?  r  rw  r0   r  rB   add_packages)r3   package_elementclasses_element
class_names       r6   as_xmlzCoberturaPackage.as_xmlV  s    -	e$)TTT03}-.;D<NPTP`.a.a{+*?IFF .. 	= 	=J""4<
#;<<<</***r8   parent_elementc                    | j         rtt          j        |d          }t          | j                                         t          d                    D ]+}|                    |                                           *d S d S )Nr  rI  r  )r  r   rw  r0   r   r   rB   r  )r3   r  packages_elementr  s       r6   r  zCoberturaPackage.add_packages`  s    = 	:$/
KK!$-"6"6"8"8j>P>PQQQ : : ''(8(89999	: 	:: :r8   N)rI  r'   r*   r+   )r*   r	   )r  r	   r*   r+   )rS   rT   rU   r  r7   r  r  rV   r8   r6   r  r  L  sV        WW      : : : : : :r8   r  c                  4     e Zd ZdZd fdZddZddZ xZS )CoberturaXmlReporterz0Reporter for generating Cobertura compliant XML.rX   r    rY   r'   r*   r+   c           	     H   t                                          ||           t          j        dt	          t          t          j                                        t                    | _        t          j	        | j                  | _
        t          d          | _        d S )Nr  )	timestampversionr  )r   r7   r   rs  r'   r&  timer   r~  rt  r  r  root_packager   s      r6   r7   zCoberturaXmlReporter.__init__j  sv    *---M*C	<L<L8M8MWbccc	$TY//,S11r8   rF   r   rG   rH   rI   rJ   rK   r   c           
     Z   t           j                            |j                  }t          j        d|j        ||d          }|                    |           t           j                            |          }t          ||j	                  }t          j        dd||          }	t          j        |	d           t          j        |	d          }
d}d}t          |          D ]\  }}|j                            |t          j                  }d}d	}|t          j        k    r?|d
z  }|t          j        k    r|d
z  }d
}|t          j        k    rd}|j        |xx         d
z  cc<   t          j        |
dt)          |                                          t)          |          t)          |          t          j        |                   }|r
d|j        d<   d|	j        d<   t1          ||          |	j        d<   |j                            dd
          d         }|j                            d          r|j        }|| j        j        vrt?          |          | j        j        |<   | j        j        |         }| j        |g}|D ]"}|xj         |z  c_         |xj!        |z  c_!        #|	|j"        |<   d S )NTri  classr  )r  r   rI  methodsrB  r   Fr|   r,  )branchhitsrl  rm  z	50% (1/2)zcondition-coverager  r  r  r  z__init__.py)#r^   rp   rq  r   r   r   r   basenamerH  r   r   rs  rw  r   r   ru  rv  TYPE_ANYTYPE_IMPRECISEr   r'   lowerrL  rR  r  rJ  rsplitrI  endswithr  r  r  r  r?  r  )r3   rF   rG   rI   rK   rp   r   r  r  class_elementlines_elementclass_lines_coveredclass_total_linesr  r   r  r  r  line_elementparent_modulecurrent_packagepackages_to_updater  s                          r6   rM   zCoberturaXmlReporter.on_fileq  s    wty)))]
 
 
 	GW%%d++
T4>22	g%$U_```	222(@@-d33 	H 	HIFA%))&%2BCCFDF)))"''#q(#---V$$$)$$$ +6{{((**YY6{{/7  L  H<G#$89.1]+,9:MO`,a,a[) "(//Q77:>""=11 	-%,M 1 :::8H8W8WD&}5+4]C"/A) 	9 	9G#44!!%88!!!.;
+++r8   c                   t          | j        j        | j        j                  | j        j        d<   d| j        j        d<   t          | j        j                  | j        j        d<   t          | j        j                  | j        j        d<   t          j        | j        d          }t          j        |d          }t          j
                    |_        | j                            | j                   t          j                            | j        d          }| j                            |d	d
           t%          dt          j                            |                     d S )Nr  r  r  zlines-coveredzlines-validsourcesr   zcobertura.xmlutf-8T)encodingpretty_printzGenerated Cobertura report:)r  r  r?  r  r~  rR  r'   r   rw  r^   getcwdtextr  rp   r   rY   r  r   r=   r<  )r3   r  source_elementout_paths       r6   rO   zCoberturaXmlReporter.on_finish  s   (5+T->-J)
 )
	% +.	',/0A0O,P,P	)*-d.?.K*L*L	'"49i88)'8<< ikk&&ty1117<<AAx'EEE+RW__X-F-FGGGGGr8   rd   rQ   rR   rE  r   s   @r6   r  r  g  sx        ::2 2 2 2 2 2@< @< @< @<DH H H H H H H Hr8   r  zcobertura-xmlc                  $     e Zd ZdZd	 fdZ xZS )
AbstractXmlReporterz8Internal abstract class for reporters that work via XML.rX   r    rY   r'   r*   r+   c                    t                                          ||           |                    dd          }t          |t                    sJ || _        d S )Nr  r[   )r   r7   r2   
isinstancerT  
memory_xml)r3   rX   rY   memory_reporterr   s       r6   r7   zAbstractXmlReporter.__init__  sT    *---!,,\:FF/+<=====)r8   rd   )rS   rT   rU   r  r7   r   r   s   @r6   r  r    sC        BB* * * * * * * * * *r8   r  c                  "    e Zd ZdZddZddZdS )XmlReporteraC  Public reporter that exports XML.

    The produced XML files contain a reference to the absolute path
    of the html transform, so they will be locally viewable in a browser.

    However, there is a bug in Chrome and all other WebKit-based browsers
    that makes it fail from file:// URLs but work on http:// URLs.
    rF   r   rG   rH   rI   rJ   rK   r   r*   r+   c                   | j         j        }|d S t          j                            |j                  }|                    d          rd S t          j                            | j        d|dz             }t          j        t          j        	                    |          d           |
                    |d           d S )Nrr   rV  z.xmlTr\   r  r  )r  r_  r^   rp   rq  rv   r   rY   r_   dirnamer   )r3   rF   rG   rI   rK   r_  rp   r  s           r6   rM   zXmlReporter.on_file  s     ?+Fwty))??4   	F7<<vFF
BGOOH--====x'22222r8   c                   | j         j        }|J t          j                            | j        d          }t          j                            | j        d          }t          j                            | j        d          }|                    |d           t          j        | j         j	        |           t          j        | j         j
        |           t          dt          j                            |                     d S )Nz	index.xmlrW  rX  r  r  zGenerated XML report:)r  r_  r^   rp   r   rY   r   shutilcopyfilerY  r[  r=   r<  )r3   r_  r  out_xsltout_csss        r6   rO   zXmlReporter.on_finish  s    ?+###7<<==7<<1ABB',,t@@x'2226AAA5w???%rwx'@'@AAAAAr8   NrQ   rR   )rS   rT   rU   r  rM   rO   rV   r8   r6   r  r    sL         3 3 3 3"	B 	B 	B 	B 	B 	Br8   r  rV  c                  4     e Zd ZdZd fdZddZddZ xZS )XsltHtmlReporterzPublic reporter that exports HTML via XSLT.

    This is slightly different than running `xsltproc` on the .xml files,
    because it passes a parameter to rewrite the links.
    rX   r    rY   r'   r*   r+   c                    t                                          ||           t          j        t          j        | j        j                            | _        t          j                            d          | _	        d S )Nhtml)
r   r7   r   XSLTr]  r  rY  	xslt_htmlstrparam
param_htmlr   s      r6   r7   zXsltHtmlReporter.__init__  sX    *---EK0N$O$OPP*--f55r8   rF   r   rG   rH   rI   rJ   rK   r   c                "   | j         j        }|d S t          j                            |j                  }|                    d          rd S t          j                            | j        d|dz             }t          j        t          j        	                    |          d           t          |                     || j                            }t          |d          5 }	|	                    |           d d d            d S # 1 swxY w Y   d S )Nrr   r  z.htmlTr\   extwb)r  r_  r^   rp   rq  rv   r   rY   r_   r  bytesr  r  r   r   )
r3   rF   rG   rI   rK   r_  rp   r  transformed_htmlout_files
             r6   rM   zXsltHtmlReporter.on_file	  s+    ?+Fwty))??4   	F7<<HH
BGOOH--==== do!N!NOO(D!! 	-XNN+,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   !DDDc                   | j         j        }|J t          j                            | j        d          }t          j                            | j        d          }t          |                     || j                            }t          |d          5 }|
                    |           d d d            n# 1 swxY w Y   t          j        | j         j        |           t          dt          j                            |                     d S )Nz
index.htmlrX  r  r  z!Generated HTML report (via XSLT):)r  r_  r^   rp   r   rY   r  r  r  r   r   r  r  r[  r=   r<  )r3   r_  r  r  r  r  s         r6   rO   zXsltHtmlReporter.on_finish  s   ?+###7<<>>',,t@@ do!N!NOO(D!! 	-XNN+,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-5w???127??83L3LMMMMMs   B66B:=B:rd   rQ   rR   rE  r   s   @r6   r  r    sw         6 6 6 6 6 6- - - -&	N 	N 	N 	N 	N 	N 	N 	Nr8   r  z	xslt-htmlc                  4     e Zd ZdZd fdZddZddZ xZS )XsltTxtReporterzvPublic reporter that exports TXT via XSLT.

    Currently this only does the summary, not the individual reports.
    rX   r    rY   r'   r*   r+   c                    t                                          ||           t          j        t          j        | j        j                            | _        d S r-   )r   r7   r   r  r]  r  rZ  xslt_txtr   s      r6   r7   zXsltTxtReporter.__init__1  sA    *---
5;t/L#M#MNNr8   rF   r   rG   rH   rI   rJ   rK   r   c                    d S r-   rV   ra   s        r6   rM   zXsltTxtReporter.on_file6  s	     	r8   c                   | j         j        }|J t          j                            | j        d          }t          |                     |                    }t          |d          5 }|	                    |           d d d            n# 1 swxY w Y   t          dt          j                            |                     d S )Nz	index.txtr  z Generated TXT report (via XSLT):)r  r_  r^   rp   r   rY   r  r  r   r   r=   r<  )r3   r_  r  transformed_txtr  s        r6   rO   zXsltTxtReporter.on_finish?  s    ?+###7<<==h 7 788(D!! 	,XNN?+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,0"'//(2K2KLLLLLs   (B

BBrd   rQ   rR   rE  r   s   @r6   r  r  +  s}         
O O O O O O
   M M M M M M M Mr8   r  zxslt-txtr  txtc                  4     e Zd ZdZd fdZddZddZ xZS )LinePrecisionReportera  Report per-module line counts for typing precision.

    Each line is classified into one of these categories:

    * precise (fully type checked)
    * imprecise (Any types in a type component, such as List[Any])
    * any (something with an Any type, implicit or explicit)
    * empty (empty line, comment or docstring)
    * unanalyzed (mypy considers line unreachable)

    The meaning of these categories varies slightly depending on
    context.
    rX   r    rY   r'   r*   r+   c                Z    t                                          ||           g | _        d S r-   )r   r7   r`  r   s      r6   r7   zLinePrecisionReporter.__init__^  s(    *---%'


r8   rF   r   rG   rH   rI   rJ   rK   r   c                   	 t           j                            |j                  }n# t          $ r Y d S w xY wt	          |          rd S t          j        d|j        ||d          }|                    |           t          ||j
                  }t          |          D ]?\  }}	|j                            |t
          j                  }
|j        |
xx         dz  cc<   @| j                            |           d S )NTri  r|   )r^   rp   rq  rr  ry   r   r   r   r   rH  r   r   r   ru  rv  r   r`  rB   )r3   rF   rG   rI   rK   rp   r   r  r  r   r  s              r6   rM   zLinePrecisionReporter.on_fileb  s   	7??49--DD 	 	 	FF	 D!! 	F)]
 
 
 	GT4>22	-d33 	* 	*IFA%))&%2BCCFV$$$)$$$$
)$$$$$s   $' 
55c                `   | j         sd S t          | j         d           }t          j                            | j        d          }t          dt          d |D                                 }d}|ft          d |D                       z   }d|z  }t          |d	          5 }|	                     |j
        d
g|R             |	                    d|dz   z  dz              |D ]}|j        }	|	                    |
                    |j                            |          |                                |	t          j                 |	t          j                 |	t          j                 |	t          j                 |	t          j                                      	 d d d            d S # 1 swxY w Y   d S )Nc                    | j         S r-   r  r   s    r6   r  z1LinePrecisionReporter.on_finish.<locals>.<lambda>  r  r8   r  zlineprecision.txtr   c              3  >   K   | ]}t          |j                  V  d S r-   )r   rJ  )r   infos     r6   r   z2LinePrecisionReporter.on_finish.<locals>.<genexpr>  s,      EE3t{++EEEEEEr8   )LinesPrecise	Impreciser	   Empty
Unanalyzedc              3  4   K   | ]}t          |          V  d S r-   r   )r   ts     r6   r   z2LinePrecisionReporter.on_finish.<locals>.<genexpr>  s(      !9!9Q#a&&!9!9!9!9!9!9r8   z0{:%d}  {:%d}  {:%d}  {:%d}  {:%d}  {:%d}  {:%d}
r   r   r   3   r   )r`  r0   r^   rp   r   rY   r   r   r   r   r>   r   rJ  ljustr   r   TYPE_PRECISEr  r  rv  r   )
r3   r  report_filewidthtitlesr   fmtr   r  r   s
             r6   rO   zLinePrecisionReporter.on_finish  s   z 	Fdj.@.@AAAgll4?4GHHAsEEEEEEEFFPE!9!9&!9!9!9999AFJ+s## 	qGGJCJv////000GGC52:&-...)  	")JJ!(..u55!))u12u34u~.u/0u45 
 
 
 
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   !C4F##F'*F'rd   rQ   rR   rE  r   s   @r6   r  r  O  so         ( ( ( ( ( (% % % %>       r8   r  lineprecision)F)rf   r'   rE   rg   rD   rh   r*   r+   )rl   r'   rm   r'   r*   r+   )rp   r'   r*   rh   )rp   r'   r*   rz   )r?  r&  r  r&  r*   r'   )Xr  
__future__r   r  r   rC  r^   r  r?   	sysconfigr  r~   abcr   r   collections.abcr   r   operatorr   typingr	   r
   r   r"   urllib.requestr   mypyr   mypy.defaultsr   
mypy.nodesr   r   r   mypy.optionsr   mypy.traverserr   
mypy.typesr   r   mypy.versionr   version_inforh   get_config_varr<   lxmlr   rA   OrderedDictunannotatedexplicitfrom_unimported_typefrom_omitted_generics
from_errorspecial_formimplementation_artifactr   r  dictr'   r   r#   r$   r    r!   rk   ro   ry   r   r   r   r   r  r9  rH  rT  r  r  r  r  r  r  r  r  setrV   r8   r6   <module>r,     s   ; ; ; " " " " " "          				  



       ' ' ' ' ' ' ' ' . . . . . . . .       6 6 6 6 6 6 6 6 6 6 ' ' ' ' ' '       ( ( ( ( ( ( 4 4 4 4 4 4 4 4 4 4             + + + + + + & & & & & & & & $ $ $ $ $ $	
7""tt,DI,DEV,W,W'X'X"   NNN BYAX		.		Z(		'6		(*<=		w'		0		*,EF
B 
B  
 
 
 
 #xC(*<<=tC	DD     ,.  - - - -*! *! *! *! *! *! *! *!Z        0 ; ; ; ; ;J J J J   0 0 0 00 0 0 0 0) 0 0 00F 0F 0F 0F 0F( 0F 0F 0Ff  +0 1 1 1]S ]S ]S ]S ]S- ]S ]S ]S@  +5 6 6 6X% X% X% X% X%* X% X% X%v'8 '8 '8 '8 '8+ '8 '8 '8T  ."6 7 7 7
a 
a 
a 
a 
a 
a 
a 
ao o o o o( o o od  , 1d C C C C4 4 4 4: : : : : : : :6YH YH YH YH YH+ YH YH YHx  /#7D I I I I	* 	* 	* 	* 	** 	* 	* 	*$B $B $B $B $B% $B $B $BN  % 6 6 6 6)N )N )N )N )N* )N )N )NX  +/D A A A AM M M M M) M M M<  *o$ ? ? ? ? {F # # # z5 ! ! !K K K K K, K K K\  /#8 9 9 9
 sN 3 3333333s   /B5 5B?>B?