
    X-PhA                    >   U d Z ddlmZ ddlZddlmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZ dd	lmZ dd
lmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z. ddl/m0Z0 ddl1m2Z2 ddl3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z> ddl?m@Z@ dZAdeBd<   dZCdeBd<   dZDdeBd<   dZEdeBd<   dZFdeBd<   g dZGdeBd<    G d de0          ZH	 	 d9d:d*ZId;d+ZJd<d.ZK G d/ d0e;eL                   ZMd<d1ZN G d2 d3eM          ZOd<d4ZPd<d5ZQd=d7ZRd>d8ZSdS )?z?Utilities for calculating and reporting statistics about types.    )annotationsN)Counter)Iterator)contextmanager)Final)nodes)map_formals_to_actuals)AssignmentExprAssignmentStmt	BreakStmt	BytesExprCallExprClassDefComparisonExprComplexExprContinueStmtEllipsisExpr
ExpressionExpressionStmt	FloatExprFuncDefImport	ImportAll
ImportFrom	IndexExprIntExpr
MemberExprMypyFileNameExprNodeOpExprPassStmtRefExprStrExprTypeApplication	UnaryExprYieldFromExpr)TraverserVisitor)collect_all_inner_types)AnyTypeCallableTypeFunctionLikeInstance	TupleTypeType	TypeOfAny	TypeQueryTypeVarTypeget_proper_typeget_proper_types)correct_relative_importr   
TYPE_EMPTY   TYPE_UNANALYZED   TYPE_PRECISE   TYPE_IMPRECISE   TYPE_ANY)empty
unanalyzedprecise	impreciseanyprecision_namesc                      e Zd Z	 	 	 d`dadZdb fdZdcdZdddZdedZdfdZdg fdZ	e
dhd             Zdid!Zdjd#Zdk fd%Zdl fd'Zdm fd)Zdnd+Zdod-Zdpd/Zdq fd1Zdrd3Zdsd5Zdsd6Zdtd9Zdu fd;Zdv fd=Zdw fd?Zdx fdAZdy fdCZdz fdEZd{dGZd|dIZ d}dKZ!d~dMZ"ddOZ#ddQZ$ddTZ%ddVZ&ddYZ'dd[Z(dd_Z) xZ*S )StatisticsVisitorNFTinferredboolfilenamestrmodulesdict[str, MypyFile]typemapdict[Expression, Type] | None	all_nodesvisit_untyped_defsreturnNonec                |   || _         || _        || _        || _        || _        || _        d| _        d| _        d| _        d| _	        d| _
        d| _        d| _        d| _        d| _        d| _        d| _        i | _        t%                      | _        i | _        dg| _        g | _        t/          j        |            d S )Nr   T)rG   rI   rK   rM   rO   rP   num_precise_exprsnum_imprecise_exprsnum_any_exprsnum_simple_typesnum_generic_typesnum_tuple_typesnum_function_typesnum_typevar_typesnum_complex_typesnum_any_typeslineline_mapr   type_of_any_counterany_line_mapchecked_scopesoutputr(   __init__)selfrG   rI   rK   rM   rO   rP   s          J/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mypy/stats.pyre   zStatisticsVisitor.__init__H   s     ! ""4!"#$  !!" "#!"!"	(*18 68  $f!#!$'''''    or   c                p    || _         |j        | _        t                                          |           d S N)cur_mod_nodefullname
cur_mod_idsupervisit_mypy_filerf   ri   	__class__s     rg   rp   z!StatisticsVisitor.visit_mypy_fileu   s2    *"""""rh   impr   c                0    |                      |           d S rk   process_importrf   rs   s     rg   visit_import_fromz#StatisticsVisitor.visit_import_fromz       C     rh   r   c                0    |                      |           d S rk   ru   rw   s     rg   visit_import_allz"StatisticsVisitor.visit_import_all}   ry   rh   ImportFrom | ImportAllc                    t          | j        |j        |j        | j                                                  \  }}|r|| j        v rt          }nt          }| 	                    |j
        |           d S rk   )r5   rn   relativeidrl   is_package_init_filerK   r:   r>   record_liner_   )rf   rs   	import_idokkinds        rg   rv   z StatisticsVisitor.process_import   ss    /OS\3643D3Y3Y3[3[
 
	2  	)t|++DDD4(((((rh   r   c                     t           fd|j        D                       rt          }nt          }                     |j        |           d S )Nc              3  0   K   | ]\  }}|j         v V  d S rk   )rK   ).0r   _rf   s      rg   	<genexpr>z1StatisticsVisitor.visit_import.<locals>.<genexpr>   s.      77eb!rT\!777777rh   )allidsr:   r>   r   r_   )rf   rs   r   s   `  rg   visit_importzStatisticsVisitor.visit_import   sT    7777sw77777 	DDD4(((((rh   r   c                   |                      |          5  |j        | _        t          |j                  dk    r|j        |gt          |j                  z  k    r{||j        v r;t	          d                    | j        |j                             	 d d d            d S |j        D ].}t          |t                    sJ | 	                    |           /n|j
        rt          |j
        t                    sJ |j
        }|j        }|j        r"|j        d         dk    r| j        s
|dd          }|D ]}| 
                    |           | 
                    |j                   n'| j        r |                     | j        t$                     |                                r| j        r!t+                      	                    |           d d d            d S # 1 swxY w Y   d S )Nr7   z3{}:{}: ERROR: cycle in function expansion; skippingr   rf   )enter_scoper_   lenexpandedprintformatrI   
isinstancer   visit_func_deftyper+   	arg_types	arg_namesrG   ret_typerO   r   r>   
is_dynamicrP   ro   )rf   ri   defnsigr   argrr   s         rg   r   z StatisticsVisitor.visit_func_def   sI   a   	. 	.DI1:""qzaS3qz??5J'J'J
??MTT M16   
 	. 	. 	. 	. 	. 	. 	. 	. J . .D%dG44444''----. 6 
:%afl;;;;;&C #I} 2q)9V)C)CDM)C$-abbM	( ' '		#IIcl++++^ :$$TY999||~~ .)@ .GG**1---5	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.s   A=G!D)GGGIterator[None]c              #     K   | j                             |j        d uo| j         d                    d V  | j                                          d S NrT   )rc   appendr   poprf   ri   s     rg   r   zStatisticsVisitor.enter_scope   sU      ""16#5#Q$:Mb:QRRR


!!!!!rh   c                    | j         d         S r   )rc   )rf   s    rg   is_checked_scopez"StatisticsVisitor.is_checked_scope   s    "2&&rh   r   c                    |                      |j        t                     |j        D ]}|                    |            |j                            |            d S rk   )r   r_   r:   
decoratorsacceptdefs)rf   ri   ds      rg   visit_class_defz!StatisticsVisitor.visit_class_def   sX    ...
  	 	AHHTNNNN	drh   r%   c                    |j         | _         |j        D ]}|                     |           t                                          |           d S rk   )r_   typesr   ro   visit_type_application)rf   ri   trr   s      rg   r   z(StatisticsVisitor.visit_type_application   sL    F	 	 	AIIaLLLL&&q)))))rh   r   c                   |j         | _         t          |j        t          j                  r&t          |j        j        t          j                  rd S |j        r6|                     |j                   |j                            |            d S | j	        r| j
        s|j        D ]|}t          |t          j                  r|j        }n|g}|D ]R}t          |t                    r;|j        r4| j        -|                     | j                            |                     S}t%                                          |           d S rk   )r_   r   rvaluer   r   analyzedTypeVarExprr   r   rG   rO   lvalues	TupleExpritemsr#   is_inferred_defrM   getro   visit_assignment_stmt)rf   ri   lvaluer   itemrr   s        rg   r   z'StatisticsVisitor.visit_assignment_stmt   sC   F	ah// 	JHu05
 5
 	 F6 	> IIafHOOD!!!F] 
	>4> 
	>) > >feo66 %"LEE#HE! > >D!$00 >T5I ><3 IIdl&6&6t&<&<===> 	%%a(((((rh   r   c                    t          |j        t          t          f          r"|                     |j        t                     d S t                                          |           d S rk   )	r   exprr$   r   r   r_   r6   ro   visit_expression_stmtrq   s     rg   r   z'StatisticsVisitor.visit_expression_stmt   sX    afw	233 	-QVZ00000GG))!,,,,,rh   r"   c                0    |                      |           d S rk   record_precise_if_checked_scoper   s     rg   visit_pass_stmtz!StatisticsVisitor.visit_pass_stmt       ,,Q/////rh   r   c                0    |                      |           d S rk   r   r   s     rg   visit_break_stmtz"StatisticsVisitor.visit_break_stmt   r   rh   r   c                0    |                      |           d S rk   r   r   s     rg   visit_continue_stmtz%StatisticsVisitor.visit_continue_stmt   r   rh   r   c                    |j         dv r|                     |           d S |                     |           t                                          |           d S )N)zbuiltins.Nonezbuiltins.Truezbuiltins.Falsezbuiltins.Ellipsis)rm   r   process_nodero   visit_name_exprrq   s     rg   r   z!StatisticsVisitor.visit_name_expr   s]    :bbb0033333a   GG##A&&&&&rh   r'   c                L    |j         r|j                             |            d S d S rk   )r   r   r   s     rg   visit_yield_from_exprz'StatisticsVisitor.visit_yield_from_expr   s0    6 	 FMM$	  	 rh   r   c                   |                      |           |j        r|j                            |            d S |j                            |            |j        D ]}|                    |            |                     |           d S rk   )r   r   r   calleeargsrecord_call_target_precision)rf   ri   as      rg   visit_call_exprz!StatisticsVisitor.visit_call_expr   s    !: 	1Jd#####HOOD!!!V  --a00000rh   c                    | j         r|j        | j         vrdS t          | j         |j                           }t          |t                    r|                     ||           dS dS )z9Record precision of formal argument types used in a call.N)rM   r   r3   r   r+    record_callable_target_precision)rf   ri   callee_types      rg   r   z.StatisticsVisitor.record_call_target_precision  sh    | 	qxt|;;F%dl18&<==k<00 	11![AAAAADrh   r   r+   c                   | j         sJ | j         t          j        j        |j        |j        fd          }|D ]}|D ]}t	          |j        |                   }t          |t                    r!|                     j	        t                     Rt          |          r |                     j	        t                     dS )aJ  Record imprecision caused by callee argument types.

        This only considers arguments passed in a call expression. Arguments
        with default values that aren't provided in a call arguably don't
        contribute to typing imprecision at the *call site* (but they
        contribute at the function definition).
        c                *    j         |                   S rk   )r   )nri   rM   s    rg   <lambda>zDStatisticsVisitor.record_callable_target_precision.<locals>.<lambda>   s    gafQi( rh   N)rM   r	   	arg_kindsr   r3   r   r   r*   r   r_   r>   is_impreciser<   )rf   ri   r   actual_to_formalformalsr   formalrM   s    `     @rg   r   z2StatisticsVisitor.record_callable_target_precision  s     |,1KK(((((
 
 ( 	= 	=G = =()9!)<==fg.. =$$QVX6666!&)) =$$QV^<<<=	= 	=rh   r   c                t    |                      |           t                                          |           d S rk   )r   ro   visit_member_exprrq   s     rg   r   z#StatisticsVisitor.visit_member_expr*  s5    !!!!$$$$$rh   r!   c                t    |                      |           t                                          |           d S rk   )r   ro   visit_op_exprrq   s     rg   r   zStatisticsVisitor.visit_op_expr.  s5    !a     rh   r   c                t    |                      |           t                                          |           d S rk   )r   ro   visit_comparison_exprrq   s     rg   r   z'StatisticsVisitor.visit_comparison_expr2  5    !%%a(((((rh   r   c                t    |                      |           t                                          |           d S rk   )r   ro   visit_index_exprrq   s     rg   r   z"StatisticsVisitor.visit_index_expr6  5    !  #####rh   r
   c                t    |                      |           t                                          |           d S rk   )r   ro   visit_assignment_exprrq   s     rg   r   z'StatisticsVisitor.visit_assignment_expr:  r   rh   r&   c                t    |                      |           t                                          |           d S rk   )r   ro   visit_unary_exprrq   s     rg   r   z"StatisticsVisitor.visit_unary_expr>  r   rh   r$   c                0    |                      |           d S rk   r   r   s     rg   visit_str_exprz StatisticsVisitor.visit_str_exprB  r   rh   r   c                0    |                      |           d S rk   r   r   s     rg   visit_bytes_exprz"StatisticsVisitor.visit_bytes_exprE  r   rh   r   c                0    |                      |           d S rk   r   r   s     rg   visit_int_exprz StatisticsVisitor.visit_int_exprH  r   rh   r   c                0    |                      |           d S rk   r   r   s     rg   visit_float_exprz"StatisticsVisitor.visit_float_exprK  r   rh   r   c                0    |                      |           d S rk   r   r   s     rg   visit_complex_exprz$StatisticsVisitor.visit_complex_exprN  r   rh   r   c                0    |                      |           d S rk   r   r   s     rg   visit_ellipsisz StatisticsVisitor.visit_ellipsisQ  r   rh   noder   c                    | j         rB| j        =|j        | _        |                     | j                            |                     d S d S d S rk   )rO   rM   r_   r   r   )rf   r   s     rg   r   zStatisticsVisitor.process_nodeV  sU    > 	2|' I			$,**40011111	2 	2''rh   r    c                    t          |t                    r| j        r|| j        vrt          }n#|                                 rt
          }nt          }|                     |j        |           d S rk   )	r   r   rM   r8   r   r:   r>   r   r_   )rf   r   r   s      rg   r   z1StatisticsVisitor.record_precise_if_checked_scope\  sn    dJ'' 	DL 	T=U=U"DD""$$ 	DDDD)))))rh   r   Type | Nonec                   t          |          }|s"|                     | j        t                     d S t	          |t
                    r1t          |          r"|                     | j        t                     d S t	          |t
                    rN|                     d| j        z             | xj	        dz  c_	        |                     | j        t                     n| j        st          |          s| j        r]t          |          rN|                     d| j        z             | xj        dz  c_        |                     | j        t                     n0| xj        dz  c_        |                     | j        t                     t#          t%          |                    |gz   D ]}t	          |t
                    rt'          |          }t          |          r7| j        |j        xx         dz  cc<   | xj        dz  c_        | j        | j        v r&| j        | j                                     |           |g| j        | j        <   t	          |t2                    rZ|j        rAt7          d |j        D                       r| xj        dz  c_        | xj        dz  c_        | xj        dz  c_        t	          |t>                    r| xj         dz  c_         <t	          |tB                    rBt7          d |j"        D                       r| xj        dz  c_        | xj#        dz  c_#        t	          |tH                    r| xj%        dz  c_%        d S )Nz  !! Any type around line %dr7   z"  !! Imprecise type around line %dc              3  4   K   | ]}t          |          V  d S rk   
is_complex)r   r   s     rg   r   z)StatisticsVisitor.type.<locals>.<genexpr>  s(      ??s:c????????rh   c              3  4   K   | ]}t          |          V  d S rk   r   )r   r   s     rg   r   z)StatisticsVisitor.type.<locals>.<genexpr>  s*      >>Dz$''>>>>>>rh   )&r3   r   r_   r8   r   r*   is_special_form_anyr:   logrW   r>   rO   r   is_imprecise2rV   r<   rU   r4   r)   get_original_anyra   type_of_anyr^   rb   r   r-   r   rC   r]   rY   rX   r,   r[   r.   r   rZ   r2   r\   )rf   r   typs      rg   r   zStatisticsVisitor.typee  s   A 	 TY888Fa!! 	&9!&<&< 	TY555Fa!! 
	6HH3di?@@@!#TY1111. 	6\!__ 	6$. 	6][\M]M] 	6HH9DIEFFF$$)$$TY7777""a'""TY555#$;A$>$>??1#E 	, 	,C#w'' ,&s++&s++ (999Q>999""a'""9 111%di077<<<<475D%di00C** ,8 /??ch????? 4..!3.....!3...))Q.)))C.. ,''1,'''C++ ,>>CI>>>>> .**a/***((A-(((C-- ,&&!+&&7	, 	,rh   stringc                :    | j                             |           d S rk   )rd   r   )rf   r  s     rg   r  zStatisticsVisitor.log  s    6"""""rh   r_   int	precisionc                r    t          || j                            |t                              | j        |<   d S rk   )maxr`   r   r6   )rf   r_   r
  s      rg   r   zStatisticsVisitor.record_line  s0    !)T]->->tZ-P-PQQdrh   )NFT)rG   rH   rI   rJ   rK   rL   rM   rN   rO   rH   rP   rH   rQ   rR   )ri   r   rQ   rR   )rs   r   rQ   rR   )rs   r   rQ   rR   )rs   r|   rQ   rR   )rs   r   rQ   rR   )ri   r   rQ   rR   )ri   r   rQ   r   )rQ   rH   )ri   r   rQ   rR   )ri   r%   rQ   rR   )ri   r   rQ   rR   )ri   r   rQ   rR   )ri   r"   rQ   rR   )ri   r   rQ   rR   )ri   r   rQ   rR   )ri   r   rQ   rR   )ri   r'   rQ   rR   )ri   r   rQ   rR   )ri   r   r   r+   rQ   rR   )ri   r   rQ   rR   )ri   r!   rQ   rR   )ri   r   rQ   rR   )ri   r   rQ   rR   )ri   r
   rQ   rR   )ri   r&   rQ   rR   )ri   r$   rQ   rR   )ri   r   rQ   rR   )ri   r   rQ   rR   )ri   r   rQ   rR   )ri   r   rQ   rR   )ri   r   rQ   rR   )r   r   rQ   rR   )r   r    rQ   rR   )r   r   rQ   rR   )r  rJ   rQ   rR   )r_   r	  r
  r	  rQ   rR   )+__name__
__module____qualname__re   rp   rx   r{   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   __classcell__rr   s   @rg   rF   rF   G   s        26#'+( +( +( +( +(Z# # # # # #
! ! ! !! ! ! !) ) ) )) ) ) ). . . . . .: " " " ^"
' ' ' '   * * * * * *) ) ) ) ) )4- - - - - -0 0 0 00 0 0 00 0 0 0' ' ' ' ' '       1 1 1 1	 	 	 	= = = =2% % % % % %! ! ! ! ! !) ) ) ) ) )$ $ $ $ $ $) ) ) ) ) )$ $ $ $ $ $0 0 0 00 0 0 00 0 0 00 0 0 00 0 0 00 0 0 0
2 2 2 2* * * *6, 6, 6, 6,p# # # #R R R R R R R Rrh   rF   Ftreer   pathrJ   rK   rL   rG   rH   rM   rN   rQ   rR   c                   t          |          rd S t          |           t          || j        ||          }|                     |           |j        D ]}t          |           t          d           t          d|j                   t          d|j                   t          d|j                   t          d           t          d|j	                   t          d|j
                   t          d	|j                   t          d
|j                   t          d|j                   t          d|j                   t          d|j                   d S )N)rI   rK   rM   z  ** precision **z  precise  z  imprecisez  any      z  ** kinds **z  simple   z  generic  z  function z  tuple    z  TypeVar  z  complex  )is_special_moduler   rF   rm   r   rd   rU   rV   rW   rX   rY   r[   rZ   r\   r]   r^   )r  r  rK   rG   rM   visitorr_   s          rg   dump_type_statsr    sN     	$KKK4='[bcccGKK  d	
	-2333	-4555	-.///	/	-1222	-2333	-3444	-0111	-2333	-2333	-./////rh   c                D    t           j                            |           dv S )N)zabc.pyiz
typing.pyizbuiltins.pyi)osr  basename)r  s    rg   r  r    s    7D!!%NNNrh   r   r/   c                D    |                      t                                S rk   )r   HasAnyQueryr   s    rg   r   r     s    88KMM"""rh   c                  (     e Zd Zd fdZd	dZ xZS )
r  rQ   rR   c                T    t                                          t                     d S rk   )ro   re   rC   )rf   rr   s    rg   re   zHasAnyQuery.__init__  s!    rh   r   r*   rH   c                "    t          |           S rk   )r  rf   r   s     rg   	visit_anyzHasAnyQuery.visit_any  s    &q))))rh   )rQ   rR   r   r*   rQ   rH   )r  r  r  re   r"  r  r  s   @rg   r  r    sQ             * * * * * * * *rh   r  c                D    |                      t                                S rk   )r   HasAnyQuery2r  s    rg   r  r    s    88LNN###rh   c                      e Zd ZddZdS )r%  r   r+   rQ   rH   c                    dS )NF r!  s     rg   visit_callable_typez HasAnyQuery2.visit_callable_type  s	     urh   N)r   r+   rQ   rH   )r  r  r  r)  r(  rh   rg   r%  r%    s(             rh   r%  c                r    t          |           } t          | t                    ot          | j                  S rk   )r3   r   r-   rH   r   r  s    rg   
is_genericr+    s,    Aa""3tAF||3rh   c                    t          |           } t          |           p!t          | t          t          t
          f          S rk   )r3   r+  r   r,   r.   r2   r  s    rg   r   r     s1    Aa==QJq<K*PQQQrh   r*   c                F    t          |           j        t          j        k    S rk   )r  r  r0   special_formr  s    rg   r  r    s    A*i.DDDrh   c                    | j         t          j        k    r,| j        sJ | j        j         t          j        k    sJ | j        } | S rk   )r  r0   from_another_any
source_anyr  s    rg   r  r    sE    }	222||'9+EEEEELHrh   )FN)r  r   r  rJ   rK   rL   rG   rH   rM   rN   rQ   rR   )r  rJ   rQ   rH   )r   r/   rQ   rH   r#  )r   r*   rQ   r*   )T__doc__
__future__r   r  collectionsr   collections.abcr   
contextlibr   typingr   mypyr   mypy.argmapr	   
mypy.nodesr
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   mypy.traverserr(   mypy.typeanalr)   
mypy.typesr*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   	mypy.utilr5   r6   __annotations__r8   r:   r<   r>   rD   rF   r  r  r   rH   r  r  r%  r+  r   r  r  r(  rh   rg   <module>r@     sU   E E E " " " " " " 				       $ $ $ $ $ $ % % % % % %             . . . . . .                                                               @ , + + + + + 1 1 1 1 1 1                          . - - - - -
                    OOO O O O OZR ZR ZR ZR ZR( ZR ZR ZRB -10 0 0 0 08O O O O# # # #* * * * *)D/ * * *$ $ $ $    ;   4 4 4 4
R R R R
E E E E     rh   