Skip to content

Commit 7eb6ad2

Browse files
committed
feat: updated R session api
1 parent 1fe8f3d commit 7eb6ad2

3 files changed

Lines changed: 137 additions & 947 deletions

File tree

datashield_opal/impl.py

Lines changed: 21 additions & 4 deletions
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,16 +80,30 @@ 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:
8184
if self.id is None:
8285
raise OpalDSError(ValueError("R session not started"))
8386
response = self._get(UriBuilder(["datashield", "session", self.id]).build()).send()
8487
if response.code != 200:
8588
raise OpalDSError(ValueError(f"Failed to check R session status: {response.code}"))
8689
session = response.from_json()
87-
events = session.get("events", [])
88-
if events:
89-
return events[-1]
90+
return session.get("state", "").lower() == "terminated"
91+
92+
def get_events(self) -> list:
93+
if self.id is None:
94+
raise OpalDSError(ValueError("R session not started"))
95+
response = self._get(UriBuilder(["datashield", "session", self.id]).build()).send()
96+
if response.code != 200:
97+
raise OpalDSError(ValueError(f"Failed to retrieve R session events: {response.code}"))
98+
session = response.from_json()
99+
events = [evt.split(";") for evt in session.get("events", [])]
100+
return events
101+
102+
def get_last_message(self) -> str:
103+
events = self.get_events()
104+
if events and len(events) > 0:
105+
last_event = events[-1]
106+
return last_event[2] if len(last_event) > 2 else "No message"
90107
return "No recent events"
91108

92109
def close(self) -> None:

0 commit comments

Comments
 (0)