✨ 新增插件商店api (#1659)

* ✨ 新增插件商店api

* chore(version): Update version to v0.2.2-7e15f20

---------

Co-authored-by: HibiKier <HibiKier@users.noreply.github.com>
This commit is contained in:
HibiKier
2024-09-29 20:47:58 +08:00
committed by GitHub
co-authored by HibiKier
parent e8425f371c
commit d68a4099ba
20 changed files with 419 additions and 248 deletions
@@ -1 +1 @@
from .logs import *
from .logs import * # noqa: F403
@@ -1,7 +1,6 @@
import asyncio
from typing import Awaitable, Callable, Generic, TypeVar
PATTERN = r"\x1b(\[.*?[@-~]|\].*?(\x07|\x1b\\))"
from typing import Generic, TypeVar
from collections.abc import Callable, Awaitable
_T = TypeVar("_T")
LogListener = Callable[[_T], Awaitable[None]]
@@ -22,14 +21,13 @@ class LogStorage(Generic[_T]):
self.logs[seq] = log
asyncio.get_running_loop().call_later(self.rotation, self.remove, seq)
await asyncio.gather(
*map(lambda listener: listener(log), self.listeners),
*(listener(log) for listener in self.listeners),
return_exceptions=True,
)
return seq
def remove(self, seq: int):
del self.logs[seq]
return
LOG_STORAGE: LogStorage[str] = LogStorage[str]()
@@ -1,7 +1,7 @@
from fastapi import APIRouter, WebSocket
from loguru import logger
from fastapi import APIRouter
from nonebot.utils import escape_tag
from starlette.websockets import WebSocket, WebSocketDisconnect, WebSocketState
from starlette.websockets import WebSocket, WebSocketState, WebSocketDisconnect
from .log_manager import LOG_STORAGE
@@ -27,4 +27,3 @@ async def system_logs_realtime(websocket: WebSocket):
pass
finally:
LOG_STORAGE.listeners.remove(log_listener)
return