Skip to content

Commit 41a83f3

Browse files
committed
feat: updated R session api
1 parent 1fe8f3d commit 41a83f3

File tree

3 files changed

+120
-930
lines changed

3 files changed

+120
-930
lines changed

datashield_opal/impl.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ def start(self, asynchronous: bool = True) -> None:
5050
raise OpalDSError(ValueError("Failed to start R session: no session id returned"))
5151
self.id = session["id"]
5252

53+
def is_started(self) -> bool:
54+
return self.id is not None
55+
5356
def is_ready(self) -> bool:
5457
if self.id is None:
5558
raise OpalDSError(ValueError("R session not started"))
@@ -77,7 +80,16 @@ def is_failed(self) -> bool:
7780
session = response.from_json()
7881
return session.get("state", "").lower() == "failed"
7982

80-
def get_state_message(self) -> str:
83+
def is_terminated(self) -> bool:
84+
if self.id is None:
85+
raise OpalDSError(ValueError("R session not started"))
86+
response = self._get(UriBuilder(["datashield", "session", self.id]).build()).send()
87+
if response.code != 200:
88+
raise OpalDSError(ValueError(f"Failed to check R session status: {response.code}"))
89+
session = response.from_json()
90+
return session.get("state", "").lower() == "terminated"
91+
92+
def get_last_message(self) -> str:
8193
if self.id is None:
8294
raise OpalDSError(ValueError("R session not started"))
8395
response = self._get(UriBuilder(["datashield", "session", self.id]).build()).send()

0 commit comments

Comments
 (0)