
    Ng                     Z    d dl mZmZmZ d dlmZ d dlmZ ddlm	Z
  G d de
          Z	dS )	    )absolute_importdivisionunicode_literals)	text_type)bisect_left   )Triec                   :    e Zd Zd Zd Zd Zd Zd Zd	dZd Z	dS )
r	   c                    t          d |                                D                       st          d          || _        t	          |                                          | _        d| _        dt          |          f| _        d S )Nc              3   @   K   | ]}t          |t                    V  d S N)
isinstancer   ).0xs     M/var/www/html/ai-engine/env/lib/python3.11/site-packages/html5lib/_trie/py.py	<genexpr>z Trie.__init__.<locals>.<genexpr>   s,      AA:a++AAAAAA    zAll keys must be strings r   )	allkeys	TypeError_datasorted_keys	_cachestrlen_cachepoints)selfdatas     r   __init__zTrie.__init__
   su    AATYY[[AAAAA 	86777
DIIKK((
D		Nr   c                     || j         v S r   r   r   keys     r   __contains__zTrie.__contains__   s    dj  r   c                 *    t          | j                  S r   )r   r   r   s    r   __len__zTrie.__len__   s    4:r   c                 *    t          | j                  S r   )iterr   r'   s    r   __iter__zTrie.__iter__   s    DJr   c                     | j         |         S r   r"   r#   s     r   __getitem__zTrie.__getitem__   s    z#r   Nc                 0   ||dk    s| j         st          | j                   S |                    | j                  r$| j        \  }}t          | j         |||          x}}nt          | j         |          x}}t                      }|t          | j                   k    r|S | j         |                             |          rE|                    | j         |                    |dz  }| j         |                             |          E|| _        ||f| _        |S )Nr   r   )r   set
startswithr   r   r   r   add)r   prefixlohistartir   s          r   r   z	Trie.keys   s   >Vr\\\tz??"T^,, 	8&FB#DJB???EAA#DJ777EAuuC
OO##Kjm&&v.. 	HHTZ]###FA jm&&v.. 	  "AJr   c                 .   || j         v rdS |                    | j                  r"| j        \  }}t	          | j        |||          }nt	          | j        |          }|t          | j                  k    rdS | j        |                             |          S )NTF)r   r0   r   r   r   r   r   )r   r2   r3   r4   r6   s        r   has_keys_with_prefixzTrie.has_keys_with_prefix6   s    TZ4T^,, 	0&FBDJB77AADJ//ADJ5z!}''///r   r   )
__name__
__module____qualname__r    r%   r(   r+   r-   r   r8    r   r   r	   r	   	   s        + + +! ! !            .0 0 0 0 0r   r	   N)
__future__r   r   r   sixr   bisectr   _baser	   ABCTrier<   r   r   <module>rB      s    B B B B B B B B B B             " " " " " ":0 :0 :0 :0 :07 :0 :0 :0 :0 :0r   