o
    "Õj  ã                   @   s:   d dl mZ G dd„ dƒZG dd„ dƒZG dd„ dƒZdS )	é    )ÚOrderedDictc                   @   sL   e Zd Zdd„ Zedd„ ƒZedd„ ƒZdd„ Zd	d
„ Zdd„ Z	dd„ Z
dS )ÚNodec                 K   s   || _ i | _| j |¡ d S ©N)Ú_idÚ_attrsÚupdate)ÚselfÚidÚattrs© r   ún/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/paddle/distributed/auto_parallel/static/graph.pyÚ__init__   s   zNode.__init__c                 C   ó   | j S r   )r   ©r   r   r   r   r	      ó   zNode.idc                 C   r   r   ©r   r   r   r   r   r
      r   z
Node.attrsc                 C   ó
   | j | S r   r   ©r   Ú	attr_namer   r   r   Ú__getitem__"   ó   
zNode.__getitem__c                 C   ó   || j |< d S r   r   ©r   r   Z
attr_valuer   r   r   Ú__setitem__%   ó   zNode.__setitem__c                 C   ó"   z|| j v W S  ty   Y dS w ©NF©r   Ú	TypeErrorr   r   r   r   Ú__contains__(   ó
   ÿzNode.__contains__c                 C   s   d| j › d| j› d}|S )Nz(id: ú	, attrs: ú))r	   r
   ©r   Ústrr   r   r   Ú__str__.   s   zNode.__str__N)Ú__name__Ú
__module__Ú__qualname__r   Úpropertyr	   r
   r   r   r   r%   r   r   r   r   r      s    

r   c                   @   sX   e Zd Zdd„ Zedd„ ƒZedd„ ƒZedd„ ƒZd	d
„ Zdd„ Z	dd„ Z
dd„ ZdS )ÚEdgec                 K   s"   || _ || _i | _| j |¡ d S r   )Ú_src_idÚ_tgt_idr   r   )r   Úsrc_idÚtgt_idr
   r   r   r   r   4   s   zEdge.__init__c                 C   r   r   )r+   r   r   r   r   r-   =   r   zEdge.src_idc                 C   r   r   )r,   r   r   r   r   r.   A   r   zEdge.tgt_idc                 C   r   r   r   r   r   r   r   r
   E   r   z
Edge.attrsc                 C   r   r   r   r   r   r   r   r   I   r   zEdge.__getitem__c                 C   r   r   r   r   r   r   r   r   L   r   zEdge.__setitem__c                 C   r   r   r   r   r   r   r   r   O   r    zEdge.__contains__c                 C   s*   d}|d| j › d| j› d| j› d7 }|S )NÚ z	(src_id: z
, tgt_id: r!   r"   )r-   r.   r   r#   r   r   r   r%   U   s   "zEdge.__str__N)r&   r'   r(   r   r)   r-   r.   r
   r   r   r   r%   r   r   r   r   r*   3   s    	


r*   c                   @   sp   e Zd Zdd„ Zedd„ ƒZedd„ ƒZedd„ ƒZd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ ZdS )ÚGraphc                 K   s.   i | _ i | _i | _| j |¡ i | _i | _d S r   )Ú_nodesÚ_adjsr   r   Ú_reverse_adjsZ_attr_to_nodes)r   r
   r   r   r   r   \   s   
zGraph.__init__c                 C   r   r   )r1   r   r   r   r   Únodesj   r   zGraph.nodesc                 C   r   r   r   r   r   r   r   r
   n   r   zGraph.attrsc                 C   r   r   ©r2   r   r   r   r   Úadjsr   r   z
Graph.adjsc                 K   sf   |d u rt dƒ‚|| jvr%t|fi |¤Ž}|| j|< i | j|< g | j|< n	| j| j |¡ | j| S ©NzNone cannot be a node)Ú
ValueErrorr1   r   r2   r3   r
   r   )r   Únode_idr
   Únoder   r   r   Úadd_nodev   s   



zGraph.add_nodec                 K   s¾   |d u rt dƒ‚|d u rt dƒ‚|| jvr)t|ƒ}|| j|< tƒ | j|< g | j|< || jvrBt|ƒ}|| j|< tƒ | j|< g | j|< t||fi |¤Ž}|| j| |< | j|  | j| ¡ |S r7   )	r8   r1   r   r   r2   r3   r*   Úappendr4   )r   r-   r.   r
   Zsrc_nodeZtgt_nodeÚedger   r   r   Úadd_edgeƒ   s$   





zGraph.add_edgec                 C   s
   t | jƒS r   )Úlenr1   r   r   r   r   Ú__len__   r   zGraph.__len__c                 C   s   t | j ¡ ƒS r   )Úiterr1   Úvaluesr   r   r   r   Ú__iter__    r   zGraph.__iter__c                 C   r   r   r5   ©r   r9   r   r   r   r   £   s   
zGraph.__getitem__c                 C   r   r   )r1   r   rD   r   r   r   r   §   s
   ÿzGraph.__contains__c                 C   s„   d}|d7 }| j D ]}|| j | › d7 }q	|d7 }| jD ]"}|d|› d7 }t| j| ƒD ]\}}|| j| | › d7 }q.q|S )Nr/   z"**************Nodes**************
Ú
z"**************Edges**************
z--------------z--------------
)r4   r6   Ú	enumerate)r   r$   r9   r-   Úidxr.   r   r   r   r%   ®   s   

ÿzGraph.__str__N)r&   r'   r(   r   r)   r4   r
   r6   r;   r>   r@   rC   r   r   r%   r   r   r   r   r0   [   s    


r0   N)Úcollectionsr   r   r*   r0   r   r   r   r   Ú<module>   s   !(