U
    b¨+d`	  ã                   @   s   d dl mZ G dd„ dƒZdS )é   )Úquote_stringc                   @   s2   e Zd ZdZddd„Zdd„ Zdd„ Zd	d
„ ZdS )ÚNodez"
    A node within the graph.
    Nc                 C   s¶   || _ || _t|tƒr$dd„ |D ƒ}|dksJ|dksJt|tƒrXt|ƒdkrXd| _d| _nPt|tƒrr|| _|g| _n6t|tƒr tdd„ |D ƒƒr |d | _|| _nt	dƒ‚|p®i | _
dS )z$
        Create a new node.
        c                 S   s   g | ]}|d kr|‘qS )Ú © ©Ú.0Zinner_labelr   r   ú=/tmp/pip-unpacked-wheel-cdsyf3nb/redis/commands/graph/node.pyÚ
<listcomp>   s      z!Node.__init__.<locals>.<listcomp>Nr   é    c                 S   s   g | ]}t |tƒ‘qS r   )Ú
isinstanceÚstrr   r   r   r   r	      s     z8label should be either None, string or a list of strings)ÚidÚaliasr   ÚlistÚlenÚlabelÚlabelsr   ÚallÚAssertionErrorÚ
properties)ÚselfZnode_idr   r   r   r   r   r   Ú__init__	   s4    
ÿþý
ý

ÿ
ÿzNode.__init__c                 C   s<   d}| j r8d dd„ t| j  ¡ ƒD ƒ¡}|d| d 7 }|S )Nr   ú,c                 s   s&   | ]\}}|d  t t|ƒƒ V  qdS ©ú:N©r   r   ©r   ÚkeyÚvalr   r   r   Ú	<genexpr>+   s   ÿz!Node.to_string.<locals>.<genexpr>Ú{Ú})r   ÚjoinÚsortedÚitems©r   ÚresÚpropsr   r   r   Ú	to_string(   s    
þzNode.to_stringc                 C   sn   d}| j r|| j 7 }| jr.|dd | j¡ 7 }| jrbd dd„ t| j ¡ ƒD ƒ¡}|d| d 7 }|d7 }|S )	Nú(r   r   c                 s   s&   | ]\}}|d  t t|ƒƒ V  qdS r   r   r   r   r   r   r   :   s   ÿzNode.__str__.<locals>.<genexpr>r    r!   ú))r   r   r"   r   r#   r$   r%   r   r   r   Ú__str__3   s    

þzNode.__str__c                 C   sn   t |tƒsdS | jd k	r2|jd k	r2| j|jkr2dS | j|jkrBdS t| jƒt|jƒkrZdS | j|jkrjdS dS )NFT)r   r   r   r   r   r   )r   Úrhsr   r   r   Ú__eq__C   s    
 zNode.__eq__)NNNN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r(   r+   r-   r   r   r   r   r      s
   
r   N)Zhelpersr   r   r   r   r   r   Ú<module>   s   