+
    is                       R t ^ RIHt ^ RIt^ RIt^ RIHtHt ^ RIHtH	t	H
t
 ^ RIHtHt ^ RIHt ^ RIHtHtHtHt ^ RIHtHtHtHt ^ R	IHt ^ R
IHtHtHt ^ RI H!t!H"t"H#t# ]'       d   ^ RI$H%t% 0 R$mt&]'       d   ]&PO                  R4       0 R%mt(R&R R llt) ! R R4      t*R&R R llt+R R lt, ! R R]*4      t- ! R R]-4      t. ! R R]*4      t/ ! R R]/4      t0 ! R R]-4      t1 ! R  R!]14      t2 ! R" R#]-4      t3R# )'zXThis module contains base classes and functions for the nodes and some
inference utils.
)annotationsN)IterableIterator)TYPE_CHECKINGAnyLiteral)
decoratorsnodes)
PY311_PLUS)CallContextInferenceContextbind_context_to_nodecopy_context)AstroidTypeErrorAttributeInferenceErrorInferenceErrorNameInferenceError)objectmodel)InferenceErrorInfoInferenceResultSuccessfulInferenceResult)UninferableUninferableBase
safe_infer)
Constraintzenum.propertyc               $    V ^8  d   QhRRRRRR/# )   meth!nodes.FunctionDef | UnboundMethodcontextInferenceContext | Nonereturnbool )formats   "//usr/lib/python3/dist-packages/astroid/bases.py__annotate__r&   F   s$     ' '
+'6M'	'    c                  a	a
 V P                  VR 7      p\        P                  V4      '       d   R# V Uu0 uF3  p\        V\        4      '       d   K  VP                  R4      R,          kK5  	  upo
\        ;QJ d#    V
3R l\         4       F  '       g   K   RM	  RM! V
3R l\         4       4      '       d   R# V P                  '       g   R# V P                  P                  ;'       g    R	 EFl  p\        WAR 7      o	S	e   \        S	\        4      '       d   K,  \        S	\        P                  4      '       g   KN  \        ;QJ d#    V	3R l\         4       F  '       g   K   RM	  RM! V	3R l\         4       4      '       d    R# S	P                   F  p\        V\        P                  4      '       g   K%  \        VP                  VR 7      p\        V\        P                  4      '       g   K^  VP                  R8w  d   Kq  VP!                  VP                  4      w  rx\        V\        P"                  4      '       d   VP                  R8X  d     R# K  	  EKo  	  R# u upi )
r   T.c              3  ,   <"   T F	  qS9   x  K  	  R # 5iNr#   ).0namestrippeds   & r%   	<genexpr>_is_property.<locals>.<genexpr>Q   s     
<(;8(;s   Fc              3  F   <"   T F  pSP                  V4      x  K  	  R # 5ir,   )is_subtype_of)r-   pclassinferreds   & r%   r0   r1   ]   s     K
f8))&11
s   !cached_property	functoolsr#   )decoratornames
PROPERTIESintersection
isinstancer   splitanyPOSSIBLE_PROPERTIESr   r	   r   ClassDefbases	Subscriptvaluer.   lookupModule)r   r   r9   r.   	decorator
base_classrC   module_r5   r/   s   &&       @@r%   _is_propertyrJ   F   s    (((9N~.. #"D$0 	

3"H
 s
<(;
<sss
<(;
<<<???__**00b0	i9z(ODDh//sK
KsssK
KKK&nn
 j%//::&z'7'7IE%eU^^<< zz%66  %UZZ 8IF!&%,,77FKK;<V# - 1, Cs   I#I#c                  R    ] tR t^pt$ RtR]R&   RR R lltR R ltRR	 R
 lltRt	R# )ProxyzA simple proxy object.

Note:

Subclasses of this object will need a custom __getattr__
if new instance attributes are created. See the Const class
zAnodes.ClassDef | nodes.FunctionDef | nodes.Lambda | UnboundMethod_proxiedNc                    V ^8  d   QhRRRR/# )r   proxiedzHnodes.ClassDef | nodes.FunctionDef | nodes.Lambda | UnboundMethod | Noner!   Noner#   )r$   s   "r%   r&   Proxy.__annotate__{   s!     $ $ U$
 
$r'   c                	x    Vf0   \        V \        P                  \        \        34      '       g   Q hR # Wn        R # r,   )r<   r	   Const	Generator	UnionTyperM   )selfrO   s   &&r%   __init__Proxy.__init__{   s.     ? dU[[)Y$GHHHH#Mr'   c                    V ^8  d   QhRRRR/# )r   r.   strr!   r   r#   )r$   s   "r%   r&   rQ      s     , , , ,r'   c                	    VR 8X  d   V P                   P                  # WP                  9   d   V P                  V,          # \        V P                  V4      # rM   )	__class__rM   __dict__getattr)rV   r.   s   &&r%   __getattr__Proxy.__getattr__   sD    :>>***== ==&&t}}d++r'   c               $    V ^8  d   QhRRRRRR/# )r   r   r    kwargsr   r!   zKcollections.abc.Generator[InferenceResult, None, InferenceErrorInfo | None]r#   )r$   s   "r%   r&   rQ      s$      .AD	Tr'   c              +  	   "   V x  R # 5ir,   r#   )rV   r   rc   s   &&,r%   inferProxy.infer   s      
s   	r\   r,   )
__name__
__module____qualname____firstlineno____doc____annotations__rW   r`   re   __static_attributes__r#   r'   r%   rL   rL   p   s$     PO$$, r'   rL   c               (    V ^8  d   QhRRRRRRRR/# )	r   stmtsIterable[InferenceResult]r   r    framez"nodes.NodeNG | BaseInstance | Noner!   z*collections.abc.Generator[InferenceResult]r#   )r$   s   "r%   r&   r&      s0     3
 3
$3
$3
 .3
 0	3
r'   c              #  P  a"   RpRpVeA   VP                   pVP                  4       pVe   VP                  P                  V/ 4      pM/ pMRp/ p\	        4       pV  F  p\        V\        4      '       d	   Vx  RpK!  VP                  W%4      Vn          \        4       pVP                  4        F/  w  rV	P                  V4      '       d   K  VP                  V
4       K1  	  VP                  VR7       FM  o\        ;QJ d    V3R lV 4       F  '       d   K   RM	  RM! V3R lV 4       4      '       d	   Sx  RpKK  RpKO  	  K  	  V'       g   V'       d   \         x  R# V'       g   \        RV VVR7      hR#   \         d     EK.  \         d    \         x  Rp EKF  i ; i5i)zGReturn an iterator on statements inferred by each statement in *stmts*.FNTr)   c              3  D   <"   T F  qP                  S4      x  K  	  R # 5ir,   )satisfied_by)r-   
constraintinfs   & r%   r0   _infer_stmts.<locals>.<genexpr>   s     WFV
..s33FVs    z.Inference failed for all members of {stmts!r}.)ro   rq   r   )
lookupnamecloneconstraintsgetr   r<   r   _infer_namesetitems	parent_ofupdatere   allr   r   r   )ro   r   rq   r5   constraint_failedr.   rz   stmtstmt_constraintsconstraint_stmtpotential_constraintsrv   s   &&&        @r%   _infer_stmtsr      s~     H!!--/!--11$;KK"$dO,,JH!--e:	03:E:K:K:M6&0066$++,AB ;N zz'z23WFVW333WFVWWWI#H(,% 3 . )<	
 	
  " 	 	H	sa   BF&3E;A	E;E;6E;F&F&F&*F&;F#F&
F#F#F&"F##F&c               (    V ^8  d   QhRRRRRRRR/# )	r   instanceInstancemethod_namerZ   r   r   r!   bool | UninferableBaser#   )r$   s   "r%   r&   r&      s,      %(3Cr'   c                   \        V P                  WR 7      R4      pV'       d   \        VR4      '       d   VP                  4       '       g   \        #  \        . VR7      Vn        VP                  WR 7       FI  p\        V\        4      '       d   Vu #  \        VP                  VR 7      4      pTP                  4       u # 	  \        # \        #   \         d   p\        TR 7      ThRp?ii ; i  \         d	     \        # i ; i)r)   Ninfer_call_resultargscallee)nextigetattrhasattrcallabler   r   callcontextr   r<   r   re   StopIterationr   
bool_value)r   r   r   r   rC   r5   es   &&&    r%   _infer_method_result_truthr      s    
 !!+!?FD122}}	"-2d"CG///Je_55 LA#EKKK$@AH  **,, K ; % A(9q@A  		s=   A C1 C1C1 C1 C.C))C..C1 1DDc                  |    ] tR t^t$ RtR]R&   R]R&   R R ltRR	 R
 lltRR R lltRR R llt	RR R llt
RtR# )BaseInstancezOAn instance base class, which provides lookup methods for potential
instances.
znodes.ClassDefrM   zobjectmodel.ObjectModelspecial_attributesc                   V ^8  d   QhRR/# r   r!   rZ   r#   )r$   s   "r%   r&   BaseInstance.__annotate__         c r'   c                	    R # zInstance ofr#   rV   s   &r%   display_typeBaseInstance.display_type       r'   Nc               (    V ^8  d   QhRRRRRRRR/# )	r   r.   rZ   r   r    lookupclassr"   r!   zlist[InferenceResult]r#   )r$   s   "r%   r&   r      s2       ) 	
 
r'   c                	    V P                   P                  W4      pT'       d%    Y@P                   P                  YRR7      ,           # T#   \         d   pT P                  '       dT   YP                  9   dD   T P                  P	                  T4      p\        T\        P                  4      '       g	   T.u R p?# T'       d#   T P                   P                  YRR7      u R p?# \        YTR7      ThR p?ii ; i  \         d     T# i ; i)NFclass_context)target	attributer   )	rM   instance_attrr   r   rD   r<   r	   Unknownr_   )rV   r.   r   r   valuesexcspecial_attrs   &&&&   r%   r_   BaseInstance.getattr   s    	]]00?F"  5 5 !6 !  
 / ' 	&&&43J3J+J#66==dC!,>>(>) }},,T%,PP)W	* + sG   A "C; C8AC35C8;C3C3C8%C33C8;D
	D
c               $    V ^8  d   QhRRRRRR/# r   r.   rZ   r   r    r!   Iterator[InferenceResult]r#   )r$   s   "r%   r&   r     s$     ? ??"9?	"?r'   c           	   #    "   V'       g   \        4       p Wn        V P                  WRR7      p\        V P	                  W24      W R7       Rj  xL
  R#  L  \
         d     T P                  P                  P                  R8w  d   h T P                  P                  YRR7      pT P	                  YB4       Rj  xL 
   R#   \
         d   p\        R/ \        T4      B ThRp?ii ; ii ; i5i)zInferred getattr.F)r   )rq   Nr@   r   r#   )r   rx   r_   r   
_wrap_attrr   rM   r]   rg   r   r   vars)rV   r.   r   get_attrattrserrors   &&&   r%   r   BaseInstance.igetattr  s      &(G	?!%||Du|EH#2G   ' 
	?	? ==**33zA..tE.R??5:::* ?$3tE{3>?
	?s_   C/8A AA C/A C,#AC:B=;C C/C(C##C((C,,C/c               $    V ^8  d   QhRRRRRR/# )r   r   rp   r   r    r!   r   r#   )r$   s   "r%   r&   r   .  s$      .9P	"r'   c              #    "   V F  p\        V\        4      '       d<   \        V4      '       d   VP                  W4       Rj  xL
  KE  \	        W04      x  KT  \        V\
        P                  4      '       d^   VP                  P                  '       d<   VP                  P                  ^ ,          P                  R8X  d   \	        W04      x  K  Vx  K  Vx  K  	  R#  L5i)z8Wrap bound methods of attrs in a InstanceMethod proxies.NrV   )
r<   UnboundMethodrJ   r   BoundMethodr	   Lambdar   	argumentsr.   )rV   r   r   attrs   &&& r%   r   BaseInstance._wrap_attr.  s      D$..%%#55dDDD%d11D%,,//99&&&499+>+>q+A+F+F&+P%d11

  Es   AC"C AC"AC"c               $    V ^8  d   QhRRRRRR/# r   caller SuccessfulInferenceResult | Noner   r    r!   r   r#   )r$   s   "r%   r&   r   @  s-     L L0L )L 
#	Lr'   c              #    "   \        W 4      pRp\        V\        P                  4      '       d^   \        VP                  \        P
                  4      '       d4   V P                  VP                  P                  V4       F	  pRpVx  K  	  V P                  P                  RV4       F  p\        V\        4      '       g   VP                  4       '       g   K1  \        V\        4      '       d#   VP                  V P                  J d	   RpVx  Ki  VP                  W4       F	  pRpVx  K  	  K  	  V'       g   \        WVR7      hR# 5i)z5Infer what a class instance is returning when called.FT__call__)noder   r   N)r   r<   r	   Callfunc	Attributer   attrnamerM   r   r   r   r   r   )rV   r   r   r5   resr   s   &&&   r%   r   BaseInstance.infer_call_result@  s      'w5 fejj))jeoo.V.V}}V[[%9%97C	 D
 MM**:w?D$00$--$--4==2P
--f>	 ? @  d7KK s   CEA#E<Er#   )NTr,   )rg   rh   ri   rj   rk   rl   r   r_   r   r   r   rm   r#   r'   r%   r   r      s6     //B?2$L Lr'   r   c                     a  ] tR tRtRt]P                  ! 4       tR V 3R llt]	P                  R R l4       tR R ltR	 R
 ltR R ltR R ltR R ltRR R lltRR R lltRtV ;t# )r   i_  z-A special node representing a class instance.c                    V ^8  d   QhRRRR/# )r   rO   nodes.ClassDef | Noner!   rP   r#   )r$   s   "r%   r&   Instance.__annotate__d  s     " " 5 "$ "r'   c                	&   < \         SV `  V4       R # r,   )superrW   )rV   rO   r]   s   &&r%   rW   Instance.__init__d  s    !r'   c               0    V ^8  d   QhRRRRRRRRR	R
RR/# )r   opnodeznodes.AugAssign | nodes.BinOpoperatorrZ   otherr   r   r   methodr   r!   zGenerator[InferenceResult]r#   )r$   s   "r%   r&   r   h  sF     7 7-7 7 	7
 "7 *7 
$7r'   c                	$    VP                  W4      # r,   )r   )rV   r   r   r   r   r   s   &&&&&&r%   infer_binary_opInstance.infer_binary_opg  s     ''66r'   c                   V ^8  d   QhRR/# r   r#   )r$   s   "r%   r&   r   r  s     
 
# 
r'   c                	    R P                  V P                  P                  4       P                  V P                  P                  \	        V 4      4      # )z<Instance of {}.{} at 0x{}>)r$   rM   rootr.   idr   s   &r%   __repr__Instance.__repr__r  s=    ,33MM %%t}}'9'92d8
 	
r'   c                   V ^8  d   QhRR/# r   r#   )r$   s   "r%   r&   r   w  s     O O Or'   c                	~    R V P                   P                  4       P                   RV P                   P                   2# )zInstance of r*   )rM   r   r.   r   s   &r%   __str__Instance.__str__w  s4    dmm002778$--:L:L9MNNr'   c                   V ^8  d   QhRR/# r   r!   r"   r#   )r$   s   "r%   r&   r   z  s      $ r'   c                	f     V P                   P                  R RR7       R#   \         d     R# i ; i)r   Fr   T)rM   r_   r   r   s   &r%   r   Instance.callablez  s3    	MM!!*E!B& 		s   ! 00c                   V ^8  d   QhRR/# r   r#   )r$   s   "r%   r&   r     s     % % %r'   c                	6    V P                   P                  4       # r,   )rM   qnamer   s   &r%   pytypeInstance.pytype  s    }}""$$r'   c                   V ^8  d   QhRR/# r   r#   )r$   s   "r%   r&   r     r   r'   c                	    R # r   r#   r   s   &r%   r   Instance.display_type  r   r'   c                    V ^8  d   QhRRRR/# )r   r   r    r!   r   r#   )r$   s   "r%   r&   r     s      .	r'   c                    T;'       g    \        4       pWn         \        V RV4      pV#   \        \        3 d,     \        T RT4      p T#   \        \        3 d      R# i ; ii ; i)a  Infer the truth value for an Instance.

The truth value of an instance is determined by these conditions:

   * if it implements __bool__ on Python 3 or __nonzero__
     on Python 2, then its bool value will be determined by
     calling this special method and checking its result.
   * when this method is not defined, __len__() is called, if it
     is defined, and the object is considered true if its result is
     nonzero. If a class defines neither __len__() nor __bool__(),
     all its instances are considered true.
__bool____len__T)r   	boundnoder   r   r   )rV   r   results   && r%   r   Instance.bool_value  s     //-/ 	/j'JF   78 	3D)WM  ,^< 		s&   + A'AA#A'"A##A'c               $    V ^8  d   QhRRRRRR/# )r   indexznodes.Constr   r    r!   zInferenceResult | Noner#   )r$   s   "r%   r&   r     s)     G G G+BG	Gr'   c                	l   \        W 4      pV'       g   Tp\        V P                  R VR7      R4      p\        V.VR7      Vn        \        V\        4      '       g   \        RWR7      h\        VP                  P                  4      ^8w  d   \        RV VR7      h\        VP                  W4      R4      # )__getitem__r)   Nr   z(Could not find __getitem__ for {node!r}.)r   r   z8__getitem__ for {node!r} does not have correct signature)r   r   r   r   r   r<   r   r   lenr   r   r   r   )rV   r  r   new_contextr   s   &&&  r%   getitemInstance.getitem  s     +79!GdmmM7mCTJ"-E76"J&+.. :  v{{$$%*"J 
 F,,T?FFr'   r#   r,   )rg   rh   ri   rj   rk   r   InstanceModelr   rW   r   yes_if_nothing_inferredr   r   r   r   r   r   r   r  rm   __classcell__r]   s   @r%   r   r   _  sd    7$224" " ''7 (7

O%8G Gr'   r   c                      ] tR tRt$ RtR]R&   ]P                  ! 4       tR]R&   R R lt	R	 R
 lt
R R ltRR R lltRR R lltRR R lltR R ltRR R lltRtR# )r   i  z>A special node representing a method not bound to an instance.r   rM   z=objectmodel.BoundMethodModel | objectmodel.UnboundMethodModelr   c                   V ^8  d   QhRR/# r   r#   )r$   s   "r%   r&   UnboundMethod.__annotate__  s     
 
# 
r'   c                	6   V P                   P                  '       g   Q R 4       hV P                   P                  P                  4       pRP                  V P                  P
                  V P                   P                  VP                  4       \        V 4      4      # )Expected a parent nodez<{} {} of {} at 0x{})	rM   parentrq   r$   r]   rg   r.   r   r   )rV   rq   s   & r%   r   UnboundMethod.__repr__  sp    }}###=%==#$$**,%,,NN##T]]%7%74
 	
r'   c                   V ^8  d   QhRR/# r   r!   zLiteral[0, 1]r#   )r$   s   "r%   r&   r    s      ] r'   c                	    ^ # )    r#   r   s   &r%   implicit_parameters!UnboundMethod.implicit_parameters  s    r'   c                   V ^8  d   QhRR/# r   r#   )r$   s   "r%   r&   r    s      $ r'   c                	    R # Fr#   r   s   &r%   is_boundUnboundMethod.is_bound      r'   Nc                    V ^8  d   QhRRRR/# )r   r.   rZ   r   r    r#   )r$   s   "r%   r&   r    s     4 4C 4*A 4r'   c                	    WP                   9   d?   V P                   P                  V4      p\        V\        P                  4      '       g   V.# V P
                  P                  W4      # r,   )r   rD   r<   r	   r   rM   r_   rV   r.   r   r   s   &&& r%   r_   UnboundMethod.getattr  sR    ***2299$?LlEMM::$~%}}$$T33r'   c               $    V ^8  d   QhRRRRRR/# r   r#   )r$   s   "r%   r&   r    s$     5 55"95	"5r'   c                	    WP                   9   dH   V P                   P                  V4      p\        V\        P                  4      '       g   \        V34      # V P                  P                  W4      # r,   )r   rD   r<   r	   r   iterrM   r   r!  s   &&& r%   r   UnboundMethod.igetattr  sY     ***2299$?LlEMM::\O,,}}%%d44r'   c               $    V ^8  d   QhRRRRRR/# r   r#   )r$   s   "r%   r&   r    s-     @ @0@ )@ 
#	@r'   c                   V P                   P                  R8X  d   V P                   P                  '       g   Q R4       hV P                   P                  P                  4       P	                  4       pVP                  R4      '       d+   VR8w  d$   T P                  Y;'       g    \        4       4      # V P                   P                  W4      # )a  
The boundnode of the regular context with a function called
on ``object.__new__`` will be of type ``object``,
which is incorrect for the argument in general.
If no context is given the ``object.__new__`` call argument will
be correctly inferred except when inside a call that requires
the additional context (such as a classmethod) of the boundnode
to determine which class the method was called from
__new__r  z	builtins.builtins.type)	rM   r.   r  rq   r   
startswith_infer_builtin_newr   r   )rV   r   r   r   s   &&& r%   r   UnboundMethod.infer_call_result  s    " ==*=='''A)AA'MM((..0668E,,/1I..v7T7TBRBTUU}}..v??r'   c               $    V ^8  d   QhRRRRRR/# )r   r   r   r   r   r!   zCcollections.abc.Generator[nodes.Const | Instance | UninferableBase]r#   )r$   s   "r%   r&   r    s)     ! !0! "! 
M	!r'   c              #  	  "   \        V\        P                  4      '       g   R # VP                  '       g   R # \	        VP                  4      ^8  d   R p\        VP                  ^,          \        P
                  4      '       d   VP                  ^,          P                  pMW\        VP                  ^,          P                  4       R 4      p\        V\        P
                  4      '       d   VP                  pVe?   \        P                  ! V4      p\        V\        P                  4      '       d   Q hVx  R # VP                  P                  VP                  ^ ,          4      pVP                  ^ ,          P                  VR7       FN  p\        V\        4      '       d   Vx  \        V\        P                  4      '       d   \        V4      x  \         h	  R # 5i)Nr)   )r<   r	   r   r   r  rS   rC   r   re   const_factory	EmptyNodeextra_contextr{   r   r@   r   r   )rV   r   r   rC   inferred_argconstnode_contextr5   s   &&&     r%   r,   UnboundMethod._infer_builtin_new  sJ    
 &%**--{{{v{{aE&++a.%++66A,,#FKKN$8$8$:DAlEKK88(..E ++E2%eU__====,,00Q@A,,\,BH(O44(ENN33x((   Cs   4G F)G c                    V ^8  d   QhRRRR/# r   r   r    r!   Literal[True]r#   )r$   s   "r%   r&   r          "9 ] r'   c                	    R # Tr#   rV   r   s   &&r%   r   UnboundMethod.bool_value      r'   r#   r,   )rg   rh   ri   rj   rk   rl   r   UnboundMethodModelr   r   r  r  r_   r   r   r,  r   rm   r#   r'   r%   r   r     sU    H// 	&&( E)
45@2!@ r'   r   c                     a  ] tR tRtRt]P                  ! 4       tRR V 3R llltR R lt	R R lt
R	 R
 ltRR V 3R llltRR R lltRtV ;t# )r   i  z:A special node representing a method bound to an instance.c               (    V ^8  d   QhRRRRRRRR/# )	r   proxyz0nodes.FunctionDef | nodes.Lambda | UnboundMethodboundr   original_callerr   r!   rP   r#   )r$   s   "r%   r&   BoundMethod.__annotate__!  s2     
/ 
/?
/ )
/ :	
/
 

/r'   c                	>   < \         SV `  V4       W n        W0n        R # r,   )r   rW   rD  rE  )rV   rC  rD  rE  r]   s   &&&&r%   rW   BoundMethod.__init__!  s     	
  /r'   c                   V ^8  d   QhRR/# r  r#   )r$   s   "r%   r&   rF  -  s      ] r'   c                	,    V P                   R 8X  d   ^ # ^# )r)  )r.   r   s   &r%   r  BoundMethod.implicit_parameters-  s    99	!r'   c                   V ^8  d   QhRR/# )r   r!   r9  r#   )r$   s   "r%   r&   rF  3  s      - r'   c                	    R # r<  r#   r   s   &r%   r  BoundMethod.is_bound3  r?  r'   c               $    V ^8  d   QhRRRRRR/# )r   r   z
nodes.Callr   r   r!   r   r#   )r$   s   "r%   r&   rF  6  s)     q q q+;q	qr'   c           	     R	   ^ RI Hp  \        VP                  ^ ,          P	                  VR7      4      p\        T\        P                  4      '       g   \        RTR7      hTP                  R4      '       g   \        RTR7      h \        TP                  ^,          P	                  TR7      4      p\        T\        P                  4      '       g   \        RTR7      h\        TP                  \        4      '       g   \        RTR7      h \        TP                  ^,          P	                  TR7      4      p\        T\        P                  4      '       g   \        R	TR7      h TP                   Uu. uF  p\        TP	                  TR7      4      NK   	  p	p\         ;QJ d    R
 T	 4       F  '       g   K   RM	  RM! R
 T	 4       4      '       d   \        RTR7      h \        TP                  ^,          P	                  TR7      4      p
\        T
\        P"                  4      '       g   \        RTR7      h\$        P&                  ! \(        4      pT
P*                   F  w  r \        TP	                  TR7      4      p \        TP	                  TR7      4      p\        T\        P                  4      '       g   K_  \        TP                  \        4      '       g   K  YP                  ,          P-                  T4       K  	  TP/                  TP                  TP0                  ;'       g    ^ TP2                  ;'       g    ^ TTP4                  TP6                  R7      pT! TTP0                  TP2                  TP4                  TP6                  R7      pTP9                  TP                  T.RRT. R7       Yn        T#   \
         d   p\        TR7      ThRp?ii ; i  \
         d   p\        TR7      ThRp?ii ; i  \
         d   p\        TR7      ThRp?ii ; iu upi   \
         d   p\        TR7      ThRp?ii ; i  \
         d   p\        TR7      ThRp?ii ; i  \
         d   p\        TR7      ThRp?ii ; i  \
         d   p\        TR7      ThRp?ii ; i)zTry to infer what type.__new__(mcs, name, bases, attrs) returns.

In order for such call to be valid, the metaclass needs to be
a subtype of ``type``, the name needs to be a string, the bases
needs to be a tuple of classes
)Passr)   Nz-type.__new__() requires a class for metaclassr*  z3type.__new__() metaclass must be a subclass of typez+type.__new__() requires a constant for namez)type.__new__() requires a string for namez)type.__new__() requires a tuple for basesc              3  `   "   T F$  p\        V\        P                  4      '       * x  K&  	  R # 5ir,   )r<   r	   r@   )r-   bases   & r%   r0   3BoundMethod._infer_type_new_call.<locals>.<genexpr>p  s!     O:dENN333s   ,.TFz)type.__new__() requires classes for basesz(type.__new__() requires a dict for attrs)r.   lineno
col_offsetr  
end_linenoend_col_offset)r  rU  rV  rW  rX  )rA   bodyr   newstyle	metaclasskeywords)astroid.nodesrQ  r   r   re   r   r   r<   r	   r@   r3   rS   rC   rZ   Tupleeltsr>   Dictcollectionsdefaultdictlistr~   appendr]   rU  rV  rW  rX  postinitlocals)rV   r   r   rQ  mcsr   r.   rA   eltinferred_basesr   
cls_localskeyrC   clsemptys   &&&             r%   _infer_type_new_call BoundMethod._infer_type_new_call6  s    	'	9v{{1~++G+<=C #u~~.. ?    11 Ew 
	9A,,W,=>D $,, =w  $**c** ;W 
	9Q--g->?E %-- ;W 	9JO**U*3d399W9#=>*NU 3OO333OOOO ;W 
	9Q--g->?E %,, :G  8C7N7Nt7T
++JC=399W956=U[[[9: #u{{++
399c0J0J99%,,U3 & mm==%%A((--A((!00  
 ==((((!00
 	** 	 	
  

E  	9 1q8	9   	9 1q8	9   	9 1q8	9 V 	9 1q8	9  	9 1q8	9 ! =$W51<= ! =$W51<=s   ,O ,O$ ,P 'P) 5$P$P) #,Q	 (Q)R	O!OO!$P/O<<PP!PP!$P) )Q4QQ	Q&Q!!Q&)R4RR	R&R!!R&c               $    V ^8  d   QhRRRRRR/# r   r#   )r$   s   "r%   r&   rF    s(     : :0: ): 
#	:r'   c                	<  < V P                   '       d   V P                   MV P                  p\        W#4      p\        V P                  \        P
                  4      '       d   V P                  P                  R 8X  d   V P                  R8X  d   \        V\        P                  4      '       dc   \        VP                  4      ^8w  d$   \        R\        VP                  4       2VR7      hV P                  W4      pV'       d   \        V34      # \        SV `9  W4      # )typer)  z)type.__new__() requires 4 arguments, got r)   )rE  rD  r   r<   r	   r@   r.   r   r  r   r   rn  r%  r   r   )rV   r   r   
bound_nodenew_clsr]   s   &&&  r%   r   BoundMethod.infer_call_result  s     .2-A-A-AT))tzz
&w;tzz5>>22

6)		Y&65::.. 6;;1$$?FKK@P?QR#  //@GWJ''w(99r'   c                    V ^8  d   QhRRRR/# r8  r#   )r$   s   "r%   r&   rF    r:  r'   c                	    R # r<  r#   r=  s   &&r%   r   BoundMethod.bool_value  r?  r'   )rD  rE  r,   )rg   rh   ri   rj   rk   r   BoundMethodModelr   rW   r  r  rn  r   r   rm   r
  r  s   @r%   r   r     sD    D$557
/ 
/qf: :4 r'   r   c                     a  ] tR tRt$ RtR]R&   RR V 3R llltR R ltR	 R
 ltR R lt	R R lt
RR R lltR R ltR R ltRtV ;t# )rT   i  z]A special node representing a generator.

Proxied class is set once for all in raw_building.
zobjectmodel.GeneratorBaseModelr   c               $    V ^8  d   QhRRRRRR/# )r   r  znodes.FunctionDefgenerator_initial_contextr    r!   rP   r#   )r$   s   "r%   r&   Generator.__annotate__  s-     
D 
D!
D $;
D 
	
Dr'   c                	   < \         SV `  4        Wn        \        V4      V n        \
        P                  ! 4       \        n        R # r,   )	r   rW   r  r   _call_contextr   GeneratorModelrT   r   )rV   r  r|  r]   s   &&&r%   rW   Generator.__init__  s6    
 	)*CD (3'A'A'C	$r'   c                   V ^8  d   QhRR/# )r   r!   r   r#   )r$   s   "r%   r&   r}    s     F F#< Fr'   c              #  	l   "   V P                   P                  V P                  4       R j  xL
  R #  L5ir,   )r  infer_yield_resultr  r   s   &r%   infer_yield_typesGenerator.infer_yield_types  s#     ;;11$2D2DEEEs   )424c                   V ^8  d   QhRR/# r   r!   zLiteral[False]r#   )r$   s   "r%   r&   r}          . r'   c                	    R # r  r#   r   s   &r%   r   Generator.callable  r  r'   c                   V ^8  d   QhRR/# r   r#   )r$   s   "r%   r&   r}    s     $ $ $r'   c                	    R # )zbuiltins.generatorr#   r   s   &r%   r   Generator.pytype  s    #r'   c                   V ^8  d   QhRR/# r   r#   )r$   s   "r%   r&   r}          c r'   c                	    R # )rT   r#   r   s   &r%   r   Generator.display_type      r'   c                    V ^8  d   QhRRRR/# r8  r#   )r$   s   "r%   r&   r}    r:  r'   c                	    R # r<  r#   r=  s   &&r%   r   Generator.bool_value  r?  r'   c                   V ^8  d   QhRR/# r   r#   )r$   s   "r%   r&   r}         T T# Tr'   c                	h    R V P                   P                   RV P                   R\        V 4       R2# )z<Generator() l. at 0x>rM   r.   rU  r   r   s   &r%   r   Generator.__repr__  1    T]]//0T[[M4zQRSSr'   c                   V ^8  d   QhRR/# r   r#   )r$   s   "r%   r&   r}         2 2 2r'   c                	6    R V P                   P                   R2# )z
Generator()rM   r.   r   s   &r%   r   Generator.__str__      DMM../q11r'   )r  r  r,   )rg   rh   ri   rj   rk   rl   rW   r  r   r   r   r   r   r   rm   r
  r  s   @r%   rT   rT     sF     76
D 
DF$T2 2r'   rT   c                  \   a  ] tR tRtRtV 3R ltR R ltR R ltR R	 ltR
 R lt	Rt
V ;t# )AsyncGeneratori  z-Special node representing an async generator.c                	d   < \         SV `  ! V/ VB  \        P                  ! 4       \        n        R # r,   )r   rW   r   AsyncGeneratorModelr  r   )rV   r   rc   r]   s   &*,r%   rW   AsyncGenerator.__init__  s&    $)&),7,K,K,M)r'   c                   V ^8  d   QhRR/# )r   r!   z#Literal['builtins.async_generator']r#   )r$   s   "r%   r&   AsyncGenerator.__annotate__  s     * *; *r'   c                	    R # )zbuiltins.async_generatorr#   r   s   &r%   r   AsyncGenerator.pytype  s    )r'   c                   V ^8  d   QhRR/# r   r#   )r$   s   "r%   r&   r    s        c  r'   c                	    R # )r  r#   r   s   &r%   r   AsyncGenerator.display_type  s    r'   c                   V ^8  d   QhRR/# r   r#   )r$   s   "r%   r&   r    s     Y Y# Yr'   c                	h    R V P                   P                   RV P                   R\        V 4       R2# )z<AsyncGenerator(r  r  r  r  r   s   &r%   r   AsyncGenerator.__repr__  s2    !$--"4"4!5T$++fRPTXJVWXXr'   c                   V ^8  d   QhRR/# r   r#   )r$   s   "r%   r&   r    s     7 7 7r'   c                	6    R V P                   P                   R2# )zAsyncGenerator(r  r  r   s   &r%   r   AsyncGenerator.__str__  s     !3!3 4A66r'   r#   )rg   rh   ri   rj   rk   rW   r   r   r   r   rm   r
  r  s   @r%   r  r    s&    7N* Y7 7r'   r  c                     a  ] tR tRtRtRR V 3R llltR R ltRR R lltR	 R
 ltR R lt	R R lt
R R ltRtV ;t# )rU   i  zgSpecial node representing new style typing unions.

Proxied class is set once for all in raw_building.
c               (    V ^8  d   QhRRRRRRRR/# )r   leftz(UnionType | nodes.ClassDef | nodes.Constrightr  znodes.NodeNG | Noner!   rP   r#   )r$   s   "r%   r&   UnionType.__annotate__  s2     	 	6	 8	 $		
 
	r'   c                	H   < \         SV `  4        W0n        Wn        W n        R # r,   )r   rW   r  r  r  )rV   r  r  r  r]   s   &&&&r%   rW   UnionType.__init__  s     		
r'   c                   V ^8  d   QhRR/# r  r#   )r$   s   "r%   r&   r    r  r'   c                	    R # r  r#   r   s   &r%   r   UnionType.callable  r  r'   c                    V ^8  d   QhRRRR/# r8  r#   )r$   s   "r%   r&   r    r:  r'   c                	    R # r<  r#   r=  s   &&r%   r   UnionType.bool_value  r?  r'   c                   V ^8  d   QhRR/# )r   r!   zLiteral['types.UnionType']r#   )r$   s   "r%   r&   r    s     ! !2 !r'   c                	    R # )ztypes.UnionTyper#   r   s   &r%   r   UnionType.pytype  s     r'   c                   V ^8  d   QhRR/# r   r#   )r$   s   "r%   r&   r  "  r  r'   c                	    R # )rU   r#   r   s   &r%   r   UnionType.display_type"  r  r'   c                   V ^8  d   QhRR/# r   r#   )r$   s   "r%   r&   r  %  r  r'   c                	h    R V P                   P                   RV P                   R\        V 4       R2# )z<UnionType(r  r  r  r  r   s   &r%   r   UnionType.__repr__%  r  r'   c                   V ^8  d   QhRR/# r   r#   )r$   s   "r%   r&   r  (  r  r'   c                	6    R V P                   P                   R2# )z
UnionType(r  r  r   s   &r%   r   UnionType.__str__(  r  r'   )r  r  r  r,   )rg   rh   ri   rj   rk   rW   r   r   r   r   r   r   rm   r
  r  s   @r%   rU   rU     s6    
	 	!T2 2r'   rU   >   builtins.propertyabc.abstractpropertyfunctools.cached_property>   lazyreifyLazyPropertylazypropertylazy_propertylazyattributecache_readonlycachedpropertylazy_attributer6   DynamicClassAttributer,   )4rk   
__future__r   ra  collections.abcr   r   typingr   r   r   astroidr   r	   astroid.constr
   astroid.contextr   r   r   r   astroid.exceptionsr   r   r   r   astroid.interpreterr   astroid.typingr   r   r   astroid.utilr   r   r   astroid.constraintr   r:   addr?   rJ   rL   r   r   r   r   r   r   rT   r  rU   r#   r'   r%   <module>r     s   
 #   . . . % $   , 
 B A- X
NN?# 'T' 'T3
l0tL5 tLnWG| WGt`E `Fh- hV*2 *2Z7Y 7(!2 !2r'   