
    z	i              
         S r SSKJr  SSKrSSKrSSKrSSKJrJ	r	J
r
JrJrJrJrJrJr  SSKJr  \R&                  (       a  SSKJr  \R,                  R.                  R0                  r\R,                  R.                  R2                  r\R,                  R.                  R4                  r\R,                  R.                  R6                  rSS jrSS jrS	 rS
 rS r S r!S r"\\\\\\ \\!\\"0r#\$" 1 Sk5      r%g)zAObjects to represent the information at a node in the DAGCircuit.    )annotationsN)	BoxOpClbitClassicalRegisterIfElseOpWhileLoopOpSwitchCaseOp	ForLoopOp	ParameterQuantumCircuit)expr)
DAGCircuitc                  ^^ Xs=L a  c   g  S X4;   a  gU u  pEUu  pgXW:w  a  g[        U[        5      (       a   [        U[        5      (       a  TU   TU   :H  $ [        U[        5      (       aT  [        U[        5      (       a?  UR                  UR                  :H  =(       a    [	        UU4S j[        XF5       5       5      $ g)NTFc              3  >   >#    U  H  u  pTU   TU   :H  v   M     g 7fN ).0t1t2bit_indices1bit_indices2s      S/home/james-whalen/.local/lib/python3.13/site-packages/qiskit/dagcircuit/dagnode.py	<genexpr>'_legacy_condition_eq.<locals>.<genexpr>8   s&      4
?TVRLR 00?T   )
isinstancer   r   sizeallzip)cond1cond2r   r   target1val1target2val2s     ``    r   _legacy_condition_eqr&   ,   s     	%	MGMG|'5!!j%&@&@G$W(===',--*WFW2X2X||w||+ 
 4
?B7?T4
 1
 	
     c                  ^ SSK Jn  U4S jnU" U S[        [        XR                  5      US9 VVs/ s H  u  pgUPM	     snn[        [        X R
                  5      US9 VVs/ s H  u  pgUPM	     snnS9$ s  snnf s  snnf )zGet a :class:`.DAGCircuit` of the given :class:`.QuantumCircuit`.  The bits in the output
will be ordered in a canonical order based on their indices in the outer DAG, as defined by the
``bit_indices`` mapping and the ``node_{q,c}args`` arguments.r   )circuit_to_dagc                   > U u  pTU   $ r   r   )bitsouter_innerbit_indicess      r   sort_key!_circuit_to_dag.<locals>.sort_keyD   s    5!!r'   F)key)copy_operationsqubit_orderclbit_order)qiskit.convertersr)   sortedr   qubitsclbits)circuit
node_qargs
node_cargsr.   r)   r/   _outerinners      `    r   _circuit_to_dagr>   >   s     1" '-c*nn.MS['\
'\mfE'\
 (.c*nn.MS['\
'\mfE'\
	 	

s   A7#A=c                   ^  U 4S jnU$ )Nc                   > [        U [        5      (       a  TR                  U 5      $ [        U [        5      (       a"  U  Vs/ s H  nTR                  U5      PM     sn$ g s  snf r   )r   r   getr   )varbitr.   s     r   r1   _make_expr_key.<locals>.keyU   sS    c5!!??3''c,--478CSKOOC(C88 9s   A r   )r.   r1   s   ` r   _make_expr_keyrE   T   s     Jr'   c                `  ^ ^^^ S nS nT R                  5       (       a  T R                  R                  nTR                  5       (       a  TR                  R                  n[        U[        R
                  5      (       aP  [        U[        R
                  5      (       a1  [        R                  " XE[        T5      [        T5      5      (       d  gOR[        U[        R
                  5      (       d  [        U[        R
                  5      (       a  g[        XETT5      (       d  g[        T R                  R                  5      [        TR                  R                  5      :H  =(       aJ    [        UUU U4S j[        T R                  R                  TR                  R                  5       5       5      $ )NFc              3     >#    U  HL  u  p[        UTR                  TR                  T5      [        UTR                  TR                  T5      :H  v   MN     g 7fr   r>   qargscargsr   block1block2r   r   node1node2s      r   r   #_condition_op_eq.<locals>.<genexpr>o   sM      @ DNF 	U[[,G65;;\J	KC   AA)is_control_flowop	conditionr   r   Exprstructurally_equivalentrE   r&   lenblocksr   r   )rN   rO   r   r   r    r!   s   ````  r   _condition_op_eqrY   _   s+   EE""""%##
5$))(D(D++.6|8T
 
 
 
E499	%	%E499)E)E!%lKKuxx3uxx#77 C @ "%((//588??C@ = r'   c                  ^ ^^^ T R                   R                  nTR                   R                  n[        U[        R                  5      (       aP  [        U[        R                  5      (       a1  [        R
                  " XE[        T5      [        T5      5      (       d  gO[        U[        5      (       a#  [        U[        5      (       a  TU   TU   :w  a  gOk[        U[        5      (       aU  [        U[        5      (       a@  UR                  UR                  :w  d$  [        UU4S j[        XE5       5       5      (       a  gOgT R                   R                  5        VVs/ s H  u  pgUPM	     nnnTR                   R                  5        VVs/ s H  u  pgUPM	     n	nn[        U5      [        U	5      :H  =(       a    [        S [        X5       5       5      =(       a    [        T R                   R                  5      [        TR                   R                  5      :H  =(       aJ    [        UUU U4S j[        T R                   R                  TR                   R                  5       5       5      $ s  snnf s  snnf )NFc              3  >   >#    U  H  u  pTU   TU   :g  v   M     g 7fr   r   )r   b1b2r   r   s      r   r   "_switch_case_eq.<locals>.<genexpr>   s&      /
?TVRLR 00?Tr   c              3  T   #    U  H  u  p[        U5      [        U5      :H  v   M      g 7fr   )set)r   labels1labels2s      r   r   r^      s"     YEX1AGG,EXs   &(c              3     >#    U  HL  u  p[        UTR                  TR                  T5      [        UTR                  TR                  T5      :H  v   MN     g 7fr   rH   rK   s      r   r   r^      sL      
 #H FEKKlKvu{{EKKNO"GrQ   )rS   targetr   r   rU   rV   rE   r   r   r   anyr   cases_specifierrW   r   rX   )
rN   rO   r   r   r"   r$   case_cases1cases2s
   ````      r   _switch_case_eqrk   v   s   hhooGhhooG'499%%*Wdii*H*H++n\:N<<X
 
 
 
GU	#	#
7E(B(B L$99 :	G.	/	/JwHY4Z4Z<<7<<'3 /
?B7?T/
 ,
 ,
 ,

 "'((":":"<="<wtd"<F="'((":":"<="<wtd"<F=Fs6{" 	
YSEXYY	
 C$88	
  
 #&ehhoouxx"G
 
		 >=s    I/I5c                   U R                   R                  u  pEnUR                   R                  u  pxn	XG:w  a  gUc  Uc  Ub  Uc  gUbn  Ubk  [        [        [        R
                  " 5       5      5      n
XVR                  ;   a  UR                  XZ0SS9OUnXR                  ;   a  U	R                  X0SS9OU	n	[        X`R                  U R                  U5      [        XR                  UR                  U5      :H  $ )NF)inplace)rS   paramsr   struuiduuid4
parametersassign_parametersr>   rI   rJ   )rN   rO   r   r   	indexset1param1body1	indexset2param2body2sentinels              r   _for_loop_eqr{      s    $xxIu$xxIu6-63E&.f0S./ ))) ##V$6#F 	 ))) ##V$6#F 	
 5++u{{LI_{{EKKN  r'   c                    U R                   R                  UR                   R                  :H  =(       a    U R                   R                  UR                   R                  :H  =(       a    [        U R                   R                  S   U R
                  U R                  U5      [        UR                   R                  S   UR
                  UR                  U5      :H  =(       a-    U R                   R                  UR                   R                  :H  $ )Nr   )rS   durationunitr>   rX   rI   rJ   r   )rN   rO   r   r   s       r   _box_eqr      s    			ehh//	/ 	;XX]]ehhmm+	; EHHOOA.U[[,Wuxxq15;;\Z[	; XX!!UXX%9%99r'   >   swapbarrier
break_loopcontinue_loop)returnbool)r9   r   r   r   )&__doc__
__future__r   typingrp   qiskit._accelerate.circuitqiskitqiskit.circuitr   r   r   r   r   r	   r
   r   r   qiskit.circuit.classicalr   TYPE_CHECKINGqiskit.dagcircuitr   _accelerater9   DAGNode	DAGOpNode	DAGInNode
DAGOutNoder&   r>   rE   rY   rk   r{   r   _SEMANTIC_EQ_CONTROL_FLOW	frozenset_SEMANTIC_EQ_SYMMETRICr   r'   r   <module>r      s    H "   !
 
 
 *	, 


$
$
,
,&&00	&&00	''22
$,.@0	 !/|	7  ##UV r'   