a [›ýfïã@sLddlmZmZmZddlmZddlmZddlm Z Gdd„de ƒZ dS) é)Úabsolute_importÚdivisionÚunicode_literals)Ú text_type)Ú bisect_lefté)ÚTriec@sFeZdZdd„Zdd„Zdd„Zdd„Zd d „Zdd d „Zdd„Z d S)rcCsJtdd„| ¡Dƒƒstdƒ‚||_t| ¡ƒ|_d|_dt|ƒf|_dS)Ncss|]}t|tƒVqdS©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__cCs ||jvSr ©r©rÚkeyr r rÚ __contains__szTrie.__contains__cCs t|jƒSr )rr©rr r rÚ__len__sz Trie.__len__cCs t|jƒSr )Úiterrr"r r rÚ__iter__sz Trie.__iter__cCs |j|Sr rrr r rÚ __getitem__szTrie.__getitem__NcCs²|dus|dks|js t|jƒS| |j¡rL|j\}}t|j|||ƒ}}nt|j|ƒ}}tƒ}|t|jƒkrt|S|j| |¡rž| |j|¡|d7}qt||_||f|_|S)Nrr)rÚsetÚ startswithrrrrÚadd)rÚprefixÚloÚhiÚstartÚirr r rrs     z Trie.keyscCsd||jvrdS| |j¡r6|j\}}t|j|||ƒ}n t|j|ƒ}|t|jƒkrTdS|j| |¡S)NTF)rr(rrrrr)rr*r+r,r.r r rÚhas_keys_with_prefix6s    zTrie.has_keys_with_prefix)N) Ú__name__Ú __module__Ú __qualname__rr!r#r%r&rr/r r r rr s  rN) Z __future__rrrZpip._vendor.sixrZbisectrZ_baserZABCTrier r r rÚs