
    Mwg                     R    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	y)	    )absolute_importdivisionunicode_literals)	text_type)bisect_left   )Triec                   8    e Zd Zd Zd Zd Zd Zd Zd	dZd Z	y)
r	   c                     t        d |j                         D              st        d      || _        t	        |j                               | _        d| _        dt        |      f| _        y )Nc              3   <   K   | ]  }t        |t                y wN)
isinstancer   ).0xs     H/var/www/horilla/myenv/lib/python3.12/site-packages/html5lib/_trie/py.py	<genexpr>z Trie.__init__.<locals>.<genexpr>   s     A:a+As   zAll keys must be strings r   )	allkeys	TypeError_datasorted_keys	_cachestrlen_cachepoints)selfdatas     r   __init__zTrie.__init__
   sR    ATYY[AA677
DIIK(
D	N    c                     || j                   v S r   r   r   keys     r   __contains__zTrie.__contains__   s    djj  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    DJJr    c                      | j                   |   S r   r"   r#   s     r   __getitem__zTrie.__getitem__   s    zz#r    Nc                 8   ||dk(  s| j                   st        | j                         S |j                  | j                        r*| j                  \  }}t        | j                   |||      x}}nt        | j                   |      x}}t               }|t        | j                         k(  r|S | j                   |   j                  |      rB|j                  | j                   |          |dz  }| j                   |   j                  |      rB|| _        ||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\tzz?"T^^,&&FB#DJJB??EA#DJJ77EAuC

O#Kjjm&&v.HHTZZ]#FA jjm&&v.  "AJr    c                 @   || j                   v ry|j                  | j                        r(| j                  \  }}t	        | j
                  |||      }nt	        | j
                  |      }|t        | j
                        k(  ry| j
                  |   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    TZZT^^,&&FBDJJB7ADJJ/ADJJzz!}''//r    r   )
__name__
__module____qualname__r   r%   r(   r+   r-   r   r8    r    r   r	   r	   	   s%    +! .0r    r	   N)
__future__r   r   r   sixr   bisectr   _baser	   ABCTrier<   r    r   <module>rB      s     B B   ":07 :0r    