Skip to content

Stim printer parser

stim_printer_parser

This file implements a printer that prints to the .stim file format. Full documentation can be found here: https://github.com/quantumlib/Stim/blob/main/doc/file_format_stim_circuit.md

StimPrinter dataclass

Bases: BasePrinter

Source code in xdsl/dialects/stim/stim_printer_parser.py
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
@dataclass(eq=False, repr=False)
class StimPrinter(BasePrinter):
    def print_attribute(self, attribute: Attribute) -> None:
        if isinstance(attribute, ArrayAttr):
            attribute = cast(ArrayAttr[Attribute], attribute)
            with self.in_parens():
                self.print_list(attribute, self.print_attribute)
            self.print_string(" ")
            return
        if isinstance(attribute, FloatData):
            self.print_string(f"{attribute.data}")
            return
        if isa(attribute, IntAttr):
            self.print_string(f"{attribute.data}")
            return
        raise ValueError(f"Cannot print in stim format: {attribute}")

    def print_op(self, op: Operation):
        if not isinstance(op, StimPrintable):
            raise ValueError(f"Cannot print in stim format: {op}")
        op.print_stim(self)

__init__(stream: IO[str] | None = None, *, indent_num_spaces: int = 2) -> None

print_attribute(attribute: Attribute) -> None

Source code in xdsl/dialects/stim/stim_printer_parser.py
18
19
20
21
22
23
24
25
26
27
28
29
30
31
def print_attribute(self, attribute: Attribute) -> None:
    if isinstance(attribute, ArrayAttr):
        attribute = cast(ArrayAttr[Attribute], attribute)
        with self.in_parens():
            self.print_list(attribute, self.print_attribute)
        self.print_string(" ")
        return
    if isinstance(attribute, FloatData):
        self.print_string(f"{attribute.data}")
        return
    if isa(attribute, IntAttr):
        self.print_string(f"{attribute.data}")
        return
    raise ValueError(f"Cannot print in stim format: {attribute}")

print_op(op: Operation)

Source code in xdsl/dialects/stim/stim_printer_parser.py
33
34
35
36
def print_op(self, op: Operation):
    if not isinstance(op, StimPrintable):
        raise ValueError(f"Cannot print in stim format: {op}")
    op.print_stim(self)

StimPrintable

Bases: ABC

Source code in xdsl/dialects/stim/stim_printer_parser.py
39
40
41
42
class StimPrintable(abc.ABC):
    @abc.abstractmethod
    def print_stim(self, printer: StimPrinter) -> None:
        raise NotImplementedError()

print_stim(printer: StimPrinter) -> None abstractmethod

Source code in xdsl/dialects/stim/stim_printer_parser.py
40
41
42
@abc.abstractmethod
def print_stim(self, printer: StimPrinter) -> None:
    raise NotImplementedError()