§
    ñyIf¥i  ã                  óì  — d dl mZ d dlZd dlZd dlZd dlmZ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 d dlmZ d dlmZ d d	lmZmZmZ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, ej-        dk    rd dlm.Z. nd dl/m.Z. erd dlm0Z0 d dl1m2Z2  edd¬¦  «        Z3 edd¬¦  «        Z4 edd¬¦  «        Z5eded         eed         df         f         Z6 G d„ d¦  «        Z7dS )é    )ÚannotationsN)Ú	GeneratorÚIterator)Úcached_property)Úsingledispatch)
ÚTYPE_CHECKINGÚAnyÚClassVarÚLiteralÚTupleÚTypeÚTypeVarÚUnionÚcastÚoverload)Úutil)ÚInferenceContext)ÚAstroidErrorÚInferenceErrorÚParentMissingErrorÚStatementMissingÚUseInferenceDefault)ÚAstroidManager©ÚAsStringVisitor)ÚOP_PRECEDENCE)ÚPosition)ÚInferenceErrorInfoÚInferenceResultÚInferFn)é   é   )ÚSelf)Únodes)Ú_base_nodesÚ_NodesTÚNodeNG)ÚboundÚ_NodesT2Ú_NodesT3.c                  óˆ  — e Zd ZU dZdZded<   	 dZded<   	 dZded<   	 dZded<   dZ	d	ed
<   	 dZ
d	ed<   	 dZd	ed<   	 dZded<   dld„Z	 dmdnd„Zdod!„Zdod"„Zdod#„Zdpd&„Zdqd(„Zdrd)„Zdqd*„Zdsd,„Zdd-œdtd1„Zdd-œdud3„Zdvd5„Zdwd7„Zd8„ Zd9„ Zd:„ Zd;„ Zedxd=„¦   «         Z edxd>„¦   «         Z!dxd?„Z"dydA„Z#dzdD„Z$e%	 d{d|dK„¦   «         Z&e%	 d{d}dN„¦   «         Z&e%	 d{d~dQ„¦   «         Z&e%	 d{ddS„¦   «         Z&	 dmd€dU„Z&ed�dW„¦   «         Z'dX„ Z(dY„ Z)dZ„ Z*d[„ Z+d\„ Z,	 dmd‚d^„Z-d_„ Z.d`„ Z/dsda„Z0dsdb„Z1dsdc„Z2dodd„Z3	 	 	 	 	 	 dƒdodh„Z4dmd„di„Z5dj„ Z6dsdk„Z7dS )…r'   zlA node of the new Abstract Syntax Tree (AST).

    This is the base class for all Astroid node classes.
    FzClassVar[bool]Úis_statementÚoptional_assignÚis_functionÚ	is_lambda© zClassVar[tuple[str, ...]]Ú_astroid_fieldsÚ_other_fieldsÚ_other_other_fieldsNzInferFn[Self] | NoneÚ_explicit_inferenceÚlinenoú
int | NoneÚ
col_offsetÚparentúNodeNG | NoneÚ
end_linenoÚend_col_offsetÚreturnÚNonec               ód   — || _         	 || _        	 || _        	 || _        	 || _        	 d | _        d S ©N)r5   r7   r8   r:   r;   Úposition)Úselfr5   r7   r8   r:   r;   s         úI/var/www/piapp/venv/lib/python3.11/site-packages/astroid/nodes/node_ng.pyÚ__init__zNodeNG.__init__]   sL   € ð ˆŒØDà$ˆŒØFàˆŒØ1à$ˆŒØDà,ˆÔð	ð
 *.ˆŒð	ð 	ó    ÚcontextúInferenceContext | NoneÚkwargsr	   ú&Generator[InferenceResult, None, None]c              +  óÀ  K  — |€t          ¦   «         }n|j                             | |¦  «        }| j        �9	  | j        | |fi |¤ŽD ]}|xj        dz  c_        |V — ŒdS # t
          $ r Y nw xY w| |j        |j        |j        f}||j	        v r|j	        |         E d{V —† dS g }t          ¦   «         j        }t           | j        dd|i|¤Ž¦  «        D ]s\  }}||k    s|j        |j        k    r/|                     t           j        ¦  «         t           j        V —  n*|                     |¦  «         |V — |xj        dz  c_        Œtt%          |¦  «        |j	        |<   dS )aV  Get a generator of the inferred values.

        This is the main entry point to the inference system.

        .. seealso:: :ref:`inference`

        If the instance has some explicit inference function set, it will be
        called instead of the default interface.

        :returns: The inferred values.
        :rtype: iterable
        Né   rE   r0   )r   Úextra_contextÚgetr4   Únodes_inferredr   Ú
lookupnameÚcallcontextÚ	boundnodeÚinferredr   Úmax_inferable_valuesÚ	enumerateÚ_inferÚmax_inferredÚappendr   ÚUninferableÚtuple)rA   rE   rG   ÚresultÚkeyÚresultsÚlimitÚis           rB   ÚinferzNodeNG.infer   sÚ  è è € ð ˆ?Ý&Ñ(Ô(ˆGˆGàÔ+×/Ò/°°gÑ>Ô>ˆGØÔ#Ð/ð
Ø6˜dÔ6ØØðð ð ðð ð !ð !�Fð
 Ð*Ô*¨aÑ/Ð*Ô*Ø �L�L�L�LØ�øÝ&ð ð ð Ø�ðøøøð �WÔ'¨Ô)<¸gÔ>OÐPˆØ�'Ô"Ð"Ð"ØÔ'¨Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,ØˆFàˆõ Ñ Ô Ô5ˆÝ" ; 4¤;Ð#IÐ#I°wÐ#IÀ&Ð#IÐ#IÑJÔJð 	(ð 	(‰IˆAˆvØ�EŠzˆz˜gÔ4°wÔ7KÒKÐKØ—’�tÔ/Ñ0Ô0Ð0ÝÔ&Ð&Ð&Ð&Ø�Ø�NŠN˜6Ñ"Ô"Ð"ØˆLˆLˆLØÐ"Ô" aÑ'Ð"Ô"Ð"õ !& g¡¤ˆÔ˜ÑØˆs   ·&A Á
A,Á+A,Ústrc                ó‚   ‡ — t          ˆ fd„dD ¦   «         ¦  «        r"t          ‰ dd¦  «        pt          ‰ dd¦  «        S dS )zyGet a name for nice representation.

        This is either :attr:`name`, :attr:`attrname`, or the empty string.
        c              3  ó*   •K  — | ]}|‰j         vV — Œd S r?   )r1   )Ú.0ÚnamerA   s     €rB   ú	<genexpr>z#NodeNG.repr_name.<locals>.<genexpr>½   s+   øè è € ÐQÐQ°Dˆt˜4Ô/Ð/ÐQÐQÐQÐQÐQÐQrD   )rc   Úattrnamerc   Ú re   )ÚallÚgetattr©rA   s   `rB   Ú	repr_namezNodeNG.repr_name¸   sT   ø€ õ
 ÐQÐQÐQÐQÐ<PÐQÑQÔQÑQÔQð 	NÝ˜4 ¨Ñ,Ô,ÐMµ¸¸jÈ"Ñ0MÔ0MÐMØˆrrD   c                ó�  — |                       ¦   «         }t          | ¦  «        j        }|r%d}t          |¦  «        t          |¦  «        z   dz   }nd}t          |¦  «        dz   }g }| j        | j        z   D ]°}t          | |d¦  «        }dt          |¦  «        z
  |z
  }t          j        |d|¬¦  «         	                    d¦  «        }	|	d	         g}
|	dd …         D ]}|
 
                    d
|z  |z   ¦  «         Œ| 
                    |› dd                     |
¦  «        › �¦  «         Œ±|||dd
|z  z                        |¦  «        dœz  S )Nz%(cname)s.%(rname)s(%(fields)s)é   z%(cname)s(%(fields)s)rJ   ÚUnknownéP   )ÚindentÚwidthTr   ú ú=rf   ú,
)ÚcnameÚrnameÚfields)rj   ÚtypeÚ__name__Úlenr2   r1   rh   ÚpprintÚpformatÚ
splitlinesrV   Újoin)rA   ru   rt   ÚstringÚ	alignmentrY   ÚfieldÚvaluerp   ÚlinesÚinnerÚlines               rB   Ú__str__zNodeNG.__str__Á   si  € Ø—’Ñ Ô ˆÝ�T‘
”
Ô#ˆØð 	'Ø6ˆFÝ˜E™
œ
¥S¨¡Z¤ZÑ/°!Ñ3ˆIˆIà,ˆFÝ˜E™
œ
 Q™ˆIØˆØÔ'¨$Ô*>Ñ>ð 	7ð 	7ˆEÝ˜D %¨Ñ3Ô3ˆEØ�˜U™œ‘O iÑ/ˆEÝ”N 5°¸%Ð@Ñ@Ô@×KÒKÈDÑQÔQˆEà˜1”X�JˆEØ˜a˜b˜bœ	ð 5ð 5�Ø—’˜S 9™_¨tÑ3Ñ4Ô4Ð4Ð4Ø�MŠM˜UÐ5Ð5 R§W¢W¨U¡^¤^Ð5Ð5Ñ6Ô6Ð6Ð6àØØØ˜s Y™Ñ.×4Ò4°VÑ<Ô<ð
ð 
ñ 
ð 	
rD   c                óÀ   — |                       ¦   «         }	 | j        }n# t          $ r d}Y nw xY w|rd}nd}|t          | ¦  «        j        ||t          | ¦  «        dœz  S )Nr   z.<%(cname)s.%(rname)s l.%(lineno)s at 0x%(id)x>z$<%(cname)s l.%(lineno)s at 0x%(id)x>)rt   ru   r5   Úid)rj   Ú
fromlinenoÚAttributeErrorrw   rx   r‡   )rA   ru   r5   r~   s       rB   Ú__repr__zNodeNG.__repr__Û   s‰   € Ø—’Ñ Ô ˆð	Ø”_ˆFˆFøÝð 	ð 	ð 	ØˆFˆFˆFð	øøøàð 	<ØEˆFˆFà;ˆFØÝ˜$‘Z”ZÔ(ØØÝ�T‘(”(ð	
ð 
ñ 
ð 	
s   – ž-¬-Úvisitorr   c                óv   — t          |d| j        j                             ¦   «         z   ¦  «        } || ¦  «        S )z(Visit this node using the given visitor.Úvisit_)rh   Ú	__class__rx   Úlower)rA   r‹   Úfuncs      rB   ÚacceptzNodeNG.acceptí   s5   € å�w ¨4¬>Ô+B×+HÒ+HÑ+JÔ+JÑ JÑKÔKˆØˆt�D‰zŒzÐrD   úIterator[NodeNG]c              #  ó¦   K  — | j         D ]>}t          | |¦  «        }|€Œt          |t          t          f¦  «        r	|E d{V —† Œ:|V — Œ?dE d{V —† dS )z$Get the child nodes below this node.Nr0   ©r1   rh   Ú
isinstanceÚlistrX   ©rA   r€   Úattrs      rB   Úget_childrenzNodeNG.get_childrenò   sx   è è € àÔ)ð 	ð 	ˆEÝ˜4 Ñ'Ô'ˆDØˆ|ØÝ˜$¥¥u Ñ.Ô.ð Ø��������à�
�
�
�
ØˆˆˆˆˆˆˆˆˆrD   c                ó¤   — | j         ddd…         D ]>}t          | |¦  «        }|sŒt          |t          t          f¦  «        r
|d         c S |c S dS )z1An optimized version of list(get_children())[-1].Néÿÿÿÿr”   r—   s      rB   Ú
last_childzNodeNG.last_childþ   sj   € àÔ)¨$¨$¨B¨$Ô/ð 	ð 	ˆEÝ˜4 Ñ'Ô'ˆDØð ØÝ˜$¥¥u Ñ.Ô.ð  Ø˜B”x���ØˆKˆKˆKØˆtrD   c              #  ó:   K  — | j         }|�|V — |j         }|­dS dS )z7Yield parent, grandparent, etc until there are no more.N©r8   ©rA   r8   s     rB   Únode_ancestorszNodeNG.node_ancestors	  s7   è è € à”ˆØÐ ØˆLˆLˆLØ”]ˆFð Ð Ð Ð Ð Ð rD   Úboolc                ó^   ‡ — t          ˆ fd„|                     ¦   «         D ¦   «         ¦  «        S )zÙCheck if this node is the parent of the given node.

        :param node: The node to check if it is the child.
        :type node: NodeNG

        :returns: Whether this node is the parent of the given node.
        c              3  ó    •K  — | ]}‰|u V — Œ	d S r?   r0   )rb   r8   rA   s     €rB   rd   z#NodeNG.parent_of.<locals>.<genexpr>  s'   øè è € ÐFÐF f�4˜6�>ÐFÐFÐFÐFÐFÐFrD   )Úanyr    ©rA   Únodes   ` rB   Ú	parent_ofzNodeNG.parent_of  s4   ø€ õ ÐFÐFÐFÐF°×0CÒ0CÑ0EÔ0EÐFÑFÔFÑFÔFÐFrD   ©Úfuturer©   úLiteral[None, True]ú_base_nodes.Statementc               óÌ   — |�t          j        dt          d¬¦  «         | j        rt	          d| ¦  «        S | j        st          | ¬¦  «        ‚| j                             ¦   «         S )z�The first parent node, including self, marked as statement node.

        :raises StatementMissing: If self has no parent attribute.
        Nú.The future arg will be removed in astroid 4.0.rl   ©Ú
stacklevelr«   ©Útarget)ÚwarningsÚwarnÚDeprecationWarningr,   r   r8   r   Ú	statement©rA   r©   s     rB   rµ   zNodeNG.statement  sy   € ð
 ÐÝŒMØ@Ý"Øðñ ô ð ð
 Ôð 	7ÝÐ/°Ñ6Ô6Ð6ØŒ{ð 	0Ý"¨$Ð/Ñ/Ô/Ð/ØŒ{×$Ò$Ñ&Ô&Ð&rD   ú@nodes.FunctionDef | nodes.Module | nodes.ClassDef | nodes.Lambdac               ó¢   — |�t          j        dt          d¬¦  «         | j        €t	          | ¬¦  «        ‚| j                             |¬¦  «        S )a
  The first parent frame node.

        A frame node is a :class:`Module`, :class:`FunctionDef`,
        :class:`ClassDef` or :class:`Lambda`.

        :returns: The first parent frame node.
        :raises ParentMissingError: If self has no parent attribute.
        Nr­   rl   r®   r°   r¨   )r²   r³   r´   r8   r   Úframer¶   s     rB   r¹   zNodeNG.frame+  s`   € ð ÐÝŒMØ@Ý"Øðñ ô ð ð
 Œ;ÐÝ$¨DÐ1Ñ1Ô1Ð1ØŒ{× Ò ¨Ð Ñ/Ô/Ð/rD   únodes.LocalsDictNodeNGc                ób   — | j         st          | ¬¦  «        ‚| j                              ¦   «         S )z¸The first parent node defining a new scope.

        These can be Module, FunctionDef, ClassDef, Lambda, or GeneratorExp nodes.

        :returns: The first parent scope node.
        r°   )r8   r   Úscoperi   s    rB   r¼   zNodeNG.scope@  s3   € ð Œ{ð 	2Ý$¨DÐ1Ñ1Ô1Ð1ØŒ{× Ò Ñ"Ô"Ð"rD   únodes.Modulec                óF   — | j         x}s| S |j         r|j         }|j         °|S )zSReturn the root node of the syntax tree.

        :returns: The root node.
        rž   rŸ   s     rB   ÚrootzNodeNG.rootK  s:   € ð
 œ+Ð%�ð 	ØˆKàŒmð 	#Ø”]ˆFð Œmð 	#àˆrD   c                óð   — | j         D ]?}t          | |¦  «        }||u r|gc S t          |t          t          f¦  «        r||v r|c S Œ@d}t          |t          |¦  «        t          | ¦  «        fz  ¦  «        ‚)a_  Search for the sequence that contains this child.

        :param child: The child node to search sequences for.
        :type child: NodeNG

        :returns: The sequence containing the given child node.
        :rtype: iterable(NodeNG)

        :raises AstroidError: If no sequence could be found that contains
            the given child.
        ú"Could not find %s in %s's children©r1   rh   r•   rX   r–   r   Úrepr©rA   Úchildr€   Únode_or_sequenceÚmsgs        rB   Úchild_sequencezNodeNG.child_sequenceW  s›   € ð Ô)ð 		(ð 		(ˆEÝ& t¨UÑ3Ô3ÐØ 5Ð(Ð(Ø(Ð)Ð)Ð)Ð)õ Ð+­eµT¨]Ñ;Ô;ð(àÐ-Ð-Ð-à'Ð'Ð'Ð'øà2ˆÝ˜3¥$ u¡+¤+­t°D©z¬zÐ!:Ñ:Ñ;Ô;Ð;rD   c                óö   — | j         D ]B}t          | |¦  «        }||u r||fc S t          |t          t          f¦  «        r
||v r||fc S ŒCd}t          |t          |¦  «        t          | ¦  «        fz  ¦  «        ‚)aÇ  Find the field of this node that contains the given child.

        :param child: The child node to search fields for.
        :type child: NodeNG

        :returns: A tuple of the name of the field that contains the child,
            and the sequence or node that contains the child node.
        :rtype: tuple(str, iterable(NodeNG) or NodeNG)

        :raises AstroidError: If no field could be found that contains
            the given child.
        rÁ   rÂ   rÄ   s        rB   Úlocate_childzNodeNG.locate_childq  s¡   € ð Ô)ð 		/ð 		/ˆEÝ& t¨UÑ3Ô3ÐàÐ(Ð(Ð(Ø˜e�|Ð#Ð#Ð#åÐ+­eµT¨]Ñ;Ô;ð/àÐ-Ð-Ð-àÐ.Ð.Ð.Ð.Ð.øØ2ˆÝ˜3¥$ u¡+¤+­t°D©z¬zÐ!:Ñ:Ñ;Ô;Ð;rD   c                ó4   — | j                              ¦   «         S )z|The next sibling statement node.

        :returns: The next sibling statement node.
        :rtype: NodeNG or None
        )r8   Únext_siblingri   s    rB   rÌ   zNodeNG.next_siblingŽ  s   € ð Œ{×'Ò'Ñ)Ô)Ð)rD   c                ó4   — | j                              ¦   «         S )zThe previous sibling statement.

        :returns: The previous sibling statement node.
        :rtype: NodeNG or None
        )r8   Úprevious_siblingri   s    rB   rÎ   zNodeNG.previous_sibling–  s   € ð Œ{×+Ò+Ñ-Ô-Ð-rD   Úintc                óF   — | j         €|                      ¦   «         S | j         S )zƒThe first line that this node appears on in the source code.

        Can also return 0 if the line can not be determined.
        )r5   Ú_fixed_source_lineri   s    rB   rˆ   zNodeNG.fromlineno¡  s&   € ð Œ;ÐØ×*Ò*Ñ,Ô,Ð,ØŒ{ÐrD   c                óz   — | j         �| j         S | j        sd}n|                      ¦   «         }|€| j        S |j        S )z‚The last line that this node appears on in the source code.

        Can also return 0 if the line can not be determined.
        N)r:   r1   rœ   rˆ   Útolineno)rA   rœ   s     rB   rÓ   zNodeNG.tolineno«  sL   € ð Œ?Ð&Ø”?Ð"ØÔ#ð 	+àˆJˆJàŸšÑ*Ô*ˆJØÐØ”?Ð"ØÔ"Ð"rD   c                óÒ   — | j         }| }	 |€*t          |                     ¦   «         ¦  «        }|j         }|®*n-# t          $ r  | j        }|r|€|j         }|j        }|r|®Y nw xY w|pdS )zÆAttempt to find the line that this node appears on.

        We need this method since not all nodes have :attr:`lineno` set.
        Will return 0 if the line number can not be determined.
        Nr   )r5   Únextr™   ÚStopIterationr8   )rA   r„   Ú_noder8   s       rB   rÑ   zNodeNG._fixed_source_line¼  sœ   € ð Œ{ˆØˆð	'Ø�,Ý˜U×/Ò/Ñ1Ô1Ñ2Ô2�Ø”|�ð �,øøõ ð 	'ð 	'ð 	'Ø”[ˆFØð '˜T˜\Ø”}�Øœ�ð ð '˜T˜\øøð	'øøøð
 ˆy�qÐs   ‹,8 ¸'A"Á!A"útuple[int, int]c                ó   — || j         fS )zþGet a range from the given line number to where this node ends.

        :param lineno: The line number to start the range at.

        :returns: The range of line numbers that this node belongs to,
            starting at the given line number.
        )rÓ   )rA   r5   s     rB   Úblock_rangezNodeNG.block_rangeÏ  s   € ð �t”}Ð$Ð$rD   rc   Ústmtc                óN   — | j         sJ ‚| j                              ||¦  «         dS )a$  Define that the given name is declared in the given statement node.

        This definition is stored on the parent scope node.

        .. seealso:: :meth:`scope`

        :param name: The name that is being defined.

        :param stmt: The statement that defines the given name.
        N)r8   Ú	set_local)rA   rc   rÛ   s      rB   rÝ   zNodeNG.set_localÙ  s0   € ð Œ{ÐÐÐØŒ×Ò˜d DÑ)Ô)Ð)Ð)Ð)rD   .Úklassútype[_NodesT]Ú
skip_klassÚ
SkipKlassTúIterator[_NodesT]c                ó   — d S r?   r0   ©rA   rÞ   rà   s      rB   Únodes_of_classzNodeNG.nodes_of_classç  ó	   € ð
  ˜CrD   ú$tuple[type[_NodesT], type[_NodesT2]]ú&Iterator[_NodesT] | Iterator[_NodesT2]c                ó   — d S r?   r0   rä   s      rB   rå   zNodeNG.nodes_of_classî  s	   € ð
 25°rD   ú4tuple[type[_NodesT], type[_NodesT2], type[_NodesT3]]ú;Iterator[_NodesT] | Iterator[_NodesT2] | Iterator[_NodesT3]c                ó   — d S r?   r0   rä   s      rB   rå   zNodeNG.nodes_of_classõ  s   € ð
 GJÀcrD   útuple[type[_NodesT], ...]c                ó   — d S r?   r0   rä   s      rB   rå   zNodeNG.nodes_of_classü  ræ   rD   ú‡type[_NodesT] | tuple[type[_NodesT], type[_NodesT2]] | tuple[type[_NodesT], type[_NodesT2], type[_NodesT3]] | tuple[type[_NodesT], ...]c              #  ó(  K  — t          | |¦  «        r| V — |€5|                      ¦   «         D ]}|                     ||¦  «        E d{V —† ŒdS |                      ¦   «         D ]/}t          ||¦  «        rŒ|                     ||¦  «        E d{V —† Œ0dS )a+  Get the nodes (including this one or below) of the given types.

        :param klass: The types of node to search for.

        :param skip_klass: The types of node to ignore. This is useful to ignore
            subclasses of :attr:`klass`.

        :returns: The node of the given types.
        N)r•   r™   rå   )rA   rÞ   rà   Ú
child_nodes       rB   rå   zNodeNG.nodes_of_class  sß   è è € õ& �d˜EÑ"Ô"ð 	ØˆJˆJˆJàÐØ"×/Ò/Ñ1Ô1ð Hð H�
Ø%×4Ò4°U¸JÑGÔGÐGÐGÐGÐGÐGÐGÐGÐGàˆFà×+Ò+Ñ-Ô-ð 	Dð 	DˆJÝ˜* jÑ1Ô1ð ØØ!×0Ò0°¸
ÑCÔCÐCÐCÐCÐCÐCÐCÐCÐCð	Dð 	DrD   úlist[nodes.Assign]c                ó   — g S r?   r0   ri   s    rB   Ú_assign_nodes_in_scopezNodeNG._assign_nodes_in_scope$  s   € àˆ	rD   c              #  ól   K  — |                       ¦   «         D ]}|                     ¦   «         E d {V —† Œd S r?   )r™   Ú_get_name_nodes)rA   rñ   s     rB   rö   zNodeNG._get_name_nodes(  sR   è è € Ø×+Ò+Ñ-Ô-ð 	4ð 	4ˆJØ!×1Ò1Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3ð	4ð 	4rD   c              #  ó   K  — dE d {V —† d S ©Nr0   r0   ri   s    rB   Ú _get_return_nodes_skip_functionsz'NodeNG._get_return_nodes_skip_functions,  ó   è è € ØˆˆˆˆˆˆˆˆˆrD   c              #  ó   K  — dE d {V —† d S rø   r0   ri   s    rB   Ú_get_yield_nodes_skip_functionsz&NodeNG._get_yield_nodes_skip_functions/  rú   rD   c              #  ó   K  — dE d {V —† d S rø   r0   ri   s    rB   Ú_get_yield_nodes_skip_lambdasz$NodeNG._get_yield_nodes_skip_lambdas2  rú   rD   c                ó   — d S r?   r0   )rA   r¹   rc   s      rB   Ú_infer_namezNodeNG._infer_name5  s   € àˆrD   ú;Generator[InferenceResult, None, InferenceErrorInfo | None]c                ó&   — t          d| |¬¦  «        ‚)z4We don't know how to resolve a statement by default.z#No inference function for {node!r}.)r¦   rE   )r   )rA   rE   rG   s      rB   rT   zNodeNG._infer9  s"   € õ
 Ø1¸Àgð
ñ 
ô 
ð 	
rD   c                óD   — t          |                      ¦   «         ¦  «        S )z�Get a list of the inferred values.

        .. seealso:: :ref:`inference`

        :returns: The inferred values.
        :rtype: list
        )r–   r^   ri   s    rB   rQ   zNodeNG.inferredB  s   € õ �D—J’J‘L”LÑ!Ô!Ð!rD   c                ó   — | S )zäInstantiate an instance of the defined class.

        .. note::

            On anything other than a :class:`ClassDef` this will return self.

        :returns: An instance of the defined class.
        :rtype: object
        r0   ri   s    rB   Úinstantiate_classzNodeNG.instantiate_classL  s	   € ð ˆrD   c                ó   — dS )zÄCheck if this node inherits from the given type.

        :param node: The node defining the base to look for.
            Usually this is a :class:`Name` node.
        :type node: NodeNG
        Fr0   r¥   s     rB   Úhas_basezNodeNG.has_baseX  s	   € ð ˆurD   c                ó   — dS )z‚Whether this node defines something that is callable.

        :returns: Whether this defines something that is callable.
        Fr0   ri   s    rB   ÚcallablezNodeNG.callablea  s	   € ð
 ˆurD   c                ó   — dS )NFr0   )rA   r�   s     rB   Úeqz	NodeNG.eqh  s   € ØˆurD   c                ó0   —  t          ¦   «         | ¦  «        S )z.Get the source code that this node represents.r   ri   s    rB   Ú	as_stringzNodeNG.as_stringk  s   € à �Ñ Ô  Ñ&Ô&Ð&rD   ú   r   rn   c                óz  ‡‡‡‡‡‡‡
— t           dˆfd„	¦   «         Š
‰
                     t          ¦  «        ‰
                     t          ¦  «        dˆ
ˆfd„	¦   «         ¦   «         }‰
                     t          ¦  «        dˆ
ˆˆˆˆˆfd„	¦   «         }g }	 ‰
| |	t          ¦   «         ¦  «         d                     |	¦  «        S )a  Get a string representation of the AST from this node.

        :param ids: If true, includes the ids with the node type names.
        :type ids: bool

        :param include_linenos: If true, includes the line numbers and
            column offsets.
        :type include_linenos: bool

        :param ast_state: If true, includes information derived from
            the whole AST like local and global variables.
        :type ast_state: bool

        :param indent: A string to use to indent the output string.
        :type indent: str

        :param max_depth: If set to a positive integer, won't return
            nodes deeper than max_depth in the string.
        :type max_depth: int

        :param max_width: Attempt to format the output string to stay
            within this number of characters, but can exceed it under some
            circumstances. Only positive integer values are valid, the default is 80.
        :type max_width: int

        :returns: The string representation of the AST.
        :rtype: str
        rf   rJ   c           	     óB  •‡— t          j        | t          ‰t          ‰¦  «        z
  d¦  «        ¬¦  «                             d¦  «        }|                     |d         ¦  «         |                     ˆfd„|dd…         D ¦   «         ¦  «         t          |¦  «        dk    S )z‚Outputs a representation of a non-tuple/list, non-node that's
            contained within an AST, including strings.
            rJ   )rp   Tr   c                ó   •— g | ]}‰|z   ‘ŒS r0   r0   )rb   r„   Ú
cur_indents     €rB   ú
<listcomp>z8NodeNG.repr_tree.<locals>._repr_tree.<locals>.<listcomp>ž  s   ø€ ÐCÐCÐC°˜:¨Ñ,ÐCÐCÐCrD   N)rz   r{   Úmaxry   r|   rV   Úextend)r¦   rY   Údoner  Údepthr‚   Ú	max_widths      `  €rB   Ú
_repr_treez$NodeNG.repr_tree.<locals>._repr_tree•  s�   øø€ õ
 ”NØ�C 	­C°
©O¬OÑ ;¸QÑ?Ô?ðñ ô çŠj˜ÑÔð ð �MŠM˜% œ(Ñ#Ô#Ð#Ø�MŠMÐCÐCÐCÐC¸¸q¸r¸r¼ÐCÑCÔCÑDÔDÐDÝ�u‘:”: ’?Ð"rD   c                óØ  •— |‰z  }|                      d¦  «         | sd}�n3t          | ¦  «        dk    r ‰| d         ||||¦  «        }�n	t          | ¦  «        dk    ro ‰| d         ||||¦  «        }|s|                      d¦  «         n*|                      d¦  «         |                      |¦  «          ‰| d         ||||¦  «        p|}n‡|                      d¦  «         |                      |¦  «         | d	d
…         D ];} ‰|||||¦  «         |                      d¦  «         |                      |¦  «         Œ< ‰| d
         ||||¦  «         d}|                      d¦  «         |S )z_Outputs a representation of a sequence that's contained within an
            AST.
            ú[FrJ   r   rl   z, rs   ú
Nr›   Tú])rV   ry   )	r¦   rY   r  r  r  ÚbrokenrÅ   r  ro   s	          €€rB   Ú	_repr_seqz#NodeNG.repr_tree.<locals>._repr_seq¢  sœ  ø€ ð ˜&Ñ ˆJØ�MŠM˜#ÑÔÐØð Ø�‘Ý�T‘”˜a’�Ø#˜ D¨¤G¨V°T¸:ÀuÑMÔM�‘Ý�T‘”˜a’�Ø#˜ D¨¤G¨V°T¸:ÀuÑMÔM�Øð .Ø—M’M $Ñ'Ô'Ð'Ð'à—M’M %Ñ(Ô(Ð(Ø—M’M *Ñ-Ô-Ð-Ø#˜ D¨¤G¨V°T¸:ÀuÑMÔMÐWÐQW��à—’˜dÑ#Ô#Ð#Ø—’˜jÑ)Ô)Ð)Ø! # 2 #œYð .ð .�EØ�J˜u f¨d°JÀÑFÔFÐFØ—M’M %Ñ(Ô(Ð(Ø—M’M *Ñ-Ô-Ð-Ð-Ø�
˜4 œ8 V¨T°:¸uÑEÔEÐEØ�Ø�MŠM˜#ÑÔÐØˆMrD   c           	     óL  •— | |v r?|                      ‰dt          | ¦  «        j        › dt          | ¦  «        › �z   ¦  «         dS |                     | ¦  «         ‰r|‰k    r|                      d¦  «         dS |dz  }|‰z  }‰
r<|                      t          | ¦  «        j        › dt          | ¦  «        d›d�¦  «         n*|                      t          | ¦  «        j        › d	�¦  «         g }‰r|                     d
¦  «         |                     | j        ¦  «         |                     | j        ¦  «         ‰	r|                     | j        ¦  «         |sd}�n5t          |¦  «        dk    rB|                      |d         › d�¦  «          ‰t          | |d         ¦  «        ||||¦  «        }nà|                      d¦  «         |                      |¦  «         |dd…         D ]h}|dk    rŒ	|                      |› d�¦  «          ‰t          | |¦  «        ||||¦  «         |                      d¦  «         |                      |¦  «         Œi|                      |d         › d�¦  «          ‰t          | |d         ¦  «        ||||¦  «         d}|                      d¦  «         |S )z4Outputs a strings representation of an astroid node.z<Recursion on z	 with id=Fz...rJ   z<0xÚxz>(
ú()r5   r7   r   rr   r  Nr›   Údocrs   Tú))rV   rw   rx   r‡   Úaddr  r2   r1   r3   ry   rh   )r¦   rY   r  r  r  rv   r  r€   r  Ú	ast_stateÚidsÚinclude_linenosro   Ú	max_depths           €€€€€€rB   Ú
_repr_nodez$NodeNG.repr_tree.<locals>._repr_nodeÃ  sÝ  ø€ ð �tˆ|ˆ|Ø—’ØÐV­d°4©j¬jÔ.AÐVÐVÍBÈtÉHÌHÐVÐVÑVñô ð ð �uØ�HŠH�T‰NŒNˆNàð ˜U YÒ.Ð.Ø—’˜eÑ$Ô$Ð$Ø�uØ�Q‰JˆEØ˜&Ñ ˆJØð 9Ø—’¥ d¡¤Ô!4ÐIÐI½¸D¹¼ÐIÐIÐIÐIÑJÔJÐJÐJà—’¥ d¡¤Ô!4Ð7Ð7Ð7Ñ8Ô8Ð8ØˆFØð 8Ø—’Ð6Ñ7Ô7Ð7Ø�MŠM˜$Ô,Ñ-Ô-Ð-Ø�MŠM˜$Ô.Ñ/Ô/Ð/Øð 8Ø—’˜dÔ6Ñ7Ô7Ð7Øð Ø�‘Ý�V‘” Ò!Ð!Ø—’ ¨¤˜o˜o˜oÑ.Ô.Ð.Ø#˜Ý˜D &¨¤)Ñ,Ô,¨f°d¸JÈñô ��ð —’˜dÑ#Ô#Ð#Ø—’˜jÑ)Ô)Ð)Ø# C R Cœ[ð .ð .�Eà ’~�~Ø Ø—M’M U + + +Ñ.Ô.Ð.Ø�J�w t¨UÑ3Ô3°V¸TÀ:ÈuÑUÔUÐUØ—M’M %Ñ(Ô(Ð(Ø—M’M *Ñ-Ô-Ð-Ð-Ø—’ ¨¤Ð.Ð.Ð.Ñ/Ô/Ð/Ø�
�7 4¨°¬Ñ4Ô4°f¸dÀJÐPUÑVÔVÐVØ�Ø�MŠM˜#ÑÔÐØˆMrD   )rf   rJ   )Ú_singledispatchÚregisterrX   r–   r'   Úsetr}   )rA   r'  r(  r&  ro   r)  r  r  r*  rY   r  s    ``````   @rB   Ú	repr_treezNodeNG.repr_treeo  s  øøøøøøø€ õL 
ð		#ð 		#ð 		#ð 		#ð 		#ñ 
Œð		#ð 
×	Ò	�UÑ	#Ô	#Ø	×	Ò	�TÑ	"Ô	"ð	ð 	ð 	ð 	ð 	ð 	ñ 
#Ô	"ñ 
$Ô	#ð	ð> 
×	Ò	�VÑ	$Ô	$ð/	ð /	ð /	ð /	ð /	ð /	ð /	ð /	ð /	ð /	ñ 
%Ô	$ð/	ðb ˆØˆ
�4˜¥¡¤Ñ'Ô'Ð'Ø�wŠw�v‰ŒÐrD   c                ó   — t           j        S )ak  Determine the boolean value of this node.

        The boolean value of a node can have three
        possible values:

            * False: For instance, empty data structures,
              False, empty strings, instances which return
              explicitly False from the __nonzero__ / __bool__
              method.
            * True: Most of constructs are True by default:
              classes, functions, modules etc
            * Uninferable: The inference engine is uncertain of the
              node's value.

        :returns: The boolean value of this node.
        :rtype: bool or Uninferable
        )r   rW   )rA   rE   s     rB   Ú
bool_valuezNodeNG.bool_valueù  s   € õ$ ÔÐrD   c                ód   — t          j        | j        j        t	          t           ¦  «        ¦  «        S r?   )r   rL   rŽ   rx   ry   ri   s    rB   Úop_precedencezNodeNG.op_precedence  s"   € åÔ  ¤Ô!8½#½mÑ:LÔ:LÑMÔMÐMrD   c                ó   — dS )NTr0   ri   s    rB   Úop_left_associativezNodeNG.op_left_associative  s   € àˆtrD   )r5   r6   r7   r6   r8   r9   r:   r6   r;   r6   r<   r=   r?   )rE   rF   rG   r	   r<   rH   )r<   r_   )r‹   r   r<   r_   )r<   r’   )r<   r9   )r<   r¡   )r©   rª   r<   r«   )r©   rª   r<   r·   )r<   rº   )r<   r½   )r<   rÏ   )r5   rÏ   r<   rØ   )rc   r_   rÛ   r'   r<   r=   ).)rÞ   rß   rà   rá   r<   râ   )rÞ   rç   rà   rá   r<   rè   )rÞ   rê   rà   rá   r<   rë   )rÞ   rí   rà   rá   r<   râ   )rÞ   rï   rà   rá   r<   rë   )r<   rò   )rE   rF   rG   r	   r<   r  )FFFr  r   rn   )rE   rF   )8rx   Ú
__module__Ú__qualname__Ú__doc__r,   Ú__annotations__r-   r.   r/   r1   r2   r3   r4   rC   r^   rj   r…   rŠ   r‘   r™   rœ   r    r§   rµ   r¹   r¼   r¿   rÈ   rÊ   rÌ   rÎ   r   rˆ   rÓ   rÑ   rÚ   rÝ   r   rå   rô   rö   rù   rü   rþ   r   rT   rQ   r  r  r	  r  r  r.  r0  r2  r4  r0   rD   rB   r'   r'   ;   s  € € € € € € ðð ð
 $)€LÐ(Ð(Ð(Ñ(Ø2àð ð ð ð ñ ðð #(€KÐ'Ð'Ð'Ñ'Ø1Ø %€IÐ%Ð%Ð%Ñ%ð 24€OÐ3Ð3Ð3Ñ3ðð 02€MÐ1Ð1Ð1Ñ1Ø:Ø57ÐÐ7Ð7Ð7Ñ7Ø7à04ÐÐ4Ð4Ð4Ñ4ð ð  ð  ð  ðF 26ð7ð 7ð 7ð 7ð 7ðrð ð ð ð
ð 
ð 
ð 
ð4
ð 
ð 
ð 
ð$ð ð ð ð

ð 
ð 
ð 
ð	ð 	ð 	ð 	ð#ð #ð #ð #ðGð Gð Gð Gð :>ð 'ð 'ð 'ð 'ð 'ð 'ð$ 04ð0ð 0ð 0ð 0ð 0ð 0ð*	#ð 	#ð 	#ð 	#ð
ð 
ð 
ð 
ð<ð <ð <ð4<ð <ð <ð:*ð *ð *ð.ð .ð .ð ðð ð ñ „_ðð ð#ð #ð #ñ „_ð#ð ð ð ð ð&%ð %ð %ð %ð*ð *ð *ð *ð ð "%ð ð  ð  ð  ñ „Xð ð ð "%ð5ð 5ð 5ð 5ñ „Xð5ð ð "%ðJð Jð Jð Jñ „XðJð ð "%ð ð  ð  ð  ñ „Xð ð "&ðDð Dð Dð Dð DðB ðð ð ñ „_ðð4ð 4ð 4ðð ð ðð ð ðð ð ðð ð ð
 26ð
ð 
ð 
ð 
ð 
ð"ð "ð "ð
ð 
ð 
ðð ð ð ðð ð ð ðð ð ð ð'ð 'ð 'ð 'ð ØØØØØðHð Hð Hð Hð HðT ð  ð  ð  ð  ð(Nð Nð Nðð ð ð ð ð rD   )8Ú
__future__r   rz   Úsysr²   Úcollections.abcr   r   Ú	functoolsr   r   r+  Útypingr   r	   r
   r   r   r   r   r   r   r   Úastroidr   Úastroid.contextr   Úastroid.exceptionsr   r   r   r   r   Úastroid.managerr   Úastroid.nodes.as_stringr   Úastroid.nodes.constr   Úastroid.nodes.utilsr   Úastroid.typingr   r   r    Úversion_infor#   Útyping_extensionsr$   Úastroid.nodesr%   r&   r)   r*   rá   r'   r0   rD   rB   ú<module>rI     s¼  ðð
 #Ð "Ð "Ð "Ð "Ð "à €€€Ø 
€
€
€
Ø €€€Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø %Ð %Ð %Ð %Ð %Ð %Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,ðð ð ð ð ð ð ð ð ð ð ð ð ð ð +Ð *Ð *Ð *Ð *Ð *Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø -Ð -Ð -Ð -Ð -Ð -Ø (Ð (Ð (Ð (Ð (Ð (Ø GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GàÔ�wÒÐØÐÐÐÐÐÐà&Ð&Ð&Ð&Ð&Ð&ð ð *ØÐÐÐÐÐØ)Ð)Ð)Ð)Ð)Ð)ð ˆ'�) 8Ð
,Ñ
,Ô
,€Øˆ7�: XÐ.Ñ.Ô.€Øˆ7�: XÐ.Ñ.Ô.€Ø�4˜˜hœ¨¨t°H¬~¸sÐ/BÔ)CÐCÔD€
ðXð Xð Xð Xð Xñ Xô Xð Xð Xð XrD   