+
    i                    >   R t ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RI	H
t
 ^ RIHtHtHt ^ RIt^ RIHtHtHt ^ RIHtHt ^ RIHtHtHt ^ R	IHt ^ R
IHt ^ RIHtH t  ]'       d   ^ RI!H"t" Rt#]$! ]#4      t%R t&R R lt' ! R R4      t( ! R R](4      t) ! R R](4      t* ! R R](4      t+ ! R R](4      t, ! R R]*4      t- ! R R](4      t. ! R R ]*4      t/ ! R! R"]*].4      t0 ! R# R$]04      t1 ! R% R&]04      t2 ! R' R(](4      t3 ! R) R*]34      t4 ! R+ R,]44      t5 ! R- R.]44      t6 ! R/ R0]44      t7 ! R1 R2]44      t8 ! R3 R4]44      t9/ R5]5bR6]6bR7]8bR8]9bR9]7bR:]7bR;]7bR<]7bR=]7bR>]7bR?]7bR@]7bRA]7bRB]7bRC]7bRD]7bRE]7bRF]7RG]7RH]7/Ct: ! RI RJ](4      t; ! RK RL](4      t<R# )Ma  
Data object model, as per https://docs.python.org/3/reference/datamodel.html.

This module describes, at least partially, a data object model for some
of astroid's nodes. The model contains special attributes that nodes such
as functions, classes, modules etc have, such as __doc__, __class__,
__module__ etc, being used when doing attribute lookups over nodes.

For instance, inferring `obj.__class__` will first trigger an inference
of the `obj` variable. If it was successfully inferred, then an attribute
`__class__ will be looked for in the inferred object. This is the part
where the data model occurs. The model is attached to those nodes
and the lookup mechanism will try to see if attributes such as
`__class__` are defined by the model or not. If they are defined,
the model will be requested to return the corresponding value of that
attribute. Thus the model can be viewed as a special part of the lookup
mechanism.
)annotationsN)Iterator)	lru_cache)TYPE_CHECKINGAnyLiteral)basesnodesutil)InferenceContextcopy_context)AttributeInferenceErrorInferenceError	NoDefault)AstroidManager)node_classes)InferenceResultSuccessfulInferenceResult)Propertyattr_c                   \         P                  ! V V P                  V P                  V P                  V P
                  R 7      p\        VP                  4       4       Uu. uF  p\         P                  ! W2R7      NK  	  ppVP                  4        Uu. uF  qUR,          NK  	  ppVP                  \        \        WF4      4      4       V# u upi u upi )parentlineno
col_offset
end_linenoend_col_offsetvaluer   )r   Dictr   r   r   r   listkeysConstvaluespostinitzip)instance
attributesobjr   r"   elemr$   s   &&     A/usr/lib/python3/dist-packages/astroid/interpreter/objectmodel.py_dunder_dictr,   1   s    


&&&&..C BFjooFWAXAX3AX 	  $.#4#4#67#642hh#6F7LLc$'()J 8s    CCc                    V ^8  d   QhRRRR/# )   modelObjectModelreturnr    )formats   "r+   __annotate__r4   H   s      ; 3     c                j     V P                   P                  #   \         d    T P                   u # i ; iN)	_instance_proxiedAttributeError)r/   s   &r+   _get_bound_noder;   H   s0    ''' s    22c                      ] tR t^PtR tR tR tRR ltR R lt]	R R	 l4       t
R
 t]R R l4       t]R R l4       t]R 4       t]t]t]t]t]t]t]t]t]t]t]t]t]t]t]t]t]t ]t!]t"]t#]t$Rt%R# )r0   c                	    R V n         R # r7   r8   selfs   &r+   __init__ObjectModel.__init__Q   s	    r5   c                	   . p\        V 4      P                  pR p\        V4      ^,           p\        V P	                  4       4       F  p^P\        V4      ,
          V,
          p\
        P                  ! V^VR7      P                  R4      pV^ ,          .pVR,           F"  p	VP                  RV,          V	,           4       K$  	  VP                  V4       K  	  VRVRRRV,          ,           P                  V4      /,          # )z%(cname)s(%(fields)s))indentwidthT:   NN cnamefieldsz,
)
type__name__lensortedr(   pprintpformat
splitlinesappendjoin)
r@   resultrH   string	alignmentfieldrE   linesinnerlines
   &         r+   __repr__ObjectModel.__repr__T   s    T
##(JN	DOO-.EUOi/ENN5%@KKDQE1XJEb		S9_t34 "MM%  / UusY.44V<
 
 	
r5   c                	    Wn         V # r7   r>   )r@   r'   s   &&r+   __call__ObjectModel.__call__g   s    !r5   Nc                	    V ! V4      # r7   r2   )r@   r'   clss   &&&r+   __get__ObjectModel.__get__k   s     H~r5   c                   V ^8  d   QhRR/# )r.   r1   boolr2   )r3   s   "r+   r4   ObjectModel.__annotate__u   s     ) )D )r5   c                	&    WP                  4       9   # r7   )r(   r@   names   &&r+   __contains__ObjectModel.__contains__u   s    (((r5   c                   V ^8  d   QhRR/# )r.   r1   z	list[str]r2   )r3   s   "r+   r4   re   y   s     X XI Xr5   c                    \        V 4       Uu. uF(  qP                  \        4      '       g   K  V\        R NK*  	  up# u upi )z;Get the attributes which are exported by this object model.N)dir
startswithIMPL_PREFIXLEN_OF_IMPL_PREFIX)r@   os   & r+   r(   ObjectModel.attributesx   s5     14D	W	1\\+=V&$%&	WWWs   ??c                    WP                  4       9   d   \        V \        V,           4      # \        V P                  VR7      h)zLook up the given *name* in the current model.

It should return an AST or an interpreter object,
but if the name is not found, then an AttributeInferenceError will be raised.
target	attribute)r(   getattrro   r   r8   rg   s   &&r+   lookupObjectModel.lookup}   s4     ??$$4t!344%T^^tLLr5   c                   V ^8  d   QhRR/# r.   r1   zbases.BoundMethodr2   )r3   s   "r+   r4   re      s     J J/ Jr5   c                    ^ RI Hp VP                  R4      p\        4       P                  R,          Vn        \        P                  ! V\        V 4      R7      # )zECalling cls.__new__(type) on an object returns an instance of 'type'.builderz$def __new__(self, cls): return cls()objectproxybound	astroidr~   extract_noder   builtins_moduler   r   BoundMethodr;   r@   r~   nodes   &  r+   attr___new__ObjectModel.attr___new__   sI     	$")"6"66#

 %&66x@  t?43HIIr5   c                   V ^8  d   QhRR/# r{   r2   )r3   s   "r+   r4   re      s     J J0 Jr5   c                    ^ RI Hp VP                  R4      p\        4       P                  R,          Vn        \        P                  ! V\        V 4      R7      # )z-Calling cls.__init__() normally returns None.r}   z0def __init__(self, *args, **kwargs): return Noner   r   r   r   s   &  r+   attr___init__ObjectModel.attr___init__   sK     	$
 #*"6"6B#

 %&66x@  t?43HIIr5   c                	D    \         P                  ! V P                  R 7      # r   r   Unknownr8   r?   s   &r+   attr___ne__ObjectModel.attr___ne__       ##4>>::r5   r>   r7   )&rK   
__module____qualname____firstlineno__rA   rZ   r]   ra   ri   r   r(   rx   propertyr   r   r   attr___class__attr___delattr__attr___dir__attr___doc__attr___eq__attr___format__attr___ge__attr___getattribute__attr___getstate__attr___gt__attr___hash__attr___init_subclass__attr___le__attr___lt__attr___reduce__attr___reduce_ex__attr___repr__attr___setattr__attr___sizeof__attr___str__attr___subclasshook____static_attributes__r2   r5   r+   r0   r0   P   s    
&) X XM J J J J" ; ; !N"LLK!OK'#KM(KK!O$M"!OL'r5   r0   c                      ] tR t^tR t]R 4       t]R 4       t]R 4       t]R 4       t	]R 4       t
]R 4       t]R 4       t]R	 4       t]R
 4       t]R 4       tRtR# )ModuleModelc                	`    \        4       P                  pVP                  P                  R 4      # )__dict__)r   r   special_attributesrx   )r@   builtins_ast_modules   & r+   	_builtinsModuleModel._builtins   s(    ,.>>"55<<ZHHr5   c                	"    V P                  4       # r7   )r   r?   s   &r+   attr_builtinsModuleModel.attr_builtins   s    ~~r5   c                	   V P                   P                  '       g   \        V P                   R R7      hV P                   P                   Uu. uF[  p\        P
                  ! VP                  R4      '       g   TM\        P                  P                  V4      V P                   R7      NK]  	  pp\        P                  ! V P                   R7      pVP                  V4       V# u upi )__path__rt   z__init__.pyr   r   )r8   packager   pathr   r#   endswithosdirnameListr%   )r@   r   	path_objs	containers   &   r+   attr___path__ModuleModel.attr___path__   s    ~~%%%):VV ++
 ,  $m < <D"''//RVBW~~	 , 	 
 !%%T^^<	9%
s   +C#85C#c                	n    \         P                  ! V P                  P                  V P                  R 7      # r   r   r#   r8   rh   r?   s   &r+   attr___name__ModuleModel.attr___name__   #    !!(;(;DNNSSr5   c                	    \         P                  ! \        V P                  P                  R R4      V P                  R7      # r   Nr   r   r#   rw   r8   doc_noder?   s   &r+   r   ModuleModel.attr___doc__   2    !!$..117DA>>
 	
r5   c                	n    \         P                  ! V P                  P                  V P                  R 7      # r   )r   r#   r8   filer?   s   &r+   attr___file__ModuleModel.attr___file__   r   r5   c                	V    \        V P                  V P                  P                  4      # r7   )r,   r8   globalsr?   s   &r+   attr___dict__ModuleModel.attr___dict__   s    DNNDNN,B,BCCr5   c                	    V P                   P                  '       g   R pMV P                   P                  p\        P                  ! WP                   R7      # ) r   )r8   r   rh   r   r#   )r@   r   s   & r+   attr___package__ModuleModel.attr___package__   s;    ~~%%%ENN''E!!nnEEr5   c                	D    \         P                  ! V P                  R 7      # r   r   r?   s   &r+   attr___spec__ModuleModel.attr___spec__        ##4>>::r5   c                	D    \         P                  ! V P                  R 7      # r   r   r?   s   &r+   attr___loader__ModuleModel.attr___loader__  r   r5   c                	D    \         P                  ! V P                  R 7      # r   r   r?   s   &r+   attr___cached__ModuleModel.attr___cached__	  r   r5   r2   N)rK   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r2   r5   r+   r   r      s    I      & T T 
 
 T T D D F F ; ; ; ; ; ;r5   r   c                      ] tR tRt]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t	]R 4       t
]
t]R 4       t]R	 4       t]R
 4       t]R 4       t]t]t]t]tRtR# )FunctionModeli  c                	n    \         P                  ! V P                  P                  V P                  R 7      # r   r   r?   s   &r+   r   FunctionModel.attr___name__  r   r5   c                	    \         P                  ! \        V P                  P                  R R4      V P                  R7      # r   r   r?   s   &r+   r   FunctionModel.attr___doc__  r   r5   c                	v    \         P                  ! V P                  P                  4       V P                  R 7      # r   r   r#   r8   qnamer?   s   &r+   attr___qualname__FunctionModel.attr___qualname__  s&    !!(<(<(>t~~VVr5   c                	    V P                   pVP                  P                  '       g   \        P                  ! R VR7      # \        P
                  ! VR7      pVP                  VP                  P                  4       V# )Nr   r   )r8   argsdefaultsr   r#   Tupler%   )r@   funcdefaults_objs   &  r+   attr___defaults__FunctionModel.attr___defaults__  s\    ~~yy!!!%%D>>#))6dii001r5   c           	     	V   \         P                  ! V P                  V P                  P                  V P                  P                  V P                  P
                  V P                  P                  R 7      pV P                  P                  '       g   RpMV P                  P                  pV P                  P                  p\        P                  ! \        VP                  ;'       g    . VP                  4      \        VP                  VP                  4      \        VP                  ;'       g    . VP                   4      4      pV UUu/ uF  w  rVV'       g   K  VP"                  VbK  	  pppVP$                  '       d   VP$                  WsP&                  &   VP(                  '       d   VP(                  WsP*                  &   V'       d   W'R&   VP,                  ! 4        UU	u. uF  w  r\         P.                  ! WR7      V	3NK   	  p
pp	VP1                  V
4       V# u uppi u up	pi )r   Nr1   r   )r   r    r8   r   r   r   r   returnsr   	itertoolschainr&   r   
kwonlyargskwonlyargs_annotationsposonlyargsposonlyargs_annotationsrh   varargannotationvarargkwargannotationkwargitemsr#   r%   )r@   r)   r   r   pair_annotationsarg
annotationr   keyr   r
  s   &          r+   attr___annotations__"FunctionModel.attr___annotations__)  s   >>>>((~~00~~00>>88
 ~~%%%Gnn,,G~~""$??		R!1!12!<!<=  &&B(D(DE
 ;K
:J%6cj CHHj :J 	 
    '+'<'<K$&*&:&:K

#$+! !, 1 1 3
 3 0%8 3 	 

 	U
!

s   HH%$H%c                	    \         P                  ! V P                  V P                  P                  V P                  P                  V P                  P
                  V P                  P                  R 7      # r   r   r    r8   r   r   r   r   r?   s   &r+   r   FunctionModel.attr___dict__Q  P      >>>>((~~00~~00>>88
 	
r5   c                	   R  pV P                   P                  p\        P                  ! V P                   V P                   P                  V P                   P
                  V P                   P                  V P                   P                  R7      p\        V! W#4      4      pVP                  \        VP                  4       4      4       V# )c              3     "   V P                    FF  p V P                  VP                  4      p\        P
                  ! TP                  TR 7      pYC3x  KH  	  R#   \         d     KZ  i ; i5i)r   N)r  default_valuerh   r   r   r#   )r   r   r  defaultrh   s   &&   r+   _default_args8FunctionModel.attr___kwdefaults__.<locals>._default_args_  s_     "00:G $))#((6Bm# ' ! s'   A-A-A-A*&A-)A**A-r   )r8   r   r   r    r   r   r   r   dictr%   r!   r
  )r@   r  r   r)   r   s   &    r+   attr___kwdefaults__!FunctionModel.attr___kwdefaults__]  s    	$ ~~"">>>>((~~00~~00>>88
 d01T(..*+,
r5   c                	z    \         P                  ! V P                  P                  4       P	                  4       4      # r7   r   r#   r8   rootr   r?   s   &r+   attr___module__FunctionModel.attr___module__v  )    !!$.."5"5"7"="="?@@r5   c                	   a V P                   o ! V3R  lR\        P                  4      pV! V P                   V P                   R7      # )c                  T   < ] tR tRtRtR R ltR
R V 3R lllt]V 3R l4       tR	t	R# )9FunctionModel.attr___get__.<locals>.DescriptorBoundMethodi~  zGBound method which knows how to understand calling descriptor
binding.
c                   V ^8  d   QhRR/# )r.   r1   z
Literal[0]r2   )r3   s   "r+   r4   FFunctionModel.attr___get__.<locals>.DescriptorBoundMethod.__annotate__  s      Z r5   c                	    ^ #     r2   r?   s   &r+   implicit_parametersMFunctionModel.attr___get__.<locals>.DescriptorBoundMethod.implicit_parameters  s     r5   Nc               $    V ^8  d   QhRRRRRR/# )r.   caller SuccessfulInferenceResult | NonecontextInferenceContext | Noner1   zIterator[bases.BoundMethod]r2   )r3   s   "r+   r4   r)    s-     6@ 6@86@ 16@ -	6@r5   c           	   3  	  <"   \        VP                  4      ^8  g   \        VP                  4      ^8  d   \        RV VR7      h\        V4      p \	        VP                  ^ ,          P                  VR7      4      p\        T\        P                  4      '       d   \        RYR7      h\        S\        P                  4      '       d   \        P                  ! STR7      x  R# \        S\        P                  4      '       d   Sx  R# SP                  SP                  SP                  SP                   SP"                  SP$                  SP&                  R7      pTP)                  SP                  SP*                  SP,                  SP.                  SP0                  R	7       \        P                  ! T4      p\        P                  ! YcR7      x  R#   \         d$   p\        Y!P                  ^ ,          R7      ThRp?ii ; i5i)
r.   z(Invalid arguments for descriptor bindingru   r2  r2  )r2  r   NzInvalid class inferredr   rh   r   r   r   r   r   )r   )rL   r   r   r   nextinferStopIteration
isinstancer
   UninferableBaser   UnboundMethodr   	__class__rh   r   r   r   r   r   r%   body
decoratorsr   r   )r@   r0  r2  r`   enew_funcr   r   s   &&&    r+   infer_call_resultKFunctionModel.attr___get__.<locals>.DescriptorBoundMethod.infer_call_result  s    
 v{{#a'3v{{+;a+?(B# '  'w/Vv{{1~33G3DEC c4#7#788(0  dE$7$788++$cBBdE$5$566J  >>;;#;;##'#6#6 *  !!IIIIOOLL!]] "  ++H5''e??O % V({{1~NTUUVs+   AH
,G >EH
H$HHH
c                z  < \         P                  ! SP                  P                  RRR7      pSP                  P                  P	                  4       pVP                  \         P                  ! R^ ^ VRRR7      4       SP                  P                  P	                  4       pVP                  VV. . . . . . R7       V# )a(  Overwrite the underlying args to match those of the underlying func.

Usually the underlying *func* is a function/method, as in:

    def test(self):
        pass

This has only the *self* parameter but when we access test.__get__
we get a new object which has two parameters, *self* and *type*.
Nr   r  r	  rJ   r7  )r   r  r   r  kw_defaultsr   r  r  )	r	   	Argumentsr   r   copyrQ   
AssignNamer  r%   )r@   	argumentspositional_or_keyword_paramspositional_only_paramsr   s   &   r+   r   >FunctionModel.attr___get__.<locals>.DescriptorBoundMethod.args  s     "OO99++D	 04yy~~/B/B/D,,33$$# #$(#''+	 *.)>)>)C)C)E&""5 6! " "+-,. # 	 ! r5   r2   r7   )
rK   r   r   r   __doc__r-  rC  r   r   r   r   s   r+   DescriptorBoundMethodr'  ~  s.    
6@ 6@p (! (!r5   rQ  r   )r8   r   r   )r@   rQ  r   s   & @r+   attr___get__FunctionModel.attr___get__z  s8    ~~k	!E$5$5 k	!Z %4>>PPr5   c                	D    \         P                  ! V P                  R 7      # r   r   r?   s   &r+   attr___call__FunctionModel.attr___call__  r   r5   r2   N)rK   r   r   r   r   r   r   r   r   r  r   attr___globals__r  r"  rR  rU  attr___builtins__attr___closure__attr___code__attr___type_params__r   r2   r5   r+   r   r     s    T T 
 
 W W   % %N 
 
 % 0 A A pQ pQf ; ; &$!M(r5   r   c                     a  ] tR tRtV 3R lt]R R l4       t]R 4       t]R 4       t]R 4       t	]R 4       t
]R	 4       t]R
 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       tRtV ;t# )
ClassModeli  c                	B   < \        4       V n        \        SV `  4        R # r7   )r   r2  superrA   r@   r>  s   &r+   rA   ClassModel.__init__  s    ')r5   c                   V ^8  d   QhRR/# )r.   r1   znode_classes.Unknownr2   )r3   s   "r+   r4   ClassModel.__annotate__   s     ; ;&: ;r5   c                	D    \         P                  ! V P                  R 7      # r   r   r?   s   &r+   r  ClassModel.attr___annotations__  r   r5   c                	z    \         P                  ! V P                  P                  4       P	                  4       4      # r7   r   r?   s   &r+   r"  ClassModel.attr___module__  r$  r5   c                	V    \         P                  ! V P                  P                  4      # r7   r   r?   s   &r+   r   ClassModel.attr___name__  s    !!$.."5"566r5   c                	^    \         P                  ! V P                  P                  4       4      # r7   r   r?   s   &r+   r   ClassModel.attr___qualname__  s     !!$.."6"6"899r5   c                	l    \         P                  ! \        V P                  P                  R R4      4      # r   Nr   r?   s   &r+   r   ClassModel.attr___doc__  &    !!'$..*A*A7D"QRRr5   c                	    V P                   P                  4       p\        P                  ! V P                   R 7      pVP	                  V4       V# r   )r8   mror   r   r%   )r@   rq  r)   s   &  r+   attr___mro__ClassModel.attr___mro__  s9    nn  "  7S
r5   c                	   a V o ! V3R  lR\         P                  4      pV P                  P                  4       pVP                  R,          ^ ,          pV! W2R7      # )c                  .   < ] tR tRtRR V 3R llltRtR# )+ClassModel.attr_mro.<locals>.MroBoundMethodi   Nc               $    V ^8  d   QhRRRRRR/# )r.   r0  r1  r2  r3  r1   zIterator[node_classes.Tuple]r2   )r3   s   "r+   r4   8ClassModel.attr_mro.<locals>.MroBoundMethod.__annotate__!  s(     . .8. 1. .	.r5   c              3  	,   <"   SP                   x  R # 5ir7   )rr  )r@   r0  r2  
other_selfs   &&&r+   rC  =ClassModel.attr_mro.<locals>.MroBoundMethod.infer_call_result!  s     
 !---s   r2   r7   rK   r   r   r   rC  r   )rz  s   r+   MroBoundMethodrv     s    . .r5   r}  rq  r   )r   r   r8   implicit_metaclasslocals)r@   r}  r~  
mro_methodrz  s   &   @r+   attr_mroClassModel.attr_mro  sO    
	.U.. 	. "^^>>@'..u5a8
JIIr5   c                	    \         P                  ! 4       p\        4       p\        V P                  P                  V4      4      pVP                  VR 7       V# )elts)r   r   r   r!   r8   _inferred_basesr%   )r@   r)   r2  r  s   &   r+   attr___bases__ClassModel.attr___bases__,  sD      ""$DNN227;<$
r5   c                	D    ^ RI Hp VP                  V P                  4      # r,  )helpersr   r  object_typer8   r@   r  s   & r+   r   ClassModel.attr___class__4       	$""4>>22r5   c                T  a V P                   P                  4       pV P                   P                  4       pVP                  \        P
                  4       Uu. uF;  pW0P                   8w  g   K  VP                  WP                  R7      '       g   K9  VNK=  	  pp\        P                  ! V P                   R7      oSP                  V4        ! V3R lR\        P                  4      pV P                   P                  4       pVP                  R,          ^ ,          pV! WvR7      # u upi )zGet the subclasses of the underlying class.

This looks only in the current module for retrieving the subclasses,
thus it might miss a couple of them.
r6  r   c                  .   < ] tR tRtRR V 3R llltRtR# )=ClassModel.attr___subclasses__.<locals>.SubclassesBoundMethodiN  Nc               $    V ^8  d   QhRRRRRR/# )r.   r0  r1  r2  r3  r1   zIterator[node_classes.List]r2   )r3   s   "r+   r4   JClassModel.attr___subclasses__.<locals>.SubclassesBoundMethod.__annotate__O  s(      8 1 -	r5   c              3  	   <"   Sx  R # 5ir7   r2   r@   r0  r2  r)   s   &&&r+   rC  OClassModel.attr___subclasses__.<locals>.SubclassesBoundMethod.infer_call_resultO       
 	   
r2   r7   r|  r)   s   r+   SubclassesBoundMethodr  N       r5   r  __subclasses__r   )r8   r   r!  nodes_of_classr	   ClassDefis_subtype_ofr2  r   r   r%   r   r   r~  r  )	r@   r   r!  r`   classesr  r~  subclasses_methodr)   s	   &       @r+   attr___subclasses__ClassModel.attr___subclasses__;  s     $$&~~""$ **5>>:
:nn$ ),):):5,,):)W C: 	 
 t~~6W	E$5$5 	 "^^>>@.556FGJ$+<WW'
s   D%.D%D%c                	    \         P                  ! V P                  V P                  P                  V P                  P                  V P                  P
                  V P                  P                  R 7      # r  r  r?   s   &r+   r   ClassModel.attr___dict__Z  r  r5   c                6    V P                   P                  4       # )z-Calling a class A() returns an instance of A.)r8   instantiate_classr?   s   &r+   rU  ClassModel.attr___call__d  s     ~~//11r5   r6  )rK   r   r   r   rA   r   r  r"  r   r   r   rr  r  r  r   r  r   rU  r   __classcell__r>  s   @r+   r]  r]    s     ; ; A A 7 7 : : S S   J J"   3 3 X X< 
 
 2 2r5   r]  c                  V    ] tR tRt]R 4       t]R 4       t]R 4       t]R 4       tRt	R# )
SuperModelij  c                	.    V P                   P                  # r7   )r8   mro_pointerr?   s   &r+   attr___thisclass__SuperModel.attr___thisclass__k      ~~)))r5   c                	.    V P                   P                  # r7   )r8   _self_classr?   s   &r+   attr___self_class__SuperModel.attr___self_class__o  r  r5   c                	.    V P                   P                  # r7   )r8   rJ   r?   s   &r+   attr___self__SuperModel.attr___self__s  s    ~~"""r5   c                	.    V P                   P                  # r7   r8   r9   r?   s   &r+   r   SuperModel.attr___class__w      ~~&&&r5   r2   N)
rK   r   r   r   r   r  r  r  r   r   r2   r5   r+   r  r  j  sP    * * * * # # ' 'r5   r  c                  R    ] tR tRt]R 4       t]R 4       t]R 4       t]t]t	]t
RtR# )UnboundMethodModeli|  c                	D    ^ RI Hp VP                  V P                  4      # r  r  r  s   & r+   r   !UnboundMethodModel.attr___class__}  r  r5   c                	.    V P                   P                  # r7   r  r?   s   &r+   attr___func__ UnboundMethodModel.attr___func__  r  r5   c                	F    \         P                  ! R V P                  R7      # )Nr   )r   r#   r8   r?   s   &r+   r   UnboundMethodModel.attr___self__  s    !!T^^DDr5   r2   N)rK   r   r   r   r   r   r  r  attr_im_funcattr_im_classattr_im_selfr   r2   r5   r+   r  r  |  sO    3 3 ' ' E E !L"M Lr5   r  c                  F    ] tR tRtRt]R R l4       t]R R l4       tRtR# )	ContextManagerModeli  zModel for context managers.

Based on 3.3.9 of the Data Model documentation:
https://docs.python.org/3/reference/datamodel.html#with-statement-context-managers
c                   V ^8  d   QhRR/# r{   r2   )r3   s   "r+   r4    ContextManagerModel.__annotate__  s     J J 1 Jr5   c                    ^ RI Hp VP                  R4      p\        4       P                  R,          Vn        \        P                  ! V\        V 4      R7      # )a  Representation of the base implementation of __enter__.

As per Python documentation:
Enter the runtime context related to this object. The with statement
will bind this method's return value to the target(s) specified in the
as clause of the statement, if any.
r}   zdef __enter__(self): ...r   r   r   r   s   &  r+   attr___enter__"ContextManagerModel.attr___enter__  sG     	$")"6"67U"V %&66x@  t?43HIIr5   c                   V ^8  d   QhRR/# r{   r2   )r3   s   "r+   r4   r    s     J J0 Jr5   c                    ^ RI Hp VP                  R4      p\        4       P                  R,          Vn        \        P                  ! V\        V 4      R7      # )a$  Representation of the base implementation of __exit__.

As per Python documentation:
Exit the runtime context related to this object. The parameters describe the
exception that caused the context to be exited. If the context was exited
without an exception, all three arguments will be None.
r}   z7def __exit__(self, exc_type, exc_value, traceback): ...r   r   r   r   s   &  r+   attr___exit__!ContextManagerModel.attr___exit__  sI     	$")"6"6I#

 %&66x@  t?43HIIr5   r2   N)	rK   r   r   r   rO  r   r  r  r   r2   r5   r+   r  r    s3     J J" J Jr5   r  c                  6    ] tR tRt]R 4       t]R 4       tRtR# )BoundMethodModeli  c                	B    V P                   P                  P                  # r7   r  r?   s   &r+   r  BoundMethodModel.attr___func__  s    ~~&&///r5   c                	.    V P                   P                  # r7   )r8   r   r?   s   &r+   r  BoundMethodModel.attr___self__  s    ~~###r5   r2   N)rK   r   r   r   r   r  r  r   r2   r5   r+   r  r    s(    0 0 $ $r5   r  c                  N   a  ] tR tRtR V 3R llt]R 4       t]R 4       tRtV ;t	# )GeneratorBaseModeli  c                   V ^8  d   QhRR/# )r.   
gen_moduleznodes.Moduler2   )r3   s   "r+   r4   GeneratorBaseModel.__annotate__  s     
G 
G< 
Gr5   c                	\  < \         SV `  4        VP                  P                  4        F~  w  r#V^ ,          p\	        V\
        P                  4      '       d!   \        P                  ! V\        V 4      4      pV3R lp\        \        V 4      \        V,           \        V4      4       K  	  R# )r,  c                    V# r7   r2   )r`   meths   &&r+   patched,GeneratorBaseModel.__init__.<locals>.patched  s    r5   N)r_  rA   r  r
  r;  r	   FunctionDefr   r   r;   setattrrJ   ro   r   )r@   r  rh   r$   methodr  r>  s   &&    r+   rA   GeneratorBaseModel.__init__  s    &--335LDAYF&%"3"344**6?43HI"(  DJd 2HW4EF 6r5   c                	    \         P                  ! V P                  P                  P                  V P                  R 7      # r   )r   r#   r8   r   rh   r?   s   &r+   r    GeneratorBaseModel.attr___name__  s.    !!..'',,T^^
 	
r5   c                	    \         P                  ! \        V P                  P                  P
                  R R4      V P                  R7      # r   )r   r#   rw   r8   r   r   r?   s   &r+   r   GeneratorBaseModel.attr___doc__  s8    !!$..//88'4H>>
 	
r5   r2   )
rK   r   r   r   rA   r   r   r   r   r  r  s   @r+   r  r    s7    
G 
G 
 

 
 
r5   r  c                  (   a  ] tR tRtV 3R ltRtV ;t# )GeneratorModeli  c                	X   < \         SV `  \        4       P                  R ,          4       R# )	generatorNr_  rA   r   r   r`  s   &r+   rA   GeneratorModel.__init__  s    )99+FGr5   r2   rK   r   r   r   rA   r   r  r  s   @r+   r  r    s    H Hr5   r  c                  (   a  ] tR tRtV 3R ltRtV ;t# )AsyncGeneratorModeli  c                	X   < \         SV `  \        4       P                  R ,          4       R# )async_generatorNr  r`  s   &r+   rA   AsyncGeneratorModel.__init__  s    )99:KLMr5   r2   r  r  s   @r+   r  r    s    N Nr5   r  c                  V    ] tR tRt]R 4       t]R 4       t]R 4       t]R 4       tRt	R# )InstanceModeli  c                	.    V P                   P                  # r7   r  r?   s   &r+   r   InstanceModel.attr___class__  r  r5   c                	z    \         P                  ! V P                  P                  4       P	                  4       4      # r7   r   r?   s   &r+   r"  InstanceModel.attr___module__  r$  r5   c                	l    \         P                  ! \        V P                  P                  R R4      4      # rm  r   r?   s   &r+   r   InstanceModel.attr___doc__  ro  r5   c                	V    \        V P                  V P                  P                  4      # r7   )r,   r8   instance_attrsr?   s   &r+   r   InstanceModel.attr___dict__  s    DNNDNN,I,IJJr5   r2   N)
rK   r   r   r   r   r   r"  r   r   r   r2   r5   r+   r  r    sV    ' ' A A S S K Kr5   r  c                  <    ] tR tRt]R R l4       t]R 4       tRtR# )ExceptionInstanceModeli  c                   V ^8  d   QhRR/# r.   r1   znodes.Tupler2   )r3   s   "r+   r4   #ExceptionInstanceModel.__annotate__  s     2 2; 2r5   c                	D    \         P                  ! V P                  R 7      # r   )r	   r   r8   r?   s   &r+   	attr_args ExceptionInstanceModel.attr_args  s    {{$..11r5   c                	    \        4       P                  pV\        P                  P                  ,          pVP                  4       # r7   )r   r   typesTracebackTyperK   r  )r@   r   traceback_types   &  r+   attr___traceback__)ExceptionInstanceModel.attr___traceback__  s6    ,.>>,U-@-@-I-IJ//11r5   r2   N)rK   r   r   r   r   r  r  r   r2   r5   r+   r  r    s(    2 2 2 2r5   r  c                  &    ] tR tRt]R 4       tRtR# )SyntaxErrorInstanceModeli  c                	.    \         P                  ! R 4      # r   r   r#   r?   s   &r+   	attr_text"SyntaxErrorInstanceModel.attr_text      !!"%%r5   r2   N)rK   r   r   r   r   r  r   r2   r5   r+   r  r    s    & &r5   r  c                  ,    ] tR tRt]R R l4       tRtR# )GroupExceptionInstanceModeli  c                   V ^8  d   QhRR/# r  r2   )r3   s   "r+   r4   (GroupExceptionInstanceModel.__annotate__  s     9 9 9r5   c                	D    \         P                  ! V P                  R 7      # r   )r   r   r8   r?   s   &r+   attr_exceptions+GroupExceptionInstanceModel.attr_exceptions  s    !!88r5   r2   N)rK   r   r   r   r   r   r   r2   r5   r+   r  r    s    9 9r5   r  c                  J    ] tR tRt]R 4       t]R 4       t]R 4       t]tRt	R# )OSErrorInstanceModeli  c                	.    \         P                  ! R 4      # r  r  r?   s   &r+   attr_filename"OSErrorInstanceModel.attr_filename  r  r5   c                	.    \         P                  ! ^ 4      # r+  r  r?   s   &r+   
attr_errnoOSErrorInstanceModel.attr_errno   s    !!!$$r5   c                	.    \         P                  ! R 4      # r  r  r?   s   &r+   attr_strerror"OSErrorInstanceModel.attr_strerror$  r  r5   r2   N)
rK   r   r   r   r   r%  r(  r+  attr_filename2r   r2   r5   r+   r#  r#    sC    & & % % & & #Nr5   r#  c                  6    ] tR tRt]R 4       t]R 4       tRtR# )ImportErrorInstanceModeli+  c                	.    \         P                  ! R 4      # r  r  r?   s   &r+   	attr_name"ImportErrorInstanceModel.attr_name,  r  r5   c                	.    \         P                  ! R 4      # r  r  r?   s   &r+   	attr_path"ImportErrorInstanceModel.attr_path0  r  r5   r2   N)rK   r   r   r   r   r1  r4  r   r2   r5   r+   r/  r/  +  s(    & & & &r5   r/  c                  &    ] tR tRt]R 4       tRtR# )UnicodeDecodeErrorInstanceModeli5  c                	.    \         P                  ! R 4      # )r5   r  r?   s   &r+   attr_object+UnicodeDecodeErrorInstanceModel.attr_object6  s    !!#&&r5   r2   N)rK   r   r   r   r   r9  r   r2   r5   r+   r7  r7  5  s    ' 'r5   r7  zbuiltins.SyntaxErrorzbuiltins.ExceptionGroupzbuiltins.ImportErrorzbuiltins.UnicodeDecodeErrorzbuiltins.OSErrorzbuiltins.BlockingIOErrorzbuiltins.BrokenPipeErrorzbuiltins.ChildProcessErrorzbuiltins.ConnectionAbortedErrorzbuiltins.ConnectionErrorzbuiltins.ConnectionRefusedErrorzbuiltins.ConnectionResetErrorzbuiltins.FileExistsErrorzbuiltins.FileNotFoundErrorzbuiltins.InterruptedErrorzbuiltins.IsADirectoryErrorzbuiltins.NotADirectoryErrorzbuiltins.PermissionErrorzbuiltins.ProcessLookupErrorzbuiltins.TimeoutErrorc                  \    ] tR tRt]R 4       tR t]R 4       t]R 4       t]R 4       t	Rt
R# )		DictModeliT  c                	.    V P                   P                  # r7   r  r?   s   &r+   r   DictModel.attr___class__U  r  r5   c                   a  ! V3R lR\         P                  4      p\        V P                  P                  P                  V4      R4      pV! W@P                  R7      # )z7Generate a bound method that can infer the given *obj*.c                  .   < ] tR tRtRR V 3R llltRtR# )@DictModel._generic_dict_attribute.<locals>.DictMethodBoundMethodi\  Nc               $    V ^8  d   QhRRRRRR/# r.   r0  r1  r2  r3  r1   zIterator[InferenceResult]r2   )r3   s   "r+   r4   MDictModel._generic_dict_attribute.<locals>.DictMethodBoundMethod.__annotate__]  s(      8 1 +	r5   c              3  	   <"   Sx  R # 5ir7   r2   r  s   &&&r+   rC  RDictModel._generic_dict_attribute.<locals>.DictMethodBoundMethod.infer_call_result]  r  r  r2   r7   r|  r  s   r+   DictMethodBoundMethodrA  \  r  r5   rG  Nr   )r   r   r8  r8   r9   igetattr)r@   r)   rh   rG  r  s   &f&  r+   _generic_dict_attribute!DictModel._generic_dict_attributeY  sG    	G$7$7 	 DNN++44T:DA$4~~FFr5   c                	p   ^ RI Hp . p\        P                  ! V P                  R7      pV P                  P
                   F?  w  rE\        P                  ! VR7      pVP                  WE34       VP                  V4       KA  	  VP                  VR7       VP                  V4      pV P                  VR4      # )r,  objectsr   r  r
  )r   rM  r   r   r8   r
  r   r%   rQ   	DictItemsrI  )r@   rM  elemsr)   r  r   r*   	items_objs   &       r+   
attr_itemsDictModel.attr_itemsg  s    #t~~6....JC%%S1DMM3,'LL / 	% %%c*	++Iw??r5   c                	   ^ RI Hp V P                  P                   UUu. uF  w  r#VNK	  	  ppp\        P
                  ! V P                  R7      pVP                  VR7       VP                  V4      pV P                  VR4      # u uppi )r,  rL  r   r  r"   )	r   rM  r8   r
  r   r   r%   DictKeysrI  )r@   rM  r  _r"   r)   keys_objs   &      r+   	attr_keysDictModel.attr_keysv  sq    #$(NN$8$89$8$89t~~6$##C(++Hf== :s   Bc                	   ^ RI Hp V P                  P                   UUu. uF  w  r#VNK	  	  ppp\        P
                  ! V P                  R7      pVP                  V4       VP                  V4      pV P                  VR4      # u uppi )r,  rL  r   r$   )	r   rM  r8   r
  r   r   r%   
DictValuesrI  )r@   rM  rU  r   r$   r)   
values_objs   &      r+   attr_valuesDictModel.attr_values  sp    #*...*>*>?*>JQ%*>?t~~6V'',
++JAA @s   Br2   N)rK   r   r   r   r   r   rI  rQ  rW  r\  r   r2   r5   r+   r<  r<  T  sZ    ' 'G @ @ > > B Br5   r<  c                  p    ] tR tRtRtR t]R 4       t]R 4       t]R 4       t	]R 4       t
]R 4       tR	tR
# )PropertyModeli  zModel for a builtin property.c                	|   \         P                  ! VV P                  V P                  P                  V P                  P                  V P                  P
                  V P                  P                  R 7      p\         P                  ! VRRR7      pVP                  . . . . . . . . R7       VP                  V. R7       V# )rh   r   r   r   r   r   NrF  )r   r   r  rG  r   r  r  r  r   r?  )	r	   r  r8   r   r   r   r   rH  r%   )r@   rh   functionr   s   &&  r+   _init_functionPropertyModel._init_function  s    $$>>>>((~~00~~00>>88
 ht4H$&#% 	 		
 	t"-r5   c           	     	v  a V P                   o ! V3R  lR\        P                  4      pV! RV P                   V P                   P                  V P                   P                  V P                   P
                  V P                   P                  R7      pVP                  SP                  SP                  R7       V# )c                  .   < ] tR tRtRR V 3R llltRtR# )5PropertyModel.attr_fget.<locals>.PropertyFuncAccessori  Nc               $    V ^8  d   QhRRRRRR/# rC  r2   )r3   s   "r+   r4   BPropertyModel.attr_fget.<locals>.PropertyFuncAccessor.__annotate__  s(      8 1 +	r5   c              3  	   <"   V'       d(   \        VP                  4      ^8w  d   \        RWR7      hSP                  P	                  WR7       Rj  xL
  R#  L5i)rF   zfget() needs a single argumentr5  r0  r2  N)rL   r   r   rc  rC  )r@   r0  r2  r   s   &&&r+   rC  GPropertyModel.attr_fget.<locals>.PropertyFuncAccessor.infer_call_result  sS      c&++.!3(8   ==::! ;   s   AAAAr2   r7   r|  rP  s   r+   PropertyFuncAccessorrh    s     r5   rn  fgetra  rb  )
r8   r	   r  r   r   r   r   r%   r   r?  )r@   rn  property_accessorr   s   &  @r+   	attr_fgetPropertyModel.attr_fget  s    ~~	5#4#4 	  1>>>>((~~00~~00>>88
 	""				"B  r5   c           	     	  a V P                   pR  R lpV! V4      oS'       g#   \        RVP                  P                   24      h ! V3R lR\        P
                  4      pV! RV P                   V P                   P                  V P                   P                  V P                   P                  V P                   P                  R7      pVP                  SP                  SP                  R7       V# )c                    V ^8  d   QhRRRR/# )r.   r   r   r1   znodes.FunctionDef | Noner2   )r3   s   "r+   r4   -PropertyModel.attr_fset.<locals>.__annotate__  s     	 	h 	+C 	r5   c                \   V P                   P                  4        Uu. uF+  qP                  V P                  P                  8X  g   K)  VNK-  	  up FR  pVP	                  4        F;  pVP                  V P                  P                  R,           4      '       g   K7  Vu u # 	  KT  	  R# u upi )z
Given a property, find the corresponding setter function and returns it.

:param func: property for which the setter has to be found
:return: the setter function or None
z.setterN)r   get_childrenrh   rc  decoratornamesr   )r   tru   dec_names   &   r+   find_setter,PropertyModel.attr_fset.<locals>.find_setter  s      ;;3355a4==CUCU9U5 !' 5 5 7H((););i)GHH% !8 s   &B)B)z&Unable to find the setter of property c                  .   < ] tR tRtRR V 3R llltRtR# )5PropertyModel.attr_fset.<locals>.PropertyFuncAccessori  Nc               $    V ^8  d   QhRRRRRR/# rC  r2   )r3   s   "r+   r4   BPropertyModel.attr_fset.<locals>.PropertyFuncAccessor.__annotate__  s-     
Y 
Y8
Y 1
Y +	
Yr5   c              3  	   <"   V'       d(   \        VP                  4      ^8w  d   \        RWR7      hSP                  WR7       Rj  xL
  R#  L5i)r.   zfset() needs two argumentsr5  rl  N)rL   r   r   rC  )r@   r0  r2  func_setters   &&&r+   rC  GPropertyModel.attr_fset.<locals>.PropertyFuncAccessor.infer_call_result  sF      c&++.!3(4T  '888XXXs   AAA	Ar2   r7   r|  )r  s   r+   rn  r~    s    
Y 
Yr5   rn  fsetra  rb  )r8   r   rc  rh   r	   r  r   r   r   r   r%   r   r?  )r@   r   r{  rn  rp  r  s   &    @r+   	attr_fsetPropertyModel.attr_fset  s    ~~	 "$' 89K9K8LM 	Y5#4#4 	Y 1>>>>((~~00~~00>>88
 	""(8(8{?O?O"P  r5   c                	$    V P                  R 4      # )setterrd  r?   s   &r+   attr_setterPropertyModel.attr_setter      ""8,,r5   c                	$    V P                  R 4      # )deleterr  r?   s   &r+   attr_deleterPropertyModel.attr_deleter  s    ""9--r5   c                	$    V P                  R 4      # )getterr  r?   s   &r+   attr_getterPropertyModel.attr_getter  r  r5   r2   N)rK   r   r   r   rO  rd  r   rq  r  r  r  r  r   r2   r5   r+   r_  r_    so    '2 ! !< .! .!` - - . . - -r5   r_  )=rO  
__future__r   r   r   rN   r  collections.abcr   	functoolsr   typingr   r   r   r   r   r	   r
   astroid.contextr   r   astroid.exceptionsr   r   r   astroid.managerr   astroid.nodesr   astroid.typingr   r   astroid.objectsr   ro   rL   rp   r,   r;   r0   r   r   r]  r  r  r  r  r  r  r  r  r  r  r  r#  r/  r7  BUILTIN_EXCEPTIONSr<  r_  r2   r5   r+   <module>r     sn  
& #  	   $  . .  & & : Q Q * & E(% .o( o(dJ;+ J;Zf)K f)Ro2 o2d' '$! !*+J+ +J\$} $
(; 
6H' H
N, N
KK K*	2] 	2&5 &9"8 9#1 # &5 &'&< '4: 4 "#B	 ,  4  4 !"6 &';  4 &'; $%9  4 !"6   !5!" !"6#$ "#7%&  4!#71+ 26B 6Brv-K v-r5   