Source code for qblox_scheduler

# Licensed according to the LICENSE file on the main branch
#
# Copyright 2020-2025, Quantify Consortium
# Copyright 2025, Qblox B.V.
"""
.. list-table::
    :header-rows: 1
    :widths: auto

    * - Import alias
      - Target
    * - :class:`.QuantumDevice`
      - :class:`!qblox_scheduler.QuantumDevice`
    * - :class:`.Resource`
      - :class:`!qblox_scheduler.Resource`
    * - :class:`.ClockResource`
      - :class:`!qblox_scheduler.ClockResource`
    * - :class:`.BasebandClockResource`
      - :class:`!qblox_scheduler.BasebandClockResource`
    * - :class:`.DigitalClockResource`
      - :class:`!qblox_scheduler.DigitalClockResource`
    * - :class:`.Operation`
      - :class:`!qblox_scheduler.Operation`
    * - :obj:`.structure`
      - :obj:`!qblox_scheduler.structure`
    * - :class:`.ScheduleGettable`
      - :class:`!qblox_scheduler.ScheduleGettable`
    * - :class:`.BasicElectronicNVElement`
      - :class:`!qblox_scheduler.BasicElectronicNVElement`
    * - :class:`.BasicSpinElement`
      - :class:`!qblox_scheduler.BasicSpinElement`
    * - :class:`.BasicTransmonElement`
      - :class:`!qblox_scheduler.BasicTransmonElement`
    * - :class:`.CompositeSquareEdge`
      - :class:`!qblox_scheduler.CompositeSquareEdge`
    * - :class:`.InstrumentCoordinator`
      - :class:`!qblox_scheduler.InstrumentCoordinator`
    * - :class:`.GenericInstrumentCoordinatorComponent`
      - :class:`!qblox_scheduler.GenericInstrumentCoordinatorComponent`
    * - :class:`.SerialCompiler`
      - :class:`!qblox_scheduler.SerialCompiler`
    * - :class:`.MockLocalOscillator`
      - :class:`!qblox_scheduler.MockLocalOscillator`
    * - :class:`.SpinEdge`
      - :class:`!qblox_scheduler.SpinEdge`
"""

import warnings

from . import structure
from ._version import __version__
from .analysis.base_analysis import Basic2DAnalysis, BasicAnalysis
from .analysis.cosine_analysis import CosineAnalysis
from .analysis.data_handling import AnalysisDataContainer, OutputDirectoryManager
from .analysis.helpers import acq_coords_to_dims
from .analysis.interpolation_analysis import InterpolationAnalysis2D
from .analysis.optimization_analysis import OptimizationAnalysis
from .analysis.single_qubit_timedomain import (
    AllXYAnalysis,
    EchoAnalysis,
    RabiAnalysis,
    RamseyAnalysis,
    T1Analysis,
)
from .analysis.spectroscopy_analysis import ResonatorSpectroscopyAnalysis
from .backends import SerialCompiler
from .backends.types.qblox.calibration import (
    ComplexInputGain,
    DigitizationThresholds,
    InputAttenuation,
    OutputAttenuation,
    QbloxHardwareDistortionCorrection,
    QbloxMixerCorrections,
    RealInputGain,
)
from .backends.types.qblox.filters import QbloxRealTimeFilter
from .device_under_test import (
    BasicElectronicNVElement,
    BasicSpinElement,
    BasicTransmonElement,
    ChargeSensor,
    CompositeSquareEdge,
    QuantumDevice,
    SpinEdge,
)
from .experiments.loops import Loop
from .experiments.parameters import (
    Callback,
    SetHardwareDescriptionField,
    SetHardwareOption,
    SetParameter,
)
from .gettables import ScheduleGettable
from .helpers.mock_instruments import MockLocalOscillator
from .instrument_coordinator import InstrumentCoordinator
from .instrument_coordinator.components.generic import (
    GenericInstrumentCoordinatorComponent,
)
from .operations.acquisition_library import (
    Acquisition,
    DualThresholdedTriggerCount,
    NumericalSeparatedWeightedIntegration,
    NumericalWeightedIntegration,
    SSBIntegrationComplex,
    ThresholdedAcquisition,
    ThresholdedTriggerCount,
    Timetag,
    TimetagTrace,
    Trace,
    TriggerCount,
    WeightedIntegratedSeparated,
    WeightedThresholdedAcquisition,
)
from .operations.conditional_reset import ConditionalReset
from .operations.control_flow_library import (
    ConditionalOperation,
    ControlFlowOperation,
    ControlFlowSpec,
    LoopOperation,
    LoopStrategy,
)
from .operations.expressions import DType
from .operations.gate_library import (
    CNOT,
    CZ,
    X90,
    Y90,
    Z90,
    H,
    Measure,
    Reset,
    Rxy,
    Rz,
    S,
    SDagger,
    T,
    TDagger,
    X,
    Y,
    Z,
)
from .operations.hardware_operations import (
    InlineQ1ASM,
    long_chirp_pulse,
    long_ramp_pulse,
    long_square_pulse,
    staircase_pulse,
)
from .operations.hardware_operations.pulse_library import LatchReset, SimpleNumericalPulse
from .operations.loop_domains import arange, linspace
from .operations.nv_native_library import ChargeReset, CRCount
from .operations.operation import Operation
from .operations.pulse_compensation_library import (
    PulseCompensation,
)
from .operations.pulse_library import (
    ChirpPulse,
    DRAGPulse,
    GaussPulse,
    IdlePulse,
    MarkerPulse,
    NumericalPulse,
    RampPulse,
    ReferenceMagnitude,
    ResetClockPhase,
    SetClockFrequency,
    ShiftClockPhase,
    SkewedHermitePulse,
    SoftSquarePulse,
    SquarePulse,
    StaircasePulse,
    SuddenNetZeroPulse,
    Timestamp,
    VoltageOffset,
    WindowOperation,
)
from .qblox.hardware_agent import HardwareAgent
from .resources import (
    BasebandClockResource,
    ClockResource,
    DigitalClockResource,
    Resource,
)
from .schedule import Schedule
from .schedules.schedule import CompiledSchedule, Schedulable
from .schedules.spectroscopy_schedules import (
    heterodyne_spec_sched,
    heterodyne_spec_sched_nco,
    nv_dark_esr_sched,
    two_tone_spec_sched,
    two_tone_spec_sched_nco,
)
from .schedules.timedomain_schedules import (
    allxy_sched,
    echo_sched,
    rabi_pulse_sched,
    rabi_sched,
    ramsey_sched,
    readout_calibration_sched,
    t1_sched,
)
from .schedules.trace_schedules import (
    trace_schedule,
    trace_schedule_circuit_layer,
    two_tone_trace_schedule,
)

warnings.filterwarnings(
    "ignore",
    category=RuntimeWarning,
    module="quantify_core.utilities.general",
    message=".*qcodes\\.utils\\.helpers.*",
)

__all__ = [  # noqa: RUF022
    # from .
    "structure",
    # from ._version
    "__version__",
    # from .analysis.base_analysis
    "Basic2DAnalysis",
    "BasicAnalysis",
    # from .analysis.cosine_analysis
    "CosineAnalysis",
    # from .analysis.data_handling
    "AnalysisDataContainer",
    "OutputDirectoryManager",
    # from .analysis.helpers
    "acq_coords_to_dims",
    # from .analysis.interpolation_analysis
    "InterpolationAnalysis2D",
    # from .analysis.optimization_analysis
    "OptimizationAnalysis",
    # from .analysis.single_qubit_timedomain
    "AllXYAnalysis",
    "EchoAnalysis",
    "RabiAnalysis",
    "RamseyAnalysis",
    "T1Analysis",
    # from .analysis.spectroscopy_analysis
    "ResonatorSpectroscopyAnalysis",
    # from .backends
    "SerialCompiler",
    # from .backends.types.qblox.calibration
    "ComplexInputGain",
    "DigitizationThresholds",
    "InputAttenuation",
    "OutputAttenuation",
    "QbloxHardwareDistortionCorrection",
    "QbloxMixerCorrections",
    "RealInputGain",
    # from .backends.types.qblox.filters
    "QbloxRealTimeFilter",
    # from .device_under_test
    "BasicElectronicNVElement",
    "BasicSpinElement",
    "BasicTransmonElement",
    "ChargeSensor",
    "CompositeSquareEdge",
    "QuantumDevice",
    "SpinEdge",
    # from .experiments.loops
    "Loop",
    # from .experiments.parameters
    "Callback",
    "SetHardwareDescriptionField",
    "SetHardwareOption",
    "SetParameter",
    # from .gettables
    "ScheduleGettable",
    # from .helpers.mock_instruments
    "MockLocalOscillator",
    # from .instrument_coordinator
    "InstrumentCoordinator",
    # from .instrument_coordinator.components.generic
    "GenericInstrumentCoordinatorComponent",
    # from .operations.acquisition_library
    "Acquisition",
    "DualThresholdedTriggerCount",
    "NumericalSeparatedWeightedIntegration",
    "NumericalWeightedIntegration",
    "SSBIntegrationComplex",
    "ThresholdedAcquisition",
    "ThresholdedTriggerCount",
    "Timetag",
    "TimetagTrace",
    "Trace",
    "TriggerCount",
    "WeightedIntegratedSeparated",
    "WeightedThresholdedAcquisition",
    # from .operations.conditional_reset
    "ConditionalReset",
    # from .operations.control_flow_library
    "ConditionalOperation",
    "ControlFlowOperation",
    "ControlFlowSpec",
    "LoopOperation",
    "LoopStrategy",
    # from .operations.expressions
    "DType",
    # from .operations.gate_library
    "CNOT",
    "CZ",
    "X90",
    "Y90",
    "Z90",
    "H",
    "Measure",
    "Reset",
    "Rxy",
    "Rz",
    "S",
    "SDagger",
    "T",
    "TDagger",
    "X",
    "Y",
    "Z",
    # from .operations.hardware_operations
    "InlineQ1ASM",
    "long_chirp_pulse",
    "long_ramp_pulse",
    "long_square_pulse",
    "staircase_pulse",
    # from .operations.hardware_operations.pulse_library
    "LatchReset",
    "SimpleNumericalPulse",
    # from .operations.loop_domains
    "arange",
    "linspace",
    # from .operations.nv_native_library
    "ChargeReset",
    "CRCount",
    # from .operations.operation
    "Operation",
    # from .operations.pulse_compensation_library impor(
    "PulseCompensation",
    # from .operations.pulse_library
    "ChirpPulse",
    "DRAGPulse",
    "GaussPulse",
    "IdlePulse",
    "MarkerPulse",
    "NumericalPulse",
    "RampPulse",
    "ReferenceMagnitude",
    "ResetClockPhase",
    "SetClockFrequency",
    "ShiftClockPhase",
    "SkewedHermitePulse",
    "SoftSquarePulse",
    "SquarePulse",
    "StaircasePulse",
    "SuddenNetZeroPulse",
    "Timestamp",
    "VoltageOffset",
    "WindowOperation",
    # from .qblox.hardware_agent
    "HardwareAgent",
    # from .resources
    "BasebandClockResource",
    "ClockResource",
    "DigitalClockResource",
    "Resource",
    # from .schedule
    "Schedule",
    # from .schedules.schedule
    "CompiledSchedule",
    "Schedulable",
    # from .schedules.spectroscopy_schedules
    "heterodyne_spec_sched",
    "heterodyne_spec_sched_nco",
    "nv_dark_esr_sched",
    "two_tone_spec_sched",
    "two_tone_spec_sched_nco",
    # from .schedules.timedomain_schedules
    "allxy_sched",
    "echo_sched",
    "rabi_pulse_sched",
    "rabi_sched",
    "ramsey_sched",
    "readout_calibration_sched",
    "t1_sched",
    # from .schedules.trace_schedules
    "trace_schedule",
    "trace_schedule_circuit_layer",
    "two_tone_trace_schedule",
]