💥 Remove: 移除 Python 3.9 支持 (#3860)

This commit is contained in:
呵呵です
2026-02-18 00:11:36 +08:00
committed by GitHub
parent f719a6b41b
commit 63cde5da77
56 changed files with 603 additions and 1144 deletions

View File

@@ -1,5 +1,5 @@
from contextlib import AsyncExitStack
from typing import ClassVar, NoReturn, Optional, Union
from typing import ClassVar, NoReturn
from typing_extensions import Self
import anyio
@@ -38,7 +38,7 @@ class Permission:
DefaultParam,
]
def __init__(self, *checkers: Union[T_PermissionChecker, Dependent[bool]]) -> None:
def __init__(self, *checkers: T_PermissionChecker | Dependent[bool]) -> None:
self.checkers: set[Dependent[bool]] = {
(
checker
@@ -58,8 +58,8 @@ class Permission:
self,
bot: Bot,
event: Event,
stack: Optional[AsyncExitStack] = None,
dependency_cache: Optional[T_DependencyCache] = None,
stack: AsyncExitStack | None = None,
dependency_cache: T_DependencyCache | None = None,
) -> bool:
"""检查是否满足某个权限。
@@ -95,9 +95,7 @@ class Permission:
def __and__(self, other: object) -> NoReturn:
raise RuntimeError("And operation between Permissions is not allowed.")
def __or__(
self, other: Optional[Union["Permission", T_PermissionChecker]]
) -> "Permission":
def __or__(self, other: "Permission | T_PermissionChecker | None") -> "Permission":
if other is None:
return self
elif isinstance(other, Permission):
@@ -105,9 +103,7 @@ class Permission:
else:
return Permission(*self.checkers, other)
def __ror__(
self, other: Optional[Union["Permission", T_PermissionChecker]]
) -> "Permission":
def __ror__(self, other: "Permission | T_PermissionChecker | None") -> "Permission":
if other is None:
return self
elif isinstance(other, Permission):
@@ -126,9 +122,7 @@ class User:
__slots__ = ("perm", "users")
def __init__(
self, users: tuple[str, ...], perm: Optional[Permission] = None
) -> None:
def __init__(self, users: tuple[str, ...], perm: Permission | None = None) -> None:
self.users = users
self.perm = perm
@@ -149,7 +143,7 @@ class User:
)
@classmethod
def _clean_permission(cls, perm: Permission) -> Optional[Permission]:
def _clean_permission(cls, perm: Permission) -> Permission | None:
if len(perm.checkers) == 1 and isinstance(
user_perm := next(iter(perm.checkers)).call, cls
):
@@ -157,7 +151,7 @@ class User:
return perm
@classmethod
def from_event(cls, event: Event, perm: Optional[Permission] = None) -> Self:
def from_event(cls, event: Event, perm: Permission | None = None) -> Self:
"""从事件中获取会话 ID。
如果 `perm` 中仅有 `User` 类型的权限检查函数,则会去除原有的会话 ID 限制。
@@ -169,7 +163,7 @@ class User:
return cls((event.get_session_id(),), perm=perm and cls._clean_permission(perm))
@classmethod
def from_permission(cls, *users: str, perm: Optional[Permission] = None) -> Self:
def from_permission(cls, *users: str, perm: Permission | None = None) -> Self:
"""指定会话与权限。
如果 `perm` 中仅有 `User` 类型的权限检查函数,则会去除原有的会话 ID 限制。
@@ -181,7 +175,7 @@ class User:
return cls(users, perm=perm and cls._clean_permission(perm))
def USER(*users: str, perm: Optional[Permission] = None):
def USER(*users: str, perm: Permission | None = None):
"""匹配当前事件属于指定会话。
如果 `perm` 中仅有 `User` 类型的权限检查函数,则会去除原有检查函数的会话 ID 限制。