mirror of
https://github.com/nonebot/nonebot2.git
synced 2025-09-07 04:26:45 +00:00
✏️ add typing
This commit is contained in:
@ -168,6 +168,8 @@ class Driver(abc.ABC):
|
||||
|
||||
def _bot_connect(self, bot: "Bot") -> None:
|
||||
"""在 WebSocket 连接成功后,调用该函数来注册 bot 对象"""
|
||||
if bot.self_id in self._clients:
|
||||
raise RuntimeError(f"Duplicate bot connection with id {bot.self_id}")
|
||||
self._clients[bot.self_id] = bot
|
||||
|
||||
async def _run_hook(bot: "Bot") -> None:
|
||||
|
@ -31,7 +31,7 @@ HeaderTypes = Union[
|
||||
Sequence[Tuple[str, str]],
|
||||
]
|
||||
|
||||
ContentTypes = Union[str, bytes]
|
||||
ContentTypes = Union[str, bytes, None]
|
||||
CookieTypes = Union[None, "Cookies", CookieJar, Dict[str, str], List[Tuple[str, str]]]
|
||||
|
||||
|
||||
@ -55,15 +55,15 @@ class Request:
|
||||
timeout: Optional[float] = None,
|
||||
):
|
||||
# method
|
||||
self.method = (
|
||||
self.method: str = (
|
||||
method.decode("ascii").upper()
|
||||
if isinstance(method, bytes)
|
||||
else method.upper()
|
||||
)
|
||||
# http version
|
||||
self.version = HTTPVersion(version)
|
||||
self.version: HTTPVersion = HTTPVersion(version)
|
||||
# timeout
|
||||
self.timeout = timeout
|
||||
self.timeout: Optional[float] = timeout
|
||||
|
||||
# url
|
||||
if isinstance(url, tuple):
|
||||
@ -79,7 +79,7 @@ class Request:
|
||||
|
||||
if params is not None:
|
||||
url = url.update_query(params)
|
||||
self.url = url
|
||||
self.url: URL = url
|
||||
|
||||
# headers
|
||||
self.headers: CIMultiDict[str]
|
||||
@ -92,7 +92,7 @@ class Request:
|
||||
self.cookies = Cookies(cookies)
|
||||
|
||||
# body
|
||||
self.content = content
|
||||
self.content: ContentTypes = content
|
||||
|
||||
def __repr__(self) -> str:
|
||||
class_name = self.__class__.__name__
|
||||
@ -110,7 +110,7 @@ class Response:
|
||||
request: Optional[Request] = None,
|
||||
):
|
||||
# status code
|
||||
self.status_code = status_code
|
||||
self.status_code: int = status_code
|
||||
|
||||
# headers
|
||||
self.headers: CIMultiDict[str]
|
||||
@ -120,16 +120,16 @@ class Response:
|
||||
self.headers = CIMultiDict()
|
||||
|
||||
# body
|
||||
self.content = content
|
||||
self.content: ContentTypes = content
|
||||
|
||||
# request
|
||||
self.request = request
|
||||
self.request: Optional[Request] = request
|
||||
|
||||
|
||||
class WebSocket(abc.ABC):
|
||||
def __init__(self, *, request: Request):
|
||||
# request
|
||||
self.request = request
|
||||
self.request: Request = request
|
||||
|
||||
@property
|
||||
@abc.abstractmethod
|
||||
@ -141,12 +141,12 @@ class WebSocket(abc.ABC):
|
||||
raise NotImplementedError
|
||||
|
||||
@abc.abstractmethod
|
||||
async def accept(self):
|
||||
async def accept(self) -> None:
|
||||
"""接受 WebSocket 连接请求"""
|
||||
raise NotImplementedError
|
||||
|
||||
@abc.abstractmethod
|
||||
async def close(self, code: int = 1000):
|
||||
async def close(self, code: int = 1000, reason: str = "") -> None:
|
||||
"""关闭 WebSocket 连接请求"""
|
||||
raise NotImplementedError
|
||||
|
||||
@ -161,19 +161,19 @@ class WebSocket(abc.ABC):
|
||||
raise NotImplementedError
|
||||
|
||||
@abc.abstractmethod
|
||||
async def send(self, data: str):
|
||||
async def send(self, data: str) -> None:
|
||||
"""发送一条 WebSocket text 信息"""
|
||||
raise NotImplementedError
|
||||
|
||||
@abc.abstractmethod
|
||||
async def send_bytes(self, data: bytes):
|
||||
async def send_bytes(self, data: bytes) -> None:
|
||||
"""发送一条 WebSocket binary 信息"""
|
||||
raise NotImplementedError
|
||||
|
||||
|
||||
class Cookies(MutableMapping):
|
||||
def __init__(self, cookies: CookieTypes = None) -> None:
|
||||
self.jar = cookies if isinstance(cookies, CookieJar) else CookieJar()
|
||||
self.jar: CookieJar = cookies if isinstance(cookies, CookieJar) else CookieJar()
|
||||
if cookies is not None and not isinstance(cookies, CookieJar):
|
||||
if isinstance(cookies, dict):
|
||||
for key, value in cookies.items():
|
||||
|
@ -333,8 +333,8 @@ class WebSocketsWS(BaseWebSocket):
|
||||
raise NotImplementedError
|
||||
|
||||
@overrides(BaseWebSocket)
|
||||
async def close(self, code: int = 1000):
|
||||
await self.websocket.close(code)
|
||||
async def close(self, code: int = 1000, reason: str = ""):
|
||||
await self.websocket.close(code, reason)
|
||||
|
||||
@overrides(BaseWebSocket)
|
||||
async def receive(self) -> str:
|
||||
@ -374,11 +374,13 @@ class FastAPIWebSocket(BaseWebSocket):
|
||||
)
|
||||
|
||||
@overrides(BaseWebSocket)
|
||||
async def accept(self):
|
||||
async def accept(self) -> None:
|
||||
await self.websocket.accept()
|
||||
|
||||
@overrides(BaseWebSocket)
|
||||
async def close(self, code: int = status.WS_1000_NORMAL_CLOSURE):
|
||||
async def close(
|
||||
self, code: int = status.WS_1000_NORMAL_CLOSURE, reason: str = ""
|
||||
) -> None:
|
||||
await self.websocket.close(code)
|
||||
|
||||
@overrides(BaseWebSocket)
|
||||
|
@ -249,15 +249,16 @@ class WebSocket(BaseWebSocket):
|
||||
@property
|
||||
@overrides(BaseWebSocket)
|
||||
def closed(self):
|
||||
raise NotImplementedError
|
||||
# FIXME
|
||||
return True
|
||||
|
||||
@overrides(BaseWebSocket)
|
||||
async def accept(self):
|
||||
await self.websocket.accept()
|
||||
|
||||
@overrides(BaseWebSocket)
|
||||
async def close(self, code: int = 1000):
|
||||
await self.websocket.close(code)
|
||||
async def close(self, code: int = 1000, reason: str = ""):
|
||||
await self.websocket.close(code, reason)
|
||||
|
||||
@overrides(BaseWebSocket)
|
||||
async def receive(self) -> str:
|
||||
|
Reference in New Issue
Block a user