
    cx                     >    d dl mZ d Z G d dej                  ZdS )    )astc                 V    t                      }|                    |            |j        S )a*  Return a list of ``(name, level)`` tuples for assigned names

    The `level` is `None` for simple assignments and is a list of
    numbers for tuple assignments for example in::

      a, (b, c) = x

    The levels for for `a` is ``[0]``, for `b` is ``[1, 0]`` and for
    `c` is ``[1, 1]``.

    )_NodeNameCollectorvisitnames)nodevisitors     5lib/python3.11/site-packages/rope/base/nameanalyze.pyget_name_levelsr      s)     !""GMM$=    c                   F    e Zd ZddZd Zd Zd Zd Zd Zd Z	d	 Z
d
 ZdS )r   Nc                 0    g | _         || _        d| _        d S )Nr   )r   levelsindex)selfr   s     r
   __init__z_NodeNameCollector.__init__   s    



r   c                     g }| j         .t          | j                   }|                    | j                   | xj        dz  c_        |                     ||           d S N   )r   listappendr   _added)r   r   
new_levelss      r
   	_add_nodez_NodeNameCollector._add_node   s_    
; 	*dk**Jdj)))

a

D*%%%%%r   c                 l    t          |d          r#| j                            |j        |f           d S d S )Nid)hasattrr   r   r   )r   r   r   s      r
   r   z_NodeNameCollector._added#   sA    4 	1Jtw/00000	1 	1r   c                 0    |                      |           d S Nr   r   r   s     r
   _Namez_NodeNameCollector._Name'       tr   c                 H    | j                             |j        g f           d S r   )r   r   namer!   s     r
   _ExceptHandlerz!_NodeNameCollector._ExceptHandler*   s$    
49b/*****r   c                 H   g }| j         .t          | j                   }|                    | j                   | xj        dz  c_        t	          |          }t          j        |          D ]}|                    |           | j        	                    |j                   d S r   )
r   r   r   r   r   r   iter_child_nodesr   r   extend)r   r   r   r	   childs        r
   _Tuplez_NodeNameCollector._Tuple-   s    
; 	*dk**Jdj)))

a

$Z00)$// 	! 	!EMM%    
'-(((((r   c                 0    |                      |           d S r   r    r!   s     r
   
_Subscriptz_NodeNameCollector._Subscript8   r#   r   c                 0    |                      |           d S r   r    r!   s     r
   
_Attributez_NodeNameCollector._Attribute;   r#   r   c                 0    |                      |           d S r   r    r!   s     r
   _Slicez_NodeNameCollector._Slice>   r#   r   r   )__name__
__module____qualname__r   r   r   r"   r&   r+   r-   r/   r1    r   r
   r   r      s           
& & &1 1 1  + + +	) 	) 	)        r   r   N)	rope.baser   r   RopeNodeVisitorr   r5   r   r
   <module>r8      s]           "* * * * *, * * * * *r   