a
ˆljï ã @ sL d dl mZmZmZ d dlmZ d dlmZ ddlm Z
G dd„ de
ƒZ dS ) é )Úabsolute_importÚdivisionÚunicode_literals)Ú text_type)Úbisect_lefté )ÚTriec @ sF e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd d
„ Zddd
„Zdd„ Z dS )r c C sJ t dd„ | ¡ D ƒƒstdƒ‚|| _t| ¡ ƒ| _d| _dt|ƒf| _d S )Nc s s | ]}t |tƒV qd S ©N)Ú
isinstancer )Ú.0Úx© r
úA/usr/lib/python3.9/site-packages/pip/_vendor/html5lib/_trie/py.pyÚ ó z Trie.__init__..zAll keys must be stringsÚ r ) ÚallÚkeysÚ TypeErrorÚ_dataÚsortedÚ_keysÚ _cachestrÚlenÚ_cachepoints)ÚselfÚdatar
r
r Ú__init__
s z
Trie.__init__c C s
|| j v S r ©r ©r Úkeyr
r
r Ú__contains__ s zTrie.__contains__c C s
t | jƒS r )r r ©r r
r
r Ú__len__ s zTrie.__len__c C s
t | jƒS r )Úiterr r" r
r
r Ú__iter__ s z
Trie.__iter__c C s
| j | S r r r r
r
r Ú__getitem__ s zTrie.__getitem__Nc C s² |d u s|dks| j s t| j ƒS | | j¡rL| j\}}t| j |||ƒ }}nt| j |ƒ }}tƒ }|t| j ƒkrt|S | j | |¡rž| | j | ¡ |d7 }qt|| _||f| _|S )Nr r )r ÚsetÚ
startswithr r r r Úadd)r ÚprefixÚloÚhiÚstartÚir r
r
r r s
z Trie.keysc C sd || j v rdS | | j¡r6| j\}}t| j|||ƒ}nt| j|ƒ}|t| jƒkrTdS | j| |¡S )NTF)r r( r r r r r )r r* r+ r, r. r
r
r Úhas_keys_with_prefix6 s
zTrie.has_keys_with_prefix)N)
Ú__name__Ú
__module__Ú__qualname__r r! r# r% r&