
    X-Ph'                       d Z 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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  ddl!m"Z"m#Z# ddl$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z- ddl.m/Z/  G d de          Z0e G d d                      Z1e G d de"                      Z2 G d d          Z3dS )z;Shared definitions used by different parts of type checker.    )annotations)abstractmethod)IteratorSequence)contextmanager)
NamedTupleoverload)trait)	ErrorCode)ErrorWatcher)ErrorMessage)ArgKindContext
ExpressionFuncItem
LambdaExprMypyFileNodeRefExpr	TypeAliasTypeInfoVar)CheckerPluginInterfacePlugin)	CallableTypeInstanceLiteralValue
OverloadedPartialType	TupleTypeTypeTypedDictTypeTypeType)fill_typevarsc                  $    e Zd ZU ded<   ded<   dS )	TypeRanger!   itemboolis_upper_boundN)__name__
__module____qualname____annotations__     S/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mypy/checker_shared.pyr&   r&   -   s'         JJJr/   r&   c                  B   e Zd Ze	 	 	 	 dAdBd            ZedCdDd            ZedEd            Ze	 	 	 	 	 dFdGd%            Ze	 	 dHdId&            ZedJd)            Z	e	 dKdLd,            Z
edd-dMd2            Ze	 dCdNd8            ZedOd<            ZedPd@            ZdS )QExpressionCheckerSharedApiNFnoder   type_contextType | Noneallow_none_returnr(   always_allow_any	is_calleereturnr!   c                    t           NNotImplementedError)selfr3   r4   r6   r7   r8   s         r0   acceptz!ExpressionCheckerSharedApi.accept4   s
     "!r/   er   lvaluec                    t           r;   r<   )r>   r@   rA   s      r0   analyze_ref_exprz+ExpressionCheckerSharedApi.analyze_ref_expr?       !!r/   r   r   c                    t           r;   r<   r>   r3   s     r0   module_typez&ExpressionCheckerSharedApi.module_typeC   rD   r/   calleeargslist[Expression]	arg_kindslist[ArgKind]contextr   	arg_namesSequence[str | None] | Nonecallable_nodeExpression | Nonecallable_name
str | Noneobject_typeoriginal_typetuple[Type, Type]c
                    t           r;   r<   )
r>   rH   rI   rK   rM   rN   rP   rR   rT   rU   s
             r0   
check_callz%ExpressionCheckerSharedApi.check_callG   s
     "!r/   c                    t           r;   r<   )r>   rR   rH   rI   rK   rM   rN   rT   s           r0   transform_callee_typez0ExpressionCheckerSharedApi.transform_callee_typeV   s
     "!r/   method_namestrc                    t           r;   r<   )r>   rT   r[   s      r0   method_fullnamez*ExpressionCheckerSharedApi.method_fullnamec   rD   r/   method	base_typec                    t           r;   r<   )r>   r_   r`   rI   rK   rM   rU   s          r0   check_method_call_by_namez4ExpressionCheckerSharedApi.check_method_call_by_nameg   s
     "!r/   )alias_definitionaliasr   ctxrc   c                   t           r;   r<   )r>   rd   re   rc   s       r0   alias_type_in_runtime_contextz8ExpressionCheckerSharedApi.alias_type_in_runtime_contexts   
     "!r/   td_typer"   indexsetitemtuple[Type, set[str]]c                    t           r;   r<   )r>   ri   rj   rk   s       r0   visit_typeddict_index_exprz5ExpressionCheckerSharedApi.visit_typeddict_index_expry   rh   r/   infor   r   c                    t           r;   r<   r>   ro   s     r0   typeddict_callablez-ExpressionCheckerSharedApi.typeddict_callable   rD   r/   valuer   fallback_namec                    t           r;   r<   )r>   rs   rt   s      r0   infer_literal_expr_typez2ExpressionCheckerSharedApi.infer_literal_expr_type   rD   r/   )NFFF)r3   r   r4   r5   r6   r(   r7   r(   r8   r(   r9   r!   )F)r@   r   rA   r(   r9   r!   )r3   r   r9   r   )NNNNN)rH   r!   rI   rJ   rK   rL   rM   r   rN   rO   rP   rQ   rR   rS   rT   r5   rU   r5   r9   rV   NN)rR   rS   rH   r!   rI   rJ   rK   rL   rM   r   rN   rO   rT   r5   r9   r!   )rT   r!   r[   r\   r9   rS   r;   )r_   r\   r`   r!   rI   rJ   rK   rL   rM   r   rU   r5   r9   rV   )rd   r   re   r   rc   r(   r9   r!   )ri   r"   rj   r   rk   r(   r9   rl   )ro   r   r9   r   )rs   r   rt   r\   r9   r!   )r*   r+   r,   r   r?   rC   rG   rX   rZ   r^   rb   rg   rn   rr   rv   r.   r/   r0   r2   r2   2   s        %)"'!&" " " " ^" " " " " ^" " " " ^"  26+/$(#'%)" " " " ^"  26#'
" 
" 
" 
" ^
" " " " ^"  &*	" 	" 	" 	" ^	" JO" " " " " ^"
 IN" " " " ^"
 " " " ^" " " " ^" " "r/   r2   c                     e Zd ZU ded<   ded<   ded<   ded<   eedQd                        ZedRd            ZedSd            ZedTd            Z	edUd            Z
edVd            Zee	 	 dWd d d d!dXd.                        Zee	 	 dWd d d/dYd1                        Ze	 	 dWd d d d!dZd3            Zed[d4            Zee	 d\d]d;                        Zeed^d=                        Ze	 d\d_d?            Zed`dA            Zed`dB            Zed dCdadF            ZedbdH            ZedcdK            ZeedddM                        ZededP            Zd S )fTypeCheckerSharedApir   pluginzset[str]module_refsCheckerScopescoper(   checking_missing_awaitr9   r2   c                    t           r;   r<   r>   s    r0   expr_checkerz!TypeCheckerSharedApi.expr_checker   
     "!r/   namer\   r   c                    t           r;   r<   )r>   r   s     r0   
named_typezTypeCheckerSharedApi.named_type   rD   r/   fullnamer   c                    t           r;   r<   )r>   r   s     r0   lookup_typeinfoz$TypeCheckerSharedApi.lookup_typeinfo   rD   r/   r3   r   r!   c                    t           r;   r<   rF   s     r0   lookup_typez TypeCheckerSharedApi.lookup_type   rD   r/   rM   r   Nonec                    t           r;   r<   )r>   r   rM   s      r0   handle_cannot_determine_typez1TypeCheckerSharedApi.handle_cannot_determine_type   rD   r/   typr   	is_lvaluer   c                    t           r;   r<   )r>   r   r   r3   rM   s        r0   handle_partial_var_typez,TypeCheckerSharedApi.handle_partial_var_type   rh   r/   N)notescodeouter_contextsubtype	supertypemsgsubtype_labelrS   supertype_labelr   list[str] | Noner   ErrorCode | Noner   Context | Nonec                   d S r;   r.   
r>   r   r   rM   r   r   r   r   r   r   s
             r0   check_subtypez"TypeCheckerSharedApi.check_subtype   s	     sr/   )r   r   r   c                   d S r;   r.   )	r>   r   r   rM   r   r   r   r   r   s	            r0   r   z"TypeCheckerSharedApi.check_subtype   s	     sr/   str | ErrorMessagec                   t           r;   r<   r   s
             r0   r   z"TypeCheckerSharedApi.check_subtype   s
     "!r/   c                    t           r;   r<   r   s    r0   get_final_contextz&TypeCheckerSharedApi.get_final_context   rD   r/   	expr_typetype_rangeslist[TypeRange] | Nonere   defaulttuple[Type | None, Type | None]c                    d S r;   r.   r>   r   r   re   r   s        r0   #conditional_types_with_intersectionz8TypeCheckerSharedApi.conditional_types_with_intersection   s	     +.#r/   rV   c                    d S r;   r.   r   s        r0   r   z8TypeCheckerSharedApi.conditional_types_with_intersection   s	      Cr/   r5   c                    t           r;   r<   r   s        r0   r   z8TypeCheckerSharedApi.conditional_types_with_intersection   s
     "!r/   Node | Nonec                    t           r;   r<   r>   r3   rM   s      r0   check_deprecatedz%TypeCheckerSharedApi.check_deprecated   rD   r/   c                    t           r;   r<   r   s      r0   warn_deprecatedz$TypeCheckerSharedApi.warn_deprecated   rD   r/   )selftypetargetr   c                   t           r;   r<   )r>   r3   rM   r   r   s        r0   warn_deprecated_overload_itemz2TypeCheckerSharedApi.warn_deprecated_overload_item  rh   r/   typec                    t           r;   r<   )r>   r   s     r0   type_is_iterablez%TypeCheckerSharedApi.type_is_iterable  rD   r/   it/Instance | CallableType | TypeType | Overloadedc                    t           r;   r<   )r>   r   rM   s      r0   iterable_item_typez'TypeCheckerSharedApi.iterable_item_type  rh   r/   Iterator[None]c                    t           r;   r<   r   s    r0   checking_await_setz'TypeCheckerSharedApi.checking_await_set  r   r/   local_errorsr   c                    t           r;   r<   )r>   r   r   s      r0   get_precise_awaitable_typez/TypeCheckerSharedApi.get_precise_awaitable_type  rD   r/   )r9   r2   )r   r\   r9   r   )r   r\   r9   r   )r3   r   r9   r!   )r   r\   rM   r   r9   r   )
r   r   r   r(   r3   r   rM   r   r9   r!   rw   )r   r!   r   r!   rM   r   r   r\   r   rS   r   rS   r   r   r   r   r   r   r9   r(   )r   r!   r   r!   rM   r   r   r   r   rS   r   rS   r   r   r   r   r9   r(   )r   r!   r   r!   rM   r   r   r   r   rS   r   rS   r   r   r   r   r   r   r9   r(   )r9   r(   r;   )
r   r!   r   r   re   r   r   r   r9   r   )
r   r!   r   r   re   r   r   r!   r9   rV   )
r   r!   r   r   re   r   r   r5   r9   r   )r3   r   rM   r   r9   r   )
r3   r   rM   r   r   r!   r   r5   r9   r   )r   r!   r9   r(   )r   r   rM   r   r9   r!   )r9   r   )r   r!   r   r   r9   r5   )r*   r+   r,   r-   propertyr   r   r   r   r   r   r   r	   r   r   r   r   r   r   r   r   r   r   r   r.   r/   r0   ry   ry      s        NNN    " " " ^ X" " " " ^" " " " ^" " " " ^" " " " ^" " " " ^"
  %)&* #'!%(,     ^ X  %)&* #'(,     ^ X  %)&*" #'!%(," " " " " ^" " " " ^"  . . . . ^ X.       ^ X 
   $" " " " ^" " " " ^" " " " ^" \`" " " " " ^"
 " " " ^" " " " ^"
 " " " ^ ^" " " " ^" " "r/   ry   c                      e Zd ZU ded<   ddZdd	Zdd
ZddZdddZddZ	ddZ
ed d            Zed!d            ZdS )"r|   z$list[TypeInfo | FuncItem | MypyFile]stackmoduler   r9   r   c                    |g| _         d S r;   )r   )r>   r   s     r0   __init__zCheckerScope.__init__  s    X


r/   FuncItem | Nonec                f    t          | j                  D ]}t          |t                    r|c S d S r;   )reversedr   
isinstancer   r>   r@   s     r0   current_functionzCheckerScope.current_function"  s@    $*%% 	 	A!X&& tr/   c                v    | j         D ]0}t          |t                    rt          |t                    s|c S 1dS )z%Return top-level non-lambda function.N)r   r   r   r   r   s     r0   top_level_functionzCheckerScope.top_level_function(  sE     	 	A!X&& z!Z/H/H tr/   TypeInfo | Nonec                `    t          | j        d         t                    r| j        d         S d S )N)r   r   r   r   s    r0   active_classzCheckerScope.active_class/  s+    djnh// 	":b>!tr/   Nfuncc                    |p|                                  }|s
J d            | j                            |          }|s
J d            | j        |dz
           }t          |t                    r|S dS )z4Is there a class *directly* enclosing this function?z1This method must be called from inside a functionz2CheckerScope stack must always start with a module   N)r   r   rj   r   r   )r>   r   rj   	enclosings       r0   enclosing_classzCheckerScope.enclosing_class4  s    .t,,..HHHHHH
  &&JJJJJJJuqy)	i** 	tr/   Instance | TupleType | Nonec                    |                                  }|s(|                                 r|                                 }|rt          |          S dS )zAn instance or tuple type representing the current class.

        This returns None unless we are in class body or in a method.
        In particular, inside a function nested in method this returns None.
        N)r   r   r   r$   rq   s     r0   active_self_typezCheckerScope.active_self_type?  s\       "" 	*--// 	*''))D 	' &&&tr/   c                    t          | j                  D ](}t          |t                    rt	          |          c S )dS )zBSame as active_self_type() but handle functions nested in methods.N)r   r   r   r   r$   r>   r'   s     r0   current_self_typezCheckerScope.current_self_typeL  sK    TZ(( 	+ 	+D$)) +$T*****+tr/   r'   r   r   c              #  x   K   | j                             |           d V  | j                                          d S r;   r   appendpopr   s     r0   push_functionzCheckerScope.push_functionS  =      
$
r/   ro   r   c              #  x   K   | j                             |           d V  | j                                          d S r;   r   rq   s     r0   
push_classzCheckerScope.push_classY  r   r/   )r   r   r9   r   )r9   r   )r9   r   r;   )r   r   r9   r   )r9   r   )r'   r   r9   r   )ro   r   r9   r   )r*   r+   r,   r-   r   r   r   r   r   r   r   r   r   r   r.   r/   r0   r|   r|     s         ////            
	 	 	 	 	          ^
    ^  r/   r|   N)4__doc__
__future__r   abcr   collections.abcr   r   
contextlibr   typingr   r	   mypy_extensionsr
   mypy.errorcodesr   mypy.errorsr   mypy.message_registryr   
mypy.nodesr   r   r   r   r   r   r   r   r   r   r   mypy.pluginr   r   
mypy.typesr   r   r   r   r   r    r!   r"   r#   mypy.typevarsr$   r&   r2   ry   r|   r.   r/   r0   <module>r      s   A A " " " " " "       . . . . . . . . % % % % % % ' ' ' ' ' ' ' ' ! ! ! ! ! ! % % % % % % $ $ $ $ $ $ . . . . . .                          7 6 6 6 6 6 6 6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 ( ' ' ' ' '
    
   
 R" R" R" R" R" R" R" R"j O" O" O" O" O"1 O" O" O"dB B B B B B B B B Br/   