
    Αi                     L    S SK Jr   " S S5      r " S S5      r " S S5      rg)	    )OrderedDictc                   R    \ rS rSrS r\S 5       r\S 5       rS rS r	S r
S rS	rg
)Node   c                 T    Xl         0 U l        U R                  R                  U5        g N)_id_attrsupdate)selfidattrss      m/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/distributed/auto_parallel/static/graph.py__init__Node.__init__   s     5!    c                     U R                   $ r   )r	   r   s    r   r   Node.id   s    xxr   c                     U R                   $ r   r
   r   s    r   r   
Node.attrs       {{r   c                      U R                   U   $ r   r   r   	attr_names     r   __getitem__Node.__getitem__"       {{9%%r   c                      X R                   U'   g r   r   r   r   
attr_values      r   __setitem__Node.__setitem__%       !+Ir   c                 @     XR                   ;   $ ! [         a     gf = fNFr
   	TypeErrorr   s     r   __contains__Node.__contains__(   &    	++ 		    
c                 @    SU R                    SU R                   S3nU$ )Nz(id: 	, attrs: ))r   r   r   strs     r   __str__Node.__str__.   s#    dggYi

|15
r   )r
   r	   N)__name__
__module____qualname____firstlineno__r   propertyr   r   r   r#   r*   r3   __static_attributes__ r   r   r   r      sC    "    &,r   r   c                   b    \ rS rSrS r\S 5       r\S 5       r\S 5       rS r	S r
S rS	 rS
rg)Edge3   c                 `    Xl         X l        0 U l        U R                  R                  U5        g r   )_src_id_tgt_idr
   r   )r   src_idtgt_idr   s       r   r   Edge.__init__4   s%    5!r   c                     U R                   $ r   )r@   r   s    r   rB   Edge.src_id=       ||r   c                     U R                   $ r   )rA   r   s    r   rC   Edge.tgt_idA   rG   r   c                     U R                   $ r   r   r   s    r   r   
Edge.attrsE   r   r   c                      U R                   U   $ r   r   r   s     r   r   Edge.__getitem__I   r   r   c                      X R                   U'   g r   r   r!   s      r   r#   Edge.__setitem__L   r%   r   c                 @     XR                   ;   $ ! [         a     gf = fr'   r(   r   s     r   r*   Edge.__contains__O   r,   r-   c                 d    SnUSU R                    SU R                   SU R                   S3-  nU$ )N z	(src_id: z
, tgt_id: r/   r0   )rB   rC   r
   r1   s     r   r3   Edge.__str__U   s8    4;;-z$++i}TUVV
r   )r
   r@   rA   N)r5   r6   r7   r8   r   r9   rB   rC   r   r   r#   r*   r3   r:   r;   r   r   r=   r=   3   sW    "      &,r   r=   c                   t    \ rS rSrS r\S 5       r\S 5       r\S 5       rS r	S r
S rS	 rS
 rS rS rSrg)Graph[   c                     0 U l         0 U l        0 U l        U R                  R                  U5        0 U l        0 U l        g r   )_nodes_adjsr
   r   _reverse_adjs_attr_to_nodes)r   r   s     r   r   Graph.__init__\   s=      
5! r   c                     U R                   $ r   )rY   r   s    r   nodesGraph.nodesj   r   r   c                     U R                   $ r   r   r   s    r   r   Graph.attrsn   r   r   c                     U R                   $ r   rZ   r   s    r   adjs
Graph.adjsr   s    zzr   c                    Uc  [        S5      eXR                  ;  a9  [        U40 UD6nX0R                  U'   0 U R                  U'   / U R                  U'   O(U R                  U   R
                  R                  U5        U R                  U   $ NzNone cannot be a node)
ValueErrorrY   r   rZ   r[   r   r   )r   node_idr   nodes       r   add_nodeGraph.add_nodev   s    ?455++%)5)D#'KK "$DJJw*,Dw'KK &&--e4{{7##r   c                    Uc  [        S5      eUc  [        S5      eXR                  ;  a?  [        U5      nX@R                  U'   [        5       U R                  U'   / U R
                  U'   X R                  ;  a?  [        U5      nXPR                  U'   [        5       U R                  U'   / U R
                  U'   [        X40 UD6nX`R                  U   U'   U R
                  U   R                  U R                  U   5        U$ rh   )	ri   rY   r   r   rZ   r[   r=   appendr_   )r   rB   rC   r   src_nodetgt_nodeedges          r   add_edgeGraph.add_edge   s    >455>455$F|H"*KK!,DJJv)+Dv&$F|H"*KK!,DJJv)+Dv&F,e,%)

66" 	6"))$**V*<=r   c                 ,    [        U R                  5      $ r   )lenrY   r   s    r   __len__Graph.__len__   s    4;;r   c                 H    [        U R                  R                  5       5      $ r   )iterrY   valuesr   s    r   __iter__Graph.__iter__   s    DKK&&())r   c                      U R                   U   $ r   rd   r   rj   s     r   r   Graph.__getitem__   s    zz'""r   c                 @     XR                   ;   $ ! [         a     gf = fr'   )rY   r)   r   s     r   r*   Graph.__contains__   s&    	kk)) 		r-   c                    SnUS-  nU R                    H  nXR                   U    S3-  nM     US-  nU R                   HD  nUSU S3-  n[        U R                  U   5       H  u  pEXR                  U   U    S3-  nM     MF     U$ )NrS   z"**************Nodes**************

z"**************Edges**************
z--------------z--------------
)r_   re   	enumerate)r   r2   rj   rB   idxrC   s         r   r3   Graph.__str__   s    44zzGjj)*"--C " 	44iiF^F8+;<<C(6):;))F+F34B77  <  
 
r   )rZ   r\   r
   rY   r[   N)r5   r6   r7   r8   r   r9   r_   r   re   rl   rs   rw   r|   r   r*   r3   r:   r;   r   r   rV   rV   [   sf    !      $4 *#r   rV   N)collectionsr   r   r=   rV   r;   r   r   <module>r      s,    $ B% %P_ _r   