
    miA                    >   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l1m2Z2m3Z3 ddl4m5Z5 ddl6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@ ddlAmBZB dZCdeDd<   dZEdeDd<   dZFdeDd<   dZGdeDd<   dZHdeDd<   g dZIdeDd<    G d de0          ZJ	 	 d:d;d+ZKd<d,ZLd=d/ZM G d0 d1e3          ZNd=d2ZO G d3 d4eN          ZPd=d5ZQd=d6ZRd>d8ZSd?d9ZTd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)ANY_STRATEGYBoolTypeQuery)collect_all_inner_types)
AnyTypeCallableTypeFunctionLikeInstance	TupleTypeType	TypeOfAny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)rH   rJ   rL   rN   rP   rQ   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__)selfrH   rJ   rL   rN   rP   rQ   s          b/var/www/html/bestrading.cuttalo.com/scripts/kaggle-env/lib/python3.11/site-packages/mypy/stats.pyrf   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rg   rj   	__class__s     rh   rq   z!StatisticsVisitor.visit_mypy_fileu   s2    *"""""ri   impr   c                0    |                      |           d S rl   process_importrg   rt   s     rh   visit_import_fromz#StatisticsVisitor.visit_import_fromz       C     ri   r   c                0    |                      |           d S rl   rv   rx   s     rh   visit_import_allz"StatisticsVisitor.visit_import_all}   rz   ri   ImportFrom | ImportAllc                    t          | j        |j        |j        | j                                                  \  }}|r|| j        v rt          }nt          }| 	                    |j
        |           d S rl   )r6   ro   relativeidrm   is_package_init_filerL   r;   r?   record_liner`   )rg   rt   	import_idokkinds        rh   rw   z StatisticsVisitor.process_import   ss    /OS\3643D3Y3Y3[3[
 
	2  	)t|++DDD4(((((ri   r   c                     t           fd|j        D                       rt          }nt          }                     |j        |           d S )Nc              3  0   K   | ]\  }}|j         v V  d S rl   )rL   ).0r   _rg   s      rh   	<genexpr>z1StatisticsVisitor.visit_import.<locals>.<genexpr>   s.      77eb!rT\!777777ri   )allidsr;   r?   r   r`   )rg   rt   r   s   `  rh   visit_importzStatisticsVisitor.visit_import   sT    7777sw77777 	DDD4(((((ri   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 )Nr8   z3{}:{}: ERROR: cycle in function expansion; skippingr   rg   )enter_scoper`   lenexpandedprintformatrJ   
isinstancer   visit_func_deftyper-   	arg_types	arg_namesrH   ret_typerP   r   r?   
is_dynamicrQ   rp   )rg   rj   defnsigr   argrs   s         rh   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 NrU   )rd   appendr   poprg   rj   s     rh   r   zStatisticsVisitor.enter_scope   sU      ""16#5#Q$:Mb:QRRR


!!!!!ri   c                    | j         d         S r   )rd   )rg   s    rh   is_checked_scopez"StatisticsVisitor.is_checked_scope   s    "2&&ri   r   c                    |                      |j        t                     |j        D ]}|                    |            |j                            |            d S rl   )r   r`   r;   
decoratorsacceptdefs)rg   rj   ds      rh   visit_class_defz!StatisticsVisitor.visit_class_def   sX    ...
  	 	AHHTNNNN	dri   r%   c                    |j         | _         |j        D ]}|                     |           t                                          |           d S rl   )r`   typesr   rp   visit_type_application)rg   rj   trs   s      rh   r   z(StatisticsVisitor.visit_type_application   sL    F	 	 	AIIaLLLL&&q)))))ri   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 rl   )r`   r   rvaluer   r   analyzedTypeVarExprr   r   rH   rP   lvalues	TupleExpritemsr#   is_inferred_defrN   getrp   visit_assignment_stmt)rg   rj   lvaluer   itemrs   s        rh   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(((((ri   r   c                    t          |j        t          t          f          r"|                     |j        t                     d S t                                          |           d S rl   )	r   exprr$   r   r   r`   r7   rp   visit_expression_stmtrr   s     rh   r   z'StatisticsVisitor.visit_expression_stmt   sX    afw	233 	-QVZ00000GG))!,,,,,ri   r"   c                0    |                      |           d S rl   record_precise_if_checked_scoper   s     rh   visit_pass_stmtz!StatisticsVisitor.visit_pass_stmt       ,,Q/////ri   r   c                0    |                      |           d S rl   r   r   s     rh   visit_break_stmtz"StatisticsVisitor.visit_break_stmt   r   ri   r   c                0    |                      |           d S rl   r   r   s     rh   visit_continue_stmtz%StatisticsVisitor.visit_continue_stmt   r   ri   r   c                    |j         dv r|                     |           d S |                     |           t                                          |           d S )N)zbuiltins.Nonezbuiltins.Truezbuiltins.Falsezbuiltins.Ellipsis)rn   r   process_noderp   visit_name_exprrr   s     rh   r   z!StatisticsVisitor.visit_name_expr   s]    :bbb0033333a   GG##A&&&&&ri   r'   c                L    |j         r|j                             |            d S d S rl   )r   r   r   s     rh   visit_yield_from_exprz'StatisticsVisitor.visit_yield_from_expr   s0    6 	 FMM$	  	 ri   r   c                   |                      |           |j        r|j                            |            d S |j                            |            |j        D ]}|                    |            |                     |           d S rl   )r   r   r   calleeargsrecord_call_target_precision)rg   rj   as      rh   visit_call_exprz!StatisticsVisitor.visit_call_expr   s    !: 	1Jd#####HOOD!!!V  --a00000ri   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)rN   r   r4   r   r-    record_callable_target_precision)rg   rj   callee_types      rh   r   z.StatisticsVisitor.record_call_target_precision  sh    | 	qxt|;;F%dl18&<==k<00 	11![AAAAADri   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 rl   )r   )nrj   rN   s    rh   <lambda>zDStatisticsVisitor.record_callable_target_precision.<locals>.<lambda>   s    gafQi( ri   N)rN   r	   	arg_kindsr   r4   r   r   r,   r   r`   r?   is_impreciser=   )rg   rj   r   actual_to_formalformalsr   formalrN   s    `     @rh   r   z2StatisticsVisitor.record_callable_target_precision  s     |,1KK(((((
 
 ( 	= 	=G = =()9!)<==fg.. =$$QVX6666!&)) =$$QV^<<<=	= 	=ri   r   c                t    |                      |           t                                          |           d S rl   )r   rp   visit_member_exprrr   s     rh   r   z#StatisticsVisitor.visit_member_expr*  s5    !!!!$$$$$ri   r!   c                t    |                      |           t                                          |           d S rl   )r   rp   visit_op_exprrr   s     rh   r   zStatisticsVisitor.visit_op_expr.  s5    !a     ri   r   c                t    |                      |           t                                          |           d S rl   )r   rp   visit_comparison_exprrr   s     rh   r   z'StatisticsVisitor.visit_comparison_expr2  5    !%%a(((((ri   r   c                t    |                      |           t                                          |           d S rl   )r   rp   visit_index_exprrr   s     rh   r   z"StatisticsVisitor.visit_index_expr6  5    !  #####ri   r
   c                t    |                      |           t                                          |           d S rl   )r   rp   visit_assignment_exprrr   s     rh   r   z'StatisticsVisitor.visit_assignment_expr:  r   ri   r&   c                t    |                      |           t                                          |           d S rl   )r   rp   visit_unary_exprrr   s     rh   r   z"StatisticsVisitor.visit_unary_expr>  r   ri   r$   c                0    |                      |           d S rl   r   r   s     rh   visit_str_exprz StatisticsVisitor.visit_str_exprB  r   ri   r   c                0    |                      |           d S rl   r   r   s     rh   visit_bytes_exprz"StatisticsVisitor.visit_bytes_exprE  r   ri   r   c                0    |                      |           d S rl   r   r   s     rh   visit_int_exprz StatisticsVisitor.visit_int_exprH  r   ri   r   c                0    |                      |           d S rl   r   r   s     rh   visit_float_exprz"StatisticsVisitor.visit_float_exprK  r   ri   r   c                0    |                      |           d S rl   r   r   s     rh   visit_complex_exprz$StatisticsVisitor.visit_complex_exprN  r   ri   r   c                0    |                      |           d S rl   r   r   s     rh   visit_ellipsisz StatisticsVisitor.visit_ellipsisQ  r   ri   noder   c                    | j         rB| j        =|j        | _        |                     | j                            |                     d S d S d S rl   )rP   rN   r`   r   r   )rg   r   s     rh   r   zStatisticsVisitor.process_nodeV  sU    > 	2|' I			$,**40011111	2 	2''ri   r    c                    t          |t                    r| j        r|| j        vrt          }n#|                                 rt
          }nt          }|                     |j        |           d S rl   )	r   r   rN   r9   r   r;   r?   r   r`   )rg   r   r   s      rh   r   z1StatisticsVisitor.record_precise_if_checked_scope\  sn    dJ'' 	DL 	T=U=U"DD""$$ 	DDDD)))))ri   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 %dr8   z"  !! Imprecise type around line %dc              3  4   K   | ]}t          |          V  d S rl   
is_complex)r   r   s     rh   r   z)StatisticsVisitor.type.<locals>.<genexpr>  s(      ??s:c????????ri   c              3  4   K   | ]}t          |          V  d S rl   r   )r   r   s     rh   r   z)StatisticsVisitor.type.<locals>.<genexpr>  s*      >>Dz$''>>>>>>ri   )&r4   r   r`   r9   r   r,   is_special_form_anyr;   logrX   r?   rP   r   is_imprecise2rW   r=   rV   r5   r+   get_original_anyrb   type_of_anyr_   rc   r   r/   r   rD   r^   rZ   rY   r.   r\   r0   r   r[   r3   r]   )rg   r   typs      rh   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	, 	,ri   stringc                :    | j                             |           d S rl   )re   r   )rg   r  s     rh   r  zStatisticsVisitor.log  s    6"""""ri   r`   int	precisionc                r    t          || j                            |t                              | j        |<   d S rl   )maxra   r   r7   )rg   r`   r  s      rh   r   zStatisticsVisitor.record_line  s0    !)T]->->tZ-P-PQQdri   )NFT)rH   rI   rJ   rK   rL   rM   rN   rO   rP   rI   rQ   rI   rR   rS   )rj   r   rR   rS   )rt   r   rR   rS   )rt   r   rR   rS   )rt   r}   rR   rS   )rt   r   rR   rS   )rj   r   rR   rS   )rj   r   rR   r   )rR   rI   )rj   r   rR   rS   )rj   r%   rR   rS   )rj   r   rR   rS   )rj   r   rR   rS   )rj   r"   rR   rS   )rj   r   rR   rS   )rj   r   rR   rS   )rj   r   rR   rS   )rj   r'   rR   rS   )rj   r   rR   rS   )rj   r   r   r-   rR   rS   )rj   r   rR   rS   )rj   r!   rR   rS   )rj   r   rR   rS   )rj   r   rR   rS   )rj   r
   rR   rS   )rj   r&   rR   rS   )rj   r$   rR   rS   )rj   r   rR   rS   )rj   r   rR   rS   )rj   r   rR   rS   )rj   r   rR   rS   )rj   r   rR   rS   )r   r   rR   rS   )r   r    rR   rS   )r   r   rR   rS   )r  rK   rR   rS   )r`   r
  r  r
  rR   rS   )+__name__
__module____qualname__rf   rq   ry   r|   rw   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__rs   s   @rh   rG   rG   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ri   rG   Ftreer   pathrK   rL   rM   rH   rI   rN   rO   rR   rS   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)rJ   rL   rN   z  ** precision **z  precise  z  imprecisez  any      z  ** kinds **z  simple   z  generic  z  function z  tuple    z  TypeVar  z  complex  )is_special_moduler   rG   rn   r   re   rV   rW   rX   rY   rZ   r\   r[   r]   r^   r_   )r  r  rL   rH   rN   visitorr`   s          rh   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	-./////ri   c                D    t           j                            |           dv S )N)zabc.pyiz
typing.pyizbuiltins.pyi)osr  basename)r  s    rh   r  r    s    7D!!%NNNri   r   r1   c                D    |                      t                                S rl   )r   HasAnyQueryr   s    rh   r   r     s    88KMM"""ri   c                  (     e Zd Zd fdZd	dZ xZS )
r  rR   rS   c                T    t                                          t                     d S rl   )rp   rf   r)   )rg   rs   s    rh   rf   zHasAnyQuery.__init__  s!    &&&&&ri   r   r,   rI   c                "    t          |           S rl   )r  rg   r   s     rh   	visit_anyzHasAnyQuery.visit_any  s    &q))))ri   )rR   rS   r   r,   rR   rI   )r  r  r  rf   r#  r  r  s   @rh   r  r    sQ        ' ' ' ' ' '* * * * * * * *ri   r  c                D    |                      t                                S rl   )r   HasAnyQuery2r  s    rh   r  r    s    88LNN###ri   c                      e Zd ZddZdS )r&  r   r-   rR   rI   c                    dS )NF r"  s     rh   visit_callable_typez HasAnyQuery2.visit_callable_type  s	     uri   N)r   r-   rR   rI   )r  r  r  r*  r)  ri   rh   r&  r&    s(             ri   r&  c                r    t          |           } t          | t                    ot          | j                  S rl   )r4   r   r/   rI   r   r  s    rh   
is_genericr,    s,    Aa""3tAF||3ri   c                    t          |           } t          |           p!t          | t          t          t
          f          S rl   )r4   r,  r   r.   r0   r3   r  s    rh   r   r     s1    Aa==QJq<K*PQQQri   r,   c                F    t          |           j        t          j        k    S rl   )r  r  r2   special_formr  s    rh   r  r    s    A*i.DDDri   c                    | j         t          j        k    r,| j        sJ | j        j         t          j        k    sJ | j        } | S rl   )r  r2   from_another_any
source_anyr  s    rh   r  r    sE    }	222||'9+EEEEELHri   )FN)r  r   r  rK   rL   rM   rH   rI   rN   rO   rR   rS   )r  rK   rR   rI   )r   r1   rR   rI   r$  )r   r,   rR   r,   )U__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.type_visitorr)   r*   mypy.typeanalr+   
mypy.typesr,   r-   r.   r/   r0   r1   r2   r3   r4   r5   	mypy.utilr6   r7   __annotations__r9   r;   r=   r?   rE   rG   r  r  r   r  r  r&  r,  r   r  r  r)  ri   rh   <module>rB     s_   E E E " " " " " " 				       $ $ $ $ $ $ % % % % % %             . . . . . .                                                               @ , + + + + + 9 9 9 9 9 9 9 9 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# # # #* * * * *- * * *$ $ $ $    ;   4 4 4 4
R R R R
E E E E     ri   