def _run_and_measure_payload(self, quil_program, qubits, trials): if not quil_program: raise ValueError( "You have attempted to run an empty program." " Please provide gates or measure instructions to your program." ) if not isinstance(quil_program, Program): raise TypeError("quil_program must be a Quil program object") qubits = validate_qubit_list(qubits) if not isinstance(trials, integer_types): raise TypeError("trials must be an integer") if self.noise_model is not None: compiled_program = self.compiler.quil_to_native_quil(quil_program) quil_program = apply_noise_model(compiled_program, self.noise_model) payload = { "type": TYPE_MULTISHOT_MEASURE, "qubits": list(qubits), "trials": trials, "compiled-quil": quil_program.out() } self._maybe_add_noise_to_payload(payload) self._add_rng_seed_to_payload(payload) return payload
def test_validate_qubit_list(): with pytest.raises(TypeError): validate_qubit_list([-1, 1]) with pytest.raises(TypeError): validate_qubit_list(["a", 0], 1)