
    x-j                     `    d dl mZ  G d d          Z G d d          Z G d d          ZdS )	    )OrderedDictc                   X    e Zd Zd Zed             Zed             Zd Zd Zd Z	d Z
dS )	Nodec                 V    || _         i | _        | j                            |           d S N)_id_attrsupdate)selfidattrss      m/var/www/html/banglarbhumi/venv/lib/python3.11/site-packages/paddle/distributed/auto_parallel/static/graph.py__init__zNode.__init__   s,    5!!!!!    c                     | j         S r   )r   r   s    r   r   zNode.id   s	    xr   c                     | j         S r   r	   r   s    r   r   z
Node.attrs   
    {r   c                     | j         |         S r   r   r   	attr_names     r   __getitem__zNode.__getitem__"       {9%%r   c                     || j         |<   d S r   r   r   r   
attr_values      r   __setitem__zNode.__setitem__%       !+Ir   c                 8    	 || j         v S # t          $ r Y dS w xY wNFr	   	TypeErrorr   s     r   __contains__zNode.__contains__(   6    	++ 	 	 	55	    
c                 ,    d| j          d| j         d}|S )Nz(id: 	, attrs: ))r   r   r   strs     r   __str__zNode.__str__.   s#    5dg55
555
r   N)__name__
__module____qualname__r   propertyr   r   r   r   r$   r,    r   r   r   r      s        " " "   X   X& & &, , ,      r   r   c                   n    e Zd Zd Zed             Zed             Zed             Zd Zd Z	d Z
d Zd	S )
Edgec                 d    || _         || _        i | _        | j                            |           d S r   )_src_id_tgt_idr	   r
   )r   src_idtgt_idr   s       r   r   zEdge.__init__4   s3    5!!!!!r   c                     | j         S r   )r5   r   s    r   r7   zEdge.src_id=   
    |r   c                     | j         S r   )r6   r   s    r   r8   zEdge.tgt_idA   r:   r   c                     | j         S r   r   r   s    r   r   z
Edge.attrsE   r   r   c                     | j         |         S r   r   r   s     r   r   zEdge.__getitem__I   r   r   c                     || j         |<   d S r   r   r   s      r   r   zEdge.__setitem__L   r   r   c                 8    	 || j         v S # t          $ r Y dS w xY wr!   r"   r   s     r   r$   zEdge.__contains__O   r%   r&   c                 F    d}|d| j          d| j         d| j         dz  }|S )N z	(src_id: z
, tgt_id: r(   r)   )r7   r8   r	   r*   s     r   r,   zEdge.__str__U   s8    V4;VV$+VVVVVV
r   N)r-   r.   r/   r   r0   r7   r8   r   r   r   r$   r,   r1   r   r   r3   r3   3   s        " " "   X   X   X& & &, , ,      r   r3   c                       e Zd Zd Zed             Zed             Zed             Zd Zd Z	d Z
d Zd	 Zd
 Zd ZdS )Graphc                     i | _         i | _        i | _        | j                            |           i | _        i | _        d S r   )_nodes_adjsr	   r
   _reverse_adjs_attr_to_nodes)r   r   s     r   r   zGraph.__init__\   sG      
5!!! r   c                     | j         S r   )rE   r   s    r   nodeszGraph.nodesj   r   r   c                     | j         S r   r   r   s    r   r   zGraph.attrsn   r   r   c                     | j         S r   rF   r   s    r   adjsz
Graph.adjsr   s
    zr   c                     |t          d          || j        vr,t          |fi |}|| j        |<   i | j        |<   g | j        |<   n%| j        |         j                            |           | j        |         S NzNone cannot be a node)
ValueErrorrE   r   rF   rG   r   r
   )r   node_idr   nodes       r   add_nodezGraph.add_nodev   s    ?4555$+%%))5))D#'DK "$DJw*,Dw''K &--e444{7##r   c                    |t          d          |t          d          || j        vr9t          |          }|| j        |<   t                      | j        |<   g | j        |<   || j        vr9t          |          }|| j        |<   t                      | j        |<   g | j        |<   t          ||fi |}|| j        |         |<   | j        |                             | j        |                    |S rP   )	rQ   rE   r   r   rF   rG   r3   appendrJ   )r   r7   r8   r   src_nodetgt_nodeedges          r   add_edgezGraph.add_edge   s    >4555>4555$$F||H"*DK!,DJv)+Dv&$$F||H"*DK!,DJv)+Dv&FF,,e,,%)
66" 	6"))$*V*<===r   c                 *    t          | j                  S r   )lenrE   r   s    r   __len__zGraph.__len__   s    4;r   c                 N    t          | j                                                  S r   )iterrE   valuesr   s    r   __iter__zGraph.__iter__   s    DK&&(()))r   c                     | j         |         S r   rM   r   rR   s     r   r   zGraph.__getitem__   s    z'""r   c                 8    	 || j         v S # t          $ r Y dS w xY wr!   )rE   r#   rc   s     r   r$   zGraph.__contains__   s6    	dk)) 	 	 	55	r&   c                     d}|dz  }| j         D ]}|| j         |          dz  }|dz  }| j        D ]D}|d| dz  }t          | j        |                   D ]\  }}|| j        |         |          dz  }E|S )NrA   z"**************Nodes**************

z"**************Edges**************
z--------------z--------------
)rJ   rN   	enumerate)r   r+   rR   r7   idxr8   s         r   r,   zGraph.__str__   s    44z 	. 	.Gdj)----CC44i 	8 	8F<F<<<<C(6):;; 8 8V$)F+F377778 
r   N)r-   r.   r/   r   r0   rJ   r   rN   rT   rZ   r]   ra   r   r$   r,   r1   r   r   rC   rC   [   s        ! ! !   X   X   X$ $ $  4     * * *# # #      r   rC   N)collectionsr   r   r3   rC   r1   r   r   <module>rj      s    $ # # # # #       B% % % % % % % %P_ _ _ _ _ _ _ _ _ _r   