mirror of
				https://github.com/nonebot/nonebot2.git
				synced 2025-10-31 06:56:39 +00:00 
			
		
		
		
	💥 remove Python 3.7 support (#1148)
This commit is contained in:
		| @@ -1,8 +1,7 @@ | ||||
| import abc | ||||
| import asyncio | ||||
| from functools import partial | ||||
| from typing_extensions import Protocol | ||||
| from typing import TYPE_CHECKING, Any, Set, Union, Optional | ||||
| from typing import TYPE_CHECKING, Any, Set, Union, Optional, Protocol | ||||
|  | ||||
| from nonebot.log import logger | ||||
| from nonebot.config import Config | ||||
| @@ -72,8 +71,7 @@ class Bot(abc.ABC): | ||||
|         skip_calling_api: bool = False | ||||
|         exception: Optional[Exception] = None | ||||
|  | ||||
|         coros = list(map(lambda x: x(self, api, data), self._calling_api_hook)) | ||||
|         if coros: | ||||
|         if coros := [hook(self, api, data) for hook in self._calling_api_hook]: | ||||
|             try: | ||||
|                 logger.debug("Running CallingAPI hooks...") | ||||
|                 await asyncio.gather(*coros) | ||||
| @@ -95,10 +93,9 @@ class Bot(abc.ABC): | ||||
|             except Exception as e: | ||||
|                 exception = e | ||||
|  | ||||
|         coros = list( | ||||
|             map(lambda x: x(self, exception, api, data, result), self._called_api_hook) | ||||
|         ) | ||||
|         if coros: | ||||
|         if coros := [ | ||||
|             hook(self, exception, api, data, result) for hook in self._called_api_hook | ||||
|         ]: | ||||
|             try: | ||||
|                 logger.debug("Running CalledAPI hooks...") | ||||
|                 await asyncio.gather(*coros) | ||||
|   | ||||
| @@ -233,13 +233,11 @@ def combine_driver(driver: Type[Driver], *mixins: Type[ForwardMixin]) -> Type[Dr | ||||
|     if not mixins: | ||||
|         return driver | ||||
|  | ||||
|     class CombinedDriver(*mixins, driver, ForwardDriver):  # type: ignore | ||||
|         @property | ||||
|         def type(self) -> str: | ||||
|             return ( | ||||
|                 driver.type.__get__(self) | ||||
|                 + "+" | ||||
|                 + "+".join(map(lambda x: x.type.__get__(self), mixins)) | ||||
|             ) | ||||
|     def type_(self: ForwardDriver) -> str: | ||||
|         return ( | ||||
|             driver.type.__get__(self) | ||||
|             + "+" | ||||
|             + "+".join(map(lambda x: x.type.__get__(self), mixins)) | ||||
|         ) | ||||
|  | ||||
|     return CombinedDriver | ||||
|     return type("CombinedDriver", (*mixins, driver, ForwardDriver), {"type": property(type_)})  # type: ignore | ||||
|   | ||||
| @@ -14,6 +14,7 @@ from typing import ( | ||||
|     Callable, | ||||
|     NoReturn, | ||||
|     Optional, | ||||
|     overload, | ||||
| ) | ||||
|  | ||||
| from nonebot.log import logger | ||||
| @@ -551,7 +552,17 @@ class Matcher(metaclass=MatcherMeta): | ||||
|         """ | ||||
|         raise SkippedException | ||||
|  | ||||
|     def get_receive(self, id: str, default: T = None) -> Union[Event, T]: | ||||
|     @overload | ||||
|     def get_receive(self, id: str) -> Union[Event, None]: | ||||
|         ... | ||||
|  | ||||
|     @overload | ||||
|     def get_receive(self, id: str, default: T) -> Union[Event, T]: | ||||
|         ... | ||||
|  | ||||
|     def get_receive( | ||||
|         self, id: str, default: Optional[T] = None | ||||
|     ) -> Optional[Union[Event, T]]: | ||||
|         """获取一个 `receive` 事件 | ||||
|  | ||||
|         如果没有找到对应的事件,返回 `default` 值 | ||||
| @@ -563,14 +574,34 @@ class Matcher(metaclass=MatcherMeta): | ||||
|         self.state[RECEIVE_KEY.format(id=id)] = event | ||||
|         self.state[LAST_RECEIVE_KEY] = event | ||||
|  | ||||
|     def get_last_receive(self, default: T = None) -> Union[Event, T]: | ||||
|     @overload | ||||
|     def get_last_receive(self) -> Union[Event, None]: | ||||
|         ... | ||||
|  | ||||
|     @overload | ||||
|     def get_last_receive(self, default: T) -> Union[Event, T]: | ||||
|         ... | ||||
|  | ||||
|     def get_last_receive( | ||||
|         self, default: Optional[T] = None | ||||
|     ) -> Optional[Union[Event, T]]: | ||||
|         """获取最近一次 `receive` 事件 | ||||
|  | ||||
|         如果没有事件,返回 `default` 值 | ||||
|         """ | ||||
|         return self.state.get(LAST_RECEIVE_KEY, default) | ||||
|  | ||||
|     def get_arg(self, key: str, default: T = None) -> Union[Message, T]: | ||||
|     @overload | ||||
|     def get_arg(self, key: str) -> Union[Message, None]: | ||||
|         ... | ||||
|  | ||||
|     @overload | ||||
|     def get_arg(self, key: str, default: T) -> Union[Message, T]: | ||||
|         ... | ||||
|  | ||||
|     def get_arg( | ||||
|         self, key: str, default: Optional[T] = None | ||||
|     ) -> Optional[Union[Message, T]]: | ||||
|         """获取一个 `got` 消息 | ||||
|  | ||||
|         如果没有找到对应的消息,返回 `default` 值 | ||||
| @@ -587,7 +618,15 @@ class Matcher(metaclass=MatcherMeta): | ||||
|         else: | ||||
|             self.state[REJECT_TARGET] = target | ||||
|  | ||||
|     def get_target(self, default: T = None) -> Union[str, T]: | ||||
|     @overload | ||||
|     def get_target(self) -> Union[str, None]: | ||||
|         ... | ||||
|  | ||||
|     @overload | ||||
|     def get_target(self, default: T) -> Union[str, T]: | ||||
|         ... | ||||
|  | ||||
|     def get_target(self, default: Optional[T] = None) -> Optional[Union[str, T]]: | ||||
|         return self.state.get(REJECT_TARGET, default) | ||||
|  | ||||
|     def stop_propagation(self): | ||||
|   | ||||
| @@ -1,8 +1,7 @@ | ||||
| import asyncio | ||||
| import inspect | ||||
| import warnings | ||||
| from typing_extensions import Literal | ||||
| from typing import TYPE_CHECKING, Any, Callable, Optional, cast | ||||
| from typing import TYPE_CHECKING, Any, Literal, Callable, Optional, cast | ||||
| from contextlib import AsyncExitStack, contextmanager, asynccontextmanager | ||||
|  | ||||
| from pydantic.fields import Required, Undefined, ModelField | ||||
|   | ||||
| @@ -37,14 +37,14 @@ class Permission: | ||||
|     ] | ||||
|  | ||||
|     def __init__(self, *checkers: Union[T_PermissionChecker, Dependent[bool]]) -> None: | ||||
|         self.checkers: Set[Dependent[bool]] = set( | ||||
|         self.checkers: Set[Dependent[bool]] = { | ||||
|             checker | ||||
|             if isinstance(checker, Dependent) | ||||
|             else Dependent[bool].parse( | ||||
|                 call=checker, allow_types=self.HANDLER_PARAM_TYPES | ||||
|             ) | ||||
|             for checker in checkers | ||||
|         ) | ||||
|         } | ||||
|         """存储 `PermissionChecker`""" | ||||
|  | ||||
|     async def __call__( | ||||
|   | ||||
| @@ -37,14 +37,14 @@ class Rule: | ||||
|     ] | ||||
|  | ||||
|     def __init__(self, *checkers: Union[T_RuleChecker, Dependent[bool]]) -> None: | ||||
|         self.checkers: Set[Dependent[bool]] = set( | ||||
|         self.checkers: Set[Dependent[bool]] = { | ||||
|             checker | ||||
|             if isinstance(checker, Dependent) | ||||
|             else Dependent[bool].parse( | ||||
|                 call=checker, allow_types=self.HANDLER_PARAM_TYPES | ||||
|             ) | ||||
|             for checker in checkers | ||||
|         ) | ||||
|         } | ||||
|         """存储 `RuleChecker`""" | ||||
|  | ||||
|     async def __call__( | ||||
|   | ||||
		Reference in New Issue
	
	Block a user