Skip to content

Commit 8aa29e1

Browse files
authored
Migrate YRoom classes to traitlets, fix server extension stopping (#122)
* make YRoomManager configurable * fixup * make YRoom logging configurable * fix bug where room files become empty after shutdown * make YRoomFileAPI logging configurable, make poll interval configurable * make YRoomEventsAPI logging configurable * fix yroom_file_api unit test * simplify constructor args in YRoomManager * fixup * simplify ctor args in YRoom, YRoomEventsAPI, YRoomFileAPI * fix file_api unit test * remove remaining references to event loop * make yroom_manager a trait * remove unused asyncio import
1 parent bb7ba74 commit 8aa29e1

File tree

7 files changed

+462
-264
lines changed

7 files changed

+462
-264
lines changed

jupyter_server_documents/app.py

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
from jupyter_server.extension.application import ExtensionApp
22
from traitlets.config import Config
3-
import asyncio
43

54
from traitlets import Instance, Type
65
from .handlers import RouteHandler, FileIDIndexHandler
@@ -31,11 +30,8 @@ class ServerDocsApp(ExtensionApp):
3130
klass=YRoomManager,
3231
help="""YRoom Manager Class.""",
3332
default_value=YRoomManager,
34-
).tag(config=True)
35-
36-
@property
37-
def yroom_manager(self) -> YRoomManager | None:
38-
return self.settings.get("yroom_manager", None)
33+
config=True,
34+
)
3935

4036
outputs_manager_class = Type(
4137
klass=OutputsManager,
@@ -49,6 +45,8 @@ def yroom_manager(self) -> YRoomManager | None:
4945
allow_none=True
5046
).tag(config=True)
5147

48+
yroom_manager = Instance(klass=YRoomManager, allow_none=True)
49+
5250
def initialize(self):
5351
super().initialize()
5452

@@ -63,18 +61,11 @@ def initialize_settings(self):
6361
# 'jupyter_server_fileid'.
6462
def get_fileid_manager():
6563
return self.serverapp.web_app.settings["file_id_manager"]
66-
contents_manager = self.serverapp.contents_manager
67-
loop = asyncio.get_event_loop_policy().get_event_loop()
68-
log = self.log
6964

7065
# Initialize YRoomManager
71-
self.settings["yroom_manager"] = YRoomManager(
72-
get_fileid_manager=get_fileid_manager,
73-
contents_manager=contents_manager,
74-
event_logger=self.serverapp.event_logger,
75-
loop=loop,
76-
log=log
77-
)
66+
YRoomManagerClass = self.yroom_manager_class
67+
self.yroom_manager = YRoomManagerClass(parent=self)
68+
self.settings["yroom_manager"] = self.yroom_manager
7869

7970
# Initialize OutputsManager
8071
self.outputs_manager = self.outputs_manager_class(config=self.config)
@@ -101,5 +92,5 @@ def _link_jupyter_server_extension(self, server_app):
10192
async def stop_extension(self):
10293
self.log.info("Stopping `jupyter_server_documents` server extension.")
10394
if self.yroom_manager:
104-
self.yroom_manager.stop()
95+
await self.yroom_manager.stop()
10596
self.log.info("`jupyter_server_documents` server extension is shut down. Goodbye!")

0 commit comments

Comments
 (0)