Source code for quantify_scheduler.backends.qblox.operation_handling.base
# Repository: https://gitlab.com/quantify-os/quantify-scheduler
# Licensed according to the LICENCE file on the main branch
"""Defines interfaces for operation handling strategies."""
from __future__ import annotations
from abc import ABC, abstractmethod
from typing import TYPE_CHECKING
if TYPE_CHECKING:
    from quantify_scheduler.backends.qblox.qasm_program import QASMProgram
    from quantify_scheduler.backends.types import qblox as types
[docs]
class IOperationStrategy(ABC):
    """Defines the interface operation strategies must adhere to."""
    @property
    @abstractmethod
[docs]
    def operation_info(self) -> types.OpInfo:
        """Returns the pulse/acquisition information extracted from the schedule.""" 
    @abstractmethod
[docs]
    def generate_data(self, wf_dict: dict[str, object]) -> None:
        """
        Generates the waveform data and adds them to the wf_dict (if not already
        present). This is either the awg data, or the acquisition weights.
        Parameters
        ----------
        wf_dict
            The dictionary to add the waveform to. N.B. the dictionary is modified in
            function.
        """ 
    @abstractmethod
[docs]
    def insert_qasm(self, qasm_program: QASMProgram) -> None:
        """
        Add the assembly instructions for the Q1 sequence processor that corresponds to
        this pulse/acquisition.
        Parameters
        ----------
        qasm_program
            The QASMProgram to add the assembly instructions to.
        """