
    z	i
                     N    S r SSKJr  SSKJr  SSKJr  SSKJr   " S S\5      r	g)	z5A pass to check if input circuit requires reschedule.    )
DAGCircuit)AnalysisPass)Target)run_instruction_duration_checkc                   N   ^  \ rS rSrSrS
S\S\S\4U 4S jjjrS\4S jr	S	r
U =r$ )InstructionDurationCheck   a  Duration validation pass for reschedule.

This pass investigates the input quantum circuit and checks if the circuit requires
rescheduling for execution. Note that this pass can be triggered without scheduling.
This pass only checks the duration of delay instructions,
which report duration values without pre-scheduling.

This pass assumes backend supported instructions, i.e. basis gates, have no violation
of the hardware alignment constraints, which is true in general.
acquire_alignmentpulse_alignmenttargetc                    > [         TU ]  5         Xl        X l        Ub#  UR                  U l        UR
                  U l        gg)ak  Create new duration validation pass.

The alignment values depend on the control electronics of your quantum processor.

Args:
    acquire_alignment: Integer number representing the minimum time resolution to
        trigger acquisition instruction in units of ``dt``.
    pulse_alignment: Integer number representing the minimum time resolution to
        trigger gate instruction in units of ``dt``.
    target: The :class:`~.Target` representing the target backend, if
        ``target`` is specified then this argument will take
        precedence and ``acquire_alignment`` and ``pulse_alignment`` will be ignored.
N)super__init__acquire_alignpulse_alignr
   r   )selfr
   r   r   	__class__s       x/home/james-whalen/.local/lib/python3.13/site-packages/qiskit/transpiler/passes/scheduling/alignments/check_durations.pyr   !InstructionDurationCheck.__init__    sC     	.*!'!9!9D%55D     dagc                 ^    [        XR                  U R                  5      U R                  S'   g)z\Run duration validation passes.

Args:
    dag: DAG circuit to check instruction durations.
reschedule_requiredN)r   r   r   property_set)r   r   s     r   runInstructionDurationCheck.run5   s,     4R##T%5%54
/0r   )r   r   )   r   N)__name__
__module____qualname____firstlineno____doc__intr   r   r   r   __static_attributes____classcell__)r   s   @r   r   r      s9    	6# 6C 6U[ 6 6*
z 
 
r   r   N)
r"   qiskit.dagcircuitr   qiskit.transpiler.basepassesr   qiskit.transpiler.targetr   -qiskit._accelerate.instruction_duration_checkr   r    r   r   <module>r+      s"    < ( 5 + X)
| )
r   