rigetti / pyquil

A Python library for quantum programming using Quil.
http://docs.rigetti.com
Apache License 2.0
1.4k stars 342 forks source link

_convert_to_py_instruction is non-exhaustive #1740

Closed erichulburd closed 7 months ago

erichulburd commented 7 months ago

Pre-Report Checklist

Issue Description

_convert_to_py_instruction does not support conversion of instructions such as quil_rs.Load and quil_rs.Store: https://github.com/rigetti/pyquil/blob/d36cd0c96ccd2c78200986f009e33e25586c49e0/pyquil/quilbase.py#L203

How to Reproduce

Code Snippet

import quil.instructions as quil_rs
from pyquil.quilbase import _convert_to_py_instruction
destination = quil_rs.MemoryReference("destination", 0)
src = "source"
offset = quil_rs.MemoryReference("offset", 0)
_convert_to_py_instruction(quil_rs.Load(destination, src, offset))

Error Output

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "...", line 281, in _convert_to_py_instruction
    raise ValueError(f"{type(instr)} is not a valid Instruction type")
ValueError: <class 'builtins.Load'> is not a valid Instruction type

Environment Context

Operating System:

% uname -a
Darwin ... 23.2.0 Darwin Kernel Version 23.2.0: Wed Nov 15 21:53:18 PST 2023; root:xnu-10002.61.3~2/RELEASE_ARM64_T6000 arm64

Python Version (python -V):

% python -V
Python 3.10.11

pyQuil version:

% poetry show pyquil
 name         : pyquil
 version      : 4.6.1
 description  : A Python library for creating Quantum Instruction Language (Quil) programs.