�
��^i� � �Z � d dl mZmZmZ d dlmZ d dlmZ ddlm Z
G d� de
� � Z dS ) � )�absolute_import�division�unicode_literals)� text_type)�bisect_left� )�Triec �: � e Zd Zd� Zd� Zd� Zd� Zd� Zd d�Zd� Z dS )
r c � � t d� |� � � D � � � � st d� � �|| _ t |� � � � � | _ d| _ dt |� � f| _ d S )Nc 3 �@ K � | ]}t |t � � V � �d S �N)�
isinstancer )�.0�xs ��/builddir/build/BUILDROOT/alt-python311-pip-21.3.1-4.el8.x86_64/opt/alt/python311/lib/python3.11/site-packages/pip/_vendor/html5lib/_trie/py.py� z Trie.__init__.. s, � � � �A�A��:�a��+�+�A�A�A�A�A�A� zAll keys must be strings� r ) �all�keys� TypeError�_data�sorted�_keys� _cachestr�len�_cachepoints)�self�datas r �__init__z
Trie.__init__
su � ��A�A�T�Y�Y�[�[�A�A�A�A�A� 8��6�7�7�7���
��D�I�I�K�K�(�(��
������D� � �N����r c � � || j v S r
�r �r �keys r �__contains__zTrie.__contains__ s � ��d�j� � r c �* � t | j � � S r
)r r �r s r �__len__zTrie.__len__ s � ��4�:���r c �* � t | j � � S r
)�iterr r' s r �__iter__z
Trie.__iter__ s � ��D�J���r c � � | j | S r
r" r# s r �__getitem__zTrie.__getitem__ s � ��z�#��r Nc �0 � |�
|dk s| j st | j � � S |� | j � � r$| j \ }}t | j |||� � x}}nt | j |� � x}}t � � }|t
| j � � k r|S | j | � |� � rE|� | j | � � |dz
}| 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 � ��>�V�r�\�\���\��t�z�?�?�"����T�^�,�,� 8��&�F�B��#�D�J���B�?�?�?�E�A�A�#�D�J��7�7�7�E�A��u�u���C��
�O�O�#�#��K��j��m�&�&�v�.�.� ��H�H�T�Z��]�#�#�#�
��F�A� �j��m�&�&�v�.�.� � ���"�A�J����r c �. � || j v rdS |� | j � � r"| j \ }}t | j |||� � }nt | j |� � }|t
| j � � k rdS | j | � |� � S )NTF)r r0 r r r r r )r r2 r3 r4 r6 s r �has_keys_with_prefixzTrie.has_keys_with_prefix6 s� � ��T�Z����4����T�^�,�,� 0��&�F�B���D�J���B�7�7�A�A��D�J��/�/�A���D�J������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 �pip._vendor.sixr �bisectr �_baser �ABCTrier<