🎨 impove typing

This commit is contained in:
yanyongyu
2020-12-07 00:06:09 +08:00
parent 629eed08b6
commit 6b3f6a46e6
27 changed files with 60 additions and 137 deletions

View File

@ -28,11 +28,11 @@ import importlib
import pkg_resources
from typing import Dict, Type, Optional
from nonebot.adapters import Bot
from nonebot.drivers import Driver
from nonebot.utils import escape_tag
from nonebot.config import Env, Config
from nonebot.adapters import BaseBot as Bot
from nonebot.log import logger, default_filter
from nonebot.drivers import BaseDriver as Driver
_dist: pkg_resources.Distribution = pkg_resources.get_distribution("nonebot2")
__version__ = _dist.version

View File

@ -15,10 +15,10 @@ from pydantic import BaseModel
from nonebot.config import Config
if TYPE_CHECKING:
from nonebot.drivers import BaseDriver as Driver, BaseWebSocket as WebSocket
from nonebot.drivers import Driver, WebSocket
class BaseBot(abc.ABC):
class Bot(abc.ABC):
"""
Bot 基类。用于处理上报消息,并提供 API 调用接口。
"""
@ -141,7 +141,7 @@ class BaseBot(abc.ABC):
T = TypeVar("T", bound=BaseModel)
class BaseEvent(abc.ABC, Generic[T]):
class Event(abc.ABC, Generic[T]):
"""
Event 基类。提供上报信息的关键信息,其余信息可从原始上报消息获取。
"""
@ -304,7 +304,7 @@ class BaseEvent(abc.ABC, Generic[T]):
@dataclass
class BaseMessageSegment(abc.ABC):
class MessageSegment(abc.ABC):
"""消息段基类"""
type: str
"""
@ -349,7 +349,7 @@ class BaseMessageSegment(abc.ABC):
return cls("text", {"text": text})
class BaseMessage(list, abc.ABC):
class Message(list, abc.ABC):
"""消息数组"""
def __init__(self,

View File

@ -10,8 +10,8 @@ import httpx
from nonebot.log import logger
from nonebot.config import Config
from nonebot.typing import overrides
from nonebot.adapters import BaseBot
from nonebot.message import handle_event
from nonebot.adapters import Bot as BaseBot
from nonebot.exception import RequestDenied
from .event import Event

View File

@ -2,7 +2,7 @@ import asyncio
from typing import Any, Dict, List, Union, Optional
from nonebot.config import Config
from nonebot.adapters import BaseBot
from nonebot.adapters import Bot as BaseBot
from nonebot.drivers import BaseDriver as Driver, BaseWebSocket as WebSocket
from .event import Event

View File

@ -1,7 +1,7 @@
from typing import Optional
from nonebot.typing import overrides
from nonebot.adapters import BaseEvent
from nonebot.adapters import Event as BaseEvent
from .message import Message

View File

@ -2,7 +2,7 @@ import re
from typing import Any, Dict, Union, Tuple, Iterable, Optional
from nonebot.typing import overrides
from nonebot.adapters import BaseMessage, BaseMessageSegment
from nonebot.adapters import Message as BaseMessage, MessageSegment as BaseMessageSegment
from .utils import log, escape, unescape, _b2s

View File

@ -6,8 +6,8 @@ from typing import Any, Union, Optional, TYPE_CHECKING
import httpx
from nonebot.log import logger
from nonebot.config import Config
from nonebot.adapters import BaseBot
from nonebot.message import handle_event
from nonebot.adapters import Bot as BaseBot
from nonebot.exception import RequestDenied
from .utils import log

View File

@ -1,6 +1,6 @@
from typing import Union, Optional
from nonebot.adapters import BaseEvent
from nonebot.adapters import Event as BaseEvent
from .message import Message
from .model import MessageModel, ConversationType, TextMessage

View File

@ -1,6 +1,6 @@
from typing import Any, Dict, Union, Iterable
from nonebot.adapters import BaseMessage, BaseMessageSegment
from nonebot.adapters import Message as BaseMessage, MessageSegment as BaseMessageSegment
from .utils import log
from .model import TextMessage

View File

@ -12,10 +12,10 @@ from nonebot.log import logger
from nonebot.config import Env, Config
if TYPE_CHECKING:
from nonebot.adapters import BaseBot as Bot
from nonebot.adapters import Bot
class BaseDriver(abc.ABC):
class Driver(abc.ABC):
"""
Driver 基类。将后端框架封装,以满足适配器使用。
"""
@ -140,7 +140,7 @@ class BaseDriver(abc.ABC):
raise NotImplementedError
class BaseWebSocket(object):
class WebSocket(object):
"""WebSocket 连接封装,统一接口方便外部调用。"""
@abc.abstractmethod

View File

@ -23,7 +23,7 @@ from nonebot.typing import overrides
from nonebot.config import Env, Config
from nonebot.utils import DataclassEncoder
from nonebot.exception import RequestDenied
from nonebot.drivers import BaseDriver, BaseWebSocket
from nonebot.drivers import Driver as BaseDriver, WebSocket as BaseWebSocket
class Driver(BaseDriver):

View File

@ -20,9 +20,7 @@ from nonebot.typing import State, Handler, ArgsParser
from nonebot.exception import PausedException, RejectedException, FinishedException
if TYPE_CHECKING:
from nonebot.adapters import (BaseBot as Bot, BaseEvent as Event,
BaseMessage as Message, BaseMessageSegment as
MessageSegment)
from nonebot.adapters import Bot, Event, Message, MessageSegment
matchers: Dict[int, List[Type["Matcher"]]] = defaultdict(list)
"""

View File

@ -17,7 +17,7 @@ from nonebot.exception import IgnoredException, StopPropagation
from nonebot.typing import State, EventPreProcessor, RunPreProcessor, EventPostProcessor, RunPostProcessor
if TYPE_CHECKING:
from nonebot.adapters import BaseBot as Bot, BaseEvent as Event
from nonebot.adapters import Bot, Event
_event_preprocessors: Set[EventPreProcessor] = set()
_event_postprocessors: Set[EventPostProcessor] = set()

View File

@ -16,7 +16,7 @@ from nonebot.utils import run_sync
from nonebot.typing import PermissionChecker
if TYPE_CHECKING:
from nonebot.adapters import BaseBot as Bot, BaseEvent as Event
from nonebot.adapters import Bot, Event
class Permission:

View File

@ -27,8 +27,8 @@ plugins: Dict[str, "Plugin"] = {}
:说明: 已加载的插件
"""
_tmp_matchers: ContextVar[Set[Type[Matcher]]] = ContextVar("_tmp_matchers")
_export: ContextVar["Export"] = ContextVar("_export")
_tmp_matchers: ContextVar[Set[Type[Matcher]]] = ContextVar("_tmp_matchers")
class Export(dict):

View File

@ -10,8 +10,8 @@ from nonebot.typing import State, Handler, RuleChecker
plugins: Dict[str, "Plugin"] = ...
_tmp_matchers: ContextVar[Set[Type[Matcher]]] = ...
_export: ContextVar["Export"] = ...
_tmp_matchers: ContextVar[Set[Type[Matcher]]] = ...
class Export(dict):

View File

@ -4,7 +4,7 @@ from nonebot.rule import to_me
from nonebot.typing import State
from nonebot.plugin import on_command
from nonebot.permission import SUPERUSER
from nonebot.adapters import BaseBot as Bot, BaseEvent as Event, BaseMessageSegment as MessageSegment
from nonebot.adapters import Bot, Event, MessageSegment
say = on_command("say", to_me(), permission=SUPERUSER)

View File

@ -22,7 +22,7 @@ from nonebot.utils import run_sync
from nonebot.typing import State, RuleChecker
if TYPE_CHECKING:
from nonebot.adapters import BaseBot as Bot, BaseEvent as Event
from nonebot.adapters import Bot, Event
class Rule:

View File

@ -18,18 +18,10 @@
https://docs.python.org/3/library/typing.html
"""
from types import ModuleType
from typing import NoReturn, TYPE_CHECKING
from typing import Any, Set, List, Dict, Type, Tuple, Mapping
from typing import Union, TypeVar, Optional, Iterable, Callable, Awaitable, Generic
from typing import Any, Dict, Union, Optional, Callable, Awaitable, TYPE_CHECKING
# import some modules needed when checking types
if TYPE_CHECKING:
from nonebot.rule import Rule as RuleClass
from nonebot.drivers import BaseDriver, BaseWebSocket
from nonebot.permission import Permission as PermissionClass
from nonebot.adapters import BaseBot, BaseEvent, BaseMessage, BaseMessageSegment
from nonebot.matcher import Matcher as MatcherClass
from nonebot.rule import Rule
def overrides(InterfaceClass: object):
@ -42,56 +34,6 @@ def overrides(InterfaceClass: object):
return overrider
Driver = TypeVar("Driver", bound="BaseDriver")
"""
:类型: ``BaseDriver``
:说明:
所有 Driver 的基类。
"""
WebSocket = TypeVar("WebSocket", bound="BaseWebSocket")
"""
:类型: ``BaseWebSocket``
:说明:
所有 WebSocket 的基类。
"""
Bot = TypeVar("Bot", bound="BaseBot")
"""
:类型: ``BaseBot``
:说明:
所有 Bot 的基类。
"""
Event = TypeVar("Event", bound="BaseEvent")
"""
:类型: ``BaseEvent``
:说明:
所有 Event 的基类。
"""
Message = TypeVar("Message", bound="BaseMessage")
"""
:类型: ``BaseMessage``
:说明:
所有 Message 的基类。
"""
MessageSegment = TypeVar("MessageSegment", bound="BaseMessageSegment")
"""
:类型: ``BaseMessageSegment``
:说明:
所有 MessageSegment 的基类。
"""
State = Dict[Any, Any]
"""
:类型: ``Dict[Any, Any]``
@ -134,22 +76,6 @@ RunPostProcessor = Callable[["Matcher", Optional[Exception], Bot, Event, State],
事件响应器运行前预处理函数 RunPostProcessor 类型,第二个参数为运行时产生的错误(如果存在)
"""
Matcher = TypeVar("Matcher", bound="MatcherClass")
"""
:类型: ``Matcher``
:说明:
Matcher 即响应事件的处理类。通过 Rule 判断是否响应事件,运行 Handler。
"""
Rule = TypeVar("Rule", bound="RuleClass")
"""
:类型: ``Rule``
:说明:
Rule 即判断是否响应事件的处理类。内部存储 RuleChecker ,返回全为 True 则响应事件。
"""
RuleChecker = Callable[[Bot, Event, State], Union[bool, Awaitable[bool]]]
"""
:类型: ``Callable[[Bot, Event, State], Union[bool, Awaitable[bool]]]``
@ -158,14 +84,6 @@ RuleChecker = Callable[[Bot, Event, State], Union[bool, Awaitable[bool]]]
RuleChecker 即判断是否响应事件的处理函数。
"""
Permission = TypeVar("Permission", bound="PermissionClass")
"""
:类型: ``Permission``
:说明:
Permission 即判断是否响应消息的处理类。内部存储 PermissionChecker ,返回只要有一个 True 则响应消息。
"""
PermissionChecker = Callable[[Bot, Event], Union[bool, Awaitable[bool]]]
"""
:类型: ``Callable[[Bot, Event], Union[bool, Awaitable[bool]]]``