
    hiY                    (   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 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.m/Z/m0Z0 d dl1m2Z2m3Z3m4Z4m5Z5 d dl6m7Z7m8Z8m9Z9 d dl:m;Z;m<Z<m=Z=m>Z> d dl?m@Z@mAZAmBZBmCZC d dlDmEZE d dlFmGZGmHZH d dlImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZX d eJD             ZYdeZd<   d eJD             Z[deZd<   d eJD             Z\deZd<   d eJD             d eJD             z  d eJD             z  d eJD             z  Z]deZd<    G d d e          Z^d9d%Z_d:d(Z`d9d)Zad:d*Zbd9d+Zcd:d,Zdd:d-Ze efd.d/h          ZgdeZd0<   d9d1Zhd:d2Zid;d<d6Zjd:d7Zkd:d8ZldS )=    )annotations)partial)CallableFinalN)message_registry)DictExpr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     d/var/www/html/Pagina-Ingenieria-Requisitos/venv/lib/python3.11/site-packages/mypy/plugins/default.py	<setcomp>rN   S   s    IIIAa-/III    r   TD_SETDEFAULT_NAMESc                    h | ]}|d z   S )z.poprI   rJ   s     rM   rN   rN   T   s    ;;;aq6z;;;rO   TD_POP_NAMESc                    h | ]}|d z   S )z.__delitem__rI   rJ   s     rM   rN   rN   U   s    GGG!1~-GGGrO   TD_DELITEM_NAMESc                    h | ]}|d z   S )z.updaterI   rJ   s     rM   rN   rN   X   s    ,,,qQ],,,rO   c                    h | ]}|d z   S )z.__or__rI   rJ   s     rM   rN   rN   Y   s    ...q9}...rO   c                    h | ]}|d z   S )z.__ror__rI   rJ   s     rM   rN   rN   Z       ///!q:~///rO   c                    h | ]}|d z   S )z.__ior__rI   rJ   s     rM   rN   rN   [   rX   rO   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!   r4   r1   r+   selfr]   s     rM   get_function_hookzDefaultPlugin.get_function_hookb   sM    &&--333::,,,''&&''trO   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*   rb   s     rM   get_function_signature_hookz)DefaultPlugin.get_function_signature_hookm   s?     SSS//888//...00trO   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_callbackrP   (typed_dict_setdefault_signature_callbackrR   !typed_dict_pop_signature_callbackr%   r   r3   rZ   $typed_dict_update_signature_callbackrb   s     rM   get_method_signature_hookz'DefaultPlugin.get_method_signature_hookx   st     +++44,,,;;%%44444))<<<88///77trO   &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 )	Nrj   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_callbackrP   typed_dict_setdefault_callbackrR   typed_dict_pop_callbackrT   typed_dict_delitem_callbackr"   r#   r    r5   r   r2   r0   rb   s     rM   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((trO   )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-   rb   s     rM   get_attribute_hookz DefaultPlugin.get_attribute_hook   sO    ,,,'',,,%%)))%%***&&trO   (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   rb   s     rM   get_class_decorator_hookz&DefaultPlugin.get_class_decorator_hook   sQ    
 ''')))))000------$$trO   (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'   r/   r.   r   r   r   r   r   r   rb   s     rM   get_class_decorator_hook_2z(DefaultPlugin.get_class_decorator_hook_2   s     '''11888::***,,...44PPPP+++)UY    +++)TX    trO   N)r]   r^   r_   r`   )r]   r^   r_   re   )r]   r^   r_   rh   )r]   r^   r_   rp   )r]   r^   r_   r{   )r]   r^   r_   r~   )r]   r^   r_   r   )__name__
__module____qualname____doc__rd   rg   ro   rz   r}   r   r   rI   rO   rM   r\   r\   _   s        99	 	 	 		 	 	 	   "   :	 	 	 	         rO   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typerB   lenargsr
   r   	variablesvaluerF   itemsgetr   r   copy_modifiedsetrD   r8   )r   	signaturekey
value_typer   default_argtvs          rM   rk   rk      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[! +    rO   r   rA   c                   t          | j        t                    rEt          | j                  dk    r,t          | j        d                   dk    rt          | j        d         d         | j        d         d                   }|| j        S g }|D ]}t          | j        j	        
                    |                    }|	| j        c S t          | j                  dk    r|                    |           ht          | j                  dk    rt          | j        d                   dk    rt          | j        d                   dk    r| j        d         d         }t          |t                    rdt          |j	                  dk    rLt          |t                    r7|                    |                    t                                           I|                    |           |                    | j        d         d                    t          | j                  dk    r!|                    t                                 t!          |          S | j        S )zJInfer a precise return type for TypedDict.get with literal first argument.r   r   Nr   r   )r   r   rB   r   r   r   r   default_return_typerF   r   r   appendr   r   r   r?   r8   )r   keysoutput_typesr   r   r   s         rM   rr   rr      s)    	38]++!3!##a !!Q&&'Aa8H8KLL<**#% 	= 	=C(););C)@)@AAJ!....3=!!Q&&##J////S]##q((Sq1A-B-Ba-G-GCPSPXYZP[L\L\`aLaLa!hqk!n{H55	=K-..!33":}== 4 !''
(@(@suu(@(U(UVVVV ''
333 ''a(8(;<<<s}""

+++$\222""rO   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   rB   r   r   r
   r   r   r   r   r   rD   r8   r   )r   r   str_typer   r   r   typs          rM   rm   rm   &  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PrO   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   rB   r   r   r   r   r   failr   $TYPEDDICT_KEY_MUST_BE_STRING_LITERALcodesLITERAL_REQr:   rC   
from_errorr   readonly_keysmsgtypeddict_key_cannot_be_deletedr   r   r   typeddict_key_not_foundr8   r   )r   key_exprr   value_typesr   r   s         rM   rx   rx   D  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""rO   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   rB   r   r   r
   r   r   r   r   r   )r   r   r   r   r   s        rM   rl   rl   h  s!    %Iw))."==H38]++MMMQ!!sx{1~w// "	#$$))!!hqk!n"X^'',,
 	M**h
5K*LLL""h	8KA8N-O"PPPrO   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   rB   r   r   r   r   r   r   r   r   r   r   r:   rC   r   r   r   r   readonly_keys_mutatedr   r   r   r6   +typeddict_setdefault_arguments_inconsistentr   r8   r   )	r   r   r   assigned_readonly_keysdefault_typedefault_exprr   r   r   s	            rM   rw   rw     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""rO   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   rB   r   r   r   r   r   r   r   r   r   r   r:   rC   r   r   r   r   r   r   r   r   )r   r   r   r   s       rM   ry   ry     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""rO   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     rM   <lambda>z6typed_dict_update_signature_callback.<locals>.<lambda>  s    e>^1^ rO   )filter_errorssave_filtered_errors)type_contextNFc                <    g | ]}t          |t                    |S rI   )r   rB   )rK   ts     rM   
<listcomp>z8typed_dict_update_signature_callback.<locals>.<listcomp>  s8          !!]33      rO   )
item_namesr   )r   r   r   rB   r   r   rF   as_anonymousr   r   r   r   r   to_be_mutatedr   r   r   get_expression_typerE   rG   relevant_itemsr   r   r   optionsextra_checkslistr   r8   )r   r   arg_typeinferredpossible_tdsr   tditems           rM   rn   rn     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      rM   rs   rs     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""rO   
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   r7   r   r   r>   r   r   r   r   )r   r   r   r   s       rM   rt   rt     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""rO   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   )rt   )r   s    rM   ru   ru   0  s    
 C$$$rO   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   r@   r   rF   r   r=   r   r   r   r   r   r>   )r   r   r   s      rM   rv   rv   8  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""rO   )r   r   r_   r;   )r   r   r_   rA   )r   )r   r   r   r   r_   rA   )m
__future__r   	functoolsr   typingr   r   mypy.errorcodes
errorcodesr   mypyr   
mypy.nodesr   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.   r/   r0   r1   mypy.plugins.singledispatchr2   r3   r4   r5   mypy.subtypesr6   mypy.typeopsr7   r8   
mypy.typesr9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rP   __annotations__rR   rT   rZ   r\   rk   rr   rm   rx   rl   rw   ry   	frozensetr   rn   rs   rt   ru   rv   rI   rO   rM   <module>r     s   " " " " " " "       " " " " " " " "       ! ! ! ! ! ! < < < < < < < < < < < <                 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 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$# $# $# $#NQ Q Q Q<!# !# !# !#HQ Q Q Q..# .# .# .#b# # # #2 $-9.CE[-\#]#]  ] ] ] ]0 0 0 0f# # # #(# # # # #:% % % %# # # # # #rO   