U ��.e��@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.8/site-packages/pip/_vendor/html5lib/_trie/py.py� sz 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 ||jkSr �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�|dks|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||jkrdS|�|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