fix: improve typing for above python 3.11

This commit is contained in:
2025-09-19 10:41:51 +08:00
parent 0833cd586f
commit 8bdb4500cf
2 changed files with 19 additions and 13 deletions

3
.gitignore vendored
View File

@@ -130,11 +130,14 @@ celerybeat.pid
# Environments
.env
.venv
.direnv
env/
venv/
ENV/
env.bak/
venv.bak/
.envrc
.envrc.bak
# Spyder project settings
.spyderproject

View File

@@ -1,5 +1,6 @@
from typing import Callable, Union, Optional
from collections.abc import Callable
from logging import Logger
from typing import Any
from nio import (
AsyncClient,
SyncResponse,
@@ -15,10 +16,10 @@ class MatrixClient:
homeserver: str,
user_id: str,
token: str,
device_id: Optional[str] = "mcdr",
logger: Union[Logger, Callable, None] = print,
device_id: str | None = "mcdr",
logger: Logger | Callable[..., Any] | None = print,
):
self.connected: bool = True
self.connected: bool = False
self.client = AsyncClient(homeserver=homeserver)
self.client.user_id = user_id
self.client.access_token = token
@@ -29,15 +30,16 @@ class MatrixClient:
async def connect(self) -> None:
if self.connected:
if self.logger:
message = (
_message = (
"You have connected the matrix client, "
"please disconnect it before reconnect!"
)
if hasattr(self.logger, "info"):
self.logger.info(message)
self.logger.info(_message) # pyright: ignore[reportFunctionMemberAccess]
else:
self.logger(message)
if callable(self.logger):
self.logger(f"{_message}")
return
async def receive_messages() -> None:
@@ -45,22 +47,23 @@ class MatrixClient:
async def on_sync_response(response: SyncResponse):
if hasattr(self.logger, "debug"):
self.logger.debug(f"MatrixClient response: {response}")
self.logger.debug(f"MatrixClient response: {response}") # pyright: ignore[reportOptionalMemberAccess, reportFunctionMemberAccess]
async def on_sync_error(response: SyncError):
self.network_status = False
_message = f"Sync error with matrix homeserver: {response.status_code}"
_ansi_color_red = "\033[31m"
_ansi_reset_color = "\033[0m"
if not self.logger:
if not self.logger and not callable(self.logger):
print(_ansi_color_red + _message + _ansi_reset_color)
if hasattr(self.logger, "error"):
self.logger.error(_message)
self.logger.error(_message) # pyright: ignore[reportFunctionMemberAccess, reportOptionalMemberAccess]
else:
self.logger(_ansi_color_red + _message + _ansi_reset_color)
if callable(self.logger):
self.logger(_ansi_color_red + _message + _ansi_reset_color)
client.add_response_callback(on_sync_response, SyncResponse)
client.add_response_callback(on_sync_error, SyncError)
client.add_response_callback(on_sync_response, SyncResponse) # pyright: ignore[reportArgumentType]
client.add_response_callback(on_sync_error, SyncError) # pyright: ignore[reportArgumentType]
async def message_callback(
room: MatrixRoom, event: RoomMessageText