
    Je                     8    d Z d Z G d d      Z G d de      Zy)z
API utilities.
c                 z    | j                   j                         D cg c]  \  }}|dd dk7  s| c}}S c c}}w )z
    Get the attribute values for the class enumerations used in our
    API.

    Idea from:
    https://stackoverflow.com/a/17249228/438386
    N   _)__dict__items)clskvs      2/usr/lib/python3/dist-packages/spyder/api/utils.pyget_class_valuesr      s5      LL..0A&1aAbqESLAAAAs   77c                   $    e Zd ZdZddZd Zd Zy)
PrefixNodez8Utility class used to represent a prefixed string tuple.Nc                      i | _         || _        y N)childrenpath)selfr   s     r
   __init__zPrefixNode.__init__   s    	    c              #      K   | j                   f| fg}|g k7  rO|j                  d      \  }}||j                  D cg c]  }||fz   |j                  |   f c}z  }| |g k7  rNy y c c}w wN    )r   popr   )r   prefixcurrent_prefixnodecs        r
   __iter__zPrefixNode.__iter__   s     II<&'l#)::a= ND $/ '!-t}}Q/?@ / /F  	 l/s   9A-A(A-&A-c                     |^}}|| j                   vrt        |      | j                   |<   t        |      dkD  r!| j                   |   }|j                  |       y y r   )r   r   lenadd_path)r   r   r   restchilds        r
   r    zPrefixNode.add_path'   sT    &$.v$6DMM&!t9q=MM&)ENN4  r   r   )__name__
__module____qualname____doc__r   r   r     r   r
   r   r      s    B!!r   r   c                       e Zd ZdZd Zy)PrefixedTuplez?Utility class to store and iterate over prefixed string tuples.c              #   b   K   | j                   D ]  }| j                   |   }|D ]  }|   y wr   )r   )r   keyr"   r   s       r
   r   zPrefixedTuple.__iter__4   s;     == 	CMM#&E 	s   -/N)r#   r$   r%   r&   r   r'   r   r
   r)   r)   1   s
    Ir   r)   N)r&   r   r   r)   r'   r   r
   <module>r,      s&   
B! !2J r   