瀏覽代碼

refactoring

Falko Schindler 2 年之前
父節點
當前提交
4ee8035564
共有 3 個文件被更改,包括 41 次插入34 次删除
  1. 8 10
      nicegui/globals.py
  2. 2 24
      nicegui/page.py
  3. 31 0
      nicegui/page_builder.py

+ 8 - 10
nicegui/globals.py

@@ -2,23 +2,21 @@ from __future__ import annotations
 
 import asyncio
 import logging
-from typing import TYPE_CHECKING, Awaitable, Callable, Dict, List, Optional, Union
+from typing import Awaitable, Callable, Dict, List, Optional, Union
 
+import justpy as jp
+from starlette.applications import Starlette
 from uvicorn import Server
 
-if TYPE_CHECKING:
-    import justpy as jp
-    from starlette.applications import Starlette
+from .config import Config
+from .page_builder import PageBuilder
 
-    from .config import Config
-    from .page import PageBuilder
-
-app: 'Starlette'
-config: Optional['Config'] = None
+app: Starlette
+config: Optional[Config] = None
 server: Optional[Server] = None
 loop: Optional[asyncio.AbstractEventLoop] = None
 page_builders: Dict[str, 'PageBuilder'] = {}
-view_stack: List['jp.HTMLBaseComponent'] = []
+view_stack: List[jp.HTMLBaseComponent] = []
 tasks: List[asyncio.tasks.Task] = []
 log: logging.Logger = logging.getLogger('nicegui')
 connect_handlers: List[Union[Callable, Awaitable]] = []

+ 2 - 24
nicegui/page.py

@@ -4,9 +4,8 @@ import asyncio
 import inspect
 import time
 import uuid
-from dataclasses import dataclass
 from functools import wraps
-from typing import Awaitable, Callable, Optional
+from typing import Callable, Optional
 
 import justpy as jp
 from addict import Dict
@@ -15,28 +14,7 @@ from starlette.requests import Request
 
 from . import globals
 from .helpers import is_coroutine
-from .task_logger import create_task
-
-
-@dataclass
-class PageBuilder:
-    function: Callable[[], Awaitable[Page]]
-    shared: bool
-
-    _shared_page: Optional[Page] = None
-
-    async def build(self) -> None:
-        assert self.shared
-        self._shared_page = await self.function()
-
-    async def route_function(self, request: Request) -> Page:
-        page = self._shared_page if self.shared else await self.function()
-        return await page._route_function(request)
-
-    def create_route(self, route: str) -> None:
-        if self.shared:
-            create_task(self.build())
-        jp.Route(route, self.route_function)
+from .page_builder import PageBuilder
 
 
 class Page(jp.QuasarPage):

+ 31 - 0
nicegui/page_builder.py

@@ -0,0 +1,31 @@
+from dataclasses import dataclass
+from typing import TYPE_CHECKING, Awaitable, Callable, Optional
+
+import justpy as jp
+from starlette.requests import Request
+
+from .task_logger import create_task
+
+if TYPE_CHECKING:
+    from .page import Page
+
+
+@dataclass
+class PageBuilder:
+    function: Callable[[], Awaitable['Page']]
+    shared: bool
+
+    _shared_page: Optional['Page'] = None
+
+    async def build(self) -> None:
+        assert self.shared
+        self._shared_page = await self.function()
+
+    async def route_function(self, request: Request) -> 'Page':
+        page = self._shared_page if self.shared else await self.function()
+        return await page._route_function(request)
+
+    def create_route(self, route: str) -> None:
+        if self.shared:
+            create_task(self.build())
+        jp.Route(route, self.route_function)