quil-rs 0.37.2

Rust tooling for Quil (Quantum Instruction Language)
Documentation
# This file is automatically generated by pyo3_stub_gen
# ruff: noqa: E501, F401, F403, F405

import builtins
import collections.abc
import numpy
import numpy.typing
from quil import _quil
from quil._quil import expression
from quil._quil import instructions
import typing
from . import sampling
import sys
if sys.version_info >= (3, 13):
    _Real = typing.TypeVar("_Real")
    _Complex = typing.TypeVar("_Complex", default = _Real)
    __T = typing.TypeVar("__T")
    _OtherReal = typing.TypeVar("_OtherReal")
    _OtherComplex = typing.TypeVar("_OtherComplex", default = _OtherReal)
else:
    _Real = typing.TypeVar("_Real")
    _Complex = typing.TypeVar("_Complex")
    __T = typing.TypeVar("__T")
    _OtherReal = typing.TypeVar("_OtherReal")
    _OtherComplex = typing.TypeVar("_OtherComplex")

__all__ = [
    "BoxcarKernel",
    "BuiltinWaveform",
    "CommonBuiltinParameters",
    "DragGaussian",
    "ErfSquare",
    "ExplicitCommonBuiltinParameters",
    "Flat",
    "Gaussian",
    "HermiteGaussian",
    "RaisedCosine",
    "Waveform",
    "WaveformError",
    "WaveformInvocationError",
    "WaveformParameterError",
    "apply_phase_and_detuning",
    "sampling",
]

class BoxcarKernel:
    r"""
    A boxcar waveform.
    """
    def __eq__(self, other: builtins.object) -> builtins.bool: ...
    def __new__(cls) -> BoxcarKernel: ...
    def __repr__(self) -> builtins.str: ...
    def iq_values_at_sample_rate(self, common: CommonBuiltinParameters[builtins.float, __T], sample_rate: builtins.float) -> sampling.IqSamples: ...

class BuiltinWaveform(typing.Generic[_Real, _Complex]):
    def __eq__(self, other: builtins.object) -> builtins.bool: ...
    def __new__(cls, waveform: Flat[_Real, _Complex] | Gaussian[_Real, _Complex] | DragGaussian[_Real, _Complex] | ErfSquare[_Real, _Complex] | HermiteGaussian[_Real, _Complex] | RaisedCosine[_Real, _Complex] | BoxcarKernel) -> BuiltinWaveform[_Real, _Complex]: ...
    def __repr__(self) -> builtins.str: ...
    def as_inner(self) -> Flat[_Real, _Complex] | Gaussian[_Real, _Complex] | DragGaussian[_Real, _Complex] | ErfSquare[_Real, _Complex] | HermiteGaussian[_Real, _Complex] | RaisedCosine[_Real, _Complex] | BoxcarKernel: ...
    def evaluate(self, real: collections.abc.Callable[[_Real], _OtherReal], complex: collections.abc.Callable[[_Complex], _OtherComplex]) -> BuiltinWaveform[_OtherReal, _OtherComplex]: ...
    def iq_values_at_sample_rate(self: BuiltinWaveform[builtins.float, builtins.complex], common: CommonBuiltinParameters[builtins.float, __T], sample_rate: builtins.float) -> sampling.IqSamples: ...

class CommonBuiltinParameters(typing.Generic[_Real, _Complex]):
    @property
    def detuning(self) -> typing.Optional[_Real]: ...
    @detuning.setter
    def detuning(self, value: typing.Optional[_Real]) -> None: ...
    @property
    def duration(self) -> builtins.float: ...
    @duration.setter
    def duration(self, value: builtins.float) -> None: ...
    @property
    def phase(self) -> typing.Optional[_Real]: ...
    @phase.setter
    def phase(self, value: typing.Optional[_Real]) -> None: ...
    @property
    def scale(self) -> typing.Optional[_Real]: ...
    @scale.setter
    def scale(self, value: typing.Optional[_Real]) -> None: ...
    def __eq__(self, other: builtins.object) -> builtins.bool: ...
    def __getnewargs_ex__(self) -> tuple: ...
    def __new__(cls, *, duration: builtins.float, scale: typing.Optional[_Real] = None, phase: typing.Optional[_Real] = None, detuning: typing.Optional[_Real] = None) -> CommonBuiltinParameters[_Real, _Complex]: ...
    def __repr__(self) -> builtins.str: ...
    def evaluate(self, real: collections.abc.Callable[[_Real], _OtherReal], complex: collections.abc.Callable[[_Complex], _OtherComplex]) -> CommonBuiltinParameters[_OtherReal, _OtherComplex]: ...
    def resolve_with_sample_rate(self: CommonBuiltinParameters[builtins.float, __T], sample_rate: builtins.float) -> ExplicitCommonBuiltinParameters: ...

class DragGaussian(typing.Generic[_Real, _Complex]):
    @property
    def alpha(self) -> _Real: ...
    @alpha.setter
    def alpha(self, value: _Real) -> None: ...
    @property
    def anh(self) -> _Real: ...
    @anh.setter
    def anh(self, value: _Real) -> None: ...
    @property
    def fwhm(self) -> _Real: ...
    @fwhm.setter
    def fwhm(self, value: _Real) -> None: ...
    @property
    def t0(self) -> _Real: ...
    @t0.setter
    def t0(self, value: _Real) -> None: ...
    def __eq__(self, other: builtins.object) -> builtins.bool: ...
    def __getnewargs_ex__(self) -> tuple: ...
    def __new__(cls, *, fwhm: _Real, t0: _Real, anh: _Real, alpha: _Real) -> DragGaussian[_Real, _Complex]: ...
    def __repr__(self) -> builtins.str: ...
    def evaluate(self, real: collections.abc.Callable[[_Real], _OtherReal], complex: collections.abc.Callable[[_Complex], _OtherComplex]) -> DragGaussian[_OtherReal, _OtherComplex]: ...
    def iq_values_at_sample_rate(self: DragGaussian[builtins.float, builtins.complex], common: CommonBuiltinParameters[builtins.float, __T], sample_rate: builtins.float) -> sampling.IqSamples: ...

class ErfSquare(typing.Generic[_Real, _Complex]):
    @property
    def pad_left(self) -> builtins.float: ...
    @pad_left.setter
    def pad_left(self, value: builtins.float) -> None: ...
    @property
    def pad_right(self) -> builtins.float: ...
    @pad_right.setter
    def pad_right(self, value: builtins.float) -> None: ...
    @property
    def risetime(self) -> _Real: ...
    @risetime.setter
    def risetime(self, value: _Real) -> None: ...
    def __eq__(self, other: builtins.object) -> builtins.bool: ...
    def __getnewargs_ex__(self) -> tuple: ...
    def __new__(cls, *, risetime: _Real, pad_left: builtins.float, pad_right: builtins.float) -> ErfSquare[_Real, _Complex]: ...
    def __repr__(self) -> builtins.str: ...
    def evaluate(self, real: collections.abc.Callable[[_Real], _OtherReal], complex: collections.abc.Callable[[_Complex], _OtherComplex]) -> ErfSquare[_OtherReal, _OtherComplex]: ...
    def iq_values_at_sample_rate(self: ErfSquare[builtins.float, builtins.complex], common: CommonBuiltinParameters[builtins.float, __T], sample_rate: builtins.float) -> sampling.IqSamples: ...

class ExplicitCommonBuiltinParameters:
    r"""
    Like [`CommonBuiltinParameters<Concrete>`], but with the defaults resolved and the duration
    discretized.
    
    This does not take a [`WaveformData`] parameter because it only makes sense for [`Concrete`]
    waveforms.
    """
    @property
    def detuning(self) -> builtins.float:
        r"""
        Explicit detuning to bake into IQ values.
        """
    @detuning.setter
    def detuning(self, value: builtins.float) -> None:
        r"""
        Explicit detuning to bake into IQ values.
        """
    @property
    def phase(self) -> builtins.float:
        r"""
        Phase shift for the entire waveform.
        """
    @phase.setter
    def phase(self, value: builtins.float) -> None:
        r"""
        Phase shift for the entire waveform.
        """
    @property
    def sample_count(self) -> builtins.int:
        r"""
        Integral number of samples that should be taken of the pulse
        
        Corresponds to [`CommonBuiltinParameters::duration`].
        """
    @sample_count.setter
    def sample_count(self, value: builtins.int) -> None:
        r"""
        Integral number of samples that should be taken of the pulse
        
        Corresponds to [`CommonBuiltinParameters::duration`].
        """
    @property
    def scale(self) -> builtins.float:
        r"""
        Scale to apply to waveform envelope.
        """
    @scale.setter
    def scale(self, value: builtins.float) -> None:
        r"""
        Scale to apply to waveform envelope.
        """
    def __eq__(self, other: builtins.object, /) -> builtins.bool: ...
    def __getnewargs_ex__(self) -> tuple: ...
    def __new__(cls, *, sample_count: builtins.int, scale: builtins.float, phase: builtins.float, detuning: builtins.float) -> ExplicitCommonBuiltinParameters: ...
    def __repr__(self) -> builtins.str: ...

class Flat(typing.Generic[_Real, _Complex]):
    @property
    def iq(self) -> _Complex: ...
    @iq.setter
    def iq(self, value: _Complex) -> None: ...
    def __eq__(self, other: builtins.object) -> builtins.bool: ...
    def __getnewargs_ex__(self) -> tuple: ...
    def __new__(cls, *, iq: _Complex) -> Flat[_Real, _Complex]: ...
    def __repr__(self) -> builtins.str: ...
    def evaluate(self, real: collections.abc.Callable[[_Real], _OtherReal], complex: collections.abc.Callable[[_Complex], _OtherComplex]) -> Flat[_OtherReal, _OtherComplex]: ...
    def iq_values_at_sample_rate(self: Flat[builtins.float, builtins.complex], common: CommonBuiltinParameters[builtins.float, __T], sample_rate: builtins.float) -> sampling.IqSamples: ...

class Gaussian(typing.Generic[_Real, _Complex]):
    @property
    def fwhm(self) -> _Real: ...
    @fwhm.setter
    def fwhm(self, value: _Real) -> None: ...
    @property
    def t0(self) -> _Real: ...
    @t0.setter
    def t0(self, value: _Real) -> None: ...
    def __eq__(self, other: builtins.object) -> builtins.bool: ...
    def __getnewargs_ex__(self) -> tuple: ...
    def __new__(cls, *, fwhm: _Real, t0: _Real) -> Gaussian[_Real, _Complex]: ...
    def __repr__(self) -> builtins.str: ...
    def evaluate(self, real: collections.abc.Callable[[_Real], _OtherReal], complex: collections.abc.Callable[[_Complex], _OtherComplex]) -> Gaussian[_OtherReal, _OtherComplex]: ...
    def iq_values_at_sample_rate(self: Gaussian[builtins.float, builtins.complex], common: CommonBuiltinParameters[builtins.float, __T], sample_rate: builtins.float) -> sampling.IqSamples: ...

class HermiteGaussian(typing.Generic[_Real, _Complex]):
    @property
    def alpha(self) -> _Real: ...
    @alpha.setter
    def alpha(self, value: _Real) -> None: ...
    @property
    def anh(self) -> _Real: ...
    @anh.setter
    def anh(self, value: _Real) -> None: ...
    @property
    def fwhm(self) -> _Real: ...
    @fwhm.setter
    def fwhm(self, value: _Real) -> None: ...
    @property
    def second_order_hrm_coeff(self) -> _Real: ...
    @second_order_hrm_coeff.setter
    def second_order_hrm_coeff(self, value: _Real) -> None: ...
    @property
    def t0(self) -> _Real: ...
    @t0.setter
    def t0(self, value: _Real) -> None: ...
    def __eq__(self, other: builtins.object) -> builtins.bool: ...
    def __getnewargs_ex__(self) -> tuple: ...
    def __new__(cls, *, fwhm: _Real, t0: _Real, anh: _Real, alpha: _Real, second_order_hrm_coeff: _Real) -> HermiteGaussian[_Real, _Complex]: ...
    def __repr__(self) -> builtins.str: ...
    def evaluate(self, real: collections.abc.Callable[[_Real], _OtherReal], complex: collections.abc.Callable[[_Complex], _OtherComplex]) -> HermiteGaussian[_OtherReal, _OtherComplex]: ...
    def iq_values_at_sample_rate(self: HermiteGaussian[builtins.float, builtins.complex], common: CommonBuiltinParameters[builtins.float, __T], sample_rate: builtins.float) -> sampling.IqSamples: ...

class RaisedCosine(typing.Generic[_Real, _Complex]):
    @property
    def pad_left(self) -> builtins.float: ...
    @pad_left.setter
    def pad_left(self, value: builtins.float) -> None: ...
    @property
    def pad_right(self) -> builtins.float: ...
    @pad_right.setter
    def pad_right(self, value: builtins.float) -> None: ...
    @property
    def rolloff(self) -> _Real: ...
    @rolloff.setter
    def rolloff(self, value: _Real) -> None: ...
    def __eq__(self, other: builtins.object) -> builtins.bool: ...
    def __getnewargs_ex__(self) -> tuple: ...
    def __new__(cls, *, rolloff: _Real, pad_left: builtins.float, pad_right: builtins.float) -> RaisedCosine[_Real, _Complex]: ...
    def __repr__(self) -> builtins.str: ...
    def evaluate(self, real: collections.abc.Callable[[_Real], _OtherReal], complex: collections.abc.Callable[[_Complex], _OtherComplex]) -> RaisedCosine[_OtherReal, _OtherComplex]: ...
    def iq_values_at_sample_rate(self: RaisedCosine[builtins.float, builtins.complex], common: CommonBuiltinParameters[builtins.float, __T], sample_rate: builtins.float) -> sampling.IqSamples: ...

class Waveform(typing.Generic[_Real, _Complex]):
    def __eq__(self, other: builtins.object) -> builtins.bool: ...
    def __repr__(self) -> builtins.str: ...
    def as_builtin(self) -> typing.Optional[builtins.tuple[BuiltinWaveform[_Real, _Complex], CommonBuiltinParameters[_Real, _Complex]]]: ...
    def as_custom(self) -> typing.Optional[builtins.tuple[builtins.str, builtins.dict[builtins.str, _Complex]]]: ...
    @staticmethod
    def boxcar_kernel(*, duration: builtins.float, scale: typing.Optional[_Real] = None, phase: typing.Optional[_Real] = None, detuning: typing.Optional[_Real] = None) -> Waveform[_Real, _Complex]: ...
    @staticmethod
    def builtin(waveform: BuiltinWaveform[_Real, _Complex], common_parameters: CommonBuiltinParameters[_Real, _Complex]) -> Waveform[_Real, _Complex]: ...
    @staticmethod
    def custom(name: builtins.str, parameters: builtins.dict[builtins.str, _Complex]) -> Waveform: ...
    @staticmethod
    def drag_gaussian(*, duration: builtins.float, scale: typing.Optional[_Real] = None, phase: typing.Optional[_Real] = None, detuning: typing.Optional[_Real] = None, fwhm: _Real, t0: _Real, anh: _Real, alpha: _Real) -> Waveform[_Real, _Complex]: ...
    @staticmethod
    def erf_square(*, duration: builtins.float, scale: typing.Optional[_Real] = None, phase: typing.Optional[_Real] = None, detuning: typing.Optional[_Real] = None, risetime: _Real, pad_left: builtins.float, pad_right: builtins.float) -> Waveform[_Real, _Complex]: ...
    def evaluate(self, real: collections.abc.Callable[[_Real], _OtherReal], complex: collections.abc.Callable[[_Complex], _OtherComplex]) -> Waveform[_OtherReal, _OtherComplex]: ...
    @staticmethod
    def flat(*, duration: builtins.float, scale: typing.Optional[_Real] = None, phase: typing.Optional[_Real] = None, detuning: typing.Optional[_Real] = None, iq: _Complex) -> Waveform[_Real, _Complex]: ...
    @staticmethod
    def from_quil(invocation: instructions.WaveformInvocation) -> Waveform[expression.Expression, expression.Expression]: ...
    @staticmethod
    def gaussian(*, duration: builtins.float, scale: typing.Optional[_Real] = None, phase: typing.Optional[_Real] = None, detuning: typing.Optional[_Real] = None, fwhm: _Real, t0: _Real) -> Waveform[_Real, _Complex]: ...
    @staticmethod
    def hermite_gaussian(*, duration: builtins.float, scale: typing.Optional[_Real] = None, phase: typing.Optional[_Real] = None, detuning: typing.Optional[_Real] = None, fwhm: _Real, t0: _Real, anh: _Real, alpha: _Real, second_order_hrm_coeff: _Real) -> Waveform[_Real, _Complex]: ...
    @staticmethod
    def raised_cosine(*, duration: builtins.float, scale: typing.Optional[_Real] = None, phase: typing.Optional[_Real] = None, detuning: typing.Optional[_Real] = None, rolloff: _Real, pad_left: builtins.float, pad_right: builtins.float) -> Waveform[_Real, _Complex]: ...

class WaveformError(_quil.QuilError):
    r"""
    Base error type for errors related to waveform processing.
    """
    ...

class WaveformInvocationError(WaveformError):
    r"""
    Errors that may occur when parsing a waveform.
    """
    ...

class WaveformParameterError(WaveformError):
    r"""
    Errors that may occur when parsing waveform parameters.
    """
    ...

def apply_phase_and_detuning(iq_values: numpy.typing.NDArray[numpy.complex128], phase: builtins.float, detuning: builtins.float, sample_rate: builtins.float) -> None:
    r"""
    Modulate and phase shift waveform IQ data in place.
    """