
    G@d                     F    d Z d Z G d d          Z G d de          ZdS )z
API utilities.
c                 H    d | j                                         D             S )z
    Get the attribute values for the class enumerations used in our
    API.

    Idea from:
    https://stackoverflow.com/a/17249228/438386
    c                 4    g | ]\  }}|d d         dk    |S )N   _ ).0kvs      0lib/python3.11/site-packages/spyder/api/utils.py
<listcomp>z$get_class_values.<locals>.<listcomp>   s)    AAA&1aAbqbESLLALLL    )__dict__items)clss    r
   get_class_valuesr      s'     BACL..00AAAAr   c                   &    e Zd ZdZddZd Zd ZdS )
PrefixNodez8Utility class used to represent a prefixed string tuple.Nc                 "    i | _         || _        d S N)childrenpath)selfr   s     r
   __init__zPrefixNode.__init__   s    			r   c              #      K   | j         f| fg}|g k    r;|                    d          \  |fdj        D             z  }V  |g k    9d S d S )N    c                 6    g | ]}|fz   j         |         fS r   r   )r   ccurrent_prefixnodes     r
   r   z'PrefixNode.__iter__.<locals>.<listcomp>#   s<     / / / '!-t}Q/?@ / / /r   )r   popr   )r   prefixr   r   s     @@r
   __iter__zPrefixNode.__iter__   s      I<&'ll#)::a== ND / / / / / $/ / / /F    	 llllllr   c                     |^}}|| j         vrt          |          | j         |<   t          |          dk    r$| j         |         }|                    |           d S d S )Nr   )r   r   lenadd_path)r   r   r!   restchilds        r
   r%   zPrefixNode.add_path'   sf    &&$.v$6$6DM&!t99q==M&)ENN4      =r   r   )__name__
__module____qualname____doc__r   r"   r%   r   r   r
   r   r      sL        BB   ! ! !! ! ! ! !r   r   c                       e Zd ZdZd ZdS )PrefixedTuplez?Utility class to store and iterate over prefixed string tuples.c              #   J   K   | j         D ]}| j         |         }|D ]}|V  d S r   r   )r   keyr'   r!   s       r
   r"   zPrefixedTuple.__iter__4   sL      = 	 	CM#&E  	 	r   N)r(   r)   r*   r+   r"   r   r   r
   r-   r-   1   s)        II    r   r-   N)r+   r   r   r-   r   r   r
   <module>r0      s}    
B B B! ! ! ! ! ! ! !2    J     r   