U
ÀÒ.eï ã @ 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.8/site-packages/pip/_vendor/html5lib/_trie/py.pyÚ s 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 kS 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 ks|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 krdS | | 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% r r. r
r
r
r r s
r N)Z
__future__r r r Zpip._vendor.sixr Zbisectr Z_baser ZABCTrier
r
r
r Ú s