|
@@ -1,3 +1,5 @@
|
|
|
|
+from __future__ import annotations
|
|
|
|
+
|
|
import asyncio
|
|
import asyncio
|
|
import inspect
|
|
import inspect
|
|
import logging
|
|
import logging
|
|
@@ -10,12 +12,12 @@ from socketio import AsyncServer
|
|
from uvicorn import Server
|
|
from uvicorn import Server
|
|
|
|
|
|
from . import background_tasks
|
|
from . import background_tasks
|
|
-from .app import App
|
|
|
|
-from .language import Language
|
|
|
|
|
|
|
|
if TYPE_CHECKING:
|
|
if TYPE_CHECKING:
|
|
from .air import Air
|
|
from .air import Air
|
|
|
|
+ from .app import App
|
|
from .client import Client
|
|
from .client import Client
|
|
|
|
+ from .language import Language
|
|
from .slot import Slot
|
|
from .slot import Slot
|
|
|
|
|
|
|
|
|
|
@@ -45,15 +47,15 @@ binding_refresh_interval: float
|
|
tailwind: bool
|
|
tailwind: bool
|
|
prod_js: bool
|
|
prod_js: bool
|
|
endpoint_documentation: Literal['none', 'internal', 'page', 'all'] = 'none'
|
|
endpoint_documentation: Literal['none', 'internal', 'page', 'all'] = 'none'
|
|
-air: Optional['Air'] = None
|
|
|
|
|
|
+air: Optional[Air] = None
|
|
socket_io_js_query_params: Dict = {}
|
|
socket_io_js_query_params: Dict = {}
|
|
socket_io_js_extra_headers: Dict = {}
|
|
socket_io_js_extra_headers: Dict = {}
|
|
# NOTE we favor websocket over polling
|
|
# NOTE we favor websocket over polling
|
|
socket_io_js_transports: List[Literal['websocket', 'polling']] = ['websocket', 'polling']
|
|
socket_io_js_transports: List[Literal['websocket', 'polling']] = ['websocket', 'polling']
|
|
_socket_id: Optional[str] = None
|
|
_socket_id: Optional[str] = None
|
|
-slot_stacks: Dict[int, List['Slot']] = {}
|
|
|
|
-clients: Dict[str, 'Client'] = {}
|
|
|
|
-index_client: 'Client'
|
|
|
|
|
|
+slot_stacks: Dict[int, List[Slot]] = {}
|
|
|
|
+clients: Dict[str, Client] = {}
|
|
|
|
+index_client: Client
|
|
quasar_config: Dict = {
|
|
quasar_config: Dict = {
|
|
'brand': {
|
|
'brand': {
|
|
'primary': '#5898d4',
|
|
'primary': '#5898d4',
|
|
@@ -80,7 +82,7 @@ def get_task_id() -> int:
|
|
return 0
|
|
return 0
|
|
|
|
|
|
|
|
|
|
-def get_slot_stack() -> List['Slot']:
|
|
|
|
|
|
+def get_slot_stack() -> List[Slot]:
|
|
task_id = get_task_id()
|
|
task_id = get_task_id()
|
|
if task_id not in slot_stacks:
|
|
if task_id not in slot_stacks:
|
|
slot_stacks[task_id] = []
|
|
slot_stacks[task_id] = []
|
|
@@ -93,11 +95,11 @@ def prune_slot_stack() -> None:
|
|
del slot_stacks[task_id]
|
|
del slot_stacks[task_id]
|
|
|
|
|
|
|
|
|
|
-def get_slot() -> 'Slot':
|
|
|
|
|
|
+def get_slot() -> Slot:
|
|
return get_slot_stack()[-1]
|
|
return get_slot_stack()[-1]
|
|
|
|
|
|
|
|
|
|
-def get_client() -> 'Client':
|
|
|
|
|
|
+def get_client() -> Client:
|
|
return get_slot().parent.client
|
|
return get_slot().parent.client
|
|
|
|
|
|
|
|
|