
    mi[                    ,   U d dl mZ d dlmZ d dlmZ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 d dlmZmZmZmZmZmZmZ d dlmZmZmZmZmZm Z m!Z!m"Z" d d	l#m$Z$ d d
l%m&Z&m'Z'm(Z(m)Z)m*Z* d dl+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1 d dl2m3Z3m4Z4m5Z5m6Z6 d dl7m8Z8m9Z9m:Z: d dl;m<Z<m=Z=m>Z>m?Z? d dl@mAZAmBZBmCZCmDZD d dlEmFZF d dlGmHZHmIZI d dlJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZY d eKD             ZZde[d<   d eKD             Z\de[d<   d eKD             Z]de[d<   d eKD             d eKD             z  d eKD             z  d eKD             z  Z^de[d<    G d d e          Z_d9d%Z`d:d(Zad9d)Zbd:d*Zcd9d+Zdd:d,Zed:d-Zf egd.d/h          Zhde[d0<   d9d1Zid:d2Zjd;d<d6Zkd:d7Zld:d8ZmdS )=    )annotations)partial)CallableFinalN)message_registry)DictExpr
ExpressionIntExprStrExpr	UnaryExpr)AttributeContextClassDefContextFunctionContextFunctionSigContextMethodContextMethodSigContextPlugin)attr_class_maker_callbackattr_class_makersattr_dataclass_makersattr_define_makersattr_frozen_makersattr_tag_callbackevolve_function_sig_callbackfields_function_sig_callback)try_getting_str_literals)ENUM_NAME_ACCESSENUM_VALUE_ACCESS#SINGLEDISPATCH_CALLABLE_CALL_METHOD,SINGLEDISPATCH_REGISTER_CALLABLE_CALL_METHODSINGLEDISPATCH_REGISTER_METHOD)array_constructor_callbackarray_getitem_callbackarray_iter_callbackarray_raw_callbackarray_setitem_callbackarray_value_callback)dataclass_class_maker_callbackdataclass_makersdataclass_tag_callbackreplace_function_sig_callback)enum_member_callbackenum_name_callbackenum_value_callback)'functools_total_ordering_maker_callbackfunctools_total_ordering_makerspartial_call_callbackpartial_new_callback)4call_singledispatch_function_after_register_argument%call_singledispatch_function_callback'create_singledispatch_function_callback singledispatch_register_callback)
is_subtype)is_literal_type_likemake_simplified_union)TPDICT_FB_NAMESAnyTypeCallableTypeFunctionLikeInstanceLiteralTypeNoneType	TupleTypeTypeTypedDictType	TypeOfAnyTypeVarType	UnionTypeget_proper_typeget_proper_typesc                    h | ]}|d z   S )z.setdefault .0ns     l/var/www/html/bestrading.cuttalo.com/scripts/kaggle-env/lib/python3.11/site-packages/mypy/plugins/default.py	<setcomp>rO   S   s    IIIAa-/III    r   TD_SETDEFAULT_NAMESc                    h | ]}|d z   S )z.poprJ   rK   s     rN   rO   rO   T   s    ;;;aq6z;;;rP   TD_POP_NAMESc                    h | ]}|d z   S )z.__delitem__rJ   rK   s     rN   rO   rO   U   s    GGG!1~-GGGrP   TD_DELITEM_NAMESc                    h | ]}|d z   S )z.updaterJ   rK   s     rN   rO   rO   X   s    ,,,qQ],,,rP   c                    h | ]}|d z   S )z.__or__rJ   rK   s     rN   rO   rO   Y   s    ...q9}...rP   c                    h | ]}|d z   S )z.__ror__rJ   rK   s     rN   rO   rO   Z       ///!q:~///rP   c                    h | ]}|d z   S )z.__ior__rJ   rK   s     rN   rO   rO   [   rY   rP   TD_UPDATE_METHOD_NAMESc                  J    e Zd ZdZddZddZdd
ZddZddZddZ	ddZ
dS )DefaultPluginz/Type checker plugin that is enabled by default.fullnamestrreturn(Callable[[FunctionContext], Type] | Nonec                n    |dk    rt           S |dk    rt          S |dk    rt          S |dk    rt          S d S )Nz_ctypes.Arrayzfunctools.singledispatchzfunctools.partialzenum.member)r"   r5   r2   r,   selfr^   s     rN   get_function_hookzDefaultPlugin.get_function_hookb   sM    &&--333::,,,''&&''trP   3Callable[[FunctionSigContext], FunctionLike] | Nonec                L    |dv rt           S |dv rt          S |dk    rt          S d S )N)zattr.evolvezattrs.evolvez
attr.assoczattrs.assoc)zattr.fieldszattrs.fieldszdataclasses.replace)r   r   r+   rc   s     rN   get_function_signature_hookz)DefaultPlugin.get_function_signature_hookm   s?     SSS//888//...00trP   1Callable[[MethodSigContext], FunctionLike] | Nonec                    |dk    rt           S |t          v rt          S |t          v rt          S |dk    rt
          S |t          k    rt          S |t          v rt          S d S )Ntyping.Mapping.getz_ctypes.Array.__setitem__)
!typed_dict_get_signature_callbackrQ   (typed_dict_setdefault_signature_callbackrS   !typed_dict_pop_signature_callbackr&   r   r4   r[   $typed_dict_update_signature_callbackrc   s     rN   get_method_signature_hookz'DefaultPlugin.get_method_signature_hookx   st     +++44,,,;;%%44444))<<<88///77trP   &Callable[[MethodContext], Type] | Nonec                z   |dk    rt           S |dk    rt          S |dk    rt          S |dk    rt          S |dv rt          S |t
          v rt          S |t          v rt          S |t          v rt          S |dk    rt          S |dk    rt          S |t          k    rt          S |t          k    rt           S |dk    rt"          S d S )	Nrk   zbuiltins.int.__pow__zbuiltins.int.__neg__zbuiltins.int.__pos__)zbuiltins.tuple.__mul__zbuiltins.tuple.__rmul__z_ctypes.Array.__getitem__z_ctypes.Array.__iter__zfunctools.partial.__call__)typed_dict_get_callbackint_pow_callbackint_neg_callbackint_pos_callbacktuple_mul_callbackrQ   typed_dict_setdefault_callbackrS   typed_dict_pop_callbackrU   typed_dict_delitem_callbackr#   r$   r!   r6   r    r3   r1   rc   s     rN   get_method_hookzDefaultPlugin.get_method_hook   s    +++**///##///##///##NNN%%,,,11%%**)))..444))111&&77733EEEGG555((trP   )Callable[[AttributeContext], Type] | Nonec                z    |dk    rt           S |dk    rt          S |t          v rt          S |t          v rt
          S d S )Nz_ctypes.Array.valuez_ctypes.Array.raw)r'   r%   r   r-   r   r.   rc   s     rN   get_attribute_hookz DefaultPlugin.get_attribute_hook   sO    ,,,'',,,%%)))%%***&&trP   (Callable[[ClassDefContext], None] | Nonec                |    |t           v rt          S |t          v s|t          v s|t          v s	|t
          v rt          S d S N)r)   r*   r   r   r   r   r   rc   s     rN   get_class_decorator_hookz&DefaultPlugin.get_class_decorator_hook   sQ    
 ''')))))000------$$trP   (Callable[[ClassDefContext], bool] | Nonec                $   |t           v rt          S |t          v rt          S |t          v rt
          S |t          v rt          t
          d          S |t          v rt          t
          d d          S |t          v rt          t
          d d          S d S )NT)auto_attribs_default)r   frozen_default)r   slots_default)
r)   r(   r0   r/   r   r   r   r   r   r   rc   s     rN   get_class_decorator_hook_2z(DefaultPlugin.get_class_decorator_hook_2   s     '''11888::***,,...44PPPP+++)UY    +++)TX    trP   N)r^   r_   r`   ra   )r^   r_   r`   rf   )r^   r_   r`   ri   )r^   r_   r`   rq   )r^   r_   r`   r|   )r^   r_   r`   r   )r^   r_   r`   r   )__name__
__module____qualname____doc__re   rh   rp   r{   r~   r   r   rJ   rP   rN   r]   r]   _   s        99	 	 	 		 	 	 	   "   :	 	 	 	         rP   r]   ctxr   r`   r<   c                   | j         }t          | j        t                    rt	          | j                  dk    rt	          | j        d                   dk    rt          | j        d         d         t                    rlt	          |j                  dk    rSt	          |j                  dk    r:t	          | j        d                   dk    r| j        d         d         j	        }t          | j        j                            |                    }|j        }|r| j        d         d         }t          |t                    rOt          |t                    r:t	          |j                  dk    r"|                    t!                                }|j        d         }t          |t"                    sJ |                    |j        d         t%          ||g          g|          S |S )zTry to infer a better signature type for TypedDict.get.

    This is used to get better type context for the second argument that
    depends on a TypedDict value type.
       r      required_keys	arg_typesret_type)default_signature
isinstancetyperC   lenargsr   r   	variablesvaluerG   itemsgetr   r   copy_modifiedsetrE   r9   )r   	signaturekey
value_typer   default_argtvs          rN   rl   rl      s    %I38]++MMQ!!sx{1~w// "	#$$))	#$$))!!hqk!n"$SX^%7%7%<%<==
% 	(1+a.K:}55K{H55K )**a// (55CEE5JJ
 $Q'Bb+.....**$.q13H*VXIY3Z3Z[! +    rP   r   rB   c                   t          | j        t                    r@t          | j                  dk    r't          | j        d                   dk    rt          | j        d         d         | j        d         d                   }|| j        S t          | j                  dk    s| j        d         sd}t                      njt          | j        d                   dk    rEt          | j        d                   dk    r'| j        d         d         }| j        d         d         n| j        S g }|D ]}| j        j	        
                    |          }|	| j        c S || j        j        v r|                    |           Qt          |t                    rrt          |j	                  dk    rZt          t          |          x}t                    r6|                    |                    t!                                           |                    |           |                               |v rfd|D             gz   }t#          |          S | j        S )zJInfer a precise return type for TypedDict.get with literal first argument.r   r   Nr   c                     g | ]
}|k    |S rJ   rJ   )rL   tdefault_types     rN   
<listcomp>z+typed_dict_get_callback.<locals>.<listcomp>+  s#    III!qL7H7HA7H7H7HrP   )r   r   rC   r   r   r   r   default_return_typer@   r   r   r   appendr   rG   r   r   r9   )r   keysr   output_typesr   r   vtr   s          @rN   rs   rs      sX    	38]+++3!##a !!Q&&'Aa8H8KLL<** s}""#-*:"K#::LLq!""a''C,<,<,A,A(1+a.K=+A.LL**#% 	6 	6C&)hn&8&8&=&=J!....ch,,,##J//// {H556K-..!33")D)D#D2mTT 4 !''(8(8suu(8(M(MNNNN ''
333 ''5555 <''IIII|III\NZL$\222""rP   c                &   | j         }| j                            dg           }t          | j        t
                    r2t          | j                  dk    rt          | j        d                   dk    rt          | j        d         d         t                    rt          |j	                  dk    rt          |j
                  dk    rt          | j        d                   dk    r| j        d         d         j        }| j        j                            |          }|rN|j
        d         }t          |t                    sJ t          ||g          }|                    ||g|          S |                    ||j	        d         g          S )zTry to infer a better signature type for TypedDict.pop.

    This is used to get better type context for the second argument that
    depends on a TypedDict value type.
    builtins.strr   r   r   r   r   )r   apinamed_generic_typer   r   rC   r   r   r   r   r   r   r   r   rE   r9   r   )r   r   str_typer   r   r   typs          rN   rn   rn   0  so    %Iw))."==H38]++TMMQ!!sx{1~w// "	#$$))	#$$))!!hqk!n"X^'',,
 	T $Q'Bb+.....'R(899C**h_s*SSS""h	8KA8N-O"PPPrP   c                   t          | j        t                    rt          | j                  dk    rt          | j        d                   dk    r| j        d         d         }t          || j        d         d                   }|J| j                            t          j
        |t          j                   t          t          j                  S g }|D ]}|| j        j        v s|| j        j        v r&| j        j                            | j        ||           | j        j                            |          }|r|                    |           {| j        j                            | j        ||           t          t          j                  c S t          | j        d                   dk    rt1          |          S t          | j                  dk    r`t          | j        d                   dk    rBt          | j        d                   dk    r$t1          g || j        d         d                   S | j        S )z=Type check and infer a precise return type for TypedDict.pop.r   r   Ncoder   )r   r   rC   r   r   r   r   r   failr   $TYPEDDICT_KEY_MUST_BE_STRING_LITERALcodesLITERAL_REQr;   rD   
from_errorr   readonly_keysmsgtypeddict_key_cannot_be_deletedr   r   r   typeddict_key_not_foundr9   r   )r   key_exprr   value_typesr   r   s         rN   ry   ry   N  s    	38]++N!##a !!Q&&8A;q>'#-2B12EFF<GLL E&    
 9/000 		5 		5Cch,,,sx7M0M0M;;CHc8TTT++C00J 5"":....33CHc8LLLy344444sx{q  (5551$$S]1-=)>)>!)C)CCHUVKHXHX\]H]H]()L;)La8H8K)LMMM""rP   c                   | j         }| j                            dg           }t          | j        t
                    rt          | j                  dk    rt          | j        d                   dk    rt          | j        d         d         t                    rt          |j	                  dk    rot          | j        d                   dk    rQ| j        d         d         j
        }| j        j                            |          }|r|                    ||g          S |                    ||j	        d         g          S )zTry to infer a better signature type for TypedDict.setdefault.

    This is used to get better type context for the second argument that
    depends on a TypedDict value type.
    r   r   r   r   r   )r   r   r   r   r   rC   r   r   r   r   r   r   r   r   )r   r   r   r   r   s        rN   rm   rm   r  s!    %Iw))."==H38]++MMMQ!!sx{1~w// "	#$$))!!hqk!n"X^'',,
 	M**h
5K*LLL""h	8KA8N-O"PPPrP   c                p   t          | j        t                    rt          | j                  dk    rt          | j        d                   dk    rt          | j        d                   dk    r| j        d         d         }t          || j        d         d                   }|J| j                            t          j
        |t          j                   t          t          j                  S | j        j        t#          |          z  }|r!| j        j                            ||           | j        d         d         }| j        d         d         }g }|D ]}| j        j                            |          }|A| j        j                            | j        ||           t          t          j                  c S t/          ||          s<| j        j                            |||           t          t          j                  c S |                    |           t5          |          S | j        S )z@Type check TypedDict.setdefault and infer a precise return type.r   r   r   Nr   )context)r   r   rC   r   r   r   r   r   r   r   r   r   r   r;   rD   r   r   r   r   readonly_keys_mutatedr   r   r   r7   +typeddict_setdefault_arguments_inconsistentr   r9   r   )	r   r   r   assigned_readonly_keysr   default_exprr   r   r   s	            rN   rx   rx     s    	38]+++2!##a !!Q&&a !!Q&&8A;q>'#-2B12EFF<GLL E&    
 9/000!$!7#d))!C! 	XGK--.Dh-WWW}Q'*x{1~ 	+ 	+C++C00J!33CHc8LLLy344444 lJ77 5GG *l   y344444z****$[111""rP   c                   t          | j        t                    r3t          | j                  dk    rt          | j        d                   dk    r| j        d         d         }t          || j        d         d                   }|J| j                            t          j
        |t          j                   t          t          j                  S |D ]y}|| j        j        v s|| j        j        v r'| j        j                            | j        ||           E|| j        j        vr&| j        j                            | j        ||           z| j        S )z!Type check TypedDict.__delitem__.r   r   Nr   )r   r   rC   r   r   r   r   r   r   r   r   r   r   r;   rD   r   r   r   r   r   r   r   r   )r   r   r   r   s       rN   rz   rz     s>    	38]++M!##a !!Q&&8A;q>'#-2B12EFF<GLL E&    
 9/000 	M 	MCch,,,sx7M0M0M;;CHc8TTTTCHN**33CHc8LLL""rP   zupdate of TypedDictz__ior__ of TypedDict_TP_DICT_MUTATING_METHODSc                   | j         }t          | j        t                    rBt	          |j                  dk    r)t          |j        d                   }t          |t                    s|S |                                }|                    t                                }| j
        r| j
        d         r|j        t          v rd|_        | j        j                            d d          5  t          | j                            | j
        d         d         |                    }ddd           n# 1 swxY w Y   |j        rd	|_        g }t          |t                    r|g}n@t          |t$                    r+d
 t'          |                                          D             }g }|D ]}|                    |j        |j        z  |j                                        z            }| j        j        j        s(|                    t5          |j                            }|                    |           |rt9          |          }|                    |g          S |S )zTry to infer a better signature type for methods that update `TypedDict`.

    This includes: `TypedDict.update`, `TypedDict.__or__`, `TypedDict.__ror__`,
    and `TypedDict.__ior__`.
    r   r   r   Tc                ,    |j         t          j        k    S r   )r   r   TYPEDDICT_READONLY_MUTATED)nameinfos     rN   <lambda>z6typed_dict_update_signature_callback.<locals>.<lambda>  s    e>^1^ rP   )filter_errorssave_filtered_errors)type_contextNFc                <    g | ]}t          |t                    |S rJ   )r   rC   )rL   r   s     rN   r   z8typed_dict_update_signature_callback.<locals>.<listcomp>  s8          !!]33      rP   )
item_namesr   )r   r   r   rC   r   r   rG   as_anonymousr   r   r   r   r   to_be_mutatedr   r   r   get_expression_typerF   rH   relevant_itemsr   r   r   optionsextra_checkslistr   r9   )r   r   arg_typeinferredpossible_tdsr   tditems           rN   ro   ro     s    %I#(M** (=s93F/G/G1/L/L"9#6q#9::(M22 	((**)))>>8 !	8 !	8~!::: *.&**^^%) +     +G//AX/VV 	               % /).&L(M22  (zHi00    -h.E.E.G.GHH     
 E" # #--#+#9B<L#Ln))++#, .   w3 I--bh-HHDT"""" 8077&&(&<<<s   0;D77D;>D;c                .   t          | j                  dk    rt          | j        d                   dk    rt          | j        d                   dk    r| j        d         d         }t          |t                    r|j        }nOt          |t                    r3|j        dk    r(t          |j        t                    r|j        j         }n| j	        S |dk    r| j
                            dg           S | j
                            dg           S | j	        S )z1Infer a more precise return type for int.__pow__.r   r   r   -zbuiltins.intzbuiltins.float)r   r   r   r   r
   r   r   opexprr   r   r   )r   argexponents      rN   rt   rt   	  s     3=Q3s}Q'7#8#8A#=#=#cmTUFVBWBW[\B\B\hqk!nc7## 	+yHHY'' 	+CFcMMjSZ>[>[MHH **q==7--nbAAA7--.>CCC""rP   
multiplierintc                n   t          | j        t                    r| j        j        | j        j        j        }| j        j        j        }t          |t                    rvt          | j        j	        d                   rt          ||z  |          S | j                            t          ||z  || j        j        | j        j                            S n[t          | j        t                    rA| j        j        }| j        j        }t          |t                    rt          ||z  |          S | j        S )zInfer a more precise return type for int.__neg__ and int.__pos__.

    This is mainly used to infer the return type as LiteralType
    if the original underlying object is a LiteralType object.
    Nr   )r   fallback)r   r   linecolumn)last_known_value)r   r   r>   r   r   r   r   r8   r   r   r?   r   r   r   r   )r   r   r   r   s       rN   ru   ru     s.    #(H%% L#(*C*O)/8,5eS!! 	#CG$8$<== 
"e);hOOOOx--%0(50!) X]"x	& & & .   		 
CHk	*	* L8$eS!! 	LZ%%7(KKKK""rP   c                "    t          | d          S )z{Infer a more precise return type for int.__pos__.

    This is identical to __neg__, except the value is not inverted.
    r   )ru   )r   s    rN   rv   rv   :  s    
 C$$$rP   c                   t          | j        t                    s| j        S t	          | j        d         d                   }t          |t                    rQ|j        J|j        j        }t          |t                    r(| j        
                    | j        j        |z            S nYt          |t                    rD|j        }t          |t                    r(| j        
                    | j        j        |z            S | j        S )zInfer a more precise return type for tuple.__mul__ and tuple.__rmul__.

    This is used to return a specific sized tuple if multiplied by Literal int
    r   N)r   )r   r   rA   r   rG   r   r>   r   r   r   r   r   r?   )r   r   r   s      rN   rw   rw   B  s    
 ch	** '&&s}Q/233H(H%% H(*C*O)/eS!! 	H8))0F)GGG	H	Hk	*	* HeS!! 	H8))0F)GGG""rP   )r   r   r`   r<   )r   r   r`   rB   )r   )r   r   r   r   r`   rB   )n
__future__r   	functoolsr   typingr   r   mypy.errorcodes
errorcodesr   mypyr   
mypy.nodesr   r	   r
   r   r   mypy.pluginr   r   r   r   r   r   r   mypy.plugins.attrsr   r   r   r   r   r   r   r   mypy.plugins.commonr   mypy.plugins.constantsr   r   r   r    r!   mypy.plugins.ctypesr"   r#   r$   r%   r&   r'   mypy.plugins.dataclassesr(   r)   r*   r+   mypy.plugins.enumsr,   r-   r.   mypy.plugins.functoolsr/   r0   r1   r2   mypy.plugins.singledispatchr3   r4   r5   r6   mypy.subtypesr7   mypy.typeopsr8   r9   
mypy.typesr:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rQ   __annotations__rS   rU   r[   r]   rl   rs   rn   ry   rm   rx   rz   	frozensetr   ro   rt   ru   rv   rw   rJ   rP   rN   <module>r
     s   " " " " " " "       " " " " " " " "       ! ! ! ! ! ! H H H H H H H H H H H H H H                 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 9 8 8 8 8 8                                        ] \ \ \ \ \ \ \ \ \                       % $ $ $ $ $ D D D D D D D D                                 $ JIIII  I I I I;;?;;; ; ; ; ;GGGGG  G G G G -,O,,,..o...//////0 0////0     u u u u uF u u up% % % %P.# .# .# .#bQ Q Q Q<!# !# !# !#HQ Q Q Q..# .# .# .#b# # # #2 $-9.CE[-\#]#]  ] ] ] ]0 0 0 0f# # # #(# # # # #:% % % %# # # # # #rP   