
    +h                      0    d dl mZ d dlmZ  G d d      Zy)   )Edge)Nodec                   j    e Zd Zd Zed        Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zy)Pathc                     t        |t              rt        |t              st        d      || _        || _        t
        | _        y )Nznodes and edges must be list)
isinstancelist	TypeError_nodes_edgesr   append_type)selfnodesedgess      L/var/www/html/venv/lib/python3.12/site-packages/redis/commands/graph/path.py__init__zPath.__init__   s7    5$'Jud,C:;;    c                      | g g       S N )clss    r   new_empty_pathzPath.new_empty_path   s    2r{r   c                     | j                   S r   r   r   s    r   r   z
Path.nodes       {{r   c                     | j                   S r   r   r   s    r   r   z
Path.edges   r   r   c                      | j                   |   S r   r   r   indexs     r   get_nodezPath.get_node       {{5!!r   c                      | j                   |   S r   r   r    s     r   get_relationshipzPath.get_relationship   r#   r   c                      | j                   d   S )N    r   r   s    r   
first_nodezPath.first_node   s    {{1~r   c                      | j                   d   S )Nr   r   s    r   	last_nodezPath.last_node!   s    {{2r   c                 ,    t        | j                        S r   )lenr   r   s    r   
edge_countzPath.edge_count$       4;;r   c                 ,    t        | j                        S r   )r-   r   r   s    r   nodes_countzPath.nodes_count'   r/   r   c                     t        || j                        st        d      | j                  j	                  |       t
        | _        | S )NzAdd Edge before adding Node)r   r   AssertionErrorr   appendr   )r   nodes     r   add_nodezPath.add_node*   =    $ 0 01 !>??4 r   c                     t        || j                        st        d      | j                  j	                  |       t
        | _        | S )NzAdd Node before adding Edge)r   r   r3   r   r4   r   )r   edges     r   add_edgezPath.add_edge1   r7   r   c                     t        |t              sy| j                         |j                         k(  xr! | j                         |j                         k(  S )NF)r   r   r   r   )r   others     r   __eq__zPath.__eq__8   s<    %&zz|u{{},N1NNr   c                    d}| j                         }t        d|      D ]  }| j                  |      j                  }|dt	        |      z   dz   z  }| j                  |      }||j                  |k(  r$dt	        t        |j                              z   dz   n#dt	        t        |j                              z   dz   z  } | j                  |      j                  }|dt	        |      z   dz   z  }|d	z  }|S )
N<r'   ()z-[z]->z<-[z]->)r.   ranger"   idstrr%   src_nodeint)r   resr.   inode_idr9   s         r   __str__zPath.__str__?   s    __&
q*% 	AmmA&))G3W%++C((+D==G+ s3tww<((50STWW..5C		 --
+..sS\!C''s

r   N)__name__
__module____qualname__r   classmethodr   r   r   r"   r%   r(   r+   r.   r1   r6   r:   r=   rK   r   r   r   r   r      sX       ""  Or   r   N)r9   r   r5   r   r   r   r   r   <module>rP      s     I Ir   