
    iu)                       d Z ddlmZ ddlmZ ddlmZ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l0m1Z1  G d de          Z2e G d d                      Z3e G d de$                      Z4 G d d          Z5dS )z;Shared definitions used by different parts of type checker.    )annotations)abstractmethod)IteratorSequenceSet)contextmanager)
NamedTupleoverload)trait)	ErrorCode)ErrorWatcher)ErrorMessage)ArgKindContext
ExpressionFuncItem
LambdaExprMypyFileNodeRefExpr
SymbolNode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__     R/root/projects/qq-shell/venv/lib64/python3.11/site-packages/mypy/checker_shared.pyr'   r'   -   s'         JJJr0   r'   c                     e Zd Ze	 	 	 	 d<d=d            Zed>d?d            Ze	 	 	 	 	 d@dAd"            Ze	 	 dBdCd#            ZedDd&            Ze	 dEdFd)            Z	e	 d>dGd/            Z
edHd3            Zed4dd5dId;            ZdS )JExpressionCheckerSharedApiNFnoder   type_contextType | Noneallow_none_returnr)   always_allow_any	is_calleereturnr"   c                    t           NNotImplementedError)selfr4   r5   r7   r8   r9   s         r1   acceptz!ExpressionCheckerSharedApi.accept4   
     "!r0   er   lvaluec                    t           r<   r=   )r?   rB   rC   s      r1   analyze_ref_exprz+ExpressionCheckerSharedApi.analyze_ref_expr?       !!r0   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?   rG   rH   rJ   rL   rM   rO   rQ   rS   rT   s
             r1   
check_callz%ExpressionCheckerSharedApi.check_callC   s
     "!r0   c                    t           r<   r=   )r?   rQ   rG   rH   rJ   rL   rM   rS   s           r1   transform_callee_typez0ExpressionCheckerSharedApi.transform_callee_typeR   s
     "!r0   method_namestrc                    t           r<   r=   )r?   rS   rZ   s      r1   method_fullnamez*ExpressionCheckerSharedApi.method_fullname_   rF   r0   method	base_typec                    t           r<   r=   )r?   r^   r_   rH   rJ   rL   rT   s          r1   check_method_call_by_namez4ExpressionCheckerSharedApi.check_method_call_by_namec   
     "!r0   td_typer#   indexsetitemtuple[Type, set[str]]c                    t           r<   r=   )r?   rc   rd   re   s       r1   visit_typeddict_index_exprz5ExpressionCheckerSharedApi.visit_typeddict_index_expro   
     "!r0   valuer   fallback_namec                    t           r<   r=   )r?   rj   rk   s      r1   infer_literal_expr_typez2ExpressionCheckerSharedApi.infer_literal_expr_typeu   rF   r0   T)include_modulessuppress_errorsr   ctx	is_lvaluern   ro   c                   t           r<   r=   )r?   r4   rp   rq   rn   ro   s         r1   analyze_static_referencez3ExpressionCheckerSharedApi.analyze_static_referencey   rb   r0   )NFFF)r4   r   r5   r6   r7   r)   r8   r)   r9   r)   r:   r"   )F)rB   r   rC   r)   r:   r"   )NNNNN)rG   r"   rH   rI   rJ   rK   rL   r   rM   rN   rO   rP   rQ   rR   rS   r6   rT   r6   r:   rU   NN)rQ   rR   rG   r"   rH   rI   rJ   rK   rL   r   rM   rN   rS   r6   r:   r"   )rS   r"   rZ   r[   r:   rR   r<   )r^   r[   r_   r"   rH   rI   rJ   rK   rL   r   rT   r6   r:   rU   )rc   r#   rd   r   re   r)   r:   rf   )rj   r   rk   r[   r:   r"   )r4   r   rp   r   rq   r)   rn   r)   ro   r)   r:   r"   )r+   r,   r-   r   r@   rE   rW   rY   r]   ra   rh   rm   rs   r/   r0   r1   r3   r3   2   s        %)"'!&" " " " ^" " " " " ^"  26+/$(#'%)" " " " ^"  26#'
" 
" 
" 
" ^
" " " " ^"  &*	" 	" 	" 	" ^	" IN" " " " ^"
 " " " ^"  !% %	" 	" 	" 	" 	" ^	" 	" 	"r0   r3   c                     e Zd ZU ded<   ded<   ded<   ded<   ded	<   eed[d                        Zed\d            Zed]d            Zed^d            Z	ed_d            Z
ed`d             Zee	 	 dad!d!d!d"dbd/                        Zee	 	 dad!d!d0dcd2                        Ze	 	 dad!d!d!d"ddd4            Zeded5            Zee	 dfdgd<                        Zeedhd>                        Ze	 dfdid@            ZedjdK            ZedkdM            ZedkdN            ZedldP            ZedmdS            ZeedndU                        ZedodX            ZedpdY            ZedqdZ            Zd!S )rTypeCheckerSharedApir   pluginzset[str]module_refsCheckerScopescoper)   checking_missing_awaitallow_constructor_cacher:   r3   c                    t           r<   r=   r?   s    r1   expr_checkerz!TypeCheckerSharedApi.expr_checker   
     "!r0   namer[   r   c                    t           r<   r=   )r?   r   s     r1   
named_typezTypeCheckerSharedApi.named_type   rF   r0   fullnamer   c                    t           r<   r=   )r?   r   s     r1   lookup_typeinfoz$TypeCheckerSharedApi.lookup_typeinfo   rF   r0   r4   r   r"   c                    t           r<   r=   )r?   r4   s     r1   lookup_typez TypeCheckerSharedApi.lookup_type   rF   r0   rL   r   Nonec                    t           r<   r=   )r?   r   rL   s      r1   handle_cannot_determine_typez1TypeCheckerSharedApi.handle_cannot_determine_type   rF   r0   typr    rq   r   c                    t           r<   r=   )r?   r   rq   r4   rL   s        r1   handle_partial_var_typez,TypeCheckerSharedApi.handle_partial_var_type   ri   r0   N)notescodeouter_contextsubtype	supertypemsgsubtype_labelrR   supertype_labelr   list[str] | Noner   ErrorCode | Noner   Context | Nonec                   d S r<   r/   
r?   r   r   rL   r   r   r   r   r   r   s
             r1   check_subtypez"TypeCheckerSharedApi.check_subtype   s	     sr0   )r   r   r   c                   d S r<   r/   )	r?   r   r   rL   r   r   r   r   r   s	            r1   r   z"TypeCheckerSharedApi.check_subtype   s	     sr0   str | ErrorMessagec                   t           r<   r=   r   s
             r1   r   z"TypeCheckerSharedApi.check_subtype   s
     "!r0   c                    t           r<   r=   r~   s    r1   get_final_contextz&TypeCheckerSharedApi.get_final_context   rF   r0   	expr_typetype_rangeslist[TypeRange] | Nonerp   defaulttuple[Type | None, Type | None]c                    d S r<   r/   r?   r   r   rp   r   s        r1   #conditional_types_with_intersectionz8TypeCheckerSharedApi.conditional_types_with_intersection   s	     +.#r0   rU   c                    d S r<   r/   r   s        r1   r   z8TypeCheckerSharedApi.conditional_types_with_intersection   s	      Cr0   r6   c                    t           r<   r=   r   s        r1   r   z8TypeCheckerSharedApi.conditional_types_with_intersection   s
     "!r0   operatoroperandsrI   operand_types
list[Type]expr_indices	list[int]narrowable_indicesAbstractSet[int]Ctuple[dict[Expression, Type] | None, dict[Expression, Type] | None]c                    t           r<   r=   )r?   r   r   r   r   r   s         r1    narrow_type_by_identity_equalityz5TypeCheckerSharedApi.narrow_type_by_identity_equality   rA   r0   Node | Nonec                    t           r<   r=   r?   r4   rL   s      r1   check_deprecatedz%TypeCheckerSharedApi.check_deprecated  rF   r0   c                    t           r<   r=   r   s      r1   warn_deprecatedz$TypeCheckerSharedApi.warn_deprecated  rF   r0   typec                    t           r<   r=   )r?   r   s     r1   type_is_iterablez%TypeCheckerSharedApi.type_is_iterable  rF   r0   it/Instance | CallableType | TypeType | Overloadedc                    t           r<   r=   )r?   r   rL   s      r1   iterable_item_typez'TypeCheckerSharedApi.iterable_item_type  ri   r0   Iterator[None]c                    t           r<   r=   r~   s    r1   checking_await_setz'TypeCheckerSharedApi.checking_await_set  r   r0   local_errorsr   c                    t           r<   r=   )r?   r   r   s      r1   get_precise_awaitable_typez/TypeCheckerSharedApi.get_precise_awaitable_type  rF   r0   c                    t           r<   r=   )r?   r   r   s      r1   add_any_attribute_to_typez.TypeCheckerSharedApi.add_any_attribute_to_type  rF   r0   c                   t           r<   r=   )r?   r   s     r1   is_defined_in_stubz'TypeCheckerSharedApi.is_defined_in_stub"  rF   r0   )r:   r3   )r   r[   r:   r   )r   r[   r:   r   )r4   r   r:   r"   )r   r[   rL   r   r:   r   )
r   r    rq   r)   r4   r   rL   r   r:   r"   rt   )r   r"   r   r"   rL   r   r   r[   r   rR   r   rR   r   r   r   r   r   r   r:   r)   )r   r"   r   r"   rL   r   r   r   r   rR   r   rR   r   r   r   r   r:   r)   )r   r"   r   r"   rL   r   r   r   r   rR   r   rR   r   r   r   r   r   r   r:   r)   r:   r)   r<   )
r   r"   r   r   rp   r   r   r   r:   r   )
r   r"   r   r   rp   r   r   r"   r:   rU   )
r   r"   r   r   rp   r   r   r6   r:   r   )r   r[   r   rI   r   r   r   r   r   r   r:   r   )r4   r   rL   r   r:   r   )r   r"   r:   r)   )r   r   rL   r   r:   r"   )r:   r   )r   r"   r   r   r:   r6   )r   r"   r   r[   r:   r"   )r   r   r:   r)   )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   r/   r0   r1   rv   rv      s        NNN    !!!!" " " ^ X" " " " ^" " " " ^" " " " ^" " " " ^" " " " ^"
  %)&* #'!%(,     ^ X  %)&* #'(,     ^ X  %)&*" #'!%(," " " " " ^" " " " ^"  . . . . ^ X.       ^ X 
   $" " " " ^" " " " ^" " " " ^" " " " ^" " " " ^" " " " ^"
 " " " ^ ^" " " " ^" " " " ^" " " " ^" " "r0   rv   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
d"dZed#d            Zed$d            ZdS )%ry   z$list[TypeInfo | FuncItem | MypyFile]stackmoduler   r:   r   c                    |g| _         d S r<   )r   )r?   r   s     r1   __init__zCheckerScope.__init__+  s    X


r0   FuncItem | Nonec                f    t          | j                  D ]}t          |t                    r|c S d S r<   )reversedr   
isinstancer   r?   rB   s     r1   current_functionzCheckerScope.current_function.  s@    $*%% 	 	A!X&& tr0   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     r1   top_level_functionzCheckerScope.top_level_function4  sE     	 	A!X&& z!Z/H/H tr0   TypeInfo | Nonec                `    t          | j        d         t                    r| j        d         S d S )N)r   r   r   r~   s    r1   active_classzCheckerScope.active_class;  s+    djnh// 	":b>!tr0   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   rd   r   r   )r?   r   rd   	enclosings       r1   enclosing_classzCheckerScope.enclosing_class@  s    .t,,..HHHHHH
  &&JJJJJJJuqy)	i** 	tr0   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%   r?   infos     r1   active_self_typezCheckerScope.active_self_typeK  s\       "" 	*--// 	*''))D 	' &&&tr0   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     r1   current_self_typezCheckerScope.current_self_typeX  sK    TZ(( 	+ 	+D$)) +$T*****+tr0   r)   c                2    t          | j                  dk    S )z5Is current scope top-level (no classes or functions)?r   )lenr   r~   s    r1   is_top_levelzCheckerScope.is_top_level_  s    4:!##r0   r(   r   r   c              #  x   K   | j                             |           d V  | j                                          d S r<   r   appendpopr   s     r1   push_functionzCheckerScope.push_functionc  =      
$
r0   r   r   c              #  x   K   | j                             |           d V  | j                                          d S r<   r   r   s     r1   
push_classzCheckerScope.push_classi  r   r0   )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   r   r   r   r   r   r/   r0   r1   ry   ry   '  s        ////            
	 	 	 	 	      $ $ $ $    ^
    ^  r0   ry   N)6__doc__
__future__r   abcr   collections.abcr   r   r   AbstractSet
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'   r3   rv   ry   r/   r0   r1   <module>r     s   A A " " " " " "       B B B B B B B B B B % % % % % % ' ' ' ' ' ' ' ' ! ! ! ! ! ! % % % % % % $ $ $ $ $ $ . . . . . .                          7 6 6 6 6 6 6 6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 ( ' ' ' ' '
    
   
 P" P" P" P" P" P" P" P"f ]" ]" ]" ]" ]"1 ]" ]" ]"@F F F F F F F F F Fr0   