From 29fb3921f05a47a0fe63dfe76b6c421951ee1ba3 Mon Sep 17 00:00:00 2001 From: Mark Skilbeck Date: Tue, 30 Jan 2024 17:17:00 -0700 Subject: [PATCH] feat: support ExecutionOptions on Execution --- crates/lib/src/executable.rs | 16 ++++++++++++++-- crates/lib/src/qpu/execution.rs | 3 +++ crates/python/src/executable.rs | 4 ++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/crates/lib/src/executable.rs b/crates/lib/src/executable.rs index 357b54820..12dff3452 100644 --- a/crates/lib/src/executable.rs +++ b/crates/lib/src/executable.rs @@ -453,12 +453,18 @@ impl<'execution> Executable<'_, 'execution> { quantum_processor_id: S, endpoint_id: S, translation_options: Option, + execution_options: &ExecutionOptions, ) -> ExecutionResult where S: Into>, { let job_handle = self - .submit_to_qpu_with_endpoint(quantum_processor_id, endpoint_id, translation_options) + .submit_to_qpu_with_endpoint( + quantum_processor_id, + endpoint_id, + translation_options, + execution_options, + ) .await?; self.retrieve_results(job_handle).await } @@ -575,6 +581,7 @@ impl<'execution> Executable<'_, 'execution> { quantum_processor_id: S, endpoint_id: S, translation_options: Option, + execution_options: &ExecutionOptions, ) -> Result, Error> where S: Into>, @@ -582,7 +589,12 @@ impl<'execution> Executable<'_, 'execution> { let job_handle = self .qpu_for_id(quantum_processor_id) .await? - .submit_to_endpoint_id(&self.params, endpoint_id.into(), translation_options) + .submit_to_endpoint_id( + &self.params, + endpoint_id.into(), + translation_options, + execution_options, + ) .await?; Ok(job_handle) } diff --git a/crates/lib/src/qpu/execution.rs b/crates/lib/src/qpu/execution.rs index 406002f53..42d52c09b 100644 --- a/crates/lib/src/qpu/execution.rs +++ b/crates/lib/src/qpu/execution.rs @@ -204,6 +204,7 @@ impl<'a> Execution<'a> { params: &Parameters, endpoint_id: S, translation_options: Option, + execution_options: &ExecutionOptions, ) -> Result, Error> where S: Into>, @@ -216,6 +217,8 @@ impl<'a> Execution<'a> { .connection_strategy(ConnectionStrategy::EndpointId( endpoint_id.into().to_string(), )) + .api_options(execution_options.api_options().cloned()) + .timeout(execution_options.timeout()) .build() .expect("valid execution options"), ) diff --git a/crates/python/src/executable.rs b/crates/python/src/executable.rs index b65cf64fa..8defb92b2 100644 --- a/crates/python/src/executable.rs +++ b/crates/python/src/executable.rs @@ -166,6 +166,7 @@ impl PyExecutable { quantum_processor_id, endpoint_id, translation_options, + execution_options.unwrap_or_default().as_inner(), ) ), None => py_sync!( @@ -200,6 +201,7 @@ impl PyExecutable { quantum_processor_id, endpoint_id, translation_options, + execution_options.unwrap_or_default().as_inner(), ) ), None => py_async!( @@ -234,6 +236,7 @@ impl PyExecutable { quantum_processor_id, endpoint_id, translation_options, + execution_options.unwrap_or_default().as_inner() ) ), None => py_sync!( @@ -269,6 +272,7 @@ impl PyExecutable { quantum_processor_id, endpoint_id, translation_options, + execution_options.unwrap_or_default().as_inner() ) ) }