3
�Pf� � @ s4 d dl mZmZmZ d dlmZ G dd� de�ZdS )� )�absolute_import�division�unicode_literals)�Mappingc s: e Zd ZdZd� fdd� Zdd� Zdd� Zd d
� Z� ZS )�TriezAbstract base class for triesNc s4 t t| �j� }� d krt|�S t� fdd�|D ��S )Nc s g | ]}|j � �r|�qS � )�
startswith)�.0�x)�prefixr �/usr/lib/python3.6/_base.py�
<listcomp> s zTrie.keys.<locals>.<listcomp>)�superr �keys�set)�selfr r )� __class__)r r r s z Trie.keysc C s$ x| j � D ]}|j|�r
dS q
W dS )NTF)r r )r r �keyr r r �has_keys_with_prefix s
zTrie.has_keys_with_prefixc C sT || kr|S x:t dt|�d �D ]$}|d | � | kr |d | � S q W t|��d S )N� )�range�len�KeyError)r r �ir r r �longest_prefix s zTrie.longest_prefixc C s | j |�}|| | fS )N)r )r r Zlprefixr r r �longest_prefix_item$ s
zTrie.longest_prefix_item)N) �__name__�
__module__�__qualname__�__doc__r r r r �
__classcell__r r )r r r s
r N)Z
__future__r r r �collectionsr r r r r r �<module> s