
    G@d	                     @    d Z  G d d          Z G d de          ZdS )z2General purpose prefix tree, also known as a trie.c                   .    e Zd ZddZd Zd Zd Zd ZdS )TrieNodeNc                 0    i | _         || _        || _        d S N)childrenkeyvalue)selfr   r   s      Qlib/python3.11/site-packages/spyder/plugins/completion/providers/snippets/trie.py__init__zTrieNode.__init__   s    


    c                    |d         }| j         || _         t          | j                   dk    r
|dd          }|rD|d         }| j                            |d           }|t	                      }|| j        |<   |||<   d S || _        d S N       )r   lenr   getr   r   )r	   sequencer   elemnodes        r
   __setitem__zTrieNode.__setitem__   s    {8DHtx==1|H 	A;D=$$T400D|zz&*d#"DNNNDJJJr   c                     d }|d         | j         k    r9|dd          }|r+|d         | j        v r| j        |d                  }||         }n| }|S r   )r   r   )r	   r   r   next_childrens       r
   __getitem__zTrieNode.__getitem__"   sc    A;$(""|H A;$-//$(M(1+$>M(2Dr   c              #      K   | g}|g k    rQ|                     d          }|t          |j                                                  z  }|j        |V  |g k    Od S d S Nr   )poplistr   valuesr   )r	   queuer   s      r
   __iter__zTrieNode.__iter__.   si      rkk99Q<<DT$-..00111Ez%


	 rkkkkkkr   c                     t          |          t          | j                  z   dk    rdS |d         }|| j        k    r|dd          }|s| j        dS dS |d         }|| j        v }|r| j        |         }||v }|S )Nr   Tr   F)r   r   r   r   )r	   r   r   foundr   s        r
   __contains__zTrieNode.__contains__6   s    x==3tx==(A--4{48|H !:)4 5A;D% 	. M$/M-Er   )NN)__name__
__module____qualname__r   r   r   r    r#    r   r
   r   r   
   sd           
  $
 
 
      r   r   c                   .     e Zd Z fdZd Z fdZ xZS )Triec                 X    t                                          d           g | _        d S )N )superr   	sequences)r	   	__class__s    r
   r   zTrie.__init__L   s&    r   c                 \    |r'|d         }|| j         v r| j         |         }||         S n| S d S r   )r   )r	   r   r   r   s       r
   r   zTrie.__getitem__P   sG     	A;Dt}$$}T*H~% % Ktr   c                 b    |r$t                                          ||           d S || _        d S r   )r,   r   r   )r	   r   r   r.   s      r
   r   zTrie.__setitem__Z   s6     	GG%00000DJJJr   )r$   r%   r&   r   r   r   __classcell__)r.   s   @r
   r)   r)   K   s`                      r   r)   N)__doc__r   r)   r'   r   r
   <module>r3      sj    9 8> > > > > > > >B    8     r   