§
    º³Ùgˆ  ã                   óf   — d Z ddlmZmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ  G d„ de	¦  «        Zd	S )
z˜A simulator instruction to capture output within a simulation. The types of snapshot
instructions available are determined by the simulator being used.
é    )ÚOptionalÚTuple)ÚSnapshotChannel)Ú
PulseError)ÚInstruction)Údeprecate_pulse_funcc            	       óø   ‡ — e Zd ZdZeddededee         fˆ fd„¦   «         Zd„ Ze	d	efd
„¦   «         Z
e	d	efd„¦   «         Ze	d	efd„¦   «         Ze	d	ee         fd„¦   «         Ze	d	efd„¦   «         Zd	efd„Zˆ xZS )ÚSnapshotzNAn instruction targeted for simulators, to capture a moment in the simulation.ÚstatevectorNÚlabelÚsnapshot_typeÚnamec                 ó€   •— t          ¦   «         | _        |€|}t          ¦   «                              ||f|¬¦  «         dS )uô  Create new snapshot.

        Args:
            label: Snapshot label which is used to identify the snapshot in the output.
            snapshot_type: Type of snapshot, e.g., â€œstateâ€� (take a snapshot of the quantum state).
                           The types of snapshots offered are defined by the simulator used.
            name: Snapshot name which defaults to ``label``. This parameter is only for display
                  purposes and is not taken into account during comparison.
        N)Úoperandsr   )r   Ú_channelÚsuperÚ__init__)Úselfr   r   r   Ú	__class__s       €úX/granary/edev/quantum/lib/python3.11/site-packages/qiskit/pulse/instructions/snapshot.pyr   zSnapshot.__init__   sD   ø€ õ (Ñ)Ô)ˆŒàˆ<ØˆDÝ‰Œ×Ò 5¨-Ð"8¸tÐÑDÔDÐDÐDÐDó    c                 óX   — t          | j        t          ¦  «        st          d¦  «        ‚dS )z‰Called after initialization to validate instruction data.

        Raises:
            PulseError: If snapshot label is invalid.
        z Snapshot label must be a string.N)Ú
isinstancer   Ústrr   ©r   s    r   Ú	_validatezSnapshot._validate,   s4   € õ ˜$œ*¥cÑ*Ô*ð 	AÝÐ?Ñ@Ô@Ð@ð	Að 	Ar   Úreturnc                 ó   — | j         d         S )zLabel of snapshot.r   ©r   r   s    r   r   zSnapshot.label5   ó   € ð Œ}˜QÔÐr   c                 ó   — | j         d         S )zType of snapshot.é   r   r   s    r   ÚtypezSnapshot.type:   r    r   c                 ó   — | j         S )z�Return the :py:class:`~qiskit.pulse.channels.Channel` that this instruction is
        scheduled on; trivially, a ``SnapshotChannel``.
        )r   r   s    r   ÚchannelzSnapshot.channel?   s   € ð
 Œ}Ðr   c                 ó   — | j         fS )z-Returns the channels that this schedule uses.)r%   r   s    r   ÚchannelszSnapshot.channelsF   s   € ð ”ˆÐr   c                 ó   — dS )zDuration of this instruction.r   © r   s    r   ÚdurationzSnapshot.durationK   s	   € ð ˆqr   c                 ó   — dS )z1Return True iff the instruction is parameterized.Fr)   r   s    r   Úis_parameterizedzSnapshot.is_parameterizedP   s   € àˆur   )r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   Úpropertyr   r#   r   r%   r   r'   Úintr*   Úboolr,   Ú__classcell__)r   s   @r   r
   r
      sl  ø€ € € € € ØXÐXàðEð E˜cð E°#ð EÈXÐVYÌ]ð Eð Eð Eð Eð Eñ ÔðEð Að Að Að ð �sð  ð  ð  ñ „Xð ð ð �cð  ð  ð  ñ „Xð ð ð˜ð ð ð ñ „Xðð ð˜% Ô0ð ð ð ñ „Xðð ð˜#ð ð ð ñ „Xðð $ð ð ð ð ð ð ð ð r   r
   N)r0   Útypingr   r   Úqiskit.pulse.channelsr   Úqiskit.pulse.exceptionsr   Ú%qiskit.pulse.instructions.instructionr   Úqiskit.utils.deprecate_pulser   r
   r)   r   r   ú<module>r:      s¥   ððð ð #Ð "Ð "Ð "Ð "Ð "Ð "Ð "à 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø .Ð .Ð .Ð .Ð .Ð .Ø =Ð =Ð =Ð =Ð =Ð =Ø =Ð =Ð =Ð =Ð =Ð =ð:ð :ð :ð :ð :ˆ{ñ :ô :ð :ð :ð :r   