§
    ¹³Ùg‡  ã                  ó<   — d Z ddlmZ ddlmZ  G d„ d¦  «        ZdS )z@Object to represent the information at a node in the DAGCircuit.é    )Úannotations)ÚQiskitErrorc                  óÈ   — e Zd ZdZg d¢Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddd„Zed„ ¦   «         Zej        d„ ¦   «         Zed„ ¦   «         Z	e	j        d„ ¦   «         Z	e
d„ ¦   «         Zd„ ZdS )Ú
DAGDepNodezÀObject to represent the information at a node in the DAGDependency().

    It is used as the return value from `*_nodes()` functions and can
    be supplied to functions that take a node.
    )ÚtypeÚ_opÚnameÚ_qargsÚcargsÚsort_keyÚnode_idÚ
successorsÚpredecessorsÚ	reachableÚmatchedwithÚ	isblockedÚsuccessorstovisitÚqindicesÚcindicesN© éÿÿÿÿr   úlist[int] | Noner   r   r   r   úbool | Noner   r   ÚnidÚintc                óp  — || _         || _        || _        |�t          |¦  «        nd| _        |�t          |¦  «        nd| _        || _        t          | j        ¦  «        | _        |�|ng | _	        |�|ng | _
        || _        |	�|	ng | _        || _        |
�|
ng | _        |�|ng | _        |�|ng | _        d S )Nr   )r   r   r	   Útupler
   r   r   Ústrr   r   r   r   r   r   r   r   r   )Úselfr   Úopr	   Úqargsr   r   r   r   r   r   r   r   r   r   s                  úR/granary/edev/quantum/lib/python3.11/site-packages/qiskit/dagcircuit/dagdepnode.pyÚ__init__zDAGDepNode.__init__.   sÛ   € ð$ ˆŒ	ØˆŒØˆŒ	Ø&+Ð&7•e˜E‘l”l�l¸RˆŒØ%*Ð%6•U˜5‘\”\�\¸BˆŒ
ØˆŒÝ  ¤Ñ-Ô-ˆŒØ3=Ð3I Z ZÈrˆŒØ7CÐ7O | |ÐUWˆÔØ"ˆŒØ5@Ð5L k kÐRTˆÔØ(ˆŒà!2Ð!>ÐÐÀBð 	Ôð 08Ð/C 8 8ÈˆŒØ/7Ð/C 8 8ÈˆŒˆˆó    c                ót   — | j         r| j         dk    r t          dt          | ¦  «        › d�¦  «        ‚| j        S )zNReturns the Instruction object corresponding to the op for the node, else Noner    z	The node z is not an op node)r   r   r   r   ©r   s    r"   r    zDAGDepNode.opR   sB   € ð Œyð 	I˜DœI¨Ò-Ð-ÝÐG­#¨d©)¬)ÐGÐGÐGÑHÔHÐHØŒxˆr$   c                ó   — || _         d S )N)r   )r   Údatas     r"   r    zDAGDepNode.opY   s   € àˆŒˆˆr$   c                ó   — | j         S )z<
        Returns list of Qubit, else an empty list.
        )r
   r&   s    r"   r!   zDAGDepNode.qargs]   s   € ð
 Œ{Ðr$   c                óV   — t          |¦  «        | _        t          |¦  «        | _        dS )z-Sets the qargs to be the given list of qargs.N)r   r
   r   r   )r   Ú	new_qargss     r"   r!   zDAGDepNode.qargsd   s$   € õ ˜IÑ&Ô&ˆŒÝ˜I™œˆŒˆˆr$   c                ó¨  — d| j         cxk    r|j         k    r-n n*t          | j        ¦  «        t          |j        ¦  «        k    S | j        |j        k    r}| j        |j        k    rm| j         |j         k    r]| j        |j        k    rM| j        |j        k    r=| j        dk    r0t          | j        dd¦  «        t          |j        dd¦  «        k    rdS dS dS )a  
        Check if DAG nodes are considered equivalent, e.g., as a node_match for nx.is_isomorphic.

        Args:
            node1 (DAGDepNode): A node to compare.
            node2 (DAGDepNode): The other node to compare.

        Return:
            Bool: If node1 == node2
        Úbarrierr    Ú	conditionNFT)r	   Úsetr
   r   r   r   Úgetattr)Únode1Únode2s     r"   Úsemantic_eqzDAGDepNode.semantic_eqj   sä   € ð ˜œ
Ð0Ð0Ò0Ð0 e¤jÒ0Ð0Ð0Ð0Ð0Ý�u”|Ñ$Ô$­¨E¬LÑ(9Ô(9Ò9Ð9àŒ:˜œÒ#Ð#ØŒy˜EœIÒ%Ð%Ø”: ¤Ò+Ð+Ø”| u¤|Ò3Ð3Ø œ;¨%¬+Ò5Ð5Ø$œz¨TÒ1Ð1Ý#*¨5¬9°kÀ4Ñ#HÔ#HÍGØ$)¤I¨{¸DñM"ô M"ò $"ð $"ð ,1¨5Ø#' 4Øˆur$   c                ó®  — t          ¦   «         }| j        |_        | j        |_        | j        |_        | j        |_        | j        |_        | j        |_        | j        |_        | j	        |_	        | j
        |_
        | j        |_        | j        |_        | j        |_        | j        |_        | j        |_        | j                             ¦   «         |_        |S )z
        Function to copy a DAGDepNode object.
        Returns:
            DAGDepNode: a copy of a DAGDepNode object.
        )r   r   r    r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   Úcopy)r   Ú
dagdepnodes     r"   r5   zDAGDepNode.copy‡   sµ   € õ  ‘\”\ˆ
àœ)ˆ
ŒØœˆ
ŒØœ)ˆ
ŒØ œKˆ
ÔØœ:ˆ
ÔØ!œ\ˆ
ÔØ"œmˆ
ÔØ $¤ˆ
ÔØ"&Ô"3ˆ
ÔØ#œ~ˆ
ÔØ#œ~ˆ
ÔØ'+Ô'=ˆ
Ô$Ø"œmˆ
ÔØ"œmˆ
ÔØ!%Ô!1×!6Ò!6Ñ!8Ô!8ˆ
ÔàÐr$   )NNNr   r   NNNNNNNNr   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r#   Úpropertyr    Úsetterr!   Ústaticmethodr3   r5   r   r$   r"   r   r      s  € € € € € ðð ðð ð €Ið( ØØØØØ'+Ø)-ØØ(,Ø.2Ø!%Ø%)Ø%)Øð"Lð "Lð "Lð "Lð "LðH ðð ñ „Xðð „Yðð ñ „Yðð ðð ñ „Xðð „\ð'ð 'ñ „\ð'ð
 ðð ñ „\ðð8ð ð ð ð r$   r   N)r:   Ú
__future__r   Úqiskit.exceptionsr   r   r   r$   r"   ú<module>rA      sn   ðð GÐ FØ "Ð "Ð "Ð "Ð "Ð "à )Ð )Ð )Ð )Ð )Ð )ðKð Kð Kð Kð Kñ Kô Kð Kð Kð Kr$   