o 7]h@sLddlmZmZmZddlmZddlmZddlm Z Gddde Z dS) )absolute_importdivisionunicode_literals) text_type) bisect_left)Triec@sFeZdZddZddZddZddZd d Zdd d ZddZ d S)rcCsJtdd|Dstd||_t||_d|_dt|f|_dS)Ncss|]}t|tVqdSN) isinstancer).0xr ?/usr/lib/python3/dist-packages/pip/_vendor/html5lib/_trie/py.py sz Trie.__init__..zAll keys must be stringsr) allkeys TypeError_datasorted_keys _cachestrlen _cachepoints)selfdatar r r__init__ s z Trie.__init__cCs ||jvSr rrkeyr r r __contains__ zTrie.__contains__cC t|jSr )rrrr r r__len__r!z Trie.__len__cCr"r )iterrr#r r r__iter__r!z Trie.__iter__cCs |j|Sr rrr r r __getitem__r!zTrie.__getitem__NcCs|dus |dks |jst|jS||jr&|j\}}t|j|||}}nt|j|}}t}|t|jkr:|S|j||rV||j||d7}|j||sB||_||f|_|S)Nrr)rset startswithrrrradd)rprefixlohistartirr r rrs     z Trie.keyscCsd||jvrdS||jr|j\}}t|j|||}nt|j|}|t|jkr*dS|j||S)NTF)rr)rrrrr)rr+r,r-r/r r rhas_keys_with_prefix6s    zTrie.has_keys_with_prefixr ) __name__ __module__ __qualname__rr r$r&r'rr0r r r rr s   rN) __future__rrrpip._vendor.sixrbisectr_baserABCTrier r r rs