Your IP : 216.73.216.213
B
�d{Tn) � @ s� d Z dZddlZddlmZ ddlmZmZmZ G dd� de �Z
dZd Zd
Z
G dd� de�ZG d
d� dee�ZG dd� de�Zejdd� dkr�eZnddlmZ eZG dd� dee�Zefdd�Zefdd�ZG dd� de�ZG dd� de�ZdS )z.Base class to represent a tree structure.
zrestructuredtext en� N)�flatten)�VisitedMixIn�FilteredIterator� no_filterc @ s e Zd ZdZdS )�NodeNotFoundz%raised when a node has not been foundN)�__name__�
__module__�__qualname__�__doc__� r r �D/opt/alt/python37/lib/python3.7/site-packages/logilab/common/tree.pyr ! s r zNo such sibling as '%s'zNo such child as '%s'zNo such node as '%s'c @ s� e Zd ZdZd.dd�Zdd� Zd/dd �Zd
d� Zdd
� Zdd� Z dd� Z
dd� Zdd� Zdd� Z
dd� Zdd� Zd0dd�Zdd� Zd d!� Zd"d#� Zd$d%� Zd&d'� Zd(d)� Zd1d*d+�Zd,d-� ZdS )2�Nodez)a basic tree node, characterized by an idNc C s || _ d | _g | _d S )N)�id�parent�children)�self�nidr r r �__init__. s z
Node.__init__c C s
t | j�S )N)�iterr )r r r r �__iter__4 s z
Node.__iter__r c C st dd| | j j| jf g}|d7 }xF| jD ]<}y|�|�|�� W q* tk
rd |�|�� � Y q*X q*W d�|�S )Nz%s%s %s� � �
)� __class__r r r �append�__str__� TypeError�join)r �indent�s�childr r r r 7 s zNode.__str__c C s | j S )N)r )r r r r �is_leafA s zNode.is_leafc C s | j �|� | |_dS )zadd a node to childrenN)r r r )r r r r r r D s zNode.appendc C s | j �|� d|_dS )zremove a child nodeN)r �remover )r r r r r r"