§
    ¹³Ùgˆ  ã                   ó\   — d Z ddlZddlmZ ddlmZ ddlmZ dedede	fd	„Z
ddedefd„ZdS )z;
Utilities for handling duration of a circuit instruction.
é    N)ÚQuantumCircuit)ÚCircuitError)Úapply_prefixÚduration_in_secÚ	dt_in_secÚreturnc           	      ó´   — t          | |z  ¦  «        }t          | ||z  z
  ¦  «        }|dk    r*t          j        d|d›d||z  d›d| d›d�t          ¦  «         |S )zÊ
    Return duration in dt.

    Args:
        duration_in_sec: duration [s] to be converted.
        dt_in_sec: duration of dt in seconds used for conversion.

    Returns:
        Duration in dt.
    gVçž¯Ò<zDuration is rounded to Údz [dt] = Úez
 [s] from z [s])ÚroundÚabsÚwarningsÚwarnÚUserWarning)r   r   ÚresÚrounding_errors       úM/granary/edev/quantum/lib/python3.11/site-packages/qiskit/circuit/duration.pyÚduration_in_dtr      s‘   € õ � )Ñ+Ñ
,Ô
,€CÝ˜¨3°©?Ñ:Ñ;Ô;€NØ˜ÒÐÝŒð, cÐMð ,ð ,°S¸9±_ÐMð ,ð ,Ø#Ð+ð,ð ,ð ,åñ	
ô 	
ð 	
ð
 €Jó    TÚqcc                 ó€  — |r| }n|                       ¦   «         }|j        D ]‘}|j        }|j        dk    s|j        €Œ|j                             d¦  «        st          d|j        › d�¦  «        ‚|j        }|j        dk    rt          ||j        ¦  «        }t          ||¦  «        |_        d|_        Œ’|j        �€|j        dk    ru|j                             d¦  «        st          d|j        › d�¦  «        ‚|j        }|j        dk    rt          ||j        ¦  «        }t          ||¦  «        |_        d|_        |s|S dS )a  Convert all the durations in SI (seconds) into those in dt.

    Returns a new circuit if `inplace=False`.

    Parameters:
        qc (QuantumCircuit): Duration of dt in seconds used for conversion.
        dt_in_sec (float): Duration of dt in seconds used for conversion.
        inplace (bool): All durations are converted inplace or return new circuit.

    Returns:
        QuantumCircuit: Converted circuit if `inplace = False`, otherwise None.

    Raises:
        CircuitError: if fail to convert durations.
    ÚdtNÚszInvalid time unit: 'ú')	ÚcopyÚdataÚ	operationÚunitÚdurationÚendswithr   r   r   )r   r   ÚinplaceÚcircÚinstructionr   r   s          r   Úconvert_durations_to_dtr$   -   s_  € ð  ð Øˆˆà�wŠw‰yŒyˆà”yð ð ˆØÔ)ˆ	ØŒ>˜TÒ!Ð! YÔ%7Ð%?ØàŒ~×&Ò& sÑ+Ô+ð 	IÝÐG°i´nÐGÐGÐGÑHÔHÐHàÔ%ˆØŒ>˜SÒ Ð Ý# H¨i¬nÑ=Ô=ˆHå+¨H°iÑ@Ô@ˆ	ÔØˆ	Œˆà„}Ð  T¤Y°$Ò%6Ð%6ØŒy×!Ò! #Ñ&Ô&ð 	DÝÐB°d´iÐBÐBÐBÑCÔCÐCà”=ˆØŒ9˜ÒÐÝ# H¨d¬iÑ8Ô8ˆHå& x°Ñ;Ô;ˆŒØˆŒ	àð Øˆàˆtr   )T)Ú__doc__r   Úqiskit.circuitr   Úqiskit.circuit.exceptionsr   Úqiskit.utils.unitsr   ÚfloatÚintr   r$   © r   r   ú<module>r,      sª   ððð ð €€€à )Ð )Ð )Ð )Ð )Ð )Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø +Ð +Ð +Ð +Ð +Ð +ð Eð °eð Àð ð ð ð ð,2ð 2 ð 2¸5ð 2ð 2ð 2ð 2ð 2ð 2r   