Skip to content

Commit a4fc7f4

Browse files
committed
update to use latest jupyter_events
1 parent 2f23905 commit a4fc7f4

File tree

5 files changed

+17
-22
lines changed

5 files changed

+17
-22
lines changed

jupyter_server/base/handlers.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import prometheus_client
2121
from jinja2 import TemplateNotFound
2222
from jupyter_core.paths import is_hidden
23+
from jupyter_events import EventLogger
2324
from tornado import web
2425
from tornado.log import app_log
2526
from traitlets.config import Application
@@ -335,7 +336,7 @@ def config_manager(self):
335336
return self.settings["config_manager"]
336337

337338
@property
338-
def event_logger(self):
339+
def event_logger(self) -> EventLogger:
339340
return self.settings["event_logger"]
340341

341342
# ---------------------------------------------------------------

jupyter_server/serverapp.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1951,6 +1951,11 @@ def init_logging(self):
19511951
def init_event_logger(self):
19521952
"""Initialize the Event Bus."""
19531953
self.event_logger = EventLogger(parent=self)
1954+
# event_schema_paths = [
1955+
# ""
1956+
# ]
1957+
# for schema_path in event_schema_paths:
1958+
# self.event_logger.register_event_schema(schema_path)
19541959

19551960
def init_webapp(self):
19561961
"""initialize tornado webapp"""

jupyter_server/services/events/handlers.py

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@
22
33
.. versionadded:: 2.0
44
"""
5-
import logging
5+
import json
66
from datetime import datetime
77
from typing import Any, Dict, Optional
88

9+
from jupyter_events import EventLogger
910
from tornado import web, websocket
1011

1112
from jupyter_server.auth import authorized
@@ -16,18 +17,6 @@
1617
AUTH_RESOURCE = "events"
1718

1819

19-
class WebSocketLoggingHandler(logging.Handler):
20-
"""Python logging handler that routes records to a Tornado websocket."""
21-
22-
def __init__(self, websocket, *args, **kwargs):
23-
super().__init__(*args, **kwargs)
24-
self.websocket = websocket
25-
26-
def emit(self, record):
27-
"""Emit the message across the websocket"""
28-
self.websocket.write_message(record.msg)
29-
30-
3120
class SubscribeWebsocket(
3221
JupyterHandler,
3322
websocket.WebSocketHandler,
@@ -56,16 +45,18 @@ async def get(self, *args, **kwargs):
5645
res = super().get(*args, **kwargs)
5746
await res
5847

48+
async def event_listener(self, logger: EventLogger, schema_id: str, data: dict) -> None:
49+
capsule = dict(schema_id=schema_id, **data)
50+
self.write_message(json.dumps(capsule))
51+
5952
def open(self):
6053
"""Routes events that are emitted by Jupyter Server's
6154
EventBus to a WebSocket client in the browser.
6255
"""
63-
self.logging_handler = WebSocketLoggingHandler(self)
64-
# To do: add an eventlog.add_handler method to jupyter_events.
65-
self.event_logger.register_handler(self.logging_handler)
56+
self.event_logger.add_listener(listener=self.event_listener)
6657

6758
def on_close(self):
68-
self.event_logger.remove_handler(self.logging_handler)
59+
self.event_logger.remove_listener(listener=self.event_listener)
6960

7061

7162
def validate_model(data: Dict[str, Any]) -> None:
@@ -110,7 +101,6 @@ async def post(self):
110101
validate_model(payload)
111102
self.event_logger.emit(
112103
schema_id=payload.get("schema_id"),
113-
version=payload.get("version"),
114104
data=payload.get("data"),
115105
timestamp_override=get_timestamp(payload),
116106
)

tests/services/events/mockextension/mock_extension.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ def get(self):
99
# Emit an event.
1010
self.event_logger.emit(
1111
schema_id="event.mockextension.jupyter.org/message",
12-
version=1,
1312
data={"event_message": "Hello world, from mock extension!"},
1413
)
1514

tests/services/events/test_api.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,14 @@ def event_logger(event_logger_sink):
2727
return event_logger
2828

2929

30-
async def test_subscribe_websocket(jp_ws_fetch, event_logger):
30+
async def test_subscribe_websocket(event_logger, jp_ws_fetch):
3131
ws = await jp_ws_fetch("/api/events/subscribe")
3232

3333
event_logger.emit(
3434
schema_id="event.mock.jupyter.org/message",
35-
version=1,
3635
data={"event_message": "Hello, world!"},
3736
)
37+
# await event_logger.gather_listeners()
3838
message = await ws.read_message()
3939
event_data = json.loads(message)
4040
ws.close()

0 commit comments

Comments
 (0)