
    \jf*                       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          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)Final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d	dZdS )
	TypeRangeitemr"   is_upper_boundboolreturnNonec                "    || _         || _        d S N)r(   r)   )selfr(   r)   s      W/var/www/app.qaans.com/backend/venv/lib/python3.11/site-packages/mypy/checker_shared.py__init__zTypeRange.__init__.   s    	%3    N)r(   r"   r)   r*   r+   r,   )__name__
__module____qualname__r1    r2   r0   r'   r'   -   s(        4 4 4 4 4 4r2   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_calleer+   r"   c                    t           r.   NotImplementedError)r/   r9   r:   r<   r=   r>   s         r0   acceptz!ExpressionCheckerSharedApi.accept5   
     "!r2   er   lvaluec                    t           r.   r@   )r/   rD   rE   s      r0   analyze_ref_exprz+ExpressionCheckerSharedApi.analyze_ref_expr@       !!r2   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/   rI   rJ   rL   rN   rO   rQ   rS   rU   rV   s
             r0   
check_callz%ExpressionCheckerSharedApi.check_callD   s
     "!r2   c                    t           r.   r@   )r/   rS   rI   rJ   rL   rN   rO   rU   s           r0   transform_callee_typez0ExpressionCheckerSharedApi.transform_callee_typeS   s
     "!r2   method_namestrc                    t           r.   r@   )r/   rU   r\   s      r0   method_fullnamez*ExpressionCheckerSharedApi.method_fullname`   rH   r2   method	base_typec                    t           r.   r@   )r/   r`   ra   rJ   rL   rN   rV   s          r0   check_method_call_by_namez4ExpressionCheckerSharedApi.check_method_call_by_named   
     "!r2   td_typer#   indexsetitemtuple[Type, set[str]]c                    t           r.   r@   )r/   re   rf   rg   s       r0   visit_typeddict_index_exprz5ExpressionCheckerSharedApi.visit_typeddict_index_exprp   
     "!r2   valuer   fallback_namec                    t           r.   r@   )r/   rl   rm   s      r0   infer_literal_expr_typez2ExpressionCheckerSharedApi.infer_literal_expr_typev   rH   r2   T)include_modulessuppress_errorsr   ctx	is_lvaluerp   rq   c                   t           r.   r@   )r/   r9   rr   rs   rp   rq   s         r0   analyze_static_referencez3ExpressionCheckerSharedApi.analyze_static_referencez   rd   r2   )NFFF)r9   r   r:   r;   r<   r*   r=   r*   r>   r*   r+   r"   )F)rD   r   rE   r*   r+   r"   )NNNNN)rI   r"   rJ   rK   rL   rM   rN   r   rO   rP   rQ   rR   rS   rT   rU   r;   rV   r;   r+   rW   NN)rS   rT   rI   r"   rJ   rK   rL   rM   rN   r   rO   rP   rU   r;   r+   r"   )rU   r"   r\   r]   r+   rT   r.   )r`   r]   ra   r"   rJ   rK   rL   rM   rN   r   rV   r;   r+   rW   )re   r#   rf   r   rg   r*   r+   rh   )rl   r   rm   r]   r+   r"   )r9   r   rr   r   rs   r*   rp   r*   rq   r*   r+   r"   )r3   r4   r5   r   rB   rG   rY   r[   r_   rc   rj   ro   ru   r6   r2   r0   r8   r8   3   s        %)"'!&" " " " ^" " " " " ^"  26+/$(#'%)" " " " ^"  26#'
" 
" 
" 
" ^
" " " " ^"  &*	" 	" 	" 	" ^	" IN" " " " ^"
 " " " ^"  !% %	" 	" 	" 	" 	" ^	" 	" 	"r2   r8   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+   r8   c                    t           r.   r@   r/   s    r0   expr_checkerz!TypeCheckerSharedApi.expr_checker   
     "!r2   namer]   r   c                    t           r.   r@   )r/   r   s     r0   
named_typezTypeCheckerSharedApi.named_type   rH   r2   fullnamer   c                    t           r.   r@   )r/   r   s     r0   lookup_typeinfoz$TypeCheckerSharedApi.lookup_typeinfo   rH   r2   r9   r   r"   c                    t           r.   r@   )r/   r9   s     r0   lookup_typez TypeCheckerSharedApi.lookup_type   rH   r2   rN   r   r,   c                    t           r.   r@   )r/   r   rN   s      r0   handle_cannot_determine_typez1TypeCheckerSharedApi.handle_cannot_determine_type   rH   r2   typr    rs   r   c                    t           r.   r@   )r/   r   rs   r9   rN   s        r0   handle_partial_var_typez,TypeCheckerSharedApi.handle_partial_var_type   rk   r2   N)notescodeouter_contextsubtype	supertypemsgsubtype_labelrT   supertype_labelr   list[str] | Noner   ErrorCode | Noner   Context | Nonec                   d S r.   r6   
r/   r   r   rN   r   r   r   r   r   r   s
             r0   check_subtypez"TypeCheckerSharedApi.check_subtype   s	     sr2   )r   r   r   c                   d S r.   r6   )	r/   r   r   rN   r   r   r   r   r   s	            r0   r   z"TypeCheckerSharedApi.check_subtype   s	     sr2   str | ErrorMessagec                   t           r.   r@   r   s
             r0   r   z"TypeCheckerSharedApi.check_subtype   s
     "!r2   c                    t           r.   r@   r   s    r0   get_final_contextz&TypeCheckerSharedApi.get_final_context   rH   r2   	expr_typetype_rangeslist[TypeRange] | Nonerr   defaulttuple[Type | None, Type | None]c                    d S r.   r6   r/   r   r   rr   r   s        r0   #conditional_types_with_intersectionz8TypeCheckerSharedApi.conditional_types_with_intersection   s	     +.#r2   rW   c                    d S r.   r6   r   s        r0   r   z8TypeCheckerSharedApi.conditional_types_with_intersection   s	      Cr2   r;   c                    t           r.   r@   r   s        r0   r   z8TypeCheckerSharedApi.conditional_types_with_intersection   s
     "!r2   operatoroperandsrK   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         r0    narrow_type_by_identity_equalityz5TypeCheckerSharedApi.narrow_type_by_identity_equality   rC   r2   Node | Nonec                    t           r.   r@   r/   r9   rN   s      r0   check_deprecatedz%TypeCheckerSharedApi.check_deprecated  rH   r2   c                    t           r.   r@   r   s      r0   warn_deprecatedz$TypeCheckerSharedApi.warn_deprecated  rH   r2   typec                    t           r.   r@   )r/   r   s     r0   type_is_iterablez%TypeCheckerSharedApi.type_is_iterable  rH   r2   it/Instance | CallableType | TypeType | Overloadedc                    t           r.   r@   )r/   r   rN   s      r0   iterable_item_typez'TypeCheckerSharedApi.iterable_item_type  rk   r2   Iterator[None]c                    t           r.   r@   r   s    r0   checking_await_setz'TypeCheckerSharedApi.checking_await_set  r   r2   local_errorsr   c                    t           r.   r@   )r/   r   r   s      r0   get_precise_awaitable_typez/TypeCheckerSharedApi.get_precise_awaitable_type  rH   r2   c                    t           r.   r@   )r/   r   r   s      r0   add_any_attribute_to_typez.TypeCheckerSharedApi.add_any_attribute_to_type  rH   r2   c                   t           r.   r@   )r/   r   s     r0   is_defined_in_stubz'TypeCheckerSharedApi.is_defined_in_stub#  rH   r2   )r+   r8   )r   r]   r+   r   )r   r]   r+   r   )r9   r   r+   r"   )r   r]   rN   r   r+   r,   )
r   r    rs   r*   r9   r   rN   r   r+   r"   rv   )r   r"   r   r"   rN   r   r   r]   r   rT   r   rT   r   r   r   r   r   r   r+   r*   )r   r"   r   r"   rN   r   r   r   r   rT   r   rT   r   r   r   r   r+   r*   )r   r"   r   r"   rN   r   r   r   r   rT   r   rT   r   r   r   r   r   r   r+   r*   r+   r*   r.   )
r   r"   r   r   rr   r   r   r,   r+   r   )
r   r"   r   r   rr   r   r   r"   r+   rW   )
r   r"   r   r   rr   r   r   r;   r+   r   )r   r]   r   rK   r   r   r   r   r   r   r+   r   )r9   r   rN   r   r+   r,   )r   r"   r+   r*   )r   r   rN   r   r+   r"   )r+   r   )r   r"   r   r   r+   r;   )r   r"   r   r]   r+   r"   )r   r   r+   r*   )r3   r4   r5   __annotations__propertyr   r   r   r   r   r   r   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r6   r2   r0   rx   rx      s        NNN    !!!!" " " ^ X" " " " ^" " " " ^" " " " ^" " " " ^" " " " ^"
  %)&* #'!%(,     ^ X  %)&* #'(,     ^ X  %)&*" #'!%(," " " " " ^" " " " ^"  . . . . ^ X.       ^ X 
   $" " " " ^" " " " ^" " " " ^" " " " ^" " " " ^" " " " ^"
 " " " ^ ^" " " " ^" " " " ^" " " " ^" " "r2   rx   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d#dZed$d            Zed%d            ZdS )&r{   z$list[TypeInfo | FuncItem | MypyFile]stackmoduler   r+   r,   c                    |g| _         d S r.   )r   )r/   r   s     r0   r1   zCheckerScope.__init__,  s    X


r2   FuncItem | Nonec                f    t          | j                  D ]}t          |t                    r|c S d S r.   )reversedr   
isinstancer   r/   rD   s     r0   current_functionzCheckerScope.current_function/  s@    $*%% 	 	A!X&& tr2   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_function5  sE     	 	A!X&& z!Z/H/H tr2   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>!tr2   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   rf   r   r   )r/   r   rf   	enclosings       r0   enclosing_classzCheckerScope.enclosing_classA  s    .t,,..HHHHHH
  &&JJJJJJJuqy)	i** 	tr2   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     r0   active_self_typezCheckerScope.active_self_typeL  s\       "" 	*--// 	*''))D 	' &&&tr2   c                P    |                                  x}t          |          S dS )zBSame as active_self_type() but handle functions nested in methods.N)current_classr%   r/   r(   s     r0   current_self_typezCheckerScope.current_self_typeY  s,    &&(((D5 &&&tr2   c                f    t          | j                  D ]}t          |t                    r|c S d S r.   )r   r   r   r   r   s     r0   r   zCheckerScope.current_class_  s@    TZ(( 	 	D$)) tr2   r*   c                2    t          | j                  dk    S )z5Is current scope top-level (no classes or functions)?r   )lenr   r   s    r0   is_top_levelzCheckerScope.is_top_levele  s    4:!##r2   r(   r   r   c              #  x   K   | j                             |           d V  | j                                          d S r.   r   appendpopr   s     r0   push_functionzCheckerScope.push_functioni  =      
$
r2   r   r   c              #  x   K   | j                             |           d V  | j                                          d S r.   r   r   s     r0   
push_classzCheckerScope.push_classo  r   r2   )r   r   r+   r,   )r+   r   )r+   r   r.   )r   r   r+   r   )r+   r   r   )r(   r   r+   r   )r   r   r+   r   )r3   r4   r5   r   r1   r   r   r   r   r   r   r   r   r   r   r   r6   r2   r0   r{   r{   (  s        ////            
	 	 	 	 	         $ $ $ $    ^
    ^  r2   r{   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'   r8   rx   r{   r6   r2   r0   <module>r     s   A A " " " " " "       B B B B B B B B B B % % % % % % " " " " " " " " ! ! ! ! ! ! % % % % % % $ $ $ $ $ $ . . . . . .                          7 6 6 6 6 6 6 6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 ( ' ' ' ' '
4 4 4 4 4 4 4 4 P" P" P" P" P" P" P" P"f ]" ]" ]" ]" ]"1 ]" ]" ]"@K K K K K K K K K Kr2   