Ë
    pPêjŒ‡  ã            
      óD  — 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jX                  dk\  r e- e	j\                  d«      «      rdZ/nddl0m1Z1 dZ/ ejf                  e)jh                  dfe)jj                  dfe)jl                  dfe)jn                  dfe)jp                  dfe)jr                  dfe)jt                  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	 dT	 	 	 	 	 	 	 dUd'„ZDdVd(„ZEdWd)„ZFdXd*„ZG G d+„ d,e&«      ZH G d-„ d.eC«      ZI eDd/eI«        G d0„ d1eC«      ZJ eDd2eJ«        G d3„ d4e&«      ZK G d5„ d6eC«      ZL eDd7eL«        G d8„ d9«      ZM G d:„ d;eC«      ZN eDd<eNd¬=«       dYd>„ZO G d?„ d@«      ZP G dA„ dBeC«      ZQ eDdCeQd¬=«        G dD„ dEeC«      ZR G dF„ dGeR«      ZS eDdHeSd¬=«        G dI„ dJeR«      ZT eDdKeTd¬=«        G dL„ dMeR«      ZU eDdNeUd¬=«        eEdKdO«        eEdNdP«        G dQ„ dReC«      ZV eDdSeV«        eWeA«       eWe«      k(  sJ ‚y# e2$ r dZ/Y �Œçw xY w)Zz5Classes 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y)
r    c                ó”   — || _         g | _        i | _        t        |j	                  «       «      D ]  \  }}| j                  ||«       Œ y ©N)Údata_dirÚ	reportersÚnamed_reportersÚsortedÚitemsÚ
add_report)Úselfr(   Úreport_dirsÚreport_typeÚ
report_dirs        úP/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypy/report.pyÚ__init__zReports.__init__;   sH   € Ø ˆŒØ13ˆŒØ<>ˆÔä'-¨k×.?Ñ.?Ó.AÓ'Bò 	5Ñ#ˆK˜Ø�O‰O˜K¨Õ4ñ	5ó    c                ó2  — 	 | j                   |   S # t        $ r Y nw xY wt        |   \  }}|r6t        s0t	        dj                  |«      t        j                  ¬«       t        ‚ || |«      }| j                  j                  |«       || j                   |<   |S )Nz�You 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)r.   r0   r1   Úreporter_clsÚ
needs_lxmlÚreporters         r2   r-   zReports.add_reportC   sš   € ð	Ø×'Ñ'¨Ñ4Ð4øÜò 	Ùð	úä#3°KÑ#@Ñ ˆ�jÙ�nÜðJ÷ ‘&˜Ó%Ü—Z‘Zõô ÐÙ  jÓ1ˆØ�‰×Ñ˜hÔ'Ø,4ˆ×Ñ˜[Ñ)Øˆs   ‚ ‘	œc                óN   — | j                   D ]  }|j                  ||||«       Œ y r'   )r)   Úon_file)r.   ÚtreeÚmodulesÚtype_mapÚoptionsrA   s         r2   r6   zReports.fileX   s+   € ð Ÿ™ò 	?ˆHØ×Ñ˜T 7¨H°gÕ>ñ	?r4   c                óF   — | j                   D ]  }|j                  «        Œ y r'   )r)   Ú	on_finish)r.   rA   s     r2   ÚfinishzReports.finishb   s!   € ØŸ™ò 	!ˆHØ×ÑÕ ñ	!r4   N)r(   Ústrr/   údict[str, str]ÚreturnÚNone)r0   rK   r1   rK   rM   r!   ©
rD   r   rE   zdict[str, MypyFile]rF   zdict[Expression, Type]rG   r   rM   rN   ©rM   rN   )Ú__name__Ú
__module__Ú__qualname__r3   r-   r6   rJ   © r4   r2   r    r    :   sF   „ ó5óð*?àð?ð %ð?ð )ð	?ð
 ð?ð 
ó?ô!r4   c                  óL   — e Zd Zdd„Ze	 	 	 	 	 	 	 	 	 	 dd„«       Zedd„«       Zy)r!   c                óL   — || _         |dk7  rt        j                  |d¬«       y y )Nú<memory>T©Úexist_ok)Ú
output_dirÚosÚmakedirs)r.   ÚreportsrZ   s      r2   r3   zAbstractReporter.__init__h   s$   € Ø$ˆŒØ˜Ò#Ü�K‰K˜
¨TÖ2ð $r4   c                 ó   — y r'   rT   ©r.   rD   rE   rF   rG   s        r2   rC   zAbstractReporter.on_filem   s   € ð 	r4   c                 ó   — y r'   rT   ©r.   s    r2   rI   zAbstractReporter.on_finishw   s   € àr4   N©r]   r    rZ   rK   rM   rN   rO   rP   )rQ   rR   rS   r3   r   rC   rI   rT   r4   r2   r!   r!   g   s_   „ ó3ð
 ðàðð %ðð )ð	ð
 ðð 
òó ðð òó ñr4   )Ú	metaclassc                ó   — ||ft         | <   y r'   ©r$   )Úreport_namerA   r@   s      r2   Úregister_reporterrg   |   s   € ð
 &.¨zÐ$:Ô�[Ò!r4   c                ó$   — t         |    t         |<   y r'   re   )Úsource_reporterÚtarget_reporters     r2   Úalias_reporterrk   „   s   € Ü(8¸Ñ(IÔ�_Ò%r4   c                ó¾   — t        j                  | «      ry| j                  d«      ryd| j                  d«      v s!d| j                  t        j
                  «      v ryy)NTú..Ústubsú/F)r   Úis_special_moduleÚ
startswithÚsplitr[   Úsep)Úpaths    r2   Úshould_skip_pathru   ˆ   sL   € Ü×Ñ˜tÔ$ØØ‡��tÔØØ�$—*‘*˜S“/Ñ! W°·
±
¼2¿6¹6Ó0BÑ%BØØr4   c              #  óÌ   K  — t         j                  j                  | «      s3t        j                  | «      5 }t        |d«      E d{  –—†  ddd«       yy7 Œ# 1 sw Y   yxY w­w)zDReturn an iterator over (line number, line text) from a Python file.é   N)r[   rt   ÚisdirÚtokenizeÚopenÚ	enumerate)rt   Ú
input_files     r2   Úiterate_python_linesr}   ’   sV   è ø€ ä�7‰7�=‰=˜ÔÜ�]‰]˜4Ó ð 	0 JÜ  ¨QÓ/×/Ð/÷	0ð 	0ð à/ø÷	0ð 	0üs.   ‚5A$·AÁAÁAÁ
A$ÁAÁA!ÁA$c                  ó(   ‡ — e Zd Zdˆ fd„Zdd„Zˆ xZS )ÚFuncCounterVisitorc                ó4   •— t         ‰| �  «        ddg| _        y ©Nr   ©Úsuperr3   Úcounts)r.   Ú	__class__s    €r2   r3   zFuncCounterVisitor.__init__š   s   ø€ Ü‰ÑÔØ˜!�fˆ�r4   c                óJ   — | j                   |j                  d uxx   dz  cc<   y ©Nrw   )r„   Útype)r.   Údefns     r2   Úvisit_func_defz!FuncCounterVisitor.visit_func_defž   s   € Ø�‰�D—I‘I TÐ)Ó*¨aÑ/Ô*r4   rP   ©r‰   r   rM   rN   )rQ   rR   rS   r3   rŠ   Ú__classcell__©r…   s   @r2   r   r   ™   s   ø„ õ÷0r4   r   c                  óD   ‡ — e Zd Zdˆ fd„Z	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zˆ xZS )ÚLineCountReporterc                ó4   •— t         ‰| �  ||«       i | _        y r'   r‚   ©r.   r]   rZ   r…   s      €r2   r3   zLineCountReporter.__init__£   s   ø€ Ü‰Ñ˜ *Ô-Ø<>ˆ�r4   c                ó°  — t         j                  j                  |j                  «      s9t        |j                  d«      5 }t	        |j                  «       «      }d d d «       nd}t        «       }|j                  |«       |j                  \  }}	|	|z   }
|j                  rd}	|
r|	z  |
z  n}|||	|
f| j                  |j                  <   y # 1 sw Y   ŒpxY w)NÚrbr   )r[   rt   rx   rz   ÚlenÚ	readlinesr   Úacceptr„   Úignore_errorsÚ	_fullname)r.   rD   rE   rF   rG   ÚfÚphysical_linesÚfunc_counterÚunannotated_funcsÚannotated_funcsÚtotal_funcsÚimputed_annotated_liness               r2   rC   zLineCountReporter.on_file§   sÖ   € ô �w‰w�}‰}˜TŸY™YÔ'Ü�d—i‘i Ó&ð 4¨!Ü!$ Q§[¡[£]Ó!3�÷4ð 4ð ˆNä)Ó+ˆØ�‰�LÔ!Ø-9×-@Ñ-@Ñ*Ð˜?Ø%Ð(9Ñ9ˆð × Ò ØˆOñ @KˆN˜_Ñ,°Ò;ÐP^ð 	 ð
 $ØØØð	'
ˆ�‰�D—N‘NÒ#÷%4ð 4ús   Á CÃCc                óÜ  ‡— t        d„ | j                  j                  «       D «       d¬«      Št        ˆfd„t	        d«      D «       «      }t        t        j                  j                  | j                  d«      d«      5 }|j                   dj                  |Ž «       ‰D ]5  \  }}|j                  |d	   d
›d|d   d
›d|d   d›d|d   d›d|› d�
«       Œ7 	 d d d «       y # 1 sw Y   y xY w)Nc              3  ó*   K  — | ]  \  }}||f–— Œ y ­wr'   rT   )Ú.0ÚpÚcs      r2   ú	<genexpr>z.LineCountReporter.on_finish.<locals>.<genexpr>Ì   s   è ø€ Ò4™˜˜1ˆa�ŒVÑ4ùs   ‚T)Úreversec              3  óH   •‡K  — | ]  Št        ˆfd „‰D «       «      –— Œ y­w)c              3  ó.   •K  — | ]  \  }}|‰   –— Œ y ­wr'   rT   )r¢   r¤   r£   Úis      €r2   r¥   z8LineCountReporter.on_finish.<locals>.<genexpr>.<genexpr>Î   s   øè ø€ Ò 9©$¨!¨Q  1¥Ñ 9ùs   ƒN)Úsum)r¢   r©   r„   s    @€r2   r¥   z.LineCountReporter.on_finish.<locals>.<genexpr>Î   s   ùè ø€ ÒL¸aœSÓ 9°&Ô 9×9ÑLùs   „"é   zlinecount.txtÚwz{:7} {:7} {:6} {:6} total
r   Ú7ú rw   é   Ú6r   ú
)r+   r„   r,   ÚtupleÚrangerz   r[   rt   ÚjoinrZ   Úwriter:   )r.   Útotal_countsr™   r¤   r£   r„   s        @r2   rI   zLineCountReporter.on_finishÊ   så   ø€ Ü>DÙ4 §¡× 1Ñ 1Ó 3Ô4¸dô?
ˆô ÓLÄ5ÈÃ8ÔLÓLˆÜ”"—'‘'—,‘,˜tŸ™°Ó@À#ÓFð 	FÈ!Ø�G‰GÐ8Ð1×8Ñ8¸,ÐGÔHØò F‘��1Ø—‘˜1˜Q™4 ˜( ! A a¡D¨ 8¨1¨Q¨q©T°!¨H°A°a¸±d¸1°X¸Q¸q¸cÀÐDÕEñF÷	F÷ 	Fñ 	Fús   Á?AC"Ã"C+rb   rO   rP   )rQ   rR   rS   r3   rC   rI   rŒ   r�   s   @r2   r�   r�   ¢   sD   ø„ õ?ð!
àð!
ð %ð!
ð )ð	!
ð
 ð!
ð 
ó!
÷FFr4   r�   Ú	linecountc                  ót   ‡ — 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.c                óB   •— t         ‰| �  ||«       i | _        i | _        y r'   )rƒ   r3   r„   Úany_types_counterr‘   s      €r2   r3   zAnyExpressionsReporter.__init__Û   s!   ø€ Ü‰Ñ˜ *Ô-Ø24ˆŒØFHˆÕr4   c                óÎ  — t        j                  d|j                  ||dd¬«      }|j                  |«       |j                  | j
                  |j                  <   t        |j                  j                  «       «      j                  t         j                  «      }|j                  |z   }|j                  |j                  z   |z   }|dkD  r||f| j                  |j                  <   y y )NTF)ÚinferredÚfilenamerE   Ú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„   )	r.   rD   rE   rF   rG   ÚvisitorÚnum_unanalyzed_linesÚnum_anyÚ	num_totals	            r2   rC   zAnyExpressionsReporter.on_fileà   sÌ   € ô ×)Ñ)ØØ—]‘]ØØØØ$ô
ˆð 	�‰�GÔØ07×0KÑ0Kˆ×Ñ˜tŸ}™}Ñ-Ü# G×$4Ñ$4×$;Ñ$;Ó$=Ó>×DÑDÄU×EZÑEZÓ[Ðà×'Ñ'Ð*>Ñ>ˆØ×/Ñ/°'×2KÑ2KÑKÈgÑUˆ	Ø�qŠ=Ø*1°9Ð)=ˆD�K‰K˜Ÿ™Ò&ð r4   c                óD   — | j                  «        | j                  «        y r'   )Ú_report_any_exprsÚ_report_types_of_anysra   s    r2   rI   z AnyExpressionsReporter.on_finishø   s   € Ø×ÑÔ Ø×"Ñ"Õ$r4   c           
     óÚ  ‡— t        |«      Št        ˆfd„|||gz   D «       «      sJ ‚d}dg‰z  }|||gz   D ]0  }t        |«      D ]   \  }}	t        ||   t        |	«      «      ||<   Œ" Œ2 t        |«      D ]  \  }}
|dkD  sŒ|
|z   ||<   Œ t	        t
        j                  j                  | j                  |«      d«      5 } dt        |«      z  j                  t        j                  t        ||«      Ž Ž }dt        |«      z  }|j                  |dz   «       |j                  |dz   «       |D ]K  } dt        |«      z  j                  t        j                  t        ||«      Ž Ž }|j                  |dz   «       ŒM |j                  |dz   «        dt        |«      z  j                  t        j                  t        ||«      Ž Ž }|j                  |dz   «       d d d «       y # 1 sw Y   y xY w)	Nc              3  ó:   •K  — | ]  }t        |«      ‰k(  –— Œ y ­wr'   ©r”   )r¢   ÚrowÚrow_lens     €r2   r¥   z;AnyExpressionsReporter._write_out_report.<locals>.<genexpr>   s   øè ø€ ÒJ¨3”3�s“8˜wÕ&ÑJùs   ƒr   éÿÿÿÿr   r¬   z{:>{}}ú-r±   )r”   Úallr{   Úmaxrz   r[   rt   r´   rZ   r:   Ú	itertoolsÚchainÚziprµ   )r.   r¾   ÚheaderÚrowsÚfooterÚmin_column_distanceÚwidthsr×   r©   Úvaluer¬   r™   Ú
header_strÚ	separatorÚ
row_valuesÚrÚ
footer_strrØ   s                    @r2   Ú_write_out_reportz(AnyExpressionsReporter._write_out_reportü   sâ  ø€ ô �f“+ˆÜÓJ°$¸&À&Ð9IÑ2IÔJÔJÐJÐJØÐØ�˜‘ˆØ˜6 6Ð*Ñ*ò 	7ˆCÜ% c›Nò 7‘��5Ü  q¡	¬3¨u«:Ó6��q’	ñ7ð	7ô ˜fÓ%ò 	4‰DˆAˆqà�1‹uØÐ 3Ñ3��q’	ð	4ô ”"—'‘'—,‘,˜tŸ™°Ó9¸3Ó?ð 
	'À1Ø8˜(¤S¨£[Ñ0×8Ñ8¼)¿/¹/Ì3ÈvÐW]ÓK^Ð:_Ð`ˆJØœc *›oÑ-ˆIØ�G‰G�J Ñ%Ô&Ø�G‰G�I Ñ$Ô%Ø"ò "�
Ø3�X¤ F£Ñ+×3Ñ3´Y·_±_ÄcÈ*ÐV\ÓF]Ð5^Ð_�Ø—‘˜˜D™Õ!ð"ð �G‰G�I Ñ$Ô%Ø8˜(¤S¨£[Ñ0×8Ñ8¼)¿/¹/Ì3ÈvÐW]ÓK^Ð:_Ð`ˆJØ�G‰G�J Ñ%Ô&÷
	'÷ 
	'ñ 
	'ús   Â?DG!Ç!G*c                ór  — t        d„ | j                  j                  «       D «       «      }t        d„ | j                  j                  «       D «       «      }d}|dkD  rt        ||z
  «      t        |«      z  dz  }g d¢}g }t	        | j                  «      D ]^  }| j                  |   \  }}t        ||z
  «      t        |«      z  dz  }	|	d›d�}
|j                  |t        |«      t        |«      |
g«       Œ` |j                  d	„ ¬
«       dt        |«      t        |«      |d›d�g}| j                  d|||«       y )Nc              3  ó&   K  — | ]	  \  }}|–— Œ y ­wr'   rT   )r¢   rÏ   Ú_s      r2   r¥   z;AnyExpressionsReporter._report_any_exprs.<locals>.<genexpr>  s   è ø€ ÒG¡J G¨QœÑGùó   ‚c              3  ó&   K  — | ]	  \  }}|–— Œ y ­wr'   rT   )r¢   rî   Útotals      r2   r¥   z;AnyExpressionsReporter._report_any_exprs.<locals>.<genexpr>  s   è ø€ ÒD¡8 1 eœÑDùrï   g      Y@r   éd   )ÚNameÚAnysÚExprsÚCoveragez.2fú%c                ó   — | d   S r�   rT   ©Úxs    r2   ú<lambda>z:AnyExpressionsReporter._report_any_exprs.<locals>.<lambda>$  ó
   €   !¡€ r4   ©ÚkeyÚTotalzany-exprs.txt)	rª   r„   rÇ   Úfloatr+   r>   rK   Úsortrë   )r.   Ú	total_anyÚ
total_exprÚtotal_coverageÚcolumn_namesrá   r¾   rÏ   rÐ   ÚcoverageÚcoverage_strÚ	total_rows               r2   rÒ   z(AnyExpressionsReporter._report_any_exprs  s-  € ÜÑG°$·+±+×2DÑ2DÓ2FÔGÓGˆ	ÜÑD¨t¯{©{×/AÑ/AÓ/CÔDÓDˆ
ØˆØ˜Š>Ü# J°Ñ$:Ó;¼eÀJÓ>OÑOÐSVÑVˆNâ<ˆØ "ˆÜ˜tŸ{™{Ó+ò 	PˆHØ!%§¡¨XÑ!6ÑˆG�YÜ˜i¨'Ñ1Ó2´U¸9Ó5EÑEÈÑLˆHØ& s˜^¨1Ð-ˆLØ�K‰K˜¤3 w£<´°Y³ÀÐNÕOð		Pð
 	�	‰	‘nˆ	Ô%Øœc )›n¬c°*«oÀ.ÐQTÐAUÐUVÐ?WÐXˆ	Ø×Ñ˜°¸dÀIÕNr4   c                óV  — t        j                  «       }| j                  j                  «       D ]'  }|j	                  «       D ]  \  }}||xx   |z  cc<   Œ Œ) d}d}|gt        t        j                  «       «      z   }g }| j                  j	                  «       D ]8  \  }	}|j                  |	gt        D �
cg c]  }
t        ||
   «      ‘Œ c}
z   «       Œ: |j                  d„ ¬«       |gt        D �
cg c]  }
t        ||
   «      ‘Œ c}
z   }| j                  d|||«       y c c}
w c c}
w )Nró   rÿ   c                ó   — | d   S r�   rT   rù   s    r2   rû   z>AnyExpressionsReporter._report_types_of_anys.<locals>.<lambda>3  rü   r4   rý   ztypes-of-anys.txt)ÚcollectionsÚCounterr»   rÇ   r,   rÅ   r   r>   rK   r  rë   )r.   Útotal_counterÚcounterÚany_typerå   Úfile_column_nameÚtotal_row_namer  rá   r¾   Útypr  s               r2   rÓ   z,AnyExpressionsReporter._report_types_of_anys(  s!  € Ü2=×2EÑ2EÓ2GˆØ×-Ñ-×4Ñ4Ó6ò 	1ˆGØ#*§=¡=£?ò 1‘�˜%Ø˜hÓ'¨5Ñ0Ô'ñ1ð	1ð "ÐØ ˆØ(Ð)¬DÔ1E×1LÑ1LÓ1NÓ,OÑOˆØ "ˆØ!%×!7Ñ!7×!=Ñ!=Ó!?ò 	ZÑˆH�gØ�K‰K˜˜
ÔCWÖ%X¸C¤c¨'°#©,Õ&7Ò%XÑXÕYð	Zà�	‰	‘nˆ	Ô%Ø#Ð$ÔK_Ö'`ÀC¬¨M¸#Ñ,>Õ(?Ò'`Ñ`ˆ	Ø×ÑÐ2°LÀ$È	ÕRùò &Yùâ'`s   Â5D!Ã2D&rb   rO   rP   )
r¾   rK   rà   ú	list[str]rá   zlist[list[str]]râ   r  rM   rN   )rQ   rR   rS   Ú__doc__r3   rC   rI   rë   rÒ   rÓ   rŒ   r�   s   @r2   r¹   r¹   Ø   s   ø„ Ù=õIð
>àð>ð %ð>ð )ð	>ð
 ð>ð 
ó>ó0%ð'Øð'Ø%.ð'Ø6Eð'ØOXð'à	ó'ó4O÷$Sr4   r¹   z	any-exprsc                  ó0   ‡ — e Zd Zdd„Zdd„Zdˆ fd„Zˆ xZS )ÚLineCoverageVisitorc                óF   — || _         |D �cg c]  }d‘Œ c}| _        y c c}w )N)rÙ   T)ÚsourceÚlines_covered)r.   r  Úls      r2   r3   zLineCoverageVisitor.__init__<  s!   € ØˆŒð 39Ö9¨QšjÒ9ˆÕùÒ9s   Œ	c                ó    — | j                   |   }d}t        |«      D ]/  }|dk(  r|dz  }Œ|dk(  rd|dz   dz  z  }Œ|dk(  r y|dk(  r y|c S  y)	z‰Return the indentation of a line of the source (specified by
        zero-indexed line number). Returns None for blank lines or comments.r   r®   rw   ú	é   ú#Nr±   )r  rÅ   )r.   Úline_numberÚlineÚindentÚchars        r2   Úindentation_levelz%LineCoverageVisitor.indentation_levelP  st   € ð �{‰{˜;Ñ'ˆØˆÜ˜“Jò 	ˆDØ�sŠ{Ø˜!‘‘Ø˜’Ø˜v¨™z¨aÑ/Ñ0‘Ø˜’áØ˜’áð ’ð	ð" r4   c                ó.  •— |j                   dz
  }d }|t        | j                  «      k  r2| j                  |«      }|�n|dz  }|t        | j                  «      k  rŒ2|€y |dz   }|}|t        | j                  «      k  r@| j                  |«      }|€|dz  }n||kD  r|dz  }|}nn|t        | j                  «      k  rŒ@|j                  d u}t        ||«      D ]+  }| j                  |   \  }	}
|	|k  sŒ||f| j                  |<   Œ- t        ‰| �!  |«       y r‡   )	r   r”   r  r#  rˆ   r³   r  rƒ   rŠ   )r.   r‰   Ú
start_lineÚstart_indentÚcur_lineÚend_lineÚ
cur_indentÚis_typedr   Ú
old_indentrî   r…   s              €r2   rŠ   z"LineCoverageVisitor.visit_func_defh  s>  ø€ Ø—Y‘Y ‘]ˆ
Øˆð œ3˜tŸ{™{Ó+Ò+Ø×1Ñ1°*Ó=ˆLØÐ'ØØ˜!‰OˆJð	 œ3˜tŸ{™{Ó+Ó+ð ÐØà ‘>ˆØˆàœ˜TŸ[™[Ó)Ò)Ø×/Ñ/°Ó9ˆJØÐ!à˜A‘‘Ø˜lÒ*à˜A‘�Ø#‘ð ð œ˜TŸ[™[Ó)Ó)ð —9‘9 DÐ(ˆÜ˜* hÓ/ò 	DˆDØ ×.Ñ.¨tÑ4‰MˆJ˜ð
 ˜\Ó)Ø,8¸(Ð+C�×"Ñ" 4Ò(ð	Dô 	‰Ñ˜tÕ$r4   )r  r  rM   rN   )r  ÚintrM   z
int | Noner‹   )rQ   rR   rS   r3   r#  rŠ   rŒ   r�   s   @r2   r  r  ;  s   ø„ ó:ó(÷0+%ñ +%r4   r  c                  óH   ‡ — 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.
    c                ó4   •— t         ‰| �  ||«       i | _        y r'   )rƒ   r3   r  r‘   s      €r2   r3   zLineCoverageReporter.__init__   s   ø€ Ü‰Ñ˜ *Ô-Ø35ˆÕr4   c                óâ  — t         j                  j                  |j                  «      ry t        |j                  «      5 }|j	                  «       }d d d «       t        «      }|j                  |«       g }t        |j                  «      D ]  \  }	\  }
}|sŒ|j                  |	dz   «       Œ! || j                  t         j                  j                  |j                  «      <   y # 1 sw Y   Œ•xY wr‡   )r[   rt   rx   rz   r•   r  r–   r{   r  r>   Úabspath)r.   rD   rE   rF   rG   r™   Útree_sourceÚcoverage_visitorÚcovered_linesr  rî   Útypeds               r2   rC   zLineCoverageReporter.on_file¤  sÄ   € ô �7‰7�=‰=˜Ÿ™Ô#Øä�$—)‘)‹_ð 	( ØŸ+™+›-ˆK÷	(ô /¨{Ó;ÐØ�‰Ð$Ô%àˆÜ'0Ð1A×1OÑ1OÓ'Pò 	6Ñ#ˆK™˜!˜UÚØ×$Ñ$ [°1¡_Õ5ð	6ð :Gˆ×Ñœ2Ÿ7™7Ÿ?™?¨4¯9©9Ó5Ò6÷	(ð 	(ús   Á C%Ã%C.c                óÚ   — t        t        j                  j                  | j                  d«      d«      5 }t        j                  d| j                  i|«       d d d «       y # 1 sw Y   y xY w)Nzcoverage.jsonr¬   Úlines)rz   r[   rt   r´   rZ   ÚjsonÚdumpr  )r.   r™   s     r2   rI   zLineCoverageReporter.on_finish»  sO   € Ü”"—'‘'—,‘,˜tŸ™°Ó@À#ÓFð 	8È!Ü�I‰I�w × 2Ñ 2Ð3°QÔ7÷	8÷ 	8ñ 	8ús   µ#A!Á!A*rb   rO   rP   ©rQ   rR   rS   r  r3   rC   rI   rŒ   r�   s   @r2   r.  r.  –  sM   ø„ ñõ6ðGàðGð %ðGð )ð	Gð
 ðGð 
óG÷.8r4   r.  Úlinecoveragec                  ó$   — e Zd Zdd„Zdd„Zdd„Zy)ÚFileInfoc                ód   — || _         || _        dgt        t        j                  «      z  | _        y r�   )ÚnameÚmoduler”   r   Úprecision_namesr„   )r.   r?  r@  s      r2   r3   zFileInfo.__init__Ä  s)   € ØˆŒ	ØˆŒØ�cœC¤× 5Ñ 5Ó6Ñ6ˆ�r4   c                ó,   — t        | j                  «      S r'   )rª   r„   ra   s    r2   rñ   zFileInfo.totalÉ  s   € Ü�4—;‘;ÓÐr4   c                ó¢   — t        t        t        j                  | j                  «      «      D ��ci c]  \  }}|t        |«      “Œ c}}S c c}}w r'   )r+   rß   r   rA  r„   rK   )r.   r?  Úvals      r2   ÚattribzFileInfo.attribÌ  s;   € Ü06´s¼5×;PÑ;PÐRV×R]ÑR]Ó7^Ó0_×`¡9 4¨�”c˜#“h‘Ó`Ð`ùÓ`s   ±AN)r?  rK   r@  rK   rM   rN   )rM   r,  )rM   rL   )rQ   rR   rS   r3   rñ   rE  rT   r4   r2   r=  r=  Ã  s   „ ó7ó
 ôar4   r=  c                  óÂ   ‡ — e Zd ZU dZdˆ fd„Zej                  dj                  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.
    c                ó  •— t         ‰| �  ||«       t        j                  j	                  |j
                  dd«      | _        t        j                  j	                  |j
                  dd«      | _        t        j                  j	                  |j
                  dd«      | _        t        j                  j	                  |j
                  dd«      }t        j                  t        j                  |«      «      | _        d | _        g | _        y )NÚxmlúmypy-html.xsltzmypy-txt.xsltúmypy-html.csszmypy.xsd)rƒ   r3   r[   rt   r´   r(   Úxslt_html_pathÚxslt_txt_pathÚcss_html_pathr   Ú	XMLSchemaÚparseÚschemaÚlast_xmlÚfiles)r.   r]   rZ   Úxsd_pathr…   s       €r2   r3   zMemoryXmlReporter.__init__Ö  s³   ø€ Ü‰Ñ˜ *Ô-ä Ÿg™gŸl™l¨7×+;Ñ+;¸UÐDTÓUˆÔÜŸW™WŸ\™\¨'×*:Ñ*:¸EÀ?ÓSˆÔÜŸW™WŸ\™\¨'×*:Ñ*:¸EÀ?ÓSˆÔÜ—7‘7—<‘< × 0Ñ 0°%¸ÓDˆÜ—o‘o¤e§k¡k°(Ó&;Ó<ˆŒØ$(ˆŒØ%'ˆ�
r4   Ú c              #  ó>   K  — | ]  }|d k7  sŒ	t        |«      –— Œ y­w)é	   N)Úchr)r¢   r©   s     r2   r¥   zMemoryXmlReporter.<genexpr>ä  s   è ø€ Ò0U¸AÈaÐSTËf´°Q·Ñ0Uùs   ‚
�é    z???????????????????????????????r
   Úcontrol_fixerc           
     ó‚  — d | _         	 t        j                  j                  |j                  «      }t        |«      st        j                  j                  |«      ry t        j                  d|j                  ||d¬«      }|j                  |«       t        j                  d||j                  ¬«      }t        j                  |«      }t        ||j                  «      }	t!        |«      D ]³  \  }
}|j"                  j%                  |
t        j&                  «      }|	j(                  |xx   dz  cc<   t        j*                  |d| j-                  ||
«      |j/                  d«      j1                  | j2                  «      t5        |
«      t        j6                  |   ¬«       Œµ t        j                  j                  d	|«      }t        j8                  d
dt;        |«      › d�«      }|j=                  |«       | j>                  jA                  |«       || _         | jB                  jE                  |	«       y # t        $ r Y y w xY w)NT©r½   r¾   rE   r¿   rÀ   zmypy-report-file)r?  r@  rw   r   r±   )Úany_infoÚcontentÚnumberÚ	precisionrJ  úxml-stylesheetútype="text/xsl" href="ú")#rR  r[   rt   ÚrelpathÚ
ValueErrorru   rx   r   rÂ   rÃ   r–   r   ÚElementr˜   ÚElementTreer=  r}   rÆ   ÚgetÚ
TYPE_EMPTYr„   Ú
SubElementÚ_get_any_info_for_lineÚrstripÚ	translaterZ  rK   rA  ÚProcessingInstructionr   ÚaddpreviousrQ  ÚassertValidrS  r>   )r.   rD   rE   rF   rG   rt   rÍ   ÚrootÚdocÚ	file_infoÚlinenoÚ	line_textÚstatusÚ	xslt_pathÚtransform_pis                  r2   rC   zMemoryXmlReporter.on_fileæ  sÛ  € ð ˆŒð	Ü—7‘7—?‘? 4§9¡9Ó-ˆDô ˜DÔ!¤R§W¡W§]¡]°4Ô%8Øä×)Ñ)ØØ—]‘]ØØØô
ˆð 	�‰�GÔä�}‰}Ð/°dÀ4Ç>Á>ÔRˆÜ×Ñ Ó%ˆÜ˜T 4§>¡>Ó2ˆ	ä!5°dÓ!;ò 
	ÑˆF�IØ×%Ñ%×)Ñ)¨&´%×2BÑ2BÓCˆFØ×Ñ˜VÓ$¨Ñ)Ó$Ü×ÑØØØ×4Ñ4°W¸fÓEØ!×(Ñ(¨Ó.×8Ñ8¸×9KÑ9KÓLÜ˜6“{Ü×/Ñ/°Ñ7öð
	ô —G‘G—O‘OÐ$4°dÓ;ˆ	Ü×2Ñ2ØÐ 6´|ÀIÓ7NÐ6OÈqÐQó
ˆð 	×Ñ˜Ô&Ø�‰×Ñ Ô$àˆŒØ�
‰
×Ñ˜)Õ$øôO ò 	Ùð	ús   ‰)H2 È2	H>È=H>c                óü   — || j                   v rnd}t        j                  «       }| j                   |   D ]  }||j                  xx   dz  cc<   Œ |j	                  «       D ]  \  }}|dt
        |   › d|› d�z  }Œ |S y)NzAny Types on this line: rw   r±   z (xú)zNo Anys on this line!)Úany_line_mapr  r  Útype_of_anyr,   r   )rÍ   rt  Úresultr  r  r  Úoccurrencess          r2   rk  z(MemoryXmlReporter._get_any_info_for_line  s•   € à�W×)Ñ)Ñ)Ø/ˆFÜ0;×0CÑ0CÓ0EˆGØ×+Ñ+¨FÑ3ò .�Ø˜Ÿ™Ó(¨AÑ-Ô(ð.à)0¯©«ò QÑ%�˜+Ø˜BÔ3°HÑ=Ð>¸cÀ+ÀÈaÐPÑP‘ðQàˆMà*r4   c                óN  — d | _         t        | j                  d„ ¬«      }t        j                  dd¬«      }t        j
                  |«      }|D ]_  }t        j                  |d|j                  «       |j                  t        |j                  «      t        |j                  «       «      ¬«       Œa t        j                  j                  dd	«      }t        j                   d
dt        |«      › d�«      }|j#                  |«       | j$                  j'                  |«       || _         y )Nc                ó   — | j                   S r'   ©r@  rù   s    r2   rû   z-MemoryXmlReporter.on_finish.<locals>.<lambda>*  ó
   € ¸¿¹€ r4   rý   zmypy-report-indexÚindex)r?  r6   )r@  r?  rñ   rJ  ú.ra  rb  rc  )rR  r+   rS  r   rf  rg  rj  rE  r@  r   r?  rK   rñ   r[   rt   rd  rn  ro  rQ  rp  )r.   Úoutput_filesrq  rr  rs  rw  rx  s          r2   rI   zMemoryXmlReporter.on_finish'  só   € ØˆŒä˜dŸj™jÑ.@ÔAˆä�}‰}Ð0°wÔ?ˆÜ×Ñ Ó%ˆà%ò 	ˆIÜ×ÑØØØ× Ñ Ó"Ø ×'Ñ'Ü! )§.¡.Ó1Ü˜)Ÿ/™/Ó+Ó,öð	ô —G‘G—O‘OÐ$4°cÓ:ˆ	Ü×2Ñ2ØÐ 6´|ÀIÓ7NÐ6OÈqÐQó
ˆð 	×Ñ˜Ô&Ø�‰×Ñ Ô$àˆ�r4   rb   rO   )rÍ   zstats.StatisticsVisitorrt  r,  rM   rK   rP   )rQ   rR   rS   r  r3   rK   Ú	maketransr´   r³   rZ  Ú__annotations__rC   Ústaticmethodrk  rI   rŒ   r�   s   @r2   rG  rG  Ð  s‡   ø… ñõ
	(ð Ÿ=™=¨¯©Ñ0UÁÀrÃÔ0UÓ)UÐW_Ó`€M�5Ó`ð2%àð2%ð %ð2%ð )ð	2%ð
 ð2%ð 
ó2%ðh ò
+ó ð
+÷r4   rG  ú
memory-xml)r@   c                ó0   — |dk(  rt        d«      S | |z  d›S )Nr   g      ð?z.4f)rK   )r4  Útotal_liness     r2   Úget_line_raterŒ  E  s#   € Ø�aÒÜ�3‹xˆà +Ñ-¨cÐ2Ð3r4   c                  ó(   — e Zd ZdZdd„Zdd„Zdd„Zy)	ÚCoberturaPackagezMContainer for XML and statistics mapping python modules to Cobertura package.c                óJ   — || _         i | _        i | _        d| _        d| _        y r�   )r?  ÚclassesÚpackagesr‹  r4  )r.   r?  s     r2   r3   zCoberturaPackage.__init__O  s'   € ØˆŒ	Ø')ˆŒØ57ˆŒØˆÔØˆÕr4   c                ó€  — t        j                  dd| j                  ¬«      }d|j                  d<   t	        | j
                  | j                  «      |j                  d<   t        j                  |d«      }t        | j                  «      D ]   }|j                  | j                  |   «       Œ" | j                  |«       |S )NÚpackageú1.0)Ú
complexityr?  Ú0úbranch-rateú	line-rater�  )r   rf  r?  rE  rŒ  r4  r‹  rj  r+   r�  r>   Úadd_packages)r.   Úpackage_elementÚclasses_elementÚ
class_names       r2   Úas_xmlzCoberturaPackage.as_xmlV  s¡   € ÜŸ-™-¨	¸eÈ$Ï)É)ÔTˆØ03ˆ×Ñ˜}Ñ-Ü.;¸D×<NÑ<NÐPT×P`ÑP`Ó.aˆ×Ñ˜{Ñ+Ü×*Ñ*¨?¸IÓFˆÜ  §¡Ó.ò 	=ˆJØ×"Ñ" 4§<¡<°
Ñ#;Õ<ð	=à×Ñ˜/Ô*ØÐr4   c                óî   — | j                   rit        j                  |d«      }t        | j                   j	                  «       t        d«      ¬«      D ]!  }|j                  |j                  «       «       Œ# y y )Nr‘  r?  rý   )r‘  r   rj  r+   rÇ   r   r>   r�  )r.   Úparent_elementÚpackages_elementr“  s       r2   r™  zCoberturaPackage.add_packages`  s^   € Ø�=Š=Ü$×/Ñ/°À
ÓKÐÜ! $§-¡-×"6Ñ"6Ó"8¼jÈÓ>PÔQò :�Ø ×'Ñ'¨¯©Ó(8Õ9ñ:ð r4   N)r?  rK   rM   rN   )rM   r	   )rŸ  r	   rM   rN   )rQ   rR   rS   r  r3   r�  r™  rT   r4   r2   rŽ  rŽ  L  s   „ ÙWóóô:r4   rŽ  c                  óH   ‡ — 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.c           	     ó  •— t         ‰| �  ||«       t        j                  dt	        t        t        j                  «       «      «      t        ¬«      | _        t        j                  | j                  «      | _
        t        d«      | _        y )Nr  )Ú	timestampÚversionr„  )rƒ   r3   r   rf  rK   r,  Útimer   rq  rg  rr  rŽ  Úroot_packager‘   s      €r2   r3   zCoberturaXmlReporter.__init__j  sZ   ø€ Ü‰Ñ˜ *Ô-ä—M‘M *¼¼CÄÇ	Á	ÃÓ<LÓ8MÔWbÔcˆŒ	Ü×$Ñ$ T§Y¡YÓ/ˆŒÜ,¨SÓ1ˆÕr4   c           
     óè  — t         j                  j                  |j                  «      }t        j                  d|j
                  ||d¬«      }|j                  |«       t         j                  j                  |«      }t        ||j                  «      }t        j                  dd||¬«      }	t        j                  |	d«       t        j                  |	d«      }
d}d}t        |«      D ]ù  \  }}|j                  j                  |t        j                   «      }d}d	}|t        j                   k(  rŒH|d
z  }|t        j"                  k7  r|d
z  }d
}|t        j$                  k(  rd}|j&                  |xx   d
z  cc<   t        j                  |
dt)        |«      j+                  «       t)        |«      t)        |«      t        j,                  |   ¬«      }|sŒëd|j.                  d<   Œû d|	j.                  d<   t1        ||«      |	j.                  d<   |j2                  j5                  dd
«      d   }|j6                  j9                  d«      r|j2                  }|| j:                  j<                  vr"t?        |«      | j:                  j<                  |<   | j:                  j<                  |   }| j:                  |g}|D ],  }|xj@                  |z  c_         |xjB                  |z  c_!        Œ. |	|jD                  |<   y )NTr\  Úclassr”  )r•  r¾   r?  Úmethodsr7  r   Frw   r   )ÚbranchÚhitsr_  r`  z	50% (1/2)zcondition-coverager–  r—  r˜  r„  z__init__.py)#r[   rt   rd  r   rÂ   rÃ   r–   Úbasenamer=  r˜   r   rf  rj  r}   rÆ   rh  ri  ÚTYPE_ANYÚTYPE_IMPRECISEr„   rK   ÚlowerrA  rE  rŒ  r@  Úrsplitr?  Úendswithr§  r‘  rŽ  r‹  r4  r�  )r.   rD   rE   rF   rG   rt   rÍ   rœ  rs  Úclass_elementÚlines_elementÚclass_lines_coveredÚclass_total_linesrt  rî   rv  r¬  r«  Úline_elementÚparent_moduleÚcurrent_packageÚpackages_to_updater“  s                          r2   rC   zCoberturaXmlReporter.on_fileq  s¯  € ô �w‰w�‰˜tŸy™yÓ)ˆÜ×)Ñ)ØØ—]‘]ØØØô
ˆð 	�‰�GÔä—W‘W×%Ñ% dÓ+ˆ
Ü˜T 4§>¡>Ó2ˆ	ÜŸ™ g¸%È$ÐU_Ô`ˆÜ×Ñ˜¨	Ô2Ü×(Ñ(¨¸Ó@ˆàÐØÐÜ-¨dÓ3ò 	H‰IˆF�AØ×%Ñ%×)Ñ)¨&´%×2BÑ2BÓCˆFØˆDØˆFØœ×)Ñ)Ò)ØØ Ñ"ÐØœŸ™Ò'Ø# qÑ(Ð#Ø�Øœ×-Ñ-Ò-Ø�Ø×Ñ˜VÓ$¨Ñ)Ó$Ü ×+Ñ+ØØÜ˜6“{×(Ñ(Ó*Ü˜“YÜ˜6“{Ü×/Ñ/°Ñ7ôˆLò Ø<G�×#Ñ#Ð$8Ò9ð-	Hð. /2ˆ×Ñ˜]Ñ+Ü,9Ð:MÐO`Ó,aˆ×Ñ˜[Ñ)ð "×(Ñ(×/Ñ/°°QÓ7¸Ñ:ˆØ�>‰>×"Ñ" =Ô1Ø%×,Ñ,ˆMà × 1Ñ 1× :Ñ :Ñ:Ü8HÈÓ8WˆD×Ñ×&Ñ& }Ñ5Ø×+Ñ+×4Ñ4°]ÑCˆØ"×/Ñ/°ÐAÐØ)ò 	9ˆGØ×ÒÐ#4Ñ4ÕØ×!Ò!Ð%8Ñ8Ö!ð	9ð /<ˆ×Ñ 
Ò+r4   c                ón  — 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                  | j                  «       t        j                  j                  | j                  d«      }| j                   j#                  |d	d
¬«       t%        dt        j                  j'                  |«      «       y )Nr˜  r–  r—  zlines-coveredzlines-validÚsourcesr  zcobertura.xmlúutf-8T)ÚencodingÚpretty_printzGenerated Cobertura report:)rŒ  r§  r4  r‹  rq  rE  rK   r   rj  r[   ÚgetcwdÚtextr™  rt   r´   rZ   rr  rµ   r9   r1  )r.   r¼  Úsource_elementÚout_paths       r2   rI   zCoberturaXmlReporter.on_finish³  s,  € Ü(5Ø×Ñ×+Ñ+¨T×->Ñ->×-JÑ-Jó)
ˆ�	‰	×Ñ˜Ñ%ð +.ˆ�	‰	×Ñ˜Ñ'Ü,/°×0AÑ0A×0OÑ0OÓ,Pˆ�	‰	×Ñ˜Ñ)Ü*-¨d×.?Ñ.?×.KÑ.KÓ*Lˆ�	‰	×Ñ˜Ñ'Ü×"Ñ" 4§9¡9¨iÓ8ˆÜ×)Ñ)¨'°8Ó<ˆÜ Ÿi™i›kˆÔØ×Ñ×&Ñ& t§y¡yÔ1Ü—7‘7—<‘< §¡°ÓAˆØ�‰�‰�x¨'ÀˆÔEÜÐ+¬R¯W©W¯_©_¸XÓ-FÕGr4   rb   rO   rP   r:  r�   s   @r2   r¢  r¢  g  sM   ø„ Ù:õ2ð@<àð@<ð %ð@<ð )ð	@<ð
 ð@<ð 
ó@<÷DHr4   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.c                ó|   •— t         ‰| �  ||«       |j                  dd«      }t        |t        «      sJ ‚|| _        y )Nr‰  rW   )rƒ   r3   r-   Ú
isinstancerG  Ú
memory_xml)r.   r]   rZ   Úmemory_reporterr…   s       €r2   r3   zAbstractXmlReporter.__init__É  s<   ø€ Ü‰Ñ˜ *Ô-à!×,Ñ,¨\¸:ÓFˆÜ˜/Ô+<Ô=Ð=Ð=à)ˆ�r4   rb   )rQ   rR   rS   r  r3   rŒ   r�   s   @r2   rÅ  rÅ  Æ  s   ø„ ÙB÷*ñ *r4   rÅ  c                  ó4   — e Zd ZdZ	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zy)Ú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.
    c                ó–  — | j                   j                  }|€y t        j                  j	                  |j                  «      }|j                  d«      ry t        j                  j                  | j                  d|dz   «      }t        j                  t        j                  j                  |«      d¬«       |j                  |d¬«       y )Nrm   rI  z.xmlTrX   r½  ©r¾  )rÈ  rR  r[   rt   rd  rq   r´   rZ   r\   Údirnamerµ   )r.   rD   rE   rF   rG   rR  rt   rÃ  s           r2   rC   zXmlReporter.on_fileÜ  sŠ   € ð —?‘?×+Ñ+ˆØÐØÜ�w‰w�‰˜tŸy™yÓ)ˆØ�?‰?˜4Ô ØÜ—7‘7—<‘< §¡°¸¸v¹ÓFˆÜ
�‰”B—G‘G—O‘O HÓ-¸Õ=Ø�‰�x¨'ˆÕ2r4   c                óT  — | j                   j                  }|€J ‚t        j                  j	                  | j
                  d«      }t        j                  j	                  | j
                  d«      }t        j                  j	                  | j
                  d«      }|j                  |d¬«       t        j                  | j                   j                  |«       t        j                  | j                   j                  |«       t        dt        j                  j                  |«      «       y )Nz	index.xmlrJ  rK  r½  rÍ  zGenerated XML report:)rÈ  rR  r[   rt   r´   rZ   rµ   ÚshutilÚcopyfilerL  rN  r9   r1  )r.   rR  rÃ  Úout_xsltÚout_csss        r2   rI   zXmlReporter.on_finishí  s¾   € Ø—?‘?×+Ñ+ˆØÐ#Ð#Ð#Ü—7‘7—<‘< §¡°Ó=ˆÜ—7‘7—<‘< §¡Ð1AÓBˆÜ—'‘'—,‘,˜tŸ™°Ó@ˆØ�‰�x¨'ˆÔ2Ü�‰˜Ÿ™×6Ñ6¸ÔAÜ�‰˜Ÿ™×5Ñ5°wÔ?ÜÐ%¤r§w¡w§¡°xÓ'@ÕAr4   NrO   rP   )rQ   rR   rS   r  rC   rI   rT   r4   r2   rË  rË  Ò  sB   „ ñð3àð3ð %ð3ð )ð	3ð
 ð3ð 
ó3ô"	Br4   rË  rI  c                  óH   ‡ — e Zd ZdZdˆ fd„Z	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zˆ xZS )ÚXsltHtmlReporterz³Public 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.
    c                óð   •— t         ‰| �  ||«       t        j                  t        j                  | j
                  j                  «      «      | _        t        j                  j                  d«      | _	        y )NÚhtml)
rƒ   r3   r   ÚXSLTrP  rÈ  rL  Ú	xslt_htmlÚstrparamÚ
param_htmlr‘   s      €r2   r3   zXsltHtmlReporter.__init__  sK   ø€ Ü‰Ñ˜ *Ô-äŸ™¤E§K¡K°·±×0NÑ0NÓ$OÓPˆŒÜŸ*™*×-Ñ-¨fÓ5ˆ�r4   c                ó   — | j                   j                  }|€y t        j                  j	                  |j                  «      }|j                  d«      ry t        j                  j                  | j                  d|dz   «      }t        j                  t        j                  j                  |«      d¬«       t        | j                  || j                  ¬«      «      }t        |d«      5 }	|	j                  |«       d d d «       y # 1 sw Y   y xY w)Nrm   r×  z.htmlTrX   ©ÚextÚwb)rÈ  rR  r[   rt   rd  rq   r´   rZ   r\   rÎ  ÚbytesrÙ  rÛ  rz   rµ   )
r.   rD   rE   rF   rG   rR  rt   rÃ  Útransformed_htmlÚout_files
             r2   rC   zXsltHtmlReporter.on_file	  sÄ   € ð —?‘?×+Ñ+ˆØÐØÜ�w‰w�‰˜tŸy™yÓ)ˆØ�?‰?˜4Ô ØÜ—7‘7—<‘< §¡°¸À¹ÓHˆÜ
�‰”B—G‘G—O‘O HÓ-¸Õ=Ü  §¡°¸d¿o¹o Ó!NÓOÐÜ�(˜DÓ!ð 	- XØ�N‰NÐ+Ô,÷	-÷ 	-ñ 	-ús   Ã)DÄDc                ó6  — | j                   j                  }|€J ‚t        j                  j	                  | j
                  d«      }t        j                  j	                  | j
                  d«      }t        | j                  || j                  ¬«      «      }t        |d«      5 }|j                  |«       d d d «       t        j                  | j                   j                  |«       t        dt        j                  j                  |«      «       y # 1 sw Y   Œ]xY w)Nz
index.htmlrK  rÝ  rß  z!Generated HTML report (via XSLT):)rÈ  rR  r[   rt   r´   rZ   rà  rÙ  rÛ  rz   rµ   rÐ  rÑ  rN  r9   r1  )r.   rR  rÃ  rÓ  rá  râ  s         r2   rI   zXsltHtmlReporter.on_finish  sÇ   € Ø—?‘?×+Ñ+ˆØÐ#Ð#Ð#Ü—7‘7—<‘< §¡°Ó>ˆÜ—'‘'—,‘,˜tŸ™°Ó@ˆÜ  §¡°¸d¿o¹o Ó!NÓOÐÜ�(˜DÓ!ð 	- XØ�N‰NÐ+Ô,÷	-ä�‰˜Ÿ™×5Ñ5°wÔ?ÜÐ1´2·7±7·?±?À8Ó3LÕM÷	-ð 	-ús   Â!DÄDrb   rO   rP   r:  r�   s   @r2   rÕ  rÕ  ü  sH   ø„ ñõ6ð-àð-ð %ð-ð )ð	-ð
 ð-ð 
ó-÷&	Nr4   rÕ  z	xslt-htmlc                  óH   ‡ — 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.
    c                ó¨   •— t         ‰| �  ||«       t        j                  t        j                  | j
                  j                  «      «      | _        y r'   )rƒ   r3   r   rØ  rP  rÈ  rM  Úxslt_txtr‘   s      €r2   r3   zXsltTxtReporter.__init__1  s5   ø€ Ü‰Ñ˜ *Ô-äŸ
™
¤5§;¡;¨t¯©×/LÑ/LÓ#MÓNˆ�r4   c                 ó   — y r'   rT   r_   s        r2   rC   zXsltTxtReporter.on_file6  s   € ð 	r4   c                óv  — | j                   j                  }|€J ‚t        j                  j	                  | j
                  d«      }t        | j                  |«      «      }t        |d«      5 }|j                  |«       d d d «       t        dt        j                  j                  |«      «       y # 1 sw Y   Œ3xY w)Nz	index.txtrß  z Generated TXT report (via XSLT):)rÈ  rR  r[   rt   r´   rZ   rà  rç  rz   rµ   r9   r1  )r.   rR  rÃ  Útransformed_txtrâ  s        r2   rI   zXsltTxtReporter.on_finish?  s�   € Ø—?‘?×+Ñ+ˆØÐ#Ð#Ð#Ü—7‘7—<‘< §¡°Ó=ˆÜ §¡¨hÓ 7Ó8ˆÜ�(˜DÓ!ð 	, XØ�N‰N˜?Ô+÷	,äÐ0´"·'±'·/±/À(Ó2KÕL÷	,ð 	,ús   Á+B/Â/B8rb   rO   rP   r:  r�   s   @r2   rå  rå  +  sI   ø„ ñõ
Oð
àðð %ðð )ð	ð
 ðð 
ó÷Mr4   rå  zxslt-txtr×  Útxtc                  óH   ‡ — 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.
    c                ó4   •— t         ‰| �  ||«       g | _        y r'   )rƒ   r3   rS  r‘   s      €r2   r3   zLinePrecisionReporter.__init__^  s   ø€ Ü‰Ñ˜ *Ô-Ø%'ˆ�
r4   c                ó  — 	 t         j                  j                  |j                  «      }t	        |«      ry t        j                  d|j                  ||d¬«      }|j                  |«       t        ||j                  «      }t        |«      D ]F  \  }}	|j                  j                  |t
        j                  «      }
|j                  |
xx   dz  cc<   ŒH | j                   j#                  |«       y # t        $ r Y y w xY w)NTr\  rw   )r[   rt   rd  re  ru   r   rÂ   rÃ   r–   r=  r˜   r}   rÆ   rh  ri  r„   rS  r>   )r.   rD   rE   rF   rG   rt   rÍ   rs  rt  rî   rv  s              r2   rC   zLinePrecisionReporter.on_fileb  sß   € ð	Ü—7‘7—?‘? 4§9¡9Ó-ˆDô ˜DÔ!Øä×)Ñ)ØØ—]‘]ØØØô
ˆð 	�‰�GÔä˜T 4§>¡>Ó2ˆ	Ü-¨dÓ3ò 	*‰IˆF�AØ×%Ñ%×)Ñ)¨&´%×2BÑ2BÓCˆFØ×Ñ˜VÓ$¨Ñ)Ô$ð	*ð 	�
‰
×Ñ˜)Õ$øô) ò 	Ùð	ús   ‚)C2 Ã2	C>Ã=C>c                ó:  — | j                   sy t        | j                   d„ ¬«      }t        j                  j	                  | j
                  d«      }t        dt        d„ |D «       «      «      }d}|ft        d„ |D «       «      z   }d|z  }t        |d	«      5 }|j                   |j                  d
g|¢­Ž «       |j                  d|dz   z  dz   «       |D ]°  }|j                  }	|j                  |j                  |j                  j                  |«      |j                  «       |	t        j                      |	t        j"                     |	t        j$                     |	t        j&                     |	t        j(                     «      «       Œ² 	 d d d «       y # 1 sw Y   y xY w)Nc                ó   — | j                   S r'   r�  rù   s    r2   rû   z1LinePrecisionReporter.on_finish.<locals>.<lambda>…  r‚  r4   rý   zlineprecision.txtr«   c              3  óF   K  — | ]  }t        |j                  «      –— Œ y ­wr'   )r”   r@  )r¢   Úinfos     r2   r¥   z2LinePrecisionReporter.on_finish.<locals>.<genexpr>‡  s   è ø€ ÒE°œ3˜tŸ{™{×+ÑEùs   ‚!)ÚLinesÚPreciseÚ	Impreciser	   ÚEmptyÚ
Unanalyzedc              3  ó2   K  — | ]  }t        |«      –— Œ y ­wr'   rÖ   )r¢   Úts     r2   r¥   z2LinePrecisionReporter.on_finish.<locals>.<genexpr>‰  s   è ø€ Ò!9¨Q¤# a§&Ñ!9ùs   ‚z0{:%d}  {:%d}  {:%d}  {:%d}  {:%d}  {:%d}  {:%d}
r¬   ró   rÚ   é3   r±   )rS  r+   r[   rt   r´   rZ   rÜ   r²   rz   rµ   r:   r„   r@  Úljustrñ   r   ÚTYPE_PRECISEr¯  r®  ri  rÉ   )
r.   r…  Úreport_fileÚwidthÚtitlesrä   Úfmtr™   rs  r„   s
             r2   rI   zLinePrecisionReporter.on_finish�  s^  € Ø�zŠzàÜ˜dŸj™jÑ.@ÔAˆÜ—g‘g—l‘l 4§?¡?Ð4GÓHˆÜ�A”sÑE¸ÔEÓEÓFˆØPˆØ�œEÑ!9°&Ô!9Ó9Ñ9ˆØAÀFÑJˆÜ�+˜sÓ#ð 	 qØ�G‰G�J�C—J‘J˜vÐ/¨Ò/Ô0Ø�G‰G�C˜5 2™:Ñ&¨Ñ-Ô.Ø)ò �	Ø"×)Ñ)�Ø—‘Ø—J‘JØ!×(Ñ(×.Ñ.¨uÓ5Ø!Ÿ™Ó)Øœu×1Ñ1Ñ2Øœu×3Ñ3Ñ4ØœuŸ~™~Ñ.Øœu×/Ñ/Ñ0Øœu×4Ñ4Ñ5óõ
ñ÷	÷ 	ñ 	ús   ÂC2FÆFrb   rO   rP   r:  r�   s   @r2   rí  rí  O  sG   ø„ ñõ(ð%àð%ð %ð%ð )ð	%ð
 ð%ð 
ó%÷>r4   rí  Úlineprecision)F)rf   rK   rA   z*Callable[[Reports, str], AbstractReporter]r@   ÚboolrM   rN   )ri   rK   rj   rK   rM   rN   )rt   rK   rM   r  )rt   rK   rM   zIterator[tuple[int, str]])r4  r,  r‹  r,  rM   rK   )Xr  Ú
__future__r   r  rÝ   r8  r[   rÐ  r;   Ú	sysconfigr¦  ry   Ú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_infor  Úget_config_varr8   Úlxmlr   r=   ÚOrderedDictÚunannotatedÚexplicitÚfrom_unimported_typeÚfrom_omitted_genericsÚ
from_errorÚspecial_formÚimplementation_artifactr   r‡  ÚdictrK   r²   r#   r$   r    r!   rg   rk   ru   r}   r   r�   r¹   r  r.  r=  rG  rŒ  rŽ  r¢  rÅ  rË  rÕ  rå  rí  ÚsetrT   r4   r2   ú<module>r     s@  ðÚ ;å "ã Û Û Û 	Û Û 
Û Û Û ß 'ß .Ý ß 6Ñ 6Ý 'å Ý (ß 4Ñ 4Ý  Ý +ß &Ý $ð	Ø
×Ñ˜7Ò"¡tÐ,D¨I×,DÑ,DÐEVÓ,WÔ'Xà‰åàˆð BYÀ×AXÑAXà	×	Ñ	 Ð.Ø	×	Ñ	˜ZÐ(Ø	×	'Ñ	'¨Ð6Ø	×	(Ñ	(Ð*<Ð=Ø	×	Ñ	˜wÐ'Ø	×	Ñ	 Ð0Ø	×	*Ñ	*Ð,EÐFðó
BÐ Ð>ó 
ð #Øˆˆx˜ CÐ(Ð*<Ð<Ñ=¸tÐCÑ	DÐDñ€�ó ð ,.Ð Ð(Ó -÷*!ñ *!ôZ õ ð0 ð;Øð;à8ð;ð ð;ð 
ó	;óJóó0ô0Ð)ô 0ô0FÐ(ô 0Fñf �+Ð0Ô 1ô]SÐ-ô ]Sñ@ �+Ð5Ô 6ôX%Ð*ô X%ôv'8Ð+ô '8ñT �.Ð"6Ô 7÷
añ 
aôoÐ(ô oñd �,Ð 1¸dÕ Có4÷:ñ :ô6YHÐ+ô YHñx �/Ð#7ÀDÕ Iô	*Ð*ô 	*ô$BÐ%ô $BñN �%˜°Õ 6ô)NÐ*ô )NñX �+Ð/¸DÕ AôMÐ)ô Mñ< �*˜o¸$Õ ?á ˆ{˜FÔ #Ù ˆz˜5Ô !ôKÐ,ô Kñ\ �/Ð#8Ô 9ñ
 ÐÓ¡ NÓ 3Ò3Ð 3Ñ3øð} ò ØƒNðús   Â2J ÊJÊJ