From 9a97f101e885c0836ee1040847d0610d21f674b2 Mon Sep 17 00:00:00 2001 From: merav-aharoni Date: Thu, 21 Sep 2023 15:17:28 +0000 Subject: [PATCH 1/3] Added the Session.from_id method --- qiskit_ibm_runtime/session.py | 13 +++++++++++++ test/unit/test_session.py | 8 ++++++++ 2 files changed, 21 insertions(+) diff --git a/qiskit_ibm_runtime/session.py b/qiskit_ibm_runtime/session.py index ac54809ed1..19edf2b731 100644 --- a/qiskit_ibm_runtime/session.py +++ b/qiskit_ibm_runtime/session.py @@ -230,6 +230,19 @@ def service(self) -> QiskitRuntimeService: """ return self._service + @classmethod + def from_id( + cls, + session_id: str, + service: Optional[QiskitRuntimeService] = None, + backend: Optional[Union[str, IBMBackend]] = None, + max_time: Optional[Union[int, str]] = None, + ) -> "Session": + """Construct a Session object with a given session_id""" + session = cls(service, backend, max_time) + session._session_id = session_id + return session + def __enter__(self) -> "Session": set_cm_session(self) return self diff --git a/test/unit/test_session.py b/test/unit/test_session.py index 446caacc47..17af86aa6e 100644 --- a/test/unit/test_session.py +++ b/test/unit/test_session.py @@ -163,3 +163,11 @@ def test_global_service(self): service=FakeRuntimeService(channel="ibm_quantum", token="uvw"), backend="ibm_gotham" ) as session: self.assertEqual(session._service._account.token, "uvw") + + def test_session_from_id(self): + """Create session with given session_id""" + service = MagicMock() + session_id = "123" + session = Session.from_id(session_id=session_id, service=service) + session.run(program_id="foo", inputs={}) + self.assertEqual(session.session_id, session_id) From b05a32f7560729da1809caf3751251a9a4403bf2 Mon Sep 17 00:00:00 2001 From: merav-aharoni Date: Thu, 21 Sep 2023 16:20:57 +0000 Subject: [PATCH 2/3] release notes --- releasenotes/notes/from_id-23fc85f3fbf01e0b.yaml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 releasenotes/notes/from_id-23fc85f3fbf01e0b.yaml diff --git a/releasenotes/notes/from_id-23fc85f3fbf01e0b.yaml b/releasenotes/notes/from_id-23fc85f3fbf01e0b.yaml new file mode 100644 index 0000000000..7e61ea5a51 --- /dev/null +++ b/releasenotes/notes/from_id-23fc85f3fbf01e0b.yaml @@ -0,0 +1,6 @@ +--- +features: + - | + Added new method ``Session.from_id`` which creates a new session with a given id. + + From 94fdfaaeafbdab5ea45d0d9bf92d8275e24bab0b Mon Sep 17 00:00:00 2001 From: merav-aharoni Date: Tue, 26 Sep 2023 09:29:14 +0000 Subject: [PATCH 3/3] Added integration test --- test/integration/test_session.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/test/integration/test_session.py b/test/integration/test_session.py index cc3277bdae..87cff66250 100644 --- a/test/integration/test_session.py +++ b/test/integration/test_session.py @@ -84,3 +84,18 @@ def test_using_correct_instance(self, service): job = sampler.run(ReferenceCircuits.bell(), shots=400) self.assertEqual(instance, backend._instance) self.assertEqual(instance, job.backend()._instance) + + @run_integration_test + def test_session_from_id(self, service): + """Test creating a session from a given id""" + instance = self.dependencies.instance + backend = service.backend("ibmq_qasm_simulator", instance=instance) + with Session(service, backend=backend) as session: + sampler = Sampler(session=session) + job = sampler.run(ReferenceCircuits.bell(), shots=400) + session_id = job.session_id + session.close() + new_session = Session.from_id(backend=backend, session_id=session_id) + sampler = Sampler(session=new_session) + job = sampler.run(ReferenceCircuits.bell(), shots=400) + self.assertEqual(session_id, job.session_id)