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
| 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
| 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
| @abc.abstractmethod
def print_stim(self, printer: StimPrinter) -> None:
raise NotImplementedError()
|