Pārlūkot izejas kodu

move ui.shutdown into lifecycle module

Falko Schindler 2 gadi atpakaļ
vecāks
revīzija
6ff3b31fed
3 mainītis faili ar 17 papildinājumiem un 15 dzēšanām
  1. 3 1
      nicegui/globals.py
  2. 13 5
      nicegui/lifecycle.py
  3. 1 9
      nicegui/ui.py

+ 3 - 1
nicegui/globals.py

@@ -4,6 +4,8 @@ import asyncio
 import logging
 from typing import TYPE_CHECKING, Awaitable, Callable, List, Union
 
+from uvicorn import Server
+
 if TYPE_CHECKING:
     import justpy as jp
     from starlette.applications import Starlette
@@ -13,7 +15,7 @@ if TYPE_CHECKING:
 
 app: 'Starlette'
 config: 'Config'
-server: 'uvicorn.Server'
+server: Server
 page_stack: List['Page'] = []
 view_stack: List['jp.HTMLBaseComponent'] = []
 tasks: List[asyncio.tasks.Task] = []

+ 13 - 5
nicegui/lifecycle.py

@@ -1,19 +1,27 @@
 from typing import Awaitable, Callable, Union
 
-from .globals import connect_handlers, disconnect_handlers, shutdown_handlers, startup_handlers
+import justpy as jp
+
+from . import globals
 
 
 def on_connect(self, handler: Union[Callable, Awaitable]):
-    connect_handlers.append(handler)
+    globals.connect_handlers.append(handler)
 
 
 def on_disconnect(self, handler: Union[Callable, Awaitable]):
-    disconnect_handlers.append(handler)
+    globals.disconnect_handlers.append(handler)
 
 
 def on_startup(self, handler: Union[Callable, Awaitable]):
-    startup_handlers.append(handler)
+    globals.startup_handlers.append(handler)
 
 
 def on_shutdown(self, handler: Union[Callable, Awaitable]):
-    shutdown_handlers.append(handler)
+    globals.shutdown_handlers.append(handler)
+
+
+async def shutdown(self) -> None:
+    for socket in [s for page in jp.WebPage.sockets.values() for s in page.values()]:
+        await socket.close()
+    globals.server.should_exit = True

+ 1 - 9
nicegui/ui.py

@@ -1,7 +1,5 @@
 # isort:skip_file
 import os
-from . import globals
-import justpy as jp
 
 
 class Ui:
@@ -46,7 +44,7 @@ class Ui:
     from .elements.tree import Tree as tree
     from .elements.update import update
     from .elements.upload import Upload as upload
-    from .lifecycle import on_connect, on_disconnect, on_shutdown, on_startup
+    from .lifecycle import on_connect, on_disconnect, on_shutdown, on_startup, shutdown
     from .routes import add_route, add_static_files, get
     from .timer import Timer as timer
 
@@ -77,9 +75,3 @@ class Ui:
 
     if 'three' not in _excludes:
         from .elements.scene import Scene as scene
-
-    @staticmethod
-    async def shutdown():
-        for socket in [s for page in jp.WebPage.sockets.values() for s in page.values()]:
-            await socket.close()
-        globals.server.should_exit = True